الحملات
أرسل قالبًا معتمدًا إلى جمهور وتابع النتائج.
ترسل الحملة قالبًا معتمدًا واحدًا إلى جهات اتصال كثيرة، بوتيرة تحمي رقمك، وتجمع لك نتائجها. استخدمها للإعلانات والعروض، أما الرسالة الواحدة التي يطلقها نظامك (تحديث طلب مثلًا) فأرسلها مباشرة عبر POST /messages.
كيف يعمل: الحملات1. أنشئ مسودة · 2. أجب عن سؤال الموافقة · 3. راجع التكلفة ثم ابدأ · 4. تابع النتائج · الإيقاف المؤقت والاستئناف والإلغاء
1. أنشئ مسودة#
يبني POST /campaigns قائمة المستلمين ويسعّرها، ولا يُرسل شيء بعد.
{
"name": "عرض نهاية الأسبوع",
"template": { "name": "weekend_offer", "language": "ar" },
"audience": { "tags": ["عملاء VIP"] },
"variables": { "body": ["{{first_name}}", "20٪"] },
"scheduled_at": "2026-10-02T16:00:00",
"timezone": "Asia/Riyadh"
}- الجمهور.
contacts(معرّفات)، أوtags(معرّفات أو أسماء)، أو"all_contacts": true. - القيم الشخصية. في
variablesتُعبَّأ{{first_name}}و{{last_name}}و{{phone_number}}أو أي مفتاح حقل مخصص لكل مستلم. - الجدولة.
scheduled_atوقت محلي يُقرأ حسبtimezone. اتركه لتُرسل فور البدء. - الأرقام. إن كان لديك أكثر من رقم واتساب فحدد رقم الإرسال بـ
number_id، ويجب أن يعود القالب لحساب هذا الرقم.
2. أجب عن سؤال الموافقة#
إن كان بعض المستلمين قد ألغوا اشتراكهم في رسائل الأعمال فالرد هو recipient_not_consented مع الأعداد:
{ "error": { "code": "recipient_not_consented", "unconsented": 12, "recipients": 348, "param": "consent_confirmed", "...": "..." } }أعد الطلب مع "consent_confirmed": false لاستبعادهم، أو true فقط إن وافقوا من جديد. تُسجَّل إجابتك في سجل التدقيق.
3. راجع التكلفة ثم ابدأ#
تحمل المسودة estimated_cost: ما سيحتسبه واتساب بالريال بأسعار اليوم، مع عدد المستلمين المسعّرين والمجانيين وغير المسعّرين. حين تبدو مناسبة استدعِ POST /campaigns/{id}/start.
يُجري البدء الفحوص نفسها التي تجريها المنصة: يجب أن يستطيع الرقم البث (الرقم الذي قيّده Meta لا يستطيع)، وألا يوقف Meta التسليم لسبب يتعلق بالفوترة، وأن يغطي رصيد الباقة الشهري من الحملات والرسائل التسويقية الإرسال (وإلا فالخطأ quota_exceeded).
4. تابع النتائج#
- يعطي
GET /campaigns/{id}الإحصاءاتstatsلحظيًا: المرسلة والمسلّمة والمقروءة والفاشلة والتي رُدّ عليها والنسب. - يعرض
GET /campaigns/{id}/messagesرسالة كل مستلم مع حالتها، وسبب واتساب عند الفشل. - الأحداث:
campaign.startedوcampaign.completed، وmessage.*لكل مستلم (تبدأ المعرّفات بـcmsg_).
الإيقاف المؤقت والاستئناف والإلغاء#
يتم الإرسال بوتيرة محسوبة. إن اصطدم الرقم بحد وضعه Meta تُوقف الحملة مؤقتًا (status: paused، ويوضح hold_reason السبب) ويصلك campaign.paused. أصلح السبب ثم استدعِ POST /campaigns/{id}/resume: لا تُستأنف الحملة المتوقفة من تلقاء نفسها، لأن الرقم العائد من قيد يجب ألا يبدأ البث دون متابعة.
يوقف POST /campaigns/{id}/cancel حملة مجدولة أو قيد الإرسال، وتبقى الرسائل المرسلة كما هي.
نقاط الواجهة
عرض الحملات
https://api.saei.automize.sa/v1/campaigns- الصلاحية:
campaigns:read - لمفاتيح التشغيل فقط
معاملات الاستعلام
limitintegerاختياريعدد العناصر المطلوبة، من 1 إلى 100.
cursorstringاختياريقيمة
next_cursorمن الصفحة السابقة.statusstringاختياريإحدى القيم
draftscheduledin_progresspausedcompletedfailedcancelled
حقول الاستجابة200· صفحة من الحملات.
object"list"مطلوبdataarray<Campaign>مطلوبالحقول الفرعية (14)
idstringمطلوبobject"campaign"مطلوبnamestringمطلوبdescriptionstring | nullاختياريstatusstringمطلوبdraftحتى تبدأ، وscheduledتنتظرscheduled_at، وpausedمتوقفة مؤقتًا (انظرhold_reason): أصلح السبب ثم استدعِPOST /v1/campaigns/{id}/resume.إحدى القيم
draftscheduledin_progresspausedcompletedfailedcancelledhold_reasonstring | nullاختياريtemplateobject | nullاختياريالحقول الفرعية (3)
idstringاختياريnamestringاختياريlanguagestring | nullاختياري
number_idstring | nullاختياريscheduled_atstring | nullاختياريtimezonestring | nullاختياريstatsobjectمطلوبأعداد المستلمين. يضيف
GET /v1/campaigns/{id}الحقولpendingوrepliedوالنسب.الحقول الفرعية (10)
recipientsintegerاختياريpendingintegerاختياريsentintegerاختياريdeliveredintegerاختياريreadintegerاختياريfailedintegerاختياريrepliedintegerاختياريdelivery_ratenumber | nullاختياريread_ratenumber | nullاختياريreply_ratenumber | nullاختياري
estimated_costobject | nullاختياريما سيحتسبه واتساب بالريال (والدولار) وفق جدول الأسعار الحالي. يُثبَّت عند البدء، وهو تقدير في المسودة.
الحقول الفرعية (6)
currencystringاختياريtotalnumberاختياريtotal_usdnumberاختياريrecipients_pricedintegerاختياريrecipients_freeintegerاختياريrecipients_unpricedintegerاختياري
created_atstring | nullاختياريupdated_atstring | nullاختياري
has_morebooleanمطلوبnext_cursorstring | nullمطلوب
الأخطاء المحتملة3
- 403test_mode_unsupportedغير متاح في وضع الاختبار
- 422parameter_invalidحقل غير صالح
- 429rate_limitedطلبات كثيرة
جرّبها
curl -X GET https://api.saei.automize.sa/v1/campaigns \
-H "Authorization: Bearer $API_KEY"صفحة من الحملات.
{
"object": "list",
"data": [
{
"id": "cmp_64",
"object": "campaign",
"name": "string",
"description": "string",
"status": "draft",
"hold_reason": "string",
"template": {
"id": "string",
"name": "string",
"language": "string"
},
"number_id": "string",
"scheduled_at": "2026-10-01T09:30:00Z",
"timezone": "string",
"stats": {
"recipients": 0,
"pending": 0,
"sent": 0,
"delivered": 0,
"read": 0,
"failed": 0,
"replied": 0,
"delivery_rate": 0,
"read_rate": 0,
"reply_rate": 0
},
"estimated_cost": {
"currency": "string",
"total": 0,
"total_usd": 0,
"recipients_priced": 0,
"recipients_free": 0,
"recipients_unpriced": 0
},
"created_at": "2026-10-01T09:30:00Z",
"updated_at": "2026-10-01T09:30:00Z"
}
],
"has_more": false,
"next_cursor": "string"
}إنشاء حملة
https://api.saei.automize.sa/v1/campaigns- الصلاحية:
campaigns:write - لمفاتيح التشغيل فقط
- يقبل Idempotency-Key
ينشئ مسودة: لا يُرسل شيء حتى تستدعي POST /v1/campaigns/{id}/start. يحمل الرد estimated_cost، أي التكلفة التي سيحتسبها واتساب بأسعار اليوم، لتؤكد قبل الإرسال.
- الجمهور:
contacts(معرّفات)، أوtags(معرّفات أو أسماء)، أوall_contacts: true. - المتغيرات: قيم القالب، حيث تُعبَّأ
{{first_name}}و{{last_name}}و{{phone_number}}أو أي مفتاح حقل مخصص لكل مستلم، مثل"body": ["{{first_name}}", "20%"]. - الموافقة: إن كان بعض المستلمين قد ألغوا اشتراكهم في رسائل الأعمال فالرد هو
recipient_not_consentedمع الأعداد. أرسلconsent_confirmed: falseلتخطيهم، أوtrueفقط إن وافقوا من جديد (يُسجَّل تأكيدك في سجل التدقيق).
كل فحوص منشئ الحملات تنطبق هنا أيضًا: الرقم الذي قيّده Meta لا يستطيع البث، ويجب أن يعود القالب لرقم الإرسال، وتُطبق حدود الباقة الشهرية للحملات والرسائل التسويقية عند البدء.
الترويسات
Idempotency-Keystringاختياريأي نص فريد (يُفضّل UUID). إعادة الطلب بنفس المفتاح ونفس الجسم تُرجع الاستجابة الأولى بدل التنفيذ مرتين. يُحفظ لمدة 24 ساعة.
جسم الطلب
namestringمطلوبdescriptionstringاختياريtemplateobjectمطلوب{"id": "tpl_…"}أو{"name": …, "language": …}. يجب أن يكون معتمدًا.الحقول الفرعية (3)
idstringاختياريnamestringاختياريlanguagestringاختياري
number_idstringاختياريرقم الإرسال. مطلوب إن كان لدى مساحة العمل أكثر من رقم.
audienceobjectمطلوبالحقول الفرعية (3)
contactsarray<string>اختياريtagsarray<string>اختياريall_contactsbooleanاختياري
variablesobjectاختياريمتغيرات القالب (كما في
POST /v1/messages) مع متغيرات لكل مستلم مثل{{first_name}}.scheduled_atstringاختياريتاريخ ووقت محلي في المستقبل يُقرأ بحسب
timezone. اتركه لتُرسل عند البدء.timezonestringاختياريlink_trackingbooleanاختيارياحتساب النقرات على أزرار الروابط في القالب.
consent_confirmedbooleanاختياري
حقول الاستجابة201· المسودة مع تقدير تكلفتها.
idstringمطلوبobject"campaign"مطلوبnamestringمطلوبdescriptionstring | nullاختياريstatusstringمطلوبdraftحتى تبدأ، وscheduledتنتظرscheduled_at، وpausedمتوقفة مؤقتًا (انظرhold_reason): أصلح السبب ثم استدعِPOST /v1/campaigns/{id}/resume.إحدى القيم
draftscheduledin_progresspausedcompletedfailedcancelledhold_reasonstring | nullاختياريtemplateobject | nullاختياريالحقول الفرعية (3)
idstringاختياريnamestringاختياريlanguagestring | nullاختياري
number_idstring | nullاختياريscheduled_atstring | nullاختياريtimezonestring | nullاختياريstatsobjectمطلوبأعداد المستلمين. يضيف
GET /v1/campaigns/{id}الحقولpendingوrepliedوالنسب.الحقول الفرعية (10)
recipientsintegerاختياريpendingintegerاختياريsentintegerاختياريdeliveredintegerاختياريreadintegerاختياريfailedintegerاختياريrepliedintegerاختياريdelivery_ratenumber | nullاختياريread_ratenumber | nullاختياريreply_ratenumber | nullاختياري
estimated_costobject | nullاختياريما سيحتسبه واتساب بالريال (والدولار) وفق جدول الأسعار الحالي. يُثبَّت عند البدء، وهو تقدير في المسودة.
الحقول الفرعية (6)
currencystringاختياريtotalnumberاختياريtotal_usdnumberاختياريrecipients_pricedintegerاختياريrecipients_freeintegerاختياريrecipients_unpricedintegerاختياري
created_atstring | nullاختياريupdated_atstring | nullاختياري
الأخطاء المحتملة10
- 403test_mode_unsupportedغير متاح في وضع الاختبار
- 422parameter_missingحقل مفقود
- 422parameter_invalidحقل غير صالح
- 404resource_missingغير موجود
- 422template_not_foundالقالب غير موجود
- 422template_not_approvedالقالب غير معتمد
- 422template_variables_mismatchمتغيرات القالب غير مطابقة
- 409recipient_not_consentedالمستلِم لم يوافق
- 422sender_not_sendableالرقم لا يستطيع الإرسال
- 429rate_limitedطلبات كثيرة
جرّبها
curl -X POST https://api.saei.automize.sa/v1/campaigns \
-H "Authorization: Bearer $API_KEY" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{
"name": "عرض نهاية الأسبوع",
"template": {
"name": "weekend_offer",
"language": "ar"
},
"number_id": "num_3",
"audience": {
"tags": [
"عملاء VIP"
]
},
"variables": {
"body": [
"20٪"
]
},
"scheduled_at": "2026-10-02T16:00:00",
"timezone": "Asia/Riyadh"
}'المسودة مع تقدير تكلفتها.
{
"id": "cmp_64",
"object": "campaign",
"name": "عرض نهاية الأسبوع",
"description": null,
"status": "draft",
"hold_reason": null,
"template": {
"id": "tpl_31",
"name": "weekend_offer",
"language": "ar"
},
"number_id": "num_3",
"scheduled_at": "2026-10-02T13:00:00Z",
"timezone": "Asia/Riyadh",
"stats": {
"recipients": 348,
"sent": 0,
"delivered": 0,
"read": 0,
"failed": 0
},
"estimated_cost": {
"currency": "SAR",
"total": 61.25,
"total_usd": 16.33,
"recipients_priced": 348,
"recipients_free": 0,
"recipients_unpriced": 0
},
"created_at": "2026-10-01T10:00:00Z",
"updated_at": "2026-10-01T10:00:00Z"
}جلب حملة
https://api.saei.automize.sa/v1/campaigns/{id}- الصلاحية:
campaigns:read - لمفاتيح التشغيل فقط
الحملة مع نتائجها لحظيًا (أُرسلت، سُلّمت، قُرئت، فشلت، رُدّ عليها، والنسب).
معاملات المسار
idstringمطلوبمعرّف العنصر.
حقول الاستجابة200· الحملة.
idstringمطلوبobject"campaign"مطلوبnamestringمطلوبdescriptionstring | nullاختياريstatusstringمطلوبdraftحتى تبدأ، وscheduledتنتظرscheduled_at، وpausedمتوقفة مؤقتًا (انظرhold_reason): أصلح السبب ثم استدعِPOST /v1/campaigns/{id}/resume.إحدى القيم
draftscheduledin_progresspausedcompletedfailedcancelledhold_reasonstring | nullاختياريtemplateobject | nullاختياريالحقول الفرعية (3)
idstringاختياريnamestringاختياريlanguagestring | nullاختياري
number_idstring | nullاختياريscheduled_atstring | nullاختياريtimezonestring | nullاختياريstatsobjectمطلوبأعداد المستلمين. يضيف
GET /v1/campaigns/{id}الحقولpendingوrepliedوالنسب.الحقول الفرعية (10)
recipientsintegerاختياريpendingintegerاختياريsentintegerاختياريdeliveredintegerاختياريreadintegerاختياريfailedintegerاختياريrepliedintegerاختياريdelivery_ratenumber | nullاختياريread_ratenumber | nullاختياريreply_ratenumber | nullاختياري
estimated_costobject | nullاختياريما سيحتسبه واتساب بالريال (والدولار) وفق جدول الأسعار الحالي. يُثبَّت عند البدء، وهو تقدير في المسودة.
الحقول الفرعية (6)
currencystringاختياريtotalnumberاختياريtotal_usdnumberاختياريrecipients_pricedintegerاختياريrecipients_freeintegerاختياريrecipients_unpricedintegerاختياري
created_atstring | nullاختياريupdated_atstring | nullاختياري
الأخطاء المحتملة3
- 403test_mode_unsupportedغير متاح في وضع الاختبار
- 404resource_missingغير موجود
- 429rate_limitedطلبات كثيرة
جرّبها
curl -X GET https://api.saei.automize.sa/v1/campaigns/cmp_64 \
-H "Authorization: Bearer $API_KEY"الحملة.
{
"id": "cmp_64",
"object": "campaign",
"name": "string",
"description": "string",
"status": "draft",
"hold_reason": "string",
"template": {
"id": "string",
"name": "string",
"language": "string"
},
"number_id": "string",
"scheduled_at": "2026-10-01T09:30:00Z",
"timezone": "string",
"stats": {
"recipients": 0,
"pending": 0,
"sent": 0,
"delivered": 0,
"read": 0,
"failed": 0,
"replied": 0,
"delivery_rate": 0,
"read_rate": 0,
"reply_rate": 0
},
"estimated_cost": {
"currency": "string",
"total": 0,
"total_usd": 0,
"recipients_priced": 0,
"recipients_free": 0,
"recipients_unpriced": 0
},
"created_at": "2026-10-01T09:30:00Z",
"updated_at": "2026-10-01T09:30:00Z"
}إلغاء حملة
https://api.saei.automize.sa/v1/campaigns/{id}/cancel- الصلاحية:
campaigns:write - لمفاتيح التشغيل فقط
يوقف حملة مجدولة أو قيد الإرسال. تبقى الرسائل المرسلة كما هي، وتُلغى البقية.
معاملات المسار
idstringمطلوبمعرّف العنصر.
حقول الاستجابة200· أُلغيت.
idstringمطلوبobject"campaign"مطلوبnamestringمطلوبdescriptionstring | nullاختياريstatusstringمطلوبdraftحتى تبدأ، وscheduledتنتظرscheduled_at، وpausedمتوقفة مؤقتًا (انظرhold_reason): أصلح السبب ثم استدعِPOST /v1/campaigns/{id}/resume.إحدى القيم
draftscheduledin_progresspausedcompletedfailedcancelledhold_reasonstring | nullاختياريtemplateobject | nullاختياريالحقول الفرعية (3)
idstringاختياريnamestringاختياريlanguagestring | nullاختياري
number_idstring | nullاختياريscheduled_atstring | nullاختياريtimezonestring | nullاختياريstatsobjectمطلوبأعداد المستلمين. يضيف
GET /v1/campaigns/{id}الحقولpendingوrepliedوالنسب.الحقول الفرعية (10)
recipientsintegerاختياريpendingintegerاختياريsentintegerاختياريdeliveredintegerاختياريreadintegerاختياريfailedintegerاختياريrepliedintegerاختياريdelivery_ratenumber | nullاختياريread_ratenumber | nullاختياريreply_ratenumber | nullاختياري
estimated_costobject | nullاختياريما سيحتسبه واتساب بالريال (والدولار) وفق جدول الأسعار الحالي. يُثبَّت عند البدء، وهو تقدير في المسودة.
الحقول الفرعية (6)
currencystringاختياريtotalnumberاختياريtotal_usdnumberاختياريrecipients_pricedintegerاختياريrecipients_freeintegerاختياريrecipients_unpricedintegerاختياري
created_atstring | nullاختياريupdated_atstring | nullاختياري
الأخطاء المحتملة4
- 403test_mode_unsupportedغير متاح في وضع الاختبار
- 404resource_missingغير موجود
- 409state_conflictغير مسموح في الحالة الحالية
- 429rate_limitedطلبات كثيرة
جرّبها
curl -X POST https://api.saei.automize.sa/v1/campaigns/cmp_64/cancel \
-H "Authorization: Bearer $API_KEY"أُلغيت.
{
"id": "cmp_64",
"object": "campaign",
"name": "string",
"description": "string",
"status": "draft",
"hold_reason": "string",
"template": {
"id": "string",
"name": "string",
"language": "string"
},
"number_id": "string",
"scheduled_at": "2026-10-01T09:30:00Z",
"timezone": "string",
"stats": {
"recipients": 0,
"pending": 0,
"sent": 0,
"delivered": 0,
"read": 0,
"failed": 0,
"replied": 0,
"delivery_rate": 0,
"read_rate": 0,
"reply_rate": 0
},
"estimated_cost": {
"currency": "string",
"total": 0,
"total_usd": 0,
"recipients_priced": 0,
"recipients_free": 0,
"recipients_unpriced": 0
},
"created_at": "2026-10-01T09:30:00Z",
"updated_at": "2026-10-01T09:30:00Z"
}عرض مستلمي حملة
https://api.saei.automize.sa/v1/campaigns/{id}/messages- الصلاحية:
campaigns:read - لمفاتيح التشغيل فقط
رسالة message لكل مستلم (cmsg_…) مع حالة التسليم، وسبب واتساب عند الفشل. تصلك تغيّرات حالتها أيضًا كأحداث message.*.
معاملات المسار
idstringمطلوبمعرّف العنصر.
معاملات الاستعلام
limitintegerاختياريعدد العناصر المطلوبة، من 1 إلى 100.
cursorstringاختياريقيمة
next_cursorمن الصفحة السابقة.statusstringاختياريإحدى القيم
pendingsentdeliveredreadfailedcancelled
حقول الاستجابة200· صفحة من رسائل المستلمين.
object"list"مطلوبdataarray<Message>مطلوبالحقول الفرعية (28)
idstringمطلوبمعرّف فريد. عامله كنص معتم وخزّنه كنص حتى 64 حرفًا.
object"message"مطلوبlivemodebooleanمطلوبdirectionstringمطلوبoutboundللرسائل التي ترسلها، وinboundلرسائل العملاء.إحدى القيم
outboundinboundchannelstringمطلوبإحدى القيم
whatsappinstagrammessengerfromstring | nullاختياريالمُرسِل، بصيغة E.164 في واتساب.
tostring | nullاختياريالمُستلِم، بصيغة E.164 في واتساب.
typestringمطلوبنوع محتوى الرسالة.
textobjectاختياريالحقول الفرعية (1)
bodystringاختياري
templateobjectاختياريالحقول الفرعية (4)
namestringاختياريlanguagestringاختياريvariablesobjectاختياريbodystringاختياري
imageobjectاختياريرسائل الوسائط تحمل
link(أوmedia_id) وcaptionوfilenameوmime_typeعند توفرها.videoobjectاختياريaudioobjectاختياريdocumentobjectاختياريstickerobjectاختياريlocationobjectاختياريcontactsarrayاختياريinteractiveobjectاختياريما أرسلته (
typeوbodyوbuttons…)، أو عند ضغط العميل:reply: {id, title}.reactionobjectاختياريstatusstringمطلوبaccepted←sent←delivered←read، أوfailed. رسائل العملاء حالتهاreceived. تصلك تغيّرات الحالة كأحداث ويب هوك.إحدى القيم
acceptedsentdeliveredreadfailedreceivederrorobject | nullاختياريسبب فشل التسليم، عندما تكون
statusهيfailed.الحقول الفرعية (3)
codestring | nullاختياريtitlestring | nullاختياريmessagestring | nullاختياري
referencestring | nullاختياريمرجعك الخاص، يُعاد كما أرسلته في طلب الإرسال وفي كل حدث.
conversation_idstring | nullاختياريprovider_message_idstring | nullاختياريمعرّف الرسالة لدى واتساب (wamid).
contactobject | nullاختياريالحقول الفرعية (1)
namestring | nullاختياري
contextobject | nullاختياريفي الرد، الرسالة التي يُرَد عليها.
الحقول الفرعية (1)
provider_message_idstringاختياري
created_atstring | nullمطلوبupdated_atstring | nullاختياري
has_morebooleanمطلوبnext_cursorstring | nullمطلوب
الأخطاء المحتملة4
- 403test_mode_unsupportedغير متاح في وضع الاختبار
- 422parameter_invalidحقل غير صالح
- 404resource_missingغير موجود
- 429rate_limitedطلبات كثيرة
جرّبها
curl -X GET https://api.saei.automize.sa/v1/campaigns/cmp_64/messages \
-H "Authorization: Bearer $API_KEY"صفحة من رسائل المستلمين.
{
"object": "list",
"data": [
{
"id": "msg_48213",
"object": "message",
"livemode": false,
"direction": "outbound",
"channel": "whatsapp",
"from": "+966112345678",
"to": "+966501234567",
"type": "text",
"text": {
"body": "string"
},
"template": {
"name": "string",
"language": "string",
"variables": {},
"body": "string"
},
"image": {},
"video": {},
"audio": {},
"document": {},
"sticker": {},
"location": {},
"contacts": [],
"interactive": {},
"reaction": {},
"status": "accepted",
"error": {
"code": "string",
"title": "string",
"message": "string"
},
"reference": "string",
"conversation_id": "string",
"provider_message_id": "string",
"contact": {
"name": "string"
},
"context": {
"provider_message_id": "string"
},
"created_at": "2026-10-01T09:30:00Z",
"updated_at": "2026-10-01T09:30:00Z"
}
],
"has_more": false,
"next_cursor": "string"
}استئناف حملة متوقفة
https://api.saei.automize.sa/v1/campaigns/{id}/resume- الصلاحية:
campaigns:write - لمفاتيح التشغيل فقط
يعيد حملة متوقفة إلى الإرسال بعد إصلاح السبب. لا يحدث إلا بطلب صريح وليس تلقائيًا (إلا بعد إيقاف شامل للمنصة)، لأن الرقم العائد من قيد يجب ألا يبدأ البث دون متابعة. يُرفض ما دام الرقم لا يستطيع البث.
معاملات المسار
idstringمطلوبمعرّف العنصر.
حقول الاستجابة200· عادت للإرسال.
idstringمطلوبobject"campaign"مطلوبnamestringمطلوبdescriptionstring | nullاختياريstatusstringمطلوبdraftحتى تبدأ، وscheduledتنتظرscheduled_at، وpausedمتوقفة مؤقتًا (انظرhold_reason): أصلح السبب ثم استدعِPOST /v1/campaigns/{id}/resume.إحدى القيم
draftscheduledin_progresspausedcompletedfailedcancelledhold_reasonstring | nullاختياريtemplateobject | nullاختياريالحقول الفرعية (3)
idstringاختياريnamestringاختياريlanguagestring | nullاختياري
number_idstring | nullاختياريscheduled_atstring | nullاختياريtimezonestring | nullاختياريstatsobjectمطلوبأعداد المستلمين. يضيف
GET /v1/campaigns/{id}الحقولpendingوrepliedوالنسب.الحقول الفرعية (10)
recipientsintegerاختياريpendingintegerاختياريsentintegerاختياريdeliveredintegerاختياريreadintegerاختياريfailedintegerاختياريrepliedintegerاختياريdelivery_ratenumber | nullاختياريread_ratenumber | nullاختياريreply_ratenumber | nullاختياري
estimated_costobject | nullاختياريما سيحتسبه واتساب بالريال (والدولار) وفق جدول الأسعار الحالي. يُثبَّت عند البدء، وهو تقدير في المسودة.
الحقول الفرعية (6)
currencystringاختياريtotalnumberاختياريtotal_usdnumberاختياريrecipients_pricedintegerاختياريrecipients_freeintegerاختياريrecipients_unpricedintegerاختياري
created_atstring | nullاختياريupdated_atstring | nullاختياري
الأخطاء المحتملة5
- 403test_mode_unsupportedغير متاح في وضع الاختبار
- 404resource_missingغير موجود
- 422sender_not_sendableالرقم لا يستطيع الإرسال
- 409state_conflictغير مسموح في الحالة الحالية
- 429rate_limitedطلبات كثيرة
جرّبها
curl -X POST https://api.saei.automize.sa/v1/campaigns/cmp_64/resume \
-H "Authorization: Bearer $API_KEY"عادت للإرسال.
{
"id": "cmp_64",
"object": "campaign",
"name": "string",
"description": "string",
"status": "draft",
"hold_reason": "string",
"template": {
"id": "string",
"name": "string",
"language": "string"
},
"number_id": "string",
"scheduled_at": "2026-10-01T09:30:00Z",
"timezone": "string",
"stats": {
"recipients": 0,
"pending": 0,
"sent": 0,
"delivered": 0,
"read": 0,
"failed": 0,
"replied": 0,
"delivery_rate": 0,
"read_rate": 0,
"reply_rate": 0
},
"estimated_cost": {
"currency": "string",
"total": 0,
"total_usd": 0,
"recipients_priced": 0,
"recipients_free": 0,
"recipients_unpriced": 0
},
"created_at": "2026-10-01T09:30:00Z",
"updated_at": "2026-10-01T09:30:00Z"
}بدء حملة
https://api.saei.automize.sa/v1/campaigns/{id}/start- الصلاحية:
campaigns:write - لمفاتيح التشغيل فقط
يرسل المسودة الآن، أو في موعد scheduled_at. يتم الإرسال بوتيرة تحمي تقييم جودة الرقم، وتابع التقدم بأحداث campaign.* وGET /v1/campaigns/{id}.
معاملات المسار
idstringمطلوبمعرّف العنصر.
حقول الاستجابة200· بدأت (`in_progress`) أو جُدولت (`scheduled`).
idstringمطلوبobject"campaign"مطلوبnamestringمطلوبdescriptionstring | nullاختياريstatusstringمطلوبdraftحتى تبدأ، وscheduledتنتظرscheduled_at، وpausedمتوقفة مؤقتًا (انظرhold_reason): أصلح السبب ثم استدعِPOST /v1/campaigns/{id}/resume.إحدى القيم
draftscheduledin_progresspausedcompletedfailedcancelledhold_reasonstring | nullاختياريtemplateobject | nullاختياريالحقول الفرعية (3)
idstringاختياريnamestringاختياريlanguagestring | nullاختياري
number_idstring | nullاختياريscheduled_atstring | nullاختياريtimezonestring | nullاختياريstatsobjectمطلوبأعداد المستلمين. يضيف
GET /v1/campaigns/{id}الحقولpendingوrepliedوالنسب.الحقول الفرعية (10)
recipientsintegerاختياريpendingintegerاختياريsentintegerاختياريdeliveredintegerاختياريreadintegerاختياريfailedintegerاختياريrepliedintegerاختياريdelivery_ratenumber | nullاختياريread_ratenumber | nullاختياريreply_ratenumber | nullاختياري
estimated_costobject | nullاختياريما سيحتسبه واتساب بالريال (والدولار) وفق جدول الأسعار الحالي. يُثبَّت عند البدء، وهو تقدير في المسودة.
الحقول الفرعية (6)
currencystringاختياريtotalnumberاختياريtotal_usdnumberاختياريrecipients_pricedintegerاختياريrecipients_freeintegerاختياريrecipients_unpricedintegerاختياري
created_atstring | nullاختياريupdated_atstring | nullاختياري
الأخطاء المحتملة8
- 402quota_exceededنفد الرصيد المتاح
- 403test_mode_unsupportedغير متاح في وضع الاختبار
- 404resource_missingغير موجود
- 422sender_not_configuredلا يوجد رقم مُرسِل
- 422sender_not_sendableالرقم لا يستطيع الإرسال
- 422channel_errorرفض واتساب الرسالة
- 409state_conflictغير مسموح في الحالة الحالية
- 429rate_limitedطلبات كثيرة
جرّبها
curl -X POST https://api.saei.automize.sa/v1/campaigns/cmp_64/start \
-H "Authorization: Bearer $API_KEY"بدأت (`in_progress`) أو جُدولت (`scheduled`).
{
"id": "cmp_64",
"object": "campaign",
"name": "string",
"description": "string",
"status": "draft",
"hold_reason": "string",
"template": {
"id": "string",
"name": "string",
"language": "string"
},
"number_id": "string",
"scheduled_at": "2026-10-01T09:30:00Z",
"timezone": "string",
"stats": {
"recipients": 0,
"pending": 0,
"sent": 0,
"delivered": 0,
"read": 0,
"failed": 0,
"replied": 0,
"delivery_rate": 0,
"read_rate": 0,
"reply_rate": 0
},
"estimated_cost": {
"currency": "string",
"total": 0,
"total_usd": 0,
"recipients_priced": 0,
"recipients_free": 0,
"recipients_unpriced": 0
},
"created_at": "2026-10-01T09:30:00Z",
"updated_at": "2026-10-01T09:30:00Z"
}