Skip to main content
POST
/
v3
/
phone
/
send
/
curl
curl -X POST https://verification.didit.me/v3/phone/send/ \
  -H 'x-api-key: YOUR_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{
    "phone_number": "+14155552671",
    "options": {
      "code_size": 6,
      "preferred_channel": "whatsapp",
      "locale": "en-US"
    },
    "vendor_data": "user-1234"
  }'
{ "request_id": "e39cb057-92fc-4b59-b84e-02fec29a0f24", "status": "Success", "reason": null, "vendor_data": "user-1234", "metadata": null }

Authorizations

x-api-key
string
header
required

Body

application/json
phone_number
string
required

Recipient phone number in E.164 format — leading + and country code (e.g., +14155552671). Numbers are validated and normalized to E.164; unparseable or invalid numbers return 400 with a phone_number field error.

Maximum string length: 20
Example:

"+14155552671"

options
object

OTP delivery options. All fields are optional.

signals
object

Optional device and network signals about the end user, forwarded to the anti-fraud layer to improve detection of abusive or automated traffic. All fields are optional.

vendor_data
string

Optional caller-controlled identifier (your internal user id, an email, a UUID, etc.) persisted on the session and echoed back in the send response, the matching check response, webhooks, and the Business Console. Use it to correlate Didit's request_id with your user record.

metadata
object

Optional free-form JSON object persisted on the session and echoed back in the send response, the matching check response, webhooks, and the Business Console.

Response

Send acknowledged. Inspect status: Success and Retry mean a code is on its way; Blocked means the anti-fraud layer refused and the verification is already finalized as Declined. request_id is the persisted session id (same id on a Retry).

request_id
string<uuid>

Session id of the verification. A Retry send returns the same request_id as the original send. This id appears in the Business Console, is returned again by a finalized POST /v3/phone/check/, and can be passed to GET /v3/session/{sessionId}/decision/.

status
enum<string>

Success — OTP sent to a new verification. Retry — OTP re-sent for the pending verification created by a previous send. Blocked — the anti-fraud layer refused to send; the verification is immediately finalized as Declined and nothing is billed.

Available options:
Success,
Retry,
Blocked
reason
string | null

Why a send was Blocked (e.g., repeated_attempts, suspicious, spam). null on Success and Retry.

vendor_data
string | null

Echo of the vendor_data stored on the session (from the first send).

metadata
object

Echo of the metadata stored on the session (from the first send).