POST
Create a KYC Application (verification link)

Body

application/json

A business asking for a KYC link.

allowed_documents
string[] | null

Restrict which documents the applicant may present (id_card, passport). Omit to allow both.

applicant_email
string | null

Delivery hints, so you can send the link yourself.

applicant_phone
string | null
client_id
string<uuid> | null

Link this verification to an existing Dinari customer, if there is one.

external_id
string | null

Your own identifier for this applicant. Echoed on every webhook.

locale
string | null

Applicant's language for the hosted flow: fr (default), ar or en.

max_attempts
integer<int32> | null

How many times the applicant may re-submit on this link. Default 3.

metadata
any

Opaque bag echoed back on every webhook.

profile
any

Applicant-supplied identity to cross-check against the document (first_name, last_name, birth_date, address, …).

redirect_url
string | null

Where to send the applicant once they finish.

require_video
boolean | null

Require a video capture. Defaults to true.

Turning it off means the applicant may send a single still — and a still can never establish liveness, so such a case can never be auto-approved and always lands in review. Only set false for a flow where a human confirms the holder by other means.

ttl_hours
number<double> | null

Link lifetime in hours. Defaults to Verifi's configured TTL.

Response

Link created

Response to a business creating an application.

created_at
string<date-time>
required
id
string<uuid>
required

Give this to your customer. It is valid until link_expires_at.

status
enum<string>
required

Where an application is in its life.

Mirrors Verifi's session vocabulary rather than inventing a Dinari one: a translation layer between two enums that mean the same thing is a place for them to drift apart.

Available options:
CREATED,
OPENED,
SUBMITTED,
PROCESSING,
COMPLETED,
EXPIRED,
CANCELED,
FAILED
client_id
string<uuid> | null
external_id
string | null