ثلاث نقاط طرفية، JSON دخولًا وخروجًا. لا مفتاح ولا حساب على
النطاقات العامة — ألصق طلبًا في طرفية وسيعمل.
نظرة عامة
لا يُنشأ صندوق البريد أبدًا — بل يوجد لحظة وصول رسالة إلى
عنوان، ويختفي بعد 5 يومًا. لا شيء
للتسجيل، لذا لا مفهوم لمستخدم أو مشروع أو رمز مميز في الواجهة البرمجية على النطاقات العامة.
كل استجابة هي JSON، بما في ذلك كل خطأ.
جميع الأوقات بتوقيت UTC بصيغة RFC 3339 — 2026-08-04T18:31:07Z.
معرّفات الرسائل سلاسل غير شفافة. لا تحاول تحليلها.
استقبال فقط. لا توجد نقطة نهاية ترسل بريداً، بحكم التصميم.
عنوان URL الأساسي
https://grabmail.io/api/v1
HTTPS فقط؛ يُعاد توجيه HTTP العادي. يعيش الإصدار في المسار، ولن
يتغيّر شكل v1 من تحتك — أي تغيير جذري يحصل على
رقم جديد.
المصادقة
لا شيء على النطاقات العامة. يستطيع أي شخص يعرف عنوانًا
قراءة صندوق بريده، عبر الواجهة البرمجية تمامًا كما عبر الموقع. هذه
الصفقة التي تعقدها خدمة بريد مؤقت مشتركة، فلا توجّه أبدًا إلى عنوان عام
شيئًا يهمّك أمره.
على نطاق تملكه، يكون صندوق البريد خاصًا، فتحمل الطلبات مفتاحًا —
وهو ما يثبت أن صندوق البريد ملكك. يُصدَر المفتاح عندما
تحقق من النطاق، ويُعرض مرة واحدة،
ولا يُخزَّن هنا إلا كتجزئة (hash):
Authorization: Bearer <your key>
المفتاح الخاطئ أو المفقود على نطاق خاص يجيب بـ 401 مع
unauthorized. تُقارَن المفاتيح في زمن ثابت، فيستغرق
المفتاح الخاطئ رفضه نفس وقت قبول المفتاح الصحيح.
نقاط النهاية
GET/api/v1/mailbox
كل ما ينتظر عند عنوان، الأحدث أولاً. هذا هو الاستدعاء الذي تستطلعه مجموعة اختباراتك.
المعاملات
الاسم
إدخال
النوع
مطلوب
الوصف
address
query
string
نعم
صندوق البريد المراد قراءته، مثل k7fq2m@grabmail.io.
limit
query
integer
لا
عدد الرسائل المُعادة في هذا النداء، 1–200. الافتراضي 50، الأحدث أولًا. يحدّ استجابة واحدة، لا صندوق البريد — استخدم before للقراءة بعده.
before
query
string
لا
id الخاص بأقدم رسالة لديك بالفعل؛ يُعيد الصفحة التي تليها. أعد إرسال حقل next من الاستجابة السابقة. عندما يكون next هو null، تكون قد حصلت على كل شيء.
تم الحذف. النداء متكافئ الوقع (idempotent): حذفه مرتين لا يزال يُجيب بـ200.
400
حقل mailbox مفقود أو غير صالح.
404
لا رسالة كهذه في صندوق البريد هذا.
429
تم تجاوز حد المعدل.
المرفقات
تسرد كل رسالة مرفقاتها برابط جاهز. اجلبه بنفس
التفويض المستخدم للرسالة نفسها.
GET /api/v1/attachment/{id}?mailbox={address}
يجيب دائمًا بـ application/octet-stream مع
Content-Disposition: attachment، أيًّا كان ما وسمه به المُرسل. هذا مقصود: إعادة إظهار
text/html الخاص بشخص غريب كما هو كانت ستسمح لمرفق
بالعمل كصفحة على هذا المصدر. النوع الحقيقي موجود في JSON
الرسالة، حيث هو بيانات لا تعليمات.
الأخطاء
كل فشل هو JSON بنفس الحقلين، بحيث يتعامل معه العميل
في مكان واحد. تحمل الحالة الفئة، وerror رمز مختصر
ثابت قابل للقراءة آليًا، وmessage موجَّه للبشر
وقد تُعاد صياغته في أي وقت.
HTTP/1.1 400 Bad Request
Content-Type: application/json
{
"error": "invalid_address",
"message": "address must look like name@domain"
}
لا تُبنِ منطقك أبدًا على message. الرموز المختصرة المستخدمة هي
invalid_address وunknown_domain و
not_found وrate_limited.
حدود المعدل
طلب واحد في الثانية لكل عنوان. استطلاع صندوق البريد
مرة في الثانية هو النمط المقصود ولا يُقيَّد أبدًا.
عند تجاوز الحد تحصل على 429 مع Retry-After بالثواني.
لا توجد حصة يومية ولا رصيد اندفاع لإدارته.
الاحتفاظ
تُحذف الرسالة بعد 5 يومًا
من وصولها، سواء قُرئت أم لا. تحمل كل رسالة
expires_at، فلا تحتاج أبدًا لحساب ذلك التاريخ بنفسك.
إنه حد صارم، لا إعداد — لا معلمة تمدّده. إذا كان على
رسالة أن تبقى بعد انتهاء النافذة، فاجلبها وخزّنها لديك.
نطاقك الخاص
وجّه سجل MX الخاص بك إلى smtp.grabmail.io ويجيب كل عنوان على
نطاقك عبر نفس هذه النقاط الطرفية — لا واجهة برمجية ثانية لتعلّمها،
ولا تُقرأ صناديق البريد إلا بمفتاحك.