Skip to main content

Request Verification

Hands a customer's verification record to the verification provider. The record moves to in_review, and the provider's verdict, approved or rejected, lands on it later: read it with Get KYC Record. The provider never answers needs_update: that status comes only from a BlockWyre staff review, which can also settle the record.

The provider takes a record once, so this checks everything first. It refuses the request unless the record has first_name, last_name, date_of_birth, identity_document.number and identity_document.type (see ready), and confirmed (ready) documents in the face and document-front slots.

Requesting again while the record is in_review or approved is a retry, not an error: it answers 200 with already_running: true and starts nothing.

Takes a workspace-scoped API key or a dashboard session. An account-scoped key is refused with 401.

Replaces POST /api/v2/kyc/banking-verification/individual/{accountId}/request-verification.

Authorization:

Every request is signed with your API key: a short-lived JWT, signed with your private key, sent in one header on /v3/* and /api/v2/* alike.

Headers:
Authorization: APIKey {SIGNED_JWT}

How to build and sign the JWT: Authentication.

Endpoint

POST

/v3/customers/{customer_id}/kyc/request-verification

Path parameters​

ParameterTypeDescription
customer_idstring (cst_…)Required. The customer. Its record must be pending.

No request body.

Response Sample​

{
"kyc": {
"id": "kyc_01k8x494z0e2escqpt6bde8hag",
"customer_id": "cst_01k8x40x9gfx6sv8a99hswy9bd",
"type": "banking",
"status": "in_review",
"status_reason": "verification requested",
"email": "samantha@example.com",
"first_name": "Samantha",
"last_name": "Reyes",
"phone": "+14155550123",
"date_of_birth": "1990-04-12",
"nationality": "US",
"address": {
"line1": "742 Evergreen Terrace",
"line2": "Apt 2",
"city": "Springfield",
"state": "OR",
"postal_code": "97477",
"country": "US"
},
"identity_document": {
"number": "X1234567",
"type": "passport",
"issue_date": "2018-03-01",
"expiry_date": "2028-03-01",
"country_of_issue": "US"
},
"ready": true,
"event_history": [
{
"status": "in_review",
"status_reason": "verification requested",
"date": "2025-10-31T12:47:10Z"
},
{
"status": "pending",
"status_reason": "verification record created",
"date": "2025-10-31T12:36:04Z"
}
],
"created_at": "2025-10-31T12:36:04Z",
"updated_at": "2025-10-31T12:47:10Z"
},
"already_running": false
}

Response Schema​

FieldTypeDescription
kycobjectThe record after the request. See Open KYC Record.
already_runningbooleantrue when the record was already in_review or approved (or a verification was already under way) and nothing new was started.

Errors​

StatusmessageWhen
400failed to parse requestcustomer_id is not a cst_… TypeID.
401unauthorizedMissing or invalid signature, or the caller is an account-scoped key or a customer session.
403forbiddenA dashboard member whose role does not allow this. A workspace-scoped key always may.
404customer_not_foundNo such customer in this workspace.
404kyc_not_foundThe customer has no record: open one first.
409kyc_needs_updateThe record is needs_update: it was sent back for changes and cannot be requested again here.
409kyc_rejectedThe record is rejected. It cannot be resubmitted.
422kyc_incomplete_applicantA required applicant field is missing (see above).
422kyc_missing_documentsThe face or document-front document is missing or its upload was never completed.
422kyc_business_not_supportedThe customer is a business: verify it through KYB.

When several apply, the first check in this order answers: customer_not_found; kyc_business_not_supported; kyc_not_found; the record's status (200 with already_running: true when in_review or approved, 409 kyc_needs_update, 409 kyc_rejected); then kyc_incomplete_applicant and kyc_missing_documents, in that order.

Coming from v2​

v2 (POST …/individual/{accountId}/request-verification)v3
accountId (uuid)customer_id (cst_…)
response { accountId, verificationUrl }{ kyc, already_running }; no verification link
documents uploaded by the applicant afterwards, through the linkdocuments uploaded first (Presign); refused without them (422 kyc_missing_documents)
400 when the details were not submitted422 kyc_incomplete_applicant
an approved or in_review record returned as isthe same, with already_running: true

Support and Resources​

If you need assistance or have any questions, our support team is here to help. You can contact our support team at support@blockwyre.com.

Stay Updated​

Stay up-to-date with the latest news, updates, and features from BlockWyre by following us on social media:

We are excited to have you on board and look forward to seeing how you leverage BlockWyre's powerful tools to enhance your financial operations. Happy integrating!