انتقل للمحتوى

    عربي أو إنجليزي · ↑↓ للتنقل · Enter للفتح · Esc للقفل

    English
    في الصفحة دي

    أكواد التحقق (OTP)

    إرسال كود

    POST/v2/otp
    • الصلاحية:otp
    • Idempotency-Key:إجباري
    • بيبعت رسايل

    الطول 4–8، الصلاحية 60–900 ثانية، المحاولات 1–10، واسم التطبيق (حروف وأرقام ومسافات، من غير روابط). النص ثابت ومترجم. لحد 5 أكواد للرقم و200 رقم مختلف للحساب في الساعة؛ الأرقام اللي لغت اشتراكها بترفض.

    البارامترات

    الهيدرز

    الاسمالنوعالقيودالوصف
    Idempotency-Keyإجباريالنوعstringالقيود≤ 191 حرفالوصفid فريد من عندك للعملية دي (حد أقصى 191 حرف ASCII). لو كررت بنفس المفتاح ونفس الـ body بيرجعلك أول رد ومعاه Idempotent-Replayed: true — عمرها ما تتنفذ مرتين. بيتحفظ 24 ساعة.
    X-Request-Idاختياريالنوعstringالقيود—الوصفاختياري: id الطلب بتاعك وبيرجعلك (غير كده بنعمل req_…). اديه للدعم لو احتجت.

    الـ Body

    الاسمالنوعالقيودالوصف
    numberIdإجباريالنوعstringالقيود—الوصفالرقم اللي هتشتغل عليه (الـ id من GET /v2/numbers). المفتاح المقصور على أرقام معينة يستخدمها هي بس.
    toإجباريالنوعstringالقيود—الوصفالمستلم: رقم دولي أرقام بس من غير + أو أصفار في الأول (مثلًا 201001234567 أو 966501234567).
    lengthاختياريالنوعintegerالقيود4–8الافتراضي 6الوصفعدد أرقام الكود (4–8).
    ttlSecondsاختياريالنوعintegerالقيود60–900الافتراضي 300الوصفمدة صلاحية الكود (60–900 ثانية).
    maxAttemptsاختياريالنوعintegerالقيود1–10الافتراضي 5الوصفعدد المحاولات الغلط قبل ما الكود يتقفل (1–10).
    appاختياريالنوعstringالقيود≤ 30 حرفالوصفاسم تطبيقك أو متجرك في النص الثابت: حروف وأرقام ومسافات (حد أقصى 30)، من غير روابط ولا نهايات دومين ولا 6 أرقام ورا بعض.
    localeاختياريالنوعstringالقيودواحد من: ar · enالافتراضي arالوصفلغة نص الكود الثابت.
    copyButtonاختياريالنوعbooleanالقيودالافتراضي falseالوصفضيف زرار «نسخ الكود» تحت الرسالة.

    الطلب

    curl -X POST "https://mursilat.com/api/v2/otp" \
      -H "Authorization: Bearer $WASLA_API_KEY" \
      -H "Idempotency-Key: order-1042-confirm" \
      -H "Content-Type: application/json" \
      -d '{
      "numberId": "cm1abcd2345efgh6789ijkl",
      "to": "201001234567",
      "length": 6,
      "ttlSeconds": 300,
      "maxAttempts": 5,
      "app": "متجر النور",
      "copyButton": true
    }'
    الطلب — JSON
    {
      "numberId": "cm1abcd2345efgh6789ijkl",
      "to": "201001234567",
      "length": 6,
      "ttlSeconds": 300,
      "maxAttempts": 5,
      "app": "متجر النور",
      "copyButton": true
    }

    الرد

    201مثال

    201 — application/json
    {
      "otpId": "otp_8f2c1d9a7b3e4f56a1b2c3d4",
      "numberId": "cm1abcd2345efgh6789ijkl",
      "to": "2010****4567",
      "status": "pending",
      "length": 6,
      "maxAttempts": 5,
      "expiresAt": "2026-10-13T08:05:00.000Z",
      "messageId": "3EB0A1B2C3D4E5F60718"
    }

    شكل الرد

    حقول الرد في المثال. افتح الكائنات والقوايم.

    • responseobject8 حقل
      • otpIdstring "otp_8f2c1d9a7b3e4f56a1b2c3d4"
      • numberIdstring "cm1abcd2345efgh6789ijkl"
      • tostring "2010****4567"
      • statusstring "pending"
      • lengthinteger 6
      • maxAttemptsinteger 5
      • expiresAtstring "2026-10-13T08:05:00.000Z"
      • messageIdstring "3EB0A1B2C3D4E5F60718"

    الأخطاء

    غير أخطاء المصادقة وحدود الطلبات والتحقق اللي ممكن ترجع من أي endpoint:

    الأخطاء →

    حماية الرقم والسلوك

    الـ OTP ليها فئة خاصة في حماية الرقم: 30 في الساعة و300 في اليوم لكل رقم، بفاصل 3–5 ثواني، وكمان 5 أكواد لكل مستلم و200 مستلم للحساب في الساعة. المستلمين اللي لغوا اشتراكهم بيترفضوا.

    جرّب

    ابعت الطلب ده من متصفحك لـ API مرسلات.

    مثال موثّق

    معاينة — النسخة دي من التوثيق مش على mursilat.com، فالكونسول بيعرض المثال الموثّق بدل ما يكلم الـ API.

    الطلبات الحقيقية بتستخدم رقمك وباقتك الحقيقيين: ممكن تبعت رسايل واتساب وتصرف من رصيدك وتمسح بيانات. (بيبعت رسايل)

    متخزن في ذاكرة التبويب ده بس: عمره ما بيتحفظ ولا بيتحط في الرابط، وبيتبعت لـ mursilat.com بس. لو عملت reload بيتنسي.

    تبعت الطلب ده بجد؟

    ده هيبعت رسالة واتساب حقيقية (أو حملة / كود) من رقمك وهيصرف من رصيد باقتك.

    POST /v2/otp