Cowdidocs
API ReferenceCurrent account activation

Start a current-account activation

POST
/v1/user/accounts/current/activations

Creates an activation for the caller's current account and sends an OTP by SMS. Requires an authenticated, active user. If an activation is already in progress, the call returns that activation instead of starting a new one. It does not send a second OTP. Returns 422 when the caller's KYC status is not APPROVED. Returns 409 when a previous activation was rejected and still awaits an operator reset. Returns 409 WALLET_ID_ALREADY_REGISTERED when the wallet provider already holds the caller's ID and support must resolve it. Do not retry this error.

AuthorizationBearer <token>

Create a client with POST /v1/oauth/clients, then exchange its credentials for an access token. AUTHORIZATION_CODE clients act on behalf of a signed-in user and always use PKCE; CLIENT_CREDENTIALS clients act as themselves. A client may only be granted scopes its creator already holds — read the grantable list from GET /v1/oauth/clients/scopes.

In: header

Response Body

application/json

application/json

application/json

application/json

application/json

application/json

application/json

curl -X POST "https://example.com/v1/user/accounts/current/activations"
{  "id": "550e8400-e29b-41d4-a716-446655440000",  "status": "AWAITING_OTP",  "created_at": "2026-01-15T09:30:00Z",  "otp_confirmed_at": "2026-01-15T09:31:00Z",  "completed_at": "2026-01-15T09:32:00Z",  "rejection_reason": "Document image quality too low for verification",  "current_verification": {    "channel": "sms"  },  "resource_id": "string"}
{  "code": "BAD_REQUEST",  "description": "Bad Request"}
{  "code": "UNAUTHORISED",  "description": "Unauthorised"}
{  "code": "FORBIDDEN",  "description": "Forbidden"}
{  "code": "BAD_REQUEST",  "description": "Invalid input"}
{  "code": "RATE_LIMIT_EXCEEDED",  "description": "Too Many Requests"}
{  "code": "INTERNAL_ERROR",  "description": "Internal Server Error"}