Skip to main content
1

Get a sandbox key

Sign in to the dashboard, finish onboarding, and open Applications. A sandbox key (tk_test_...) is issued the moment onboarding completes, before your application is reviewed. Copy it once: keys are shown a single time.
A sandbox key sends real messages, but only to numbers you have proven you own in the dashboard, and only 10 times per application. The Sandbox page has the details.
2

Start a verification

Send a code to the destination. Any accepted Saudi mobile format works; lang picks the message language (Arabic unless it is exactly en).
The answer is 201 with the id you will check against and when the code expires:
3

Check the code

Post the id and the code the person typed. The code is compared exactly as sent: never trimmed, never normalised.
Every outcome is a 200. Read verified first, then status for the reason:
status is one of verified, invalid_code, too_many_attempts, failed, expired or canceled. An unknown id is the one exception: 404 { "error": "not_found" }. A verified request stays verified and ignores later codes.
4

Go live

Once your application is approved, create a live key (tk_live_...) on the same Keys page and swap it in. The endpoints and shapes are identical; the [TEST] stamp disappears and the sandbox caps no longer apply.

Defaults you can tune

Each application sets its own verification settings in the dashboard. The defaults, and their bounds:

What next

Authentication

Key modes, scopes, expiry and IP allowlists.

Reliability

Idempotency keys, rate limits and the protection guard.

Webhooks

Get told when a verification is verified, fails or expires.

Resend and cancel

A new code on the same id, or a clean cancel.