KYC state belongs to the authenticated account and contains no personal information. KYC is optional today. When policy makes it required, order placement says so with kyc_required; a missing or expired policy fails closed with service_degraded and never makes required KYC optional.

Status

Use GET /v1/accounts/:accountId/kyc with the account bearer. The response returns one of:
  • not_started — the account has not made an optional KYC choice.
  • skipped — the account skipped while KYC was optional. Skipped is not verified.
  • verified — reserved for trusted server-side verification evidence. No public or operator endpoint lets a caller declare this state.
The response includes createdAtEpochMs, updatedAtEpochMs, and the timestamp specific to a terminal choice where applicable.

Optional skip

POST /v1/accounts/:accountId/kyc/skip is an idempotent mutation and is accepted only while KYC is optional. It requires the account bearer and no request body. Repeating it returns the same skipped state. If policy has become required, the API refuses the request with kyc_required. If policy is missing or expired, the API refuses with service_degraded.

Order behavior

Order previews and reads are unchanged. This policy applies to authenticated human POST /v1/orders placement only.