مرجع الـ API
نقطتا وصول لتدفّق العمل الأساسي — الإرسال والتحقق — بالإضافة إلى نقطة اختيارية لربط Telegram مسبقًا، وثلاثية TOTP الخاصة بالتسجيل والتحقق والتعطيل. جميعها POST، وجميعها JSON، وجميعها تتطلب مصادقة.
المُوصى به: اربط Telegram قبل إرسال أي رمز على الإطلاق
إرسال الرمز
/v1/otp/sendيُنشئ رمزًا لمرة واحدة ويُسلِّمه إلى رقم الهاتف عبر WhatsApp. تنتهي صلاحية الرمز بعد عدد الثواني المُعاد في expires_in.
| المُعامِل | النوع | إلزامي | الوصف |
|---|---|---|---|
phone | string | إلزامي | رقم هاتف المُستلِم بصيغة E.164، متضمّنًا رمز الدولة. |
curl -X POST https://api.authevo.dev/v1/otp/send \
-H "Authorization: Bearer sk_…" \
-H "Content-Type: application/json" \
-d '{ "phone": "+201234567890" }'{
"data": {
"message_id": "msg_9k2m4n8x",
"status": "sent",
"expires_in": 600
}
}يُعيد الاستدعاء الناجح مُعرِّف الرسالة وحالة sent.
التعامل مع التحويل الاحتياطي إلى Telegram
إذا تعذّر الوصول إلى هذا المستلم عبر WhatsApp ولم يربط Telegram بعد، يُعيد /send الخطأ 409 CHANNEL_NOT_LINKED بدلًا من 200 المعتادة — اعرض له error.telegram_bot_url (رابط، رمز QR، أي واجهة تناسبك). بمجرد أن ينقر Start في Telegram، تُسلِّم Authevo رمزًا جديدًا هناك تلقائيًا — لا حاجة أبدًا لإعادة استدعاء /send أو الاستعلام عن أي شيء. تفضّل تجنّب هذه الرحلة الإضافية من الأساس؟ استدعِ نقطة ربط Telegram أدناه بشكل استباقي فور التسجيل، بحيث يكون التحويل الاحتياطي مربوطًا بالفعل قبل الحاجة إليه.
{
"error": {
"code": "CHANNEL_NOT_LINKED",
"message": "Could not deliver via WhatsApp, and this recipient has not linked the Telegram fallback. Ask them to open the link below in Telegram and tap Start — no typing required.",
"telegram_bot_url": "https://t.me/authevo_otp_bot?start=aBc123XyZ..."
}
}curl -X POST https://api.authevo.dev/v1/otp/send \
-H "Authorization: Bearer sk_…" \
-H "Content-Type: application/json" \
-d '{ "phone": "+201234567890" }'
# If WhatsApp can't reach this recipient and they haven't linked the
# Telegram fallback yet, you get a 409 instead of the usual 200:
#
# {
# "error": {
# "code": "CHANNEL_NOT_LINKED",
# "message": "...",
# "telegram_bot_url": "https://t.me/authevo_otp_bot?start=..."
# }
# }
#
# Show error.telegram_bot_url to this recipient. Once they tap Start in
# Telegram, Authevo delivers a fresh code there automatically — no need to
# retry /send or poll for anything.التحقق من الرمز
/v1/otp/verifyيتحقق من الرمز الذي أدخله المستخدم مقابل الرمز الذي أُرسل إلى هاتفه، ويُعيد ما إذا كان الرمز صالحًا.
| المُعامِل | النوع | إلزامي | الوصف |
|---|---|---|---|
phone | string | إلزامي | رقم الهاتف نفسه الذي أُرسل إليه الرمز، بصيغة E.164. |
code | string | إلزامي | الرمز المكوَّن من 6 أرقام الذي استلمه المستخدم عبر WhatsApp. |
curl -X POST https://api.authevo.dev/v1/otp/verify \
-H "Authorization: Bearer sk_…" \
-d '{ "phone": "+201234567890", "code": "123456" }'{ "data": { "verified": true } }عند تطابق الرمز وبقائه صالحًا تكون قيمة verified مساوية لـ true، وإلا فشل الطلب مع غلاف خطأ.
ربط Telegram (مُوصى به)
/v1/otp/telegram-linkيُنشئ رابط Telegram بنقرة واحدة لرقم هاتف، بحيث يعمل التحويل الاحتياطي إلى Telegram من أول رمز يُرسَل للمستخدم — لا بعد فشل WhatsApp لأول مرة فقط. استدعِ هذه النقطة فور تسجيل المستخدم في منتجك، ثم أرسل له الرابط مرة واحدة (بريد إلكتروني، رسالة نصية، داخل التطبيق). تنتهي صلاحية الرابط خلال 15 دقيقة ويمكن استخدامه مرة واحدة فقط — استدعاء هذه النقطة مجددًا لنفس الرقم آمن تمامًا، ويصدر رابطًا جديدًا فقط.
| المُعامِل | النوع | إلزامي | الوصف |
|---|---|---|---|
phone | string | إلزامي | رقم هاتف المستلم بصيغة E.164، متضمّنًا رمز الدولة. |
curl -X POST https://api.authevo.dev/v1/otp/telegram-link \
-H "Authorization: Bearer sk_…" \
-H "Content-Type: application/json" \
-d '{ "phone": "+201234567890" }'{
"data": {
"telegram_bot_url": "https://t.me/authevo_otp_bot?start=aBc123XyZ...",
"expires_in": 900
}
}يُعيد الاستدعاء الناجح رابط Telegram بنقرة واحدة وعدد الثواني التي يظل صالحًا خلالها.
مصادقة ثنائية (TOTP)
طريقة تحقق ثانية ومستقلة — أي تطبيق مصادقة (Google Authenticator أو Authy أو 1Password)، دون إرسال أي رسالة أبدًا، بسعر $0.002 فقط لكل عملية تحقق. سجّل مرة واحدة، ثم تحقّق من رمز متجدد مكوَّن من 6 أرقام إلى الأبد بعد ذلك.
التسجيل
/v1/totp/enrollيُصدر سرًا مشتركًا لرقم هاتف ويُعيد رمز QR جاهزًا للعرض إلى جانب رابط otpauth:// الخام والسر نفسه — اعرض رمز QR على المستخدم، أو دعه يكتب السر يدويًا.
| المُعامِل | النوع | إلزامي | الوصف |
|---|---|---|---|
phone | string | إلزامي | رقم الهاتف المراد تسجيله، بصيغة E.164. |
replace | boolean | اختياري | مرّر true لاستبدال تسجيل مؤكَّد موجود بالفعل (مثلًا فقد المستخدم جهازه). التسجيل المؤكَّد الموجود مسبقًا يُعيد الحالة 409 بدلًا من استبداله بصمت. |
curl -X POST https://api.authevo.dev/v1/totp/enroll \
-H "Authorization: Bearer sk_…" \
-H "Content-Type: application/json" \
-d '{ "phone": "+201234567890" }'{
"data": {
"secret": "JBSWY3DPEHPK3PXP",
"otpauth_url": "otpauth://totp/Authevo:+201234567890?secret=JBSWY3DPEHPK3PXP&issuer=Authevo&algorithm=SHA1&digits=6&period=30",
"qr_code": "data:image/png;base64,iVBORw0KGgo...",
"already_enrolled": false
}
}قيمة qr_code هي رابط بيانات PNG جاهز للاستخدام مباشرة — استخدمه مباشرةً كمصدر صورة، دون الحاجة لأي مكتبة QR من جانبك. تكون قيمة already_enrolled صحيحة فقط عند وجود سر مؤكَّد سابق لهذا الرقم.
التحقق
/v1/totp/verifyيتحقق من رمز مكوَّن من 6 أرقام من تطبيق المصادقة الخاص بالمستخدم مقابل السر المسجَّل له.
| المُعامِل | النوع | إلزامي | الوصف |
|---|---|---|---|
phone | string | إلزامي | رقم الهاتف المسجَّل، بصيغة E.164. |
code | string | إلزامي | الرمز المكوَّن من 6 أرقام المعروض حاليًا في تطبيق مصادقة المستخدم. |
curl -X POST https://api.authevo.dev/v1/totp/verify \
-H "Authorization: Bearer sk_…" \
-H "Content-Type: application/json" \
-d '{ "phone": "+201234567890", "code": "123456" }'{
"data": {
"verified": true,
"first_confirm": true
}
}تكون قيمة first_confirm صحيحة فقط في الاستدعاء الذي يؤكّد تسجيلًا جديدًا تمامًا — لحظة مناسبة لعرض رسالة «كل شيء جاهز» لمرة واحدة.
التعطيل
/v1/totp/disableيُوقف TOTP لرقم هاتف. آمن استدعاؤه أكثر من مرة — تعطيل رقم مُعطَّل بالفعل (أو غير مسجَّل أصلًا) يُعيد disabled: true دائمًا.
| المُعامِل | النوع | إلزامي | الوصف |
|---|---|---|---|
phone | string | إلزامي | رقم الهاتف المراد تعطيله، بصيغة E.164. |
curl -X POST https://api.authevo.dev/v1/totp/disable \
-H "Authorization: Bearer sk_…" \
-H "Content-Type: application/json" \
-d '{ "phone": "+201234567890" }'{
"data": {
"disabled": true
}
}إعادة تسجيل الرقم نفسه لاحقًا لا يتطلب replace: true — يُعامَل التسجيل المُعطَّل كبداية جديدة.