Documentation Index
Fetch the complete documentation index at: https://orbit-docs.devotel.io/llms.txt
Use this file to discover all available pages before exploring further.
Verify API
One-time-password (OTP) issuance and validation across SMS, voice (TTS), email, and WhatsApp. Two patterns:
- Direct — issue an OTP to a phone / email; validate the code the user enters.
- Profile-based — define a verify profile (channel, code length, expiration, locale, sender), then reference it by name from your app. Lets you tune behavior without redeploying.
Base path: /v1/verify
Authentication: API key (X-API-Key) or session JWT.
Send & check
| Method | Path | Purpose |
|---|
POST | /v1/verify/send | Issue an OTP |
POST | /v1/verify/check | Validate an OTP code |
Verifications
| Method | Path | Purpose |
|---|
GET | /v1/verify/ | List verifications |
GET | /v1/verify/{id} | Get a verification |
POST | /v1/verify/{id}/cancel | Cancel an in-flight verification |
Profiles
| Method | Path | Purpose |
|---|
GET | /v1/verify/profiles | List profiles |
POST | /v1/verify/profiles | Create a profile |
GET | /v1/verify/profiles/{id} | Get a profile |
PATCH | /v1/verify/profiles/{id} | Update |
DELETE | /v1/verify/profiles/{id} | Delete |
Example — send and validate an SMS OTP
# 1. Send
curl -X POST https://orbit-api.devotel.io/api/v1/verify/send \
-H "X-API-Key: dv_live_sk_your_key_here" \
-H "Content-Type: application/json" \
-d '{
"to": "+14155552671",
"channel": "sms",
"code_length": 6,
"expires_in_seconds": 600,
"locale": "en-US"
}'
# Response: { data: { verification_id: "ver_abc123" } }
# 2. Check
curl -X POST https://orbit-api.devotel.io/api/v1/verify/check \
-H "X-API-Key: dv_live_sk_your_key_here" \
-H "Content-Type: application/json" \
-d '{ "verification_id": "ver_abc123", "code": "482517" }'
The check endpoint returns { data: { status: "verified" } } on success or { status: "invalid" | "expired" | "exhausted" } on failure. Codes have a small fixed number of attempts (default 5) before they’re exhausted.
See also