أرسل إشعارات واتساب من أنظمتك مباشرةً — نظام إدارة المدرسة، بوابة الحلقات، أو أي تكامل خاص. واجهة واحدة بسيطة: أرسل، وتابع الحالة.
https://api.athrcom.com
كل طلب يحمل مفتاحك في ترويسة Authorization. تنشئ المفاتيح من لوحة التحكم (مفاتيح API) — يظهر السرّ مرة واحدة عند الإنشاء فاحفظه بأمان، ويمكنك إلغاؤه فوراً في أي وقت.
Authorization: Bearer athr_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
المفاتيح القديمة بالبادئة hud_live_ ما تزال صالحة. طلب بلا مفتاح صحيح يرجع 401 unauthorized.
/v1/messagesيُرسل نص أو صورة أو ملف إلى رقم واحد. الطلب يُقبل فوراً (202) ويدخل قائمة الإرسال — تابع الحالة عبر message_id.
| الحقل | النوع | الوصف |
|---|---|---|
to | نص · مطلوب | رقم المستلم. تُقبل الصيغ السعودية المعتادة: 0512345678 أو 966512345678 أو +966512345678 (وحتى الأرقام العربية ٠٥…). |
type | نص · اختياري | text (الافتراضي) أو image أو document. الفيديو غير مدعوم (415). |
text | نص | نص الرسالة — مطلوب عندما يكون النوع text. |
media_url | رابط | رابط https عام للصورة أو الملف — مطلوب للنوعين image وdocument. الروابط الداخلية/الخاصة مرفوضة. |
caption | نص · اختياري | تعليق يظهر مع الصورة أو الملف. |
filename | نص · اختياري | اسم الملف المعروض للمستلم (للنوع document). |
instance_id | نص · اختياري | اتركه فارغاً — حسابك يحوي رقم واتساب واحداً ويُحدَّد تلقائياً. |
idempotency_key | نص · اختياري | مفتاح فريد من عندك: تكرار الطلب بنفس المفتاح يرجع نفس message_id دون إرسال مكرر. مفيد عند إعادة المحاولة بعد انقطاع. |
# text — رسالة نصية curl -X POST https://api.athrcom.com/v1/messages \ -H "Authorization: Bearer athr_live_…" \ -H "Content-Type: application/json" \ -d '{"to":"0512345678","text":"تذكير: اجتماع أولياء الأمور غداً الساعة ٧ مساءً"}' # image — صورة مع تعليق curl -X POST https://api.athrcom.com/v1/messages \ -H "Authorization: Bearer athr_live_…" \ -H "Content-Type: application/json" \ -d '{"to":"0512345678","type":"image","media_url":"https://example.com/schedule.png","caption":"جدول الأسبوع"}' # document — ملف PDF باسم ظاهر curl -X POST https://api.athrcom.com/v1/messages \ -H "Authorization: Bearer athr_live_…" \ -H "Content-Type: application/json" \ -d '{"to":"0512345678","type":"document","media_url":"https://example.com/report.pdf","filename":"تقرير-الطالب.pdf"}'
{ "message_id": "01J…", "status": "queued" }
// أو، إن كان الرقم لا يستطيع الإرسال الآن، تُقبل الرسالة ويأتيك الحكم في الرد نفسه:
{ "message_id": "01J…", "status": "failed", "error": "number not connected" }
202) يعني دخول الرسالة قائمة الإرسال — لا يعني التسليم الفوري. الإرسال الفعلي يجري بوتيرة طبيعية مدروسة حفاظاً على جودة رقمك (انظر «الحدود والإيقاع»)./v1/messages/{id}curl https://api.athrcom.com/v1/messages/01J… \
-H "Authorization: Bearer athr_live_…"
{ "message_id": "01J…", "status": "sent", "error": null,
"queued_at": 1781200000000, "sent_at": 1781200042000, "delivered_at": null }
| الحالة | المعنى |
|---|---|
queued | في قائمة الإرسال (تشمل الانتظار لنافذة الإرسال أو لدور الرسالة في الوتيرة). |
sending | قيد الإرسال الآن. |
sent | سُلِّمت إلى واتساب بنجاح. |
delivered | وصل إشعار التسليم لجهاز المستلم. |
failed | تعذّر الإرسال — التفاصيل في حقل error. |
الطوابع الزمنية أعداد ميلّي‑ثانية (Unix epoch ms).
نرفع حدّ الإرسال تدريجياً مع ثبات رقمك — وتيرة مدروسة وسلوك قريب من الاستخدام الطبيعي يحميان جودة الرقم:
| المرحلة | عمر الرقم | الحد اليومي |
|---|---|---|
| 1 | أول 30 يوماً | 30 رسالة/يوم |
| 2 | بعد شهر نظيف | 60 رسالة/يوم |
| 3 | بعد شهرين نظيفين | 120 رسالة/يوم |
| تشغيلي | لأرقام مثبتة فقط | 400 أو 1,000 بتجاوز يدوي |
لا نرفض الطلب عند البوابة. يُقبل (202) ويُسجَّل في سجل الإرسال بحالة failed وسبب واضح — نفس الشكل الذي يرجعه GET /v1/messages/:id:
{ "message_id": "01J…", "status": "failed", "error": "daily limit reached" }
الحد يتجدد منتصف كل ليلة بتوقيت السعودية ويرتفع تلقائياً حتى 120 رسالة/يوم للأرقام النظيفة. تكاملك لا يحتاج أي منطق خاص: أرسل، واقرأ الحالة من الرد أو من السجل.
errorerror | المعنى |
|---|---|
daily limit reached | بلغ الرقم حدّه اليومي — يتجدد منتصف الليل. |
number not connected | رقمك غير متصل ويحتاج إعادة ربط من لوحة التحكم. |
number paused | الرقم متوقف مؤقتاً لحمايته — راجع لوحة التحكم. |
recipient not registered on WhatsApp | رقم المستلم غير مسجّل على واتساب. |
رقم غير متصل لكنه لم يخرج من واتساب يُقبل ويبقى queued — إن عاد الاتصال أُرسلت الرسالة، وإلا فشلت في السجل بسبب واضح. الرسائل التي تصل أثناء صيانة مؤقتة من جهتنا تنتظر وتُرسل تلقائياً بعدها.
202) وتبقى queued حتى السادسة صباحاً ثم تُرسل تلقائياً — احتراماً لأوقات الأهالي وحفاظاً على سمعة رقمك.429 rate_limited — أعد المحاولة بعد ثوانٍ.كل خطأ يرجع بهيكل موحد: { "error": { "code": "…", "message": "…" } }. الأخطاء هنا هي أخطاء الطلب نفسه فقط؛ أي سبب يمنع إرسال رسالة مقبولة يظهر في حالتها لا كرمز HTTP.
| HTTP | الرمز | المعنى |
|---|---|---|
400 | invalid_request | حقل ناقص أو غير صالح — التفاصيل في message. |
401 | unauthorized | مفتاح API مفقود أو غير صحيح أو ملغى. |
402 | payment_required | لا اشتراك نشطاً — فعّل الاشتراك من لوحة التحكم (الفوترة). |
404 | not_found | الرسالة أو الجهاز غير موجود، أو لم يُربط أي رقم واتساب بالحساب بعد (رقم مربوط لكنه غير متصل يُقبل ويظهر في السجل). |
415 | unsupported_type | نوع غير مدعوم — الفيديو غير متاح. |
429 | rate_limited | طلبات متلاحقة أكثر من اللازم — أعد المحاولة بعد ثوانٍ. |
500 | internal | خطأ من جهتنا — أعد المحاولة، وإن استمر تواصل معنا. |