Create OTP API keys, track your plan and usage, and send verification codes over WhatsApp from one place.

The OTP Verification page is an API console for sending one-time verification codes (OTP) to your customers over WhatsApp. From this page you manage three things:
curl example to send your first code, with links to the documentation and billing.Note: This is a developer-facing page that loads its data live from your workspace when you open it, and all keys and subscription information are private to your account alone. Alongside it are two pages: API documentation and Plans & billing.
At the top of the page, a card summarizes your current subscription. It is read-only and cannot be edited here. It shows:
| Indicator | What it shows |
|---|---|
| Plan and status | The current OTP plan name and subscription status: trial, active, grace, suspended, or cancelled |
| Cycle and reset | The billing cycle (monthly or yearly) and the number of days until the counter resets |
| Usage bar | Messages used this period against the monthly quota, with the percentage |
| Remaining | Messages remaining in the current period |
| Today | Messages used today against the daily ceiling |
| Overage | The number of overage messages and their amount in SAR, plus the price per overage message |
The usage bar changes color to warn you: an amber warning at 80% of the quota, and a red warning at 100%.
An API key is what lets your system call the OTP send endpoint. The table lists your existing keys and their status (active or revoked).
Click Create API key to open the modal, then configure these fields:
| Field | What it means | Value |
|---|---|---|
Key name (name) |
Text that identifies the key; the Create button stays disabled until you fill it | Required, up to 120 characters |
Allowed IPs (allowed_ips) |
An allowlist of IP addresses or CIDR ranges, written comma-separated | Optional (example: 1.2.3.4, 5.6.7.0/24) |
Rate limit per minute (rate_limit_per_minute) |
Maximum requests for this key per minute | A number from 1 to 10000, default 60 |
Rate limit per day (rate_limit_per_day) |
Maximum requests for this key per day | A number from 1 to 1000000, default 10000 |
Require HMAC (require_hmac) |
A checkbox that forces requests to be signed with HMAC | Off by default |
After creation, the API Key — and, if you enabled HMAC, the HMAC Secret alongside it — appears in a green panel with copy buttons and a warning that you will not be able to view it again. Copy and store it safely before closing the panel. Keys with HMAC enabled show a 🔒 HMAC badge in the table.
The page shows a ready-made example to send your first verification code. Replace YOUR_API_KEY with your key:
curl -X POST https://fynchat.com/api/v1/otp/send \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"phone": "+966501234567", "purpose": "login"}'
For the full reference of every endpoint, open the API documentation.
From the Plans & billing page you choose an OTP plan and manage your subscription:
The behavior of the OTP message itself — the template, message language, code length, validity period, and number of allowed attempts — is not set from this page; its default values live in the server configuration. The current defaults are:
otp_codeThat said, the send API accepts two optional per-request parameters: language (ar or en) and code_length (4 to 8).
The only configuration you can edit from this page is per-API-key: the name, allowed IPs, rate limits, and the HMAC requirement.
We use essential cookies to run the site. With your permission we also measure usage and ad performance. You can change this anytime. Privacy policy