Phone Validations
What is a Phone Validation?
A Phone Validation is one OTP session for a phone number. Verifik sends a one-time code over SMS or WhatsApp, then you confirm the code the user enters.
Typical lifecycle:
- Send — create a Phone Validation and deliver the OTP
- Verify — submit the same phone + OTP to mark the session as validated
See the full field list in The Phone Validation Object.
Timing rules
| Rule | Default |
|---|---|
| OTP valid for | 10 minutes (expiresAt on the send response) |
| Resend cooldown | ~2 minutes between sends for the same phone + gateway (409 otp_recently_sent) |
| Bypass cooldown | Manual create with "force": true |
Always send and display countryCode with the national phone (e.g. +57 3001234567) so users know which destination received the message.
Choose your integration path
Pick the path that matches how you call the API.
Path A — Standalone / Smart Tools (no project)
Use this when you send OTPs from your backend or from Smart Tools → WhatsApp / SMS Messages, without a Smart Enroll or Smart Access project.
| Step | Endpoint |
|---|---|
| 1. Send OTP | POST /v2/phone-validations/manual |
| 2. Verify OTP | PUT /v2/phone-validations |
- No
project/projectFlowrequired - Record
sourceis"manual" - Charged with metered communication credits after a successful send
- Optional
title(max 15 chars) sets the company name in the WhatsApp/SMS template
Your app Verifik API
──────── ───────────
POST /manual ───────────► OTP sent (SMS / WhatsApp)
status: sent
PUT /phone-validations ─► OTP checked
{ phone, countryCode, otp } status: validated
Path B — Project / App Registration (Smart Enroll & Access)
Use this when the OTP is part of an enrollment or login flow tied to a project.
| Step | Endpoint |
|---|---|
| 1. Send OTP | POST /v2/phone-validations/app-registration |
| 2. Verify OTP | PUT /v2/phone-validations |
- Requires project / app registration context
- Record
sourcedefaults to"flow" - Billing may use Smart Enroll / Smart Access plan counters depending on the flow
API endpoint index
| Action | Method & path | Docs |
|---|---|---|
| Send standalone OTP | POST /v2/phone-validations/manual | Create a Manual Phone Validation |
| Verify OTP | PUT /v2/phone-validations | Validate a Phone Validation |
| Send OTP in app registration | POST /v2/phone-validations/app-registration | Create an App Registration Phone Validation |
| List | GET /v2/phone-validations | List All Phone Validations |
| Retrieve one | GET /v2/phone-validations/{id} | Retrieve a Phone Validation |
| SMS & WhatsApp prices | — | SMS & WhatsApp Prices |
Authentication
All endpoints require Authorization: Bearer {YOUR_ACCESS_TOKEN} and Content-Type: application/json.
Status values
| Status | Meaning |
|---|---|
sent | OTP was delivered (or accepted by the provider) |
validated | User OTP matched |
failed | Expired, rejected, or send failed |
new | Created but not yet successfully sent |