خمس دقائق.
أول نداء،
أنشئ مفتاحًا، اعرض المحادثات، أرسل ردًا، سجّل ويبهوك. بلا تثبيت SDK؛ فالـ SDK مجرد اختصار اختياري.
أنشئ مفتاح API
افتح الإعدادات → API Keys، انقر مفتاح جديد، أعطه تسمية، اختر النطاقات. انسخ مرّة واحدة. المفاتيح التي تبدأ بـ ir_live_ ترسل رسائل حقيقية. المفاتيح التي تبدأ بـ ir_test_ لا تفعل أبدًا.
# .env
IR_API_KEY=ir_live_3f2a...اعرض محادثاتك
كل endpoint قائمة يستخدم cursor pagination. مرّر ?cursor= للصفحة التالية. 100 كحدّ أقصى لكل نداء.
curl https://api.instantreply.co/v1/conversations \
-H "Authorization: Bearer $IR_API_KEY"أرسل ردًا
POST رسالة إلى محادثة، مع وضع النص في الحقل content. مع مفتاح test يُرجع النداء 201 وهميًا ولا يلمس Meta أبدًا. مع مفتاح live تتعامل المنصّة مع التسليم وإعادة المحاولات والامتثال.
curl -X POST https://api.instantreply.co/v1/conversations/$ID/messages \
-H "Authorization: Bearer $IR_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "content": "Thanks for reaching out." }'سجّل ويبهوك
يتضمّن الردّ سرّ توقيع (whsec_...). تحقّق من X-InstantReply-Signature على كل payload باستخدام HMAC_SHA256(secret, timestamp + "." + rawBody). التسليم at-least-once مع ثلاث محاولات؛ استخدم X-InstantReply-Delivery لمنع التكرار وراجع GET /v1/webhooks/:id/deliveries. وإذا كنت تزامن CRM فاشترك أيضًا في contact.opted_out وcontact.opted_in لاحترام STOP وSTART من جهات الاتصال.
curl -X POST https://api.instantreply.co/v1/webhooks \
-H "Authorization: Bearer $IR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"url": "https://yourapp.com/webhooks/ir",
"events": [
"message.received",
"message.sent",
"conversation.created",
"conversation.closed",
"conversation.assigned",
"contact.updated",
"contact.opted_out",
"contact.opted_in",
"template.status_update",
"message.delivery_failed"
]
}'