SMS API for Saudi Arabia
Two REST calls from your backend: one sends the code, one checks it, with one Bearer API key and prepaid billing per code sent.
Tawked Verify is an OTP verification API for Saudi numbers.0.09 SAR per SMS code sent. A send the network refuses is refunded at once.
Key points
Two calls and their answers
POST /v1/verify/start with the phone number answers 201 and an id; POST /v1/verify/check with the id and the code the user typed answers whether it matched. The id also reads the status, resends or cancels.
Saudi number normalization
Send 05..., 5..., 9665..., +9665... or 009665...; every form is normalized to +9665... before sending.
Your app named in the text
Every message names your approved application, so customers know who the code is for.
Errors you can act on
Every error has a stable code, such as invalid_destination, insufficient_credits or rate_limited, and every response carries an X-Request-Id for support.
Common questions
Is this a bulk SMS marketing API?
No. Tawked is built for OTP verification: sign-in, sign-up and transaction confirmation, not promotional campaigns.
What authentication does the API use?
Bearer API keys starting with tk_live_ created in your dashboard. Keys are stored hashed server-side.
Is there a sandbox?
Yes. A tk_test_ key sends real, stamped messages to the account owner's phone before approval, and new accounts get 10 SAR of free credit, no card, to test the full flow before topping up.
Which errors should I handle first?
422 invalid_destination for a number that is not a Saudi mobile, 402 insufficient_credits when the balance runs out, 429 rate_limited when a number passes its hourly limit, and 403 account_not_active before your application is approved. The full list is in the reference.
Send your first code today
Sign up with your mobile number
Your account starts with {bonus} SAR of free credit.
Test with a tk_test_ key
Create it on the API keys page before approval. It sends real SMS with a visible test stamp to the phone you signed up with, and only to it, up to 10 sends per application.
Swap in tk_live_ once approved
Nothing else changes.