Create (or get) the caller’s KYC application
Creates a KYC application for the authenticated user, or returns the existing one if a non-terminal application already exists.
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
Request Body
application/json
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
curl -X POST "https://example.com/v1/kyc/applications" \ -H "Content-Type: application/json" \ -d '{ "user_type": "INDIVIDUAL" }'{ "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" } ]}Start identity verification (unified entry point) POST
Unified entry point for starting an identity-verification job. `channel` selects the submission path and the rest of the body is that channel’s input: - `server_upload`: browser-captured selfie + ID submitted server-side to Smile ID Enhanced Document Verification (job_type 11) — keeps the government-database cross-check and captures the back of the ID. Returns the application status (202). - `provider_sdk`: mint a provider SDK session the client submits with directly — the hosted web SDK, or the v12 Android / iOS SDKs, which take the same token on `network.config.token` (or a SmartSelfie Authentication session for an already-enrolled user). Returns the provider session (201). The legacy spelling `web_sdk` is still accepted for this channel but should not be used by new clients. Supersedes POST /capture (server_upload) and POST /session (provider_sdk), which remain as aliases over the same engine. The pass/fail result arrives asynchronously via the provider callback, so the application is left ID_VERIFICATION_PENDING. Declare the Smile ID SDK versions this client ships in `X-SmileID-Api-Versions`: the job runs against the newest one listed and stays on it for its whole life (`config.api_version` on a `provider_sdk` session says which).
Get loan application by ID GET
Retrieve loan application details by loan application ID Deprecated path — use /v1/accounts/loan/applications/greenwheels instead.