Create a resubmission (grant one more attempt)
Admin override that un-blocks exactly one more attempt for an application in REJECTED or PENDING_MANUAL_REVIEW: it returns to DRAFT (provider state and reapply cooldown cleared) so it can re-run verification once. The resubmission cap re-applies afterwards, so each created resubmission grants one attempt; resubmission_count is preserved. Optionally set `force_new_enroll` to make the applicant’s next Smile ID session a fresh enrollment (overwriting the enrolled biometric). Org-scoped and gated on the backend `accounts.write` permission (override with KYC_REVIEWER_PERMISSION).
Authorization
Cowdi_Sales_KYC_backendBearerAuth Cowdi backend-compatible RS256 JWT. sub may be the global user id or a Firebase auth id; Firebase auth-id subjects and missing organization claims are resolved through the backend user/access endpoints. Validated against the configured JWKS (lib/backend-auth.ts).
In: header
Path Parameters
KYC application id.
uuidRequest Body
application/json
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X POST "https://example.com/v1/kyc/applications/497f6eca-6276-4993-bfeb-53cbbbba6f08/resubmissions" \ -H "Content-Type: application/json" \ -d '{}'{ "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "user_id": "a169451c-8525-4352-b8ca-070dd449a1a5", "organization_id": "string", "user_type": "INDIVIDUAL", "merchant_type": "SOLE_PROPRIETOR", "status": "DRAFT", "source": "string", "documents": [ { "id": "string", "document_type": "string", "document_sub_type": "string", "document_number": "string", "expiry_date": "string", "presigned_url": "string", "uploaded_at": "2026-06-04T10:20:00.000Z" } ], "verification": { "provider": "string", "provider_job_id": "string", "result": "string", "confidence_score": 0, "completed_at": "2026-06-04T10:20:00.000Z" }, "verification_reason_code": "string", "verification_reason": "string", "resubmission_count": 0, "force_new_enroll": true, "reapply_blocked_until": "2026-06-04T10:20:00.000Z", "rejection_reason": "string", "submitted_at": "2026-06-04T10:20:00.000Z", "created_at": "2026-06-04T10:20:00.000Z", "updated_at": "2026-06-04T10:20:00.000Z"}{ "code": "INVALID_PARAMS", "description": "user_id must be a UUID", "identifier": "string", "invalid_params": [ { "path": "user_id", "reason": "must be a UUID", "sub_code": "string" } ]}{ "code": "INVALID_PARAMS", "description": "user_id must be a UUID", "identifier": "string", "invalid_params": [ { "path": "user_id", "reason": "must be a UUID", "sub_code": "string" } ]}{ "code": "INVALID_PARAMS", "description": "user_id must be a UUID", "identifier": "string", "invalid_params": [ { "path": "user_id", "reason": "must be a UUID", "sub_code": "string" } ]}{ "code": "INVALID_PARAMS", "description": "user_id must be a UUID", "identifier": "string", "invalid_params": [ { "path": "user_id", "reason": "must be a UUID", "sub_code": "string" } ]}{ "code": "INVALID_PARAMS", "description": "user_id must be a UUID", "identifier": "string", "invalid_params": [ { "path": "user_id", "reason": "must be a UUID", "sub_code": "string" } ]}{ "code": "INVALID_PARAMS", "description": "user_id must be a UUID", "identifier": "string", "invalid_params": [ { "path": "user_id", "reason": "must be a UUID", "sub_code": "string" } ]}Re-open a terminal application for re-verification POST
Previous Page
Review an application awaiting manual review POST
Privileged reviewer action on an application in PENDING_MANUAL_REVIEW. `approve` moves it to APPROVED; `reject` moves it to REJECTED; `request_resubmission` returns it to DRAFT so the applicant can re-run verification. `approve` is accepted only when the merchant subject carries every identity field backend onboarding requires (name, date_of_birth, gender, id_number, phone) — a failed document read extracts none of them, so the reviewer fills the gaps via the internal subject editor first; otherwise the approve is rejected with 409 listing the missing fields. Org-scoped (not owner-scoped) and gated on the backend `accounts.write` permission, resolved via /v1/me/access (override with KYC_REVIEWER_PERMISSION).