https://wp.964.live
964Auth OTP API
Iraq's OTP delivery platform via WhatsApp & SMS. Simple REST API with automatic WhatsApp→SMS fallback, prepaid credit billing in Iraqi Dinar.
منصة إرسال رموز التحقق عبر واتساب وSMS في العراق. API بسيطة مع Fallback تلقائي ونظام رصيد مسبق بالدينار العراقي.
پلاتفۆرمی OTP لە عێراق ئێستا. API ی ئاسان بە Fallback ئۆتۆماتیک و سیستەمی کرێی پێشوەختی دینار عێراقی.
WhatsApp Cloud API
EasySendSMS
10 min expiryصلاحية 10 دقائق١٠ خولەک
IQD prepaid creditرصيد بالدينارکرێی دینار
3 attempts max3 محاولات٣ هەوڵ
Base URL:
https://wp.964.live — Prepend to all endpoints
Base URL: https://wp.964.live — أضفه قبل كل endpoint
Base URL: https://wp.964.live — پێشی هەموو endpoint دابنێ
Authentication
المصادقة
دەستوەریپێدان
x-api-key: sk_live_...
cURL
curl -X POST "https://wp.964.live/otp/send/auto" \ -H "Content-Type: application/json" \ -H "x-api-key: sk_live_abc123..." \ -d '{"phone":"07XXXXXXXXX"}'
Send OTP — WhatsApp Only
إرسال OTP — واتساب فقط
ناردنی OTP — واتساپ تەنها
POST
/otp/send/whatsapp
API Key
يحتاج API Key
API Key پێویستە
Header:
x-api-key: sk_live_...
| Fieldالحقلخانە | Typeالنوعجۆر | Descriptionالوصفوەسف | |
|---|---|---|---|
phone | string | Required | Phone number — accepts 07XX or 9647XXرقم الهاتف — يقبل 07XX أو 9647XXژمارەی تەلەفۆن — 07XX یان 9647XX |
metadata | object | Optional | Extra data saved with message logبيانات إضافية تُحفظ مع سجل الرسالةداتای زیادە کە لەگەڵ تۆماری نامەکە خەزن دەکرێت |
cURL
curl -X POST "https://wp.964.live/otp/send/whatsapp" \ -H "Content-Type: application/json" \ -H "x-api-key: sk_live_..." \ -d '{ "phone": "07XXXXXXXXX", "metadata": { "user_id": "123" } }'
{
"success": true,
"msg_id": "msg_abc123...",
"channel": "whatsapp",
"fallback": false,
"expires_in": 600,
"balance_iqd": 935,
"balance_usd": 0.0640
}
{
"success": false,
"error": "INSUFFICIENT_BALANCE",
"balance_usd": 0.001,
"required_usd": 0.0445,
"approx_remaining_messages": 0
}
Send OTP — SMS Plain
OTP — SMS بدون Sender ID
OTP — SMS سادە
POST
/otp/send/sms
Cheapest
الأرخص
ئەرزانترین
| Fieldالحقلخانە | Typeالنوعجۆر | Descriptionالوصفوەسف | |
|---|---|---|---|
phone | string | Required | Phone numberرقم الهاتفژمارەی تەلەفۆن |
template_id | string | Optional | Default: otp_ar_shortالافتراضي: otp_ar_shortپێشکەوتوو: otp_ar_short |
metadata | object | Optional | Extra metadataبيانات إضافيةداتای زیادە |
cURL
curl -X POST "https://wp.964.live/otp/send/sms" \ -H "x-api-key: sk_live_..." \ -H "Content-Type: application/json" \ -d '{"phone":"07XXXXXXXXX","template_id":"otp_ar_short"}'
Send OTP — SMS Branded
OTP — SMS مع Sender ID
OTP — SMS بە ناوی ناردەر
Sender ID rules: alphanumeric only, no spaces, max 11 chars — e.g.
964Auth
قواعد Sender ID: أحرف وأرقام فقط، بدون مسافات، 11 حرف كحد أقصى — مثال: 964Auth
ڕووکاری Sender ID: تەنها پیت و ژمارە، بێ بۆشایی، زیاتر لە ١١ پیت نابێت — بۆ نموونە: 964Auth
POST
/otp/send/sms/branded
API Keyيحتاج API KeyAPI Key پێویستە
| Fieldالحقلخانە | Typeالنوعجۆر | Descriptionالوصفوەسف | |
|---|---|---|---|
phone | string | Required | Phone numberرقم الهاتفژمارەی تەلەفۆن |
sender_id | string | Optional | Sender name, default: 964Authاسم المرسل، الافتراضي: 964Authناوی ناردەر، پێشکەوتوو: 964Auth |
template_id | string | Optional | Default: otp_arالافتراضي: otp_arپێشکەوتوو: otp_ar |
cURL
curl -X POST "https://wp.964.live/otp/send/sms/branded" \ -H "x-api-key: sk_live_..." \ -H "Content-Type: application/json" \ -d '{ "phone": "07XXXXXXXXX", "sender_id": "964Auth", "template_id": "otp_ar" }'
Auto — WhatsApp → SMS Fallback
Auto — واتساب ← SMS تلقائي
ئۆتۆماتیک — واتساپ → SMS Fallback
Recommendedموصى بهپێشنیارکراو
— Tries WhatsApp first, automatically falls back to SMS Branded on failure
— يحاول واتساب أولاً، ويتحول تلقائياً لـ SMS Branded عند الفشل
— یەکەم واتساپ تاقی دەکاتەوە، بە خۆی دەگۆڕێت بۆ SMS Branded ئەگەر شکستی هێنا
POST
/otp/send/auto
API Keyيحتاج API KeyAPI Key پێویستە
| Fieldالحقلخانە | Typeالنوعجۆر | Descriptionالوصفوەسف | |
|---|---|---|---|
phone | string | Required | Phone numberرقم الهاتفژمارەی تەلەفۆن |
sms_template_id | string | Optional | SMS template if fallback used — default: otp_arقالب SMS للـ fallback — الافتراضي: otp_arقاڵبی SMS بۆ fallback — پێشکەوتوو: otp_ar |
sender_id | string | Optional | Sender ID for SMS fallbackSender ID لـ SMS الاحتياطيSender ID بۆ SMS Fallback |
cURL
curl -X POST "https://wp.964.live/otp/send/auto" \ -H "x-api-key: sk_live_..." \ -H "Content-Type: application/json" \ -d '{ "phone": "07XXXXXXXXX", "sms_template_id": "otp_ar", "sender_id": "964Auth" }'
{
"success": true,
"channel": "sms_branded",
"fallback": true,
"fallback_reason": "WhatsApp failed — switched to SMS",
"expires_in": 600
}
POST
/otp/send/auto/plain
WA → SMS plain (cheapest fallback)
WA → SMS بدون sender (الأرخص)
WA → SMS سادە (ئەرزانترین)
| Fieldالحقلخانە | Typeالنوعجۆر | Descriptionالوصفوەسف | |
|---|---|---|---|
phone | string | Required | Phone numberرقم الهاتفژمارەی تەلەفۆن |
sms_template_id | string | Optional | Default: otp_ar_shortالافتراضي: otp_ar_shortپێشکەوتوو: otp_ar_short |
cURL
curl -X POST "https://wp.964.live/otp/send/auto/plain" \ -H "x-api-key: sk_live_..." \ -H "Content-Type: application/json" \ -d '{"phone":"07XXXXXXXXX"}'
Verify OTP
التحقق من الرمز
پشتڕاستکردنەوەی کۆد
POST
/otp/verify
API Keyيحتاج API KeyAPI Key پێویستە
| Fieldالحقلخانە | Typeالنوعجۆر | Descriptionالوصفوەسف | |
|---|---|---|---|
phone | string | Required | Same number used when sendingنفس الرقم المستخدم عند الإرسالهەمان ژمارەی کاتی ناردن |
otp | string | Required | 6-digit code received by userالرمز المكون من 6 أرقامکۆدی ٦ ژمارە |
msg_id | string | Optional | Message ID to link with log entryمعرف الرسالة لربطه بالسجلناسنامەی نامە بۆ بەستنەوە بە تۆمار |
cURL
curl -X POST "https://wp.964.live/otp/verify" \ -H "x-api-key: sk_live_..." \ -H "Content-Type: application/json" \ -d '{ "phone": "07XXXXXXXXX", "otp": "847231", "msg_id": "msg_abc..." }'
{
"success": true,
"message": "✅ تم التحقق بنجاح",
"phone": "9647XXXXXXXX",
"verified_at": "2024-01-01T12:01:00Z"
}
{
"success": false,
"error": "INVALID_OTP",
"remaining_attempts": 2
}
Send Custom SMS
إرسال SMS مخصص
ناردنی SMS تایبەت
POST
/sms/send/branded | /sms/send/plain
API Keyيحتاج API KeyAPI Key پێویستە
| Fieldالحقلخانە | Typeالنوعجۆر | Descriptionالوصفوەسف | |
|---|---|---|---|
to | string | Required | Recipient phone numberرقم المستقبلژمارەی وەرگر |
template_id | string | Required | Template ID — see templates list belowمعرف القالب — انظر القائمة أدناهناسنامەی قاڵب — لیستی خوارەوە ببینە |
vars | object | Optional | Template variables e.g. {"name":"Ali"}متغيرات القالب مثل {"name":"علي"}گۆڕاوەکانی قاڵب، بۆ نموونە {"name":"علی"} |
sender_id | string | Optional | Branded only — sender name, default: 964Authللنسخة branded فقط — اسم المرسلتەنها branded — ناوی ناردەر |
cURL
# Branded — with sender name # مع اسم المرسل curl -X POST "https://wp.964.live/sms/send/branded" \ -H "x-api-key: sk_live_..." \ -H "Content-Type: application/json" \ -d '{ "to": "07XXXXXXXXX", "template_id": "welcome_ar", "vars": { "name": "محمد" }, "sender_id": "964Auth" }' # Plain — no sender name (cheaper) # بدون اسم مرسل (أرخص) curl -X POST "https://wp.964.live/sms/send/plain" \ -H "x-api-key: sk_live_..." \ -H "Content-Type: application/json" \ -d '{ "to": "07XXXXXXXXX", "template_id": "custom_ar", "vars": { "message": "تم تأكيد طلبك رقم 1234" } }'
SMS Templates
قوالب SMS
قاڵبەکانی SMS
Rate Limits & Warnings
حدود الاستخدام والتحذيرات
سنووری بەکارهێنان و ئاگاداریەکان
WhatsApp Account Protection
حماية حساب واتساب
پاراستنی هەژماری واتساپ
Sending too many OTPs to the same number may get your WhatsApp Business account flagged or banned. Stay within the limits below.
إرسال كثير من OTP لنفس الرقم قد يؤدي لتعليق حساب واتساب. التزم بالحدود أدناه.
ناردنی زۆر OTP بۆ هەمان ژمارە دەتوانێت هەژماری واتساپت بلۆک بکات. لەناو سنوورەکان بمێنەوە.
Best Practices
أفضل الممارسات
باشترین شێوازەکان
- Never expose your API Key in frontend code — use a backend proxy
- لا تضع الـ API Key في كود الواجهة — استخدم backend proxy
- API Key ی خۆت لە کۆدی فرۆنتەند مەخەن — backend proxy بەکاربهێنە
- Implement your own OTP attempt limiting on the frontend
- أضف حد للمحاولات على الواجهة أيضاً
- سنووری هەوڵ لە فرۆنتەندیشدا زیاد بکە
- Use
otp_ar_shortorotp_ku_shortfor lower SMS costs - استخدم
otp_ar_shortأوotp_ku_shortلتوفير تكلفة SMS otp_ar_shortیانotp_ku_shortبەکاربهێنە بۆ کەمکردنەوەی تێچووی SMS- Always verify OTP server-side — never trust the client
- تحقق من OTP دائماً على السيرفر — لا تثق بالعميل
- هەمیشە OTP لە سیرفەردا پشتڕاست بکەرەوە
Error Codes
رموز الأخطاء
کۆدەکانی هەڵە