Skip to content

Create a KYC level

POST/v1/kyc/levels

Requires an API client bearer token.

Creates a reusable level definition (screens of typed, untyped and capture-block fields) for a programme. A key the programme already has is a 409 `level_exists`; a definition that cannot be used is a 400 `invalid_level` carrying `problems[]`. Requires Idempotency-Key and the programme_admin role.

Parameters

Header parameters

NameRequiredDescription
Idempotency-Keyrequired

Client-chosen. An identical retry with the same key returns the stored response; reusing the key with a different payload returns 409.

Request body

programme_idstring (uuid)required
level_keystringrequired
display_namestringrequired
definitionobjectrequired
+ show properties
screensarray of objectrequired
+ show properties
idstringrequired
titlestring
skip_if_knownboolean
fieldsarray of one ofrequired
+ show properties

One of

typed

idstringrequired
kind"typed"required
key"given_name" | "family_name" | "date_of_birth" | "nationality" | "document_number" | "document_expiry" | "document_issuing_state" | "address_line1" | "address_postcode" | "address_country"required
requiredbooleanrequired
input"text" | "dropdown" | "date"
hintstring
optionsarray of object
+ show properties
idstringrequired
valuestringrequired
labelstringrequired
visible_whenstring
patternstring
skip_if_knownboolean

block

idstringrequired
kind"block"required
block"document" | "selfie" | "proof_of_address"required

untyped

idstringrequired
kind"untyped"required
input"text" | "number" | "dropdown" | "checkbox" | "radio" | "upload"required
labelstringrequired
requiredbooleanrequired
hintstring
optionsarray of object
+ show properties
idstringrequired
valuestringrequired
labelstringrequired
visible_whenstring
patternstring

Example

curl -X POST https://api.rigid.fi/v1/kyc/levels \
  -H "Authorization: Bearer $RIGID_API_TOKEN" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{
  "programme_id": "uuid",
  "level_key": "string",
  "display_name": "string",
  "definition": {
    "screens": [
      {}
    ]
  }
}'

Responses

201

The created level.

level_keystringrequired
display_namestringrequired
archived_atstring
screensintegerrequired
fieldsintegerrequired
used_byarray of stringrequired
updated_atstringrequired
definitionobjectrequired
+ show properties
screensarray of objectrequired
+ show properties
idstringrequired
titlestring
skip_if_knownboolean
fieldsarray of one ofrequired
+ show properties

One of

typed

idstringrequired
kind"typed"required
key"given_name" | "family_name" | "date_of_birth" | "nationality" | "document_number" | "document_expiry" | "document_issuing_state" | "address_line1" | "address_postcode" | "address_country"required
requiredbooleanrequired
input"text" | "dropdown" | "date"
hintstring
optionsarray of object
+ show properties
idstringrequired
valuestringrequired
labelstringrequired
visible_whenstring
patternstring
skip_if_knownboolean

block

idstringrequired
kind"block"required
block"document" | "selfie" | "proof_of_address"required

untyped

idstringrequired
kind"untyped"required
input"text" | "number" | "dropdown" | "checkbox" | "radio" | "upload"required
labelstringrequired
requiredbooleanrequired
hintstring
optionsarray of object
+ show properties
idstringrequired
valuestringrequired
labelstringrequired
visible_whenstring
patternstring
400

Validation error

typestringrequired
titlestringrequired
statusintegerrequired
detailstring
instancestring
401

Authentication required

typestringrequired
titlestringrequired
statusintegerrequired
detailstring
instancestring
403

Forbidden

typestringrequired
titlestringrequired
statusintegerrequired
detailstring
instancestring
409

The programme already has a level with this key (code `level_exists`), or the Idempotency-Key was reused with a different payload

typestringrequired
titlestringrequired
statusintegerrequired
detailstring
instancestring
429

Too many policy writes from this caller — see Retry-After

typestringrequired
titlestringrequired
statusintegerrequired
detailstring
instancestring
500

Internal server error

typestringrequired
titlestringrequired
statusintegerrequired
detailstring
instancestring