Skip to main content
POST
curl
Use this endpoint after POST /v3/kyb/search/ returns candidate companies when you need the ultimate beneficial owners: the shareholders plus the natural persons and corporate parents resolved through the ownership chain (registry_data.ubo_resolution). It is billed at the country’s UBO price (per-country prices). The tier delivered is the highest the country and the registry can serve, and registry_tier_delivered names what was billed: shareholders when the report names no natural person as a beneficial owner, basic when there is no ownership record at all. When the report is still being prepared, or the ownership section has not been retrieved from the registry yet, the endpoint returns 202 Accepted, kyb_registry.fetch_status: "pending", kyb_registry.registry_ownership_status: "pending", and registry_tier_delivered: null. Keep the returned request_id and retrieve GET /v3/session/{request_id}/decision/ until registry_checks[0].company.fetch_status is resolved. Didit completes the pending report automatically and charges the delivered tier once it is ready. Do not repeat the purchase request while it is pending: each new POST creates a separate request. Available on v3 only. POST /v2/kyb/select/ and POST /v3/kyb/select/ keep their contract and price.

Authorizations

x-api-key
string
header
required

Your application's API key, from Developers -> API keys in the Business Console. The primary key has full access. A named key can be scoped: none, read or write per resource, limited to some workflows or to approved sessions, to a list of IP addresses, and to an expiry date. 401 means the key is missing, wrong, revoked or expired; 403 means the key has no access to this resource or action, or the request came from an address outside its IP list; 404 on a session route means the session is outside the key's workflows or statuses. A key without media access receives image, video and PDF URLs as null, and a key without sessions write receives session links and tokens as null. See https://docs.didit.me/console/api-keys.

Body

application/json
kyb_response_id
string
required

Candidate handle from POST /v3/kyb/search/ (kyb_registry.companies[].kyb_response_id). Ephemeral — use it shortly after the search that produced it.

Maximum string length: 255
Example:

"69aeeb95febb0f1704042259"

vendor_data
string

Your identifier for this company; echoed back and stored with the business session.

metadata
object | null

Free-form JSON stored with the business session and echoed back.

save_api_request
boolean
default:true

Must be true (the default). KYB registry selects are always persisted so billing and retrieval can be tracked; false returns 400.

Response

Company report returned and billed at the delivered tier. Ownership reports still being prepared can return 202; keep request_id to retrieve their saved decision.

request_id
string<uuid>

Id of the business session created for this retrieval. The stored record (visible in the console) keeps updating if the registry resolves after the response.

registry_tier_requested
enum<string>

The tier this endpoint sells: basic (Lite) for select, shareholders, ubo.

Available options:
basic,
shareholders,
ubo
registry_tier_delivered
enum<string> | null

The tier actually delivered and billed. Lower than requested when the country's registries hold no ownership data, when the registry has no ownership record for this company, or when the resolved report of a ubo request names no natural person as a beneficial owner.

Available options:
basic,
shareholders,
ubo,
null
kyb_registry
object

Full registry company profile.

vendor_data
string | null

Echo of the vendor_data you sent.

metadata
object | null

Echo of the metadata you sent.

created_at
string<date-time>