Skip to main content
GET
Get a user
Stable since 2025-01-01 — unchanged in 2026-04-14.

Authorizations

Authorization
string
header
required

Access token from POST /auth (the data.access_token value).

x-api-key
string
header
required

API key issued by Kira. Required on every request, including /auth.

Headers

X-Api-Version
string

Optional. The date-versioned API version to apply for this request (e.g. 2026-04-14). When sent it always wins, even over your pinned account default. When omitted, the API uses your account's pinned version if set, otherwise a baseline default.

Example:

"2026-04-14"

Path Parameters

user_id
string<uuid>
required

User UUID.

Response

Success.

id
string<uuid>
required

User UUID.

type
enum<string>
required

individual or business.

Available options:
individual,
business
email
string<email>
required

Email address.

status
string
required

Lifecycle status: CREATED, VERIFYING, REVIEW, VERIFIED, or REJECTED. Gate product readiness on this, not on verification_status.

created_at
string<date-time>
required

Creation timestamp (ISO 8601).

updated_at
string<date-time>
required

Last-update timestamp (ISO 8601).

verification_status
enum<string>
default:unverified

KYC/KYB status: unverified, started, in_review, verified, rejected, or needs_action.

Available options:
unverified,
started,
in_review,
verified,
rejected,
needs_action
verification_mode
string

automatic or verification_link.

Hosted KYC URL — present only in verification_link mode.

Populated if hosted-link generation failed, or on PUT /v1/users/{user_id} when a bank-migration triggered by the request was deferred or failed. Freeform, human-readable text — branch on verification_link_error_severity, not this string.

Machine-readable companion to verification_link_error, present only alongside it on the PUT /v1/users/{user_id} response. deferred means nothing is wrong — the triggered bank migration is waiting on something expected or was correctly skipped by a business rule. failed means the migration hit a genuine problem.

Available options:
deferred,
failed
metadata
object

Your key-value pairs, plus any client-level default metadata configured for your account (merged at create time; your request keys win on conflict).

first_name
string

Given name (individual users).

last_name
string

Family name (individual users).

middle_name
string

Middle name (individual users), when provided.

phone
string

Contact phone in E.164 form (e.g. +525512345678).

birth_date
string

Date of birth, YYYY-MM-DD (individual users).

nationality
string

Nationality as an ISO alpha-3 country code (e.g. MEX, USA). Users use alpha-3; recipients use alpha-2 — map accordingly.

gender
enum<string>

male, female, or other, when provided.

Available options:
male,
female,
other
residential_address
object

The individual's address. The response renests and renames the flat create-request fields: address_streetstreet_line_1, address_statesubdivision, address_zip_codepostal_code, address_citycity, address_countrycountry. Parse this nested shape — the flat address_* request fields do not round-trip.

formation_country
string
company_name
string
business_type
string
business_trade_name
string
business_description
string
business_industry
string[]
registered_address
object
physical_address
object
has_material_intermediary_ownership
boolean
account_purpose
string

Write-only in practice: accepted on create/update but currently NOT returned by GET — do not depend on reading it back.

source_of_funds
string

Write-only in practice: accepted on create/update but currently NOT returned by GET — do not depend on reading it back.

eligible_products
object[]

Per-product eligibility, computed from the user's supplied fields against the product matrix — present on the create response and on the single-resource GET (GET /v1/users/{user_id}), even before verification. On the list (GET /v1/users), present only when the request passed include_eligibility=true; omitted otherwise. Each product carries eligible (false until the user reaches the product's minimum status, e.g. VERIFIED) and its own missing_fields. Verification flips eligible to true and clears missing_fields; it does not populate the array. A product that is eligible: false for a reason no field can clear carries unsupported_reason instead of missing_fields — verification will not flip it.

missing_fields
object

Map of product_code → outstanding field tokens, plus a general key with the deduplicated union across products. It is populated before verification too; the sole exception is that this top-level aggregate is omitted on the create response for verification_link-mode users or when there are zero gaps.

capabilities
object

Per-subclient bank intent — which banks this subclient has declared it needs. Always present on GET /v1/users/{id}, including { "requested_banks": [] } when nothing is declared — never omitted there. On the list (GET /v1/users), present only when the request passed include_eligibility=true; omitted otherwise.