Skip to main content
POST
Create Sumsub hosted KYC session

Authorizations

x-api-key
string
header
required

API key for authentication. Obtain from your Pods dashboard.

Body

application/json

Sumsub hosted KYC session payload

cpf
string
required

Brazilian CPF. Pods normalizes and hashes this value. It is sent to Sumsub as the applicant tax id and is never returned.

Example:

"52998224725"

email
string<email>
required

Applicant email

walletAddress
string
required

Applicant wallet. Checksummed EVM address or Solana public key.

Example:

"EXYhCNamLPFfSMekSn7Lzc2cP32aZpRa7ok5gErdJzcj"

externalUserId
string

Optional id from your system for support correlation. Stored on the profile; it is not used to look anything up.

Example:

"app-user-001"

redirectUrl
string

Where the applicant is sent back to after a successful verification. It must be https, carry no credentials and match, by origin and path, an entry of the redirect allowlist configured for your account. The query string is kept; the fragment is dropped. When omitted, the first allowlisted URL is used.

Maximum string length: 1024
Example:

"https://app.example.com/kyc/return"

Response

Session created, reopened, or already resolved (approved, under analysis, rejected)

Sumsub hosted KYC session. Calling the endpoint again with the same CPF returns the same session, with the same link while it still has more than five minutes left, and a new link after that.

kycUserId
string<uuid>
required

Pods-generated public KYC user id. Stays the same for the same CPF on your account.

Example:

"550e8400-e29b-41d4-a716-446655440000"

status
enum<string>
required

Normalized Pods KYC status

Available options:
created,
provider_pending,
approved,
rejected,
rejected_retryable,
blocked
Example:

"created"

requiresWebView
boolean
required

True when verificationLink is present and the applicant must open it.

Example:

true

Sumsub hosted verification page. Open it in the applicant's browser. A bearer link: do not log it or share it. Null when there is nothing to open: the profile is already approved, under analysis, rejected or blocked.

Example:

"https://in.sumsub.com/websdk/p/sbx_example"

When the link stops opening. It does not end the verification: call this endpoint again for a new link, and poll GET /api/v1/kyc/status for the result.

Example:

"2026-10-19T18:30:00.000Z"

reason
object

Present only when status is rejected or rejected_retryable.