KYC

Add a Sumsub KYC level

POST/kyc/levels
kyc:writeadd_kyc_level_legacyDeprecatedSunset 2027-06-30

Adds a Sumsub KYC check level. levelName is the Sumsub level identifier access tokens are minted against; label defaults to the level name when omitted. It does not check that the name is unused and takes no dry_run or Idempotency-Key. Deprecated: withdrawn on 2027-06-30. POST /kyc-levels replaces it; every answer carries a Link header with rel="successor-version".

Request body

application/json, required

  • levelNamestringRequired#

    The Sumsub level name.

  • labelstring#

    Display label (defaults to levelName).

{
  "levelName": "basic-kyc-level",
  "label": "Basic KYC"
}

Responses

201

The level was created.

KycLevel
{
  "data": {
    "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
    "level_name": "basic-kyc-level",
    "label": "Basic KYC",
    "created_at": "2026-06-15T10:30:00+00:00",
    "updated_at": "2026-06-15T10:30:00+00:00"
  }
}
401

Authentication failed. error.code is one of invalid_token, expired, revoked.

Error
403

Authorization failed. error.code is one of org_disabled, ip_blocked, missing_scope, scope_disabled, user_disabled.

Error
422

Request validation failed (HTTP 422). The body is either the Laravel validation envelope (message + field-keyed errors) or the API error envelope for domain rejections (e.g. form_type_not_supported, folder_locked, parent_not_found, folder_not_empty).

429

Rate limit exceeded (error.code = rate_limited).

Error

Examples

curl -X POST https://your-org-domain/kong/core/api/v2/kyc/levels\
  -H "Authorization: Bearer $HELM_API_KEY"\
  -H "Content-Type: application/json"\
  -d '{
  "levelName": "basic-kyc-level",
  "label": "Basic KYC"
}'