انتقل إلى المحتوى
المطورين

توثيق API

كل ما تحتاجه لإرسال رسائل واتساب من موقعك أو تطبيقك أو أداة الأتمتة.

مقدمة

تتيح لك REST API إرسال رسائل واتساب والوسائط ورموز OTP والحملات، وإدارة جهات الاتصال واستقبال الأحداث. كل الطلبات والاستجابات بصيغة JSON.

الرابط الأساسي https://bcmagency.net/wp-json/wpbcm/v1

المصادقة

أنشئ مفتاح API من لوحة التحكم (صفحة مفاتيح API) وأرسله مع كل طلب في الترويسة "token". كما يُقبل "Authorization: Bearer <key>" والمعامل ?token= في الرابط.

token: YOUR_API_TOKEN

حد الطلبات: 120 طلب في الدقيقة لكل مفتاح.

إعادة المحاولة بأمان (Idempotency-Key)

أضف الترويسة "Idempotency-Key" بقيمة فريدة (مثل UUID أو رقم الطلب) لأي طلب POST. إذا انقطع الاتصال وأعدت إرسال نفس الطلب بنفس المفتاح خلال 24 ساعة، تعيد الـ API النتيجة الأولى بدلاً من إرسال الرسالة مرتين. وتحمل الاستجابة المعادة الترويسة "Idempotent-Replayed: true".

Idempotency-Key: order-1045-shipped

الاستجابات والأخطاء

الاستجابات الناجحة تحتوي على "success": true. الأخطاء تُرجع كود HTTP مع "code" للبرمجة و "message" للقراءة.

{
  "success": false,
  "code": "INSTANCE_NOT_CONNECTED",
  "message": "This WhatsApp number is not connected."
}
HTTPcodeالمعنى
401TOKEN_MISSING / TOKEN_INVALIDمفتاح API ناقص أو غير صحيح.
402SUBSCRIPTION_INACTIVEلا يوجد اشتراك مفعّل.
404INSTANCE_NOT_FOUNDمعرّف رقم غير معروف.
409INSTANCE_NOT_CONNECTEDالرقم غير مرتبط. امسح رمز QR مرة أخرى.
409IDEMPOTENCY_CONFLICTيوجد طلب بنفس مفتاح Idempotency-Key قيد التنفيذ حالياً.
422VALIDATION_ERROR / INVALID_PHONEهناك معامل ناقص أو غير صالح.
429RATE_LIMITED / QUOTA_EXCEEDEDطلبات كثيرة جداً أو تم الوصول لحد الباقة.
502GATEWAY_ERRORلم يتمكن واتساب من تنفيذ الطلب. أعد المحاولة لاحقاً.

إرسال رسالة نصية

POSThttps://bcmagency.net/wp-json/wpbcm/v1/send-message

إرسال رسالة واتساب نصية. يدعم المتغيرات {{variables}} والصيغ المتغيرة {أهلاً|مرحباً}.

المعاملمطلوبالوصف
instance_idلامعرّف الرقم (مثل ins_xxx). الافتراضي أول رقم متصل.
phoneنعمرقم المستلم بالصيغة الدولية مثل 201001234567 (أو معرّف جروب).
messageنعمنص الرسالة (بحد أقصى 4096 حرف).
varsلاكائن بالمتغيرات المستخدمة في الرسالة، مثل {"name":"Ahmed"}.
schedule_atلاتاريخ/وقت اختياري بصيغة ISO للإرسال لاحقاً.
curl -X POST "https://bcmagency.net/wp-json/wpbcm/v1/send-message" \
  -H "token: YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "instance_id": "ins_xxxxxxxx",
    "phone": "201001234567",
    "message": "Hello {{name}} 👋",
    "vars": {
        "name": "Ahmed"
    }
}'
<?php
$ch = curl_init('https://bcmagency.net/wp-json/wpbcm/v1/send-message');
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CUSTOMREQUEST  => 'POST',
    CURLOPT_HTTPHEADER     => ['token: YOUR_API_TOKEN', 'Content-Type: application/json'],
    CURLOPT_POSTFIELDS     => json_encode([
        'instance_id' => 'ins_xxxxxxxx',
        'phone' => '201001234567',
        'message' => 'Hello {{name}} 👋',
        'vars' => [
            'name' => 'Ahmed'
        ]
    ]),
]);
$response = json_decode(curl_exec($ch), true);
curl_close($ch);
print_r($response);
const res = await fetch('https://bcmagency.net/wp-json/wpbcm/v1/send-message', {
  method: 'POST',
  headers: { 'token': 'YOUR_API_TOKEN', 'Content-Type': 'application/json' },
  body: JSON.stringify({
      "instance_id": "ins_xxxxxxxx",
      "phone": "201001234567",
      "message": "Hello {{name}} 👋",
      "vars": {
          "name": "Ahmed"
      }
  }),
});
const data = await res.json();
console.log(data);
Node: HTTP Request
Method: POST
URL: https://bcmagency.net/wp-json/wpbcm/v1/send-message
Authentication: None
Send Headers: ON
  • token = YOUR_API_TOKEN
Send Body: ON → JSON
{
    "instance_id": "ins_xxxxxxxx",
    "phone": "201001234567",
    "message": "Hello {{name}} 👋",
    "vars": {
        "name": "Ahmed"
    }
}

الاستجابة

{
    "success": true,
    "message": "Message sent successfully.",
    "data": {
        "id": 1024,
        "instance_id": "ins_xxx",
        "direction": "out",
        "phone": "201001234567",
        "type": "text",
        "status": "sent",
        "provider_id": "3EB0C431C26A1916E1A8"
    }
}

إرسال وسائط (صورة، فيديو، صوت، مستند)

POSThttps://bcmagency.net/wp-json/wpbcm/v1/send-media

أرسل ملفاً من رابط عام مع وصف اختياري.

المعاملمطلوبالوصف
instance_idلامعرّف الرقم (مثل ins_xxx). الافتراضي أول رقم متصل.
phoneنعمرقم المستلم بالصيغة الدولية مثل 201001234567 (أو معرّف جروب).
media_urlنعمالرابط العام للملف.
typeلاimage | video | audio | document
captionلانص الوصف.
filenameلااسم الملف الذي يظهر للمستندات.
curl -X POST "https://bcmagency.net/wp-json/wpbcm/v1/send-media" \
  -H "token: YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "instance_id": "ins_xxxxxxxx",
    "phone": "201001234567",
    "media_url": "https://example.com/invoice.pdf",
    "type": "document",
    "caption": "Your invoice",
    "filename": "invoice.pdf"
}'
<?php
$ch = curl_init('https://bcmagency.net/wp-json/wpbcm/v1/send-media');
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CUSTOMREQUEST  => 'POST',
    CURLOPT_HTTPHEADER     => ['token: YOUR_API_TOKEN', 'Content-Type: application/json'],
    CURLOPT_POSTFIELDS     => json_encode([
        'instance_id' => 'ins_xxxxxxxx',
        'phone' => '201001234567',
        'media_url' => 'https://example.com/invoice.pdf',
        'type' => 'document',
        'caption' => 'Your invoice',
        'filename' => 'invoice.pdf'
    ]),
]);
$response = json_decode(curl_exec($ch), true);
curl_close($ch);
print_r($response);
const res = await fetch('https://bcmagency.net/wp-json/wpbcm/v1/send-media', {
  method: 'POST',
  headers: { 'token': 'YOUR_API_TOKEN', 'Content-Type': 'application/json' },
  body: JSON.stringify({
      "instance_id": "ins_xxxxxxxx",
      "phone": "201001234567",
      "media_url": "https://example.com/invoice.pdf",
      "type": "document",
      "caption": "Your invoice",
      "filename": "invoice.pdf"
  }),
});
const data = await res.json();
console.log(data);
Node: HTTP Request
Method: POST
URL: https://bcmagency.net/wp-json/wpbcm/v1/send-media
Authentication: None
Send Headers: ON
  • token = YOUR_API_TOKEN
Send Body: ON → JSON
{
    "instance_id": "ins_xxxxxxxx",
    "phone": "201001234567",
    "media_url": "https://example.com/invoice.pdf",
    "type": "document",
    "caption": "Your invoice",
    "filename": "invoice.pdf"
}

إرسال قالب محفوظ

POSThttps://bcmagency.net/wp-json/wpbcm/v1/send-template

أرسل أحد قوالبك مع المتغيرات. لأرقام Cloud API يمكنك إرسال قوالب Meta المعتمدة عبر cloud_template.

المعاملمطلوبالوصف
instance_idلامعرّف الرقم (مثل ins_xxx). الافتراضي أول رقم متصل.
phoneنعمرقم المستلم بالصيغة الدولية مثل 201001234567 (أو معرّف جروب).
template_idنعممعرّف القالب من GET /templates.
varsلاكائن بالمتغيرات المستخدمة في الرسالة، مثل {"name":"Ahmed"}.
cloud_templateلا{"name":"order_update","language":"ar","params":["Ahmed","#1001"]}
curl -X POST "https://bcmagency.net/wp-json/wpbcm/v1/send-template" \
  -H "token: YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "phone": "201001234567",
    "template_id": 3,
    "vars": {
        "name": "Ahmed",
        "order": "#1001"
    }
}'
<?php
$ch = curl_init('https://bcmagency.net/wp-json/wpbcm/v1/send-template');
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CUSTOMREQUEST  => 'POST',
    CURLOPT_HTTPHEADER     => ['token: YOUR_API_TOKEN', 'Content-Type: application/json'],
    CURLOPT_POSTFIELDS     => json_encode([
        'phone' => '201001234567',
        'template_id' => 3,
        'vars' => [
            'name' => 'Ahmed',
            'order' => '#1001'
        ]
    ]),
]);
$response = json_decode(curl_exec($ch), true);
curl_close($ch);
print_r($response);
const res = await fetch('https://bcmagency.net/wp-json/wpbcm/v1/send-template', {
  method: 'POST',
  headers: { 'token': 'YOUR_API_TOKEN', 'Content-Type': 'application/json' },
  body: JSON.stringify({
      "phone": "201001234567",
      "template_id": 3,
      "vars": {
          "name": "Ahmed",
          "order": "#1001"
      }
  }),
});
const data = await res.json();
console.log(data);
Node: HTTP Request
Method: POST
URL: https://bcmagency.net/wp-json/wpbcm/v1/send-template
Authentication: None
Send Headers: ON
  • token = YOUR_API_TOKEN
Send Body: ON → JSON
{
    "phone": "201001234567",
    "template_id": 3,
    "vars": {
        "name": "Ahmed",
        "order": "#1001"
    }
}

إرسال موقع

POSThttps://bcmagency.net/wp-json/wpbcm/v1/send-location

مشاركة موقع على الخريطة.

المعاملمطلوبالوصف
phoneنعمرقم المستلم بالصيغة الدولية مثل 201001234567 (أو معرّف جروب).
latitudeنعم30.0444
longitudeنعم31.2357
nameلااسم المكان.
addressلاالعنوان.
curl -X POST "https://bcmagency.net/wp-json/wpbcm/v1/send-location" \
  -H "token: YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "phone": "201001234567",
    "latitude": 30.0444,
    "longitude": 31.2357,
    "name": "Our store"
}'
<?php
$ch = curl_init('https://bcmagency.net/wp-json/wpbcm/v1/send-location');
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CUSTOMREQUEST  => 'POST',
    CURLOPT_HTTPHEADER     => ['token: YOUR_API_TOKEN', 'Content-Type: application/json'],
    CURLOPT_POSTFIELDS     => json_encode([
        'phone' => '201001234567',
        'latitude' => 30.0444,
        'longitude' => 31.2357,
        'name' => 'Our store'
    ]),
]);
$response = json_decode(curl_exec($ch), true);
curl_close($ch);
print_r($response);
const res = await fetch('https://bcmagency.net/wp-json/wpbcm/v1/send-location', {
  method: 'POST',
  headers: { 'token': 'YOUR_API_TOKEN', 'Content-Type': 'application/json' },
  body: JSON.stringify({
      "phone": "201001234567",
      "latitude": 30.0444,
      "longitude": 31.2357,
      "name": "Our store"
  }),
});
const data = await res.json();
console.log(data);
Node: HTTP Request
Method: POST
URL: https://bcmagency.net/wp-json/wpbcm/v1/send-location
Authentication: None
Send Headers: ON
  • token = YOUR_API_TOKEN
Send Body: ON → JSON
{
    "phone": "201001234567",
    "latitude": 30.0444,
    "longitude": 31.2357,
    "name": "Our store"
}

التحقق من الأرقام على واتساب

POSThttps://bcmagency.net/wp-json/wpbcm/v1/check-number

تحقق من وجود حسابات واتساب للأرقام (لأرقام QR فقط، حتى 50 رقماً في الطلب).

المعاملمطلوبالوصف
phonesنعممصفوفة بأرقام الهواتف.
curl -X POST "https://bcmagency.net/wp-json/wpbcm/v1/check-number" \
  -H "token: YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "phones": [
        "201001234567",
        "201112223334"
    ]
}'
<?php
$ch = curl_init('https://bcmagency.net/wp-json/wpbcm/v1/check-number');
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CUSTOMREQUEST  => 'POST',
    CURLOPT_HTTPHEADER     => ['token: YOUR_API_TOKEN', 'Content-Type: application/json'],
    CURLOPT_POSTFIELDS     => json_encode([
        'phones' => [
            '201001234567',
            '201112223334'
        ]
    ]),
]);
$response = json_decode(curl_exec($ch), true);
curl_close($ch);
print_r($response);
const res = await fetch('https://bcmagency.net/wp-json/wpbcm/v1/check-number', {
  method: 'POST',
  headers: { 'token': 'YOUR_API_TOKEN', 'Content-Type': 'application/json' },
  body: JSON.stringify({
      "phones": [
          "201001234567",
          "201112223334"
      ]
  }),
});
const data = await res.json();
console.log(data);
Node: HTTP Request
Method: POST
URL: https://bcmagency.net/wp-json/wpbcm/v1/check-number
Authentication: None
Send Headers: ON
  • token = YOUR_API_TOKEN
Send Body: ON → JSON
{
    "phones": [
        "201001234567",
        "201112223334"
    ]
}

سجل الرسائل

GEThttps://bcmagency.net/wp-json/wpbcm/v1/messages

عرض الرسائل المرسلة والمستلمة مع حالة التسليم.

المعاملمطلوبالوصف
directionلاin | out
statusلاpending | sent | delivered | read | failed | received
phoneلاتصفية حسب الرقم.
page / per_pageلا1 / 20 (max 100)
curl -X GET "https://bcmagency.net/wp-json/wpbcm/v1/messages" \
  -H "token: YOUR_API_TOKEN"
<?php
$ch = curl_init('https://bcmagency.net/wp-json/wpbcm/v1/messages');
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CUSTOMREQUEST  => 'GET',
    CURLOPT_HTTPHEADER     => ['token: YOUR_API_TOKEN', 'Content-Type: application/json'],
]);
$response = json_decode(curl_exec($ch), true);
curl_close($ch);
print_r($response);
const res = await fetch('https://bcmagency.net/wp-json/wpbcm/v1/messages', {
  method: 'GET',
  headers: { 'token': 'YOUR_API_TOKEN', 'Content-Type': 'application/json' },
});
const data = await res.json();
console.log(data);
Node: HTTP Request
Method: GET
URL: https://bcmagency.net/wp-json/wpbcm/v1/messages
Authentication: None
Send Headers: ON
  • token = YOUR_API_TOKEN

إرسال رمز OTP

POSThttps://bcmagency.net/wp-json/wpbcm/v1/otp/send

ينشئ رمز تحقق آمن لمرة واحدة ويرسله على واتساب. لا يُرجع الـ API الرمز أبداً.

المعاملمطلوبالوصف
phoneنعمرقم المستلم بالصيغة الدولية مثل 201001234567 (أو معرّف جروب).
lengthلا4 – 8 (default 6)
expiryلابالدقائق من 1 إلى 60 (الافتراضي 5).
messageلانص مخصص يحتوي على {{code}} و {{minutes}}.
curl -X POST "https://bcmagency.net/wp-json/wpbcm/v1/otp/send" \
  -H "token: YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "phone": "201001234567",
    "length": 6,
    "expiry": 5
}'
<?php
$ch = curl_init('https://bcmagency.net/wp-json/wpbcm/v1/otp/send');
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CUSTOMREQUEST  => 'POST',
    CURLOPT_HTTPHEADER     => ['token: YOUR_API_TOKEN', 'Content-Type: application/json'],
    CURLOPT_POSTFIELDS     => json_encode([
        'phone' => '201001234567',
        'length' => 6,
        'expiry' => 5
    ]),
]);
$response = json_decode(curl_exec($ch), true);
curl_close($ch);
print_r($response);
const res = await fetch('https://bcmagency.net/wp-json/wpbcm/v1/otp/send', {
  method: 'POST',
  headers: { 'token': 'YOUR_API_TOKEN', 'Content-Type': 'application/json' },
  body: JSON.stringify({
      "phone": "201001234567",
      "length": 6,
      "expiry": 5
  }),
});
const data = await res.json();
console.log(data);
Node: HTTP Request
Method: POST
URL: https://bcmagency.net/wp-json/wpbcm/v1/otp/send
Authentication: None
Send Headers: ON
  • token = YOUR_API_TOKEN
Send Body: ON → JSON
{
    "phone": "201001234567",
    "length": 6,
    "expiry": 5
}

الاستجابة

{
    "success": true,
    "message": "Verification code sent.",
    "data": {
        "otp_id": 77,
        "phone": "201001234567",
        "expires_in": 300
    }
}

التحقق من رمز OTP

POSThttps://bcmagency.net/wp-json/wpbcm/v1/otp/verify

يُرجع valid=true عند صحة الرمز. للرموز مدة صلاحية و5 محاولات.

المعاملمطلوبالوصف
phoneنعمالرقم الذي أُرسل إليه الرمز (أو otp_id).
codeنعم123456
curl -X POST "https://bcmagency.net/wp-json/wpbcm/v1/otp/verify" \
  -H "token: YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "phone": "201001234567",
    "code": "123456"
}'
<?php
$ch = curl_init('https://bcmagency.net/wp-json/wpbcm/v1/otp/verify');
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CUSTOMREQUEST  => 'POST',
    CURLOPT_HTTPHEADER     => ['token: YOUR_API_TOKEN', 'Content-Type: application/json'],
    CURLOPT_POSTFIELDS     => json_encode([
        'phone' => '201001234567',
        'code' => '123456'
    ]),
]);
$response = json_decode(curl_exec($ch), true);
curl_close($ch);
print_r($response);
const res = await fetch('https://bcmagency.net/wp-json/wpbcm/v1/otp/verify', {
  method: 'POST',
  headers: { 'token': 'YOUR_API_TOKEN', 'Content-Type': 'application/json' },
  body: JSON.stringify({
      "phone": "201001234567",
      "code": "123456"
  }),
});
const data = await res.json();
console.log(data);
Node: HTTP Request
Method: POST
URL: https://bcmagency.net/wp-json/wpbcm/v1/otp/verify
Authentication: None
Send Headers: ON
  • token = YOUR_API_TOKEN
Send Body: ON → JSON
{
    "phone": "201001234567",
    "code": "123456"
}

الاستجابة

{
    "success": true,
    "valid": true,
    "reason": "verified"
}

إنشاء حملة جماعية

POSThttps://bcmagency.net/wp-json/wpbcm/v1/campaigns

أرسل لأرقام كثيرة مع تأخير عشوائي بين الرسائل. ابدأ الآن أو جدولها أو احفظها كمسودة.

المعاملمطلوبالوصف
instance_idsنعممصفوفة بمعرّفات الأرقام (تُوزّع الرسائل بالتناوب).
messageنعمالنص الافتراضي مع المتغيرات {{variables}}.
messagesلامصفوفة صفوف: {"phone_number":"2010…","vars":{"name":"Amr"}}.
numbersلابديل: نص يحتوي رقماً في كل سطر.
group_idsلامعرّفات مجموعات جهات الاتصال.
media_urlلارابط وسائط اختياري.
wait_min / wait_maxلاتأخير عشوائي بين الرسائل بالثواني (الافتراضي 5 – 15).
start_nowلاtrue | false
schedule_isoلا2026-10-05T09:00:00+02:00
curl -X POST "https://bcmagency.net/wp-json/wpbcm/v1/campaigns" \
  -H "token: YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "October offer",
    "instance_ids": [
        "ins_xxxxxxxx"
    ],
    "message": "Hi {{name|there}}, enjoy 20% off today!",
    "messages": [
        {
            "phone_number": "201001234567",
            "vars": {
                "name": "Amr"
            }
        },
        {
            "phone_number": "201009876543"
        }
    ],
    "wait_min": 5,
    "wait_max": 15,
    "start_now": true
}'
<?php
$ch = curl_init('https://bcmagency.net/wp-json/wpbcm/v1/campaigns');
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CUSTOMREQUEST  => 'POST',
    CURLOPT_HTTPHEADER     => ['token: YOUR_API_TOKEN', 'Content-Type: application/json'],
    CURLOPT_POSTFIELDS     => json_encode([
        'name' => 'October offer',
        'instance_ids' => [
            'ins_xxxxxxxx'
        ],
        'message' => 'Hi {{name|there}}, enjoy 20% off today!',
        'messages' => [
            [
                'phone_number' => '201001234567',
                'vars' => [
                    'name' => 'Amr'
                ]
            ],
            [
                'phone_number' => '201009876543'
            ]
        ],
        'wait_min' => 5,
        'wait_max' => 15,
        'start_now' => true
    ]),
]);
$response = json_decode(curl_exec($ch), true);
curl_close($ch);
print_r($response);
const res = await fetch('https://bcmagency.net/wp-json/wpbcm/v1/campaigns', {
  method: 'POST',
  headers: { 'token': 'YOUR_API_TOKEN', 'Content-Type': 'application/json' },
  body: JSON.stringify({
      "name": "October offer",
      "instance_ids": [
          "ins_xxxxxxxx"
      ],
      "message": "Hi {{name|there}}, enjoy 20% off today!",
      "messages": [
          {
              "phone_number": "201001234567",
              "vars": {
                  "name": "Amr"
              }
          },
          {
              "phone_number": "201009876543"
          }
      ],
      "wait_min": 5,
      "wait_max": 15,
      "start_now": true
  }),
});
const data = await res.json();
console.log(data);
Node: HTTP Request
Method: POST
URL: https://bcmagency.net/wp-json/wpbcm/v1/campaigns
Authentication: None
Send Headers: ON
  • token = YOUR_API_TOKEN
Send Body: ON → JSON
{
    "name": "October offer",
    "instance_ids": [
        "ins_xxxxxxxx"
    ],
    "message": "Hi {{name|there}}, enjoy 20% off today!",
    "messages": [
        {
            "phone_number": "201001234567",
            "vars": {
                "name": "Amr"
            }
        },
        {
            "phone_number": "201009876543"
        }
    ],
    "wait_min": 5,
    "wait_max": 15,
    "start_now": true
}

عرض الحملات

GEThttps://bcmagency.net/wp-json/wpbcm/v1/campaigns

الحملات مع عدادات التقدم.

المعاملمطلوبالوصف
statusلاdraft | scheduled | running | paused | completed | cancelled
curl -X GET "https://bcmagency.net/wp-json/wpbcm/v1/campaigns" \
  -H "token: YOUR_API_TOKEN"
<?php
$ch = curl_init('https://bcmagency.net/wp-json/wpbcm/v1/campaigns');
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CUSTOMREQUEST  => 'GET',
    CURLOPT_HTTPHEADER     => ['token: YOUR_API_TOKEN', 'Content-Type: application/json'],
]);
$response = json_decode(curl_exec($ch), true);
curl_close($ch);
print_r($response);
const res = await fetch('https://bcmagency.net/wp-json/wpbcm/v1/campaigns', {
  method: 'GET',
  headers: { 'token': 'YOUR_API_TOKEN', 'Content-Type': 'application/json' },
});
const data = await res.json();
console.log(data);
Node: HTTP Request
Method: GET
URL: https://bcmagency.net/wp-json/wpbcm/v1/campaigns
Authentication: None
Send Headers: ON
  • token = YOUR_API_TOKEN

بدء / إيقاف / استئناف / إلغاء

POSThttps://bcmagency.net/wp-json/wpbcm/v1/campaigns/{id}/start

استبدل start بـ pause أو resume أو cancel.

curl -X POST "https://bcmagency.net/wp-json/wpbcm/v1/campaigns/{id}/start" \
  -H "token: YOUR_API_TOKEN"
<?php
$ch = curl_init('https://bcmagency.net/wp-json/wpbcm/v1/campaigns/{id}/start');
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CUSTOMREQUEST  => 'POST',
    CURLOPT_HTTPHEADER     => ['token: YOUR_API_TOKEN', 'Content-Type: application/json'],
]);
$response = json_decode(curl_exec($ch), true);
curl_close($ch);
print_r($response);
const res = await fetch('https://bcmagency.net/wp-json/wpbcm/v1/campaigns/{id}/start', {
  method: 'POST',
  headers: { 'token': 'YOUR_API_TOKEN', 'Content-Type': 'application/json' },
});
const data = await res.json();
console.log(data);
Node: HTTP Request
Method: POST
URL: https://bcmagency.net/wp-json/wpbcm/v1/campaigns/{id}/start
Authentication: None
Send Headers: ON
  • token = YOUR_API_TOKEN

مستلمو الحملة

GEThttps://bcmagency.net/wp-json/wpbcm/v1/campaigns/{id}/messages

حالة كل مستلم في الحملة.

curl -X GET "https://bcmagency.net/wp-json/wpbcm/v1/campaigns/{id}/messages" \
  -H "token: YOUR_API_TOKEN"
<?php
$ch = curl_init('https://bcmagency.net/wp-json/wpbcm/v1/campaigns/{id}/messages');
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CUSTOMREQUEST  => 'GET',
    CURLOPT_HTTPHEADER     => ['token: YOUR_API_TOKEN', 'Content-Type: application/json'],
]);
$response = json_decode(curl_exec($ch), true);
curl_close($ch);
print_r($response);
const res = await fetch('https://bcmagency.net/wp-json/wpbcm/v1/campaigns/{id}/messages', {
  method: 'GET',
  headers: { 'token': 'YOUR_API_TOKEN', 'Content-Type': 'application/json' },
});
const data = await res.json();
console.log(data);
Node: HTTP Request
Method: GET
URL: https://bcmagency.net/wp-json/wpbcm/v1/campaigns/{id}/messages
Authentication: None
Send Headers: ON
  • token = YOUR_API_TOKEN

إعادة الإرسال للأرقام الفاشلة

POSThttps://bcmagency.net/wp-json/wpbcm/v1/campaigns/{id}/retry

تنشئ وتبدأ حملة جديدة بنفس المحتوى للأرقام التي فشل الإرسال إليها.

curl -X POST "https://bcmagency.net/wp-json/wpbcm/v1/campaigns/{id}/retry" \
  -H "token: YOUR_API_TOKEN"
<?php
$ch = curl_init('https://bcmagency.net/wp-json/wpbcm/v1/campaigns/{id}/retry');
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CUSTOMREQUEST  => 'POST',
    CURLOPT_HTTPHEADER     => ['token: YOUR_API_TOKEN', 'Content-Type: application/json'],
]);
$response = json_decode(curl_exec($ch), true);
curl_close($ch);
print_r($response);
const res = await fetch('https://bcmagency.net/wp-json/wpbcm/v1/campaigns/{id}/retry', {
  method: 'POST',
  headers: { 'token': 'YOUR_API_TOKEN', 'Content-Type': 'application/json' },
});
const data = await res.json();
console.log(data);
Node: HTTP Request
Method: POST
URL: https://bcmagency.net/wp-json/wpbcm/v1/campaigns/{id}/retry
Authentication: None
Send Headers: ON
  • token = YOUR_API_TOKEN

قائمة الأرقام المحظورة

GEThttps://bcmagency.net/wp-json/wpbcm/v1/blocklist

الأرقام التي ألغت اشتراكها (بكلمة إلغاء الاشتراك) أو تم حظرها. تتخطاها الحملات تلقائياً.

المعاملمطلوبالوصف
searchلاتصفية حسب الرقم.
page / per_pageلا1 / 30 (max 100)
curl -X GET "https://bcmagency.net/wp-json/wpbcm/v1/blocklist" \
  -H "token: YOUR_API_TOKEN"
<?php
$ch = curl_init('https://bcmagency.net/wp-json/wpbcm/v1/blocklist');
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CUSTOMREQUEST  => 'GET',
    CURLOPT_HTTPHEADER     => ['token: YOUR_API_TOKEN', 'Content-Type: application/json'],
]);
$response = json_decode(curl_exec($ch), true);
curl_close($ch);
print_r($response);
const res = await fetch('https://bcmagency.net/wp-json/wpbcm/v1/blocklist', {
  method: 'GET',
  headers: { 'token': 'YOUR_API_TOKEN', 'Content-Type': 'application/json' },
});
const data = await res.json();
console.log(data);
Node: HTTP Request
Method: GET
URL: https://bcmagency.net/wp-json/wpbcm/v1/blocklist
Authentication: None
Send Headers: ON
  • token = YOUR_API_TOKEN

حظر أرقام

POSThttps://bcmagency.net/wp-json/wpbcm/v1/blocklist

أضف رقماً واحداً (phone) أو عدة أرقام (phones). استخدمها عندما يلغي العميل اشتراكه من نظامك.

المعاملمطلوبالوصف
phoneلا201001234567
phonesلا["201001234567","201009876543"]
curl -X POST "https://bcmagency.net/wp-json/wpbcm/v1/blocklist" \
  -H "token: YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "phones": [
        "201001234567",
        "201009876543"
    ]
}'
<?php
$ch = curl_init('https://bcmagency.net/wp-json/wpbcm/v1/blocklist');
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CUSTOMREQUEST  => 'POST',
    CURLOPT_HTTPHEADER     => ['token: YOUR_API_TOKEN', 'Content-Type: application/json'],
    CURLOPT_POSTFIELDS     => json_encode([
        'phones' => [
            '201001234567',
            '201009876543'
        ]
    ]),
]);
$response = json_decode(curl_exec($ch), true);
curl_close($ch);
print_r($response);
const res = await fetch('https://bcmagency.net/wp-json/wpbcm/v1/blocklist', {
  method: 'POST',
  headers: { 'token': 'YOUR_API_TOKEN', 'Content-Type': 'application/json' },
  body: JSON.stringify({
      "phones": [
          "201001234567",
          "201009876543"
      ]
  }),
});
const data = await res.json();
console.log(data);
Node: HTTP Request
Method: POST
URL: https://bcmagency.net/wp-json/wpbcm/v1/blocklist
Authentication: None
Send Headers: ON
  • token = YOUR_API_TOKEN
Send Body: ON → JSON
{
    "phones": [
        "201001234567",
        "201009876543"
    ]
}

الاستجابة

{
    "success": true,
    "message": "2 numbers added to the blocklist.",
    "added": 2
}

إلغاء حظر رقم

DELETEhttps://bcmagency.net/wp-json/wpbcm/v1/blocklist/{id}

احذف السجل باستخدام المعرّف من GET /blocklist.

curl -X DELETE "https://bcmagency.net/wp-json/wpbcm/v1/blocklist/{id}" \
  -H "token: YOUR_API_TOKEN"
<?php
$ch = curl_init('https://bcmagency.net/wp-json/wpbcm/v1/blocklist/{id}');
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CUSTOMREQUEST  => 'DELETE',
    CURLOPT_HTTPHEADER     => ['token: YOUR_API_TOKEN', 'Content-Type: application/json'],
]);
$response = json_decode(curl_exec($ch), true);
curl_close($ch);
print_r($response);
const res = await fetch('https://bcmagency.net/wp-json/wpbcm/v1/blocklist/{id}', {
  method: 'DELETE',
  headers: { 'token': 'YOUR_API_TOKEN', 'Content-Type': 'application/json' },
});
const data = await res.json();
console.log(data);
Node: HTTP Request
Method: DELETE
URL: https://bcmagency.net/wp-json/wpbcm/v1/blocklist/{id}
Authentication: None
Send Headers: ON
  • token = YOUR_API_TOKEN

إنشاء / تحديث جهات الاتصال

POSThttps://bcmagency.net/wp-json/wpbcm/v1/contacts

إضافة أو تحديث حسب الرقم. أرسل جهة اتصال واحدة أو مصفوفة في "contacts".

المعاملمطلوبالوصف
phoneنعم201001234567
nameلاAhmed
emailلاahmed@example.com
group_idsلا[1,2]
fieldsلاحقول مخصصة يمكن استخدامها كمتغيرات {{variables}}.
curl -X POST "https://bcmagency.net/wp-json/wpbcm/v1/contacts" \
  -H "token: YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "phone": "201001234567",
    "name": "Ahmed",
    "group_ids": [
        1
    ],
    "fields": {
        "city": "Cairo"
    }
}'
<?php
$ch = curl_init('https://bcmagency.net/wp-json/wpbcm/v1/contacts');
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CUSTOMREQUEST  => 'POST',
    CURLOPT_HTTPHEADER     => ['token: YOUR_API_TOKEN', 'Content-Type: application/json'],
    CURLOPT_POSTFIELDS     => json_encode([
        'phone' => '201001234567',
        'name' => 'Ahmed',
        'group_ids' => [
            1
        ],
        'fields' => [
            'city' => 'Cairo'
        ]
    ]),
]);
$response = json_decode(curl_exec($ch), true);
curl_close($ch);
print_r($response);
const res = await fetch('https://bcmagency.net/wp-json/wpbcm/v1/contacts', {
  method: 'POST',
  headers: { 'token': 'YOUR_API_TOKEN', 'Content-Type': 'application/json' },
  body: JSON.stringify({
      "phone": "201001234567",
      "name": "Ahmed",
      "group_ids": [
          1
      ],
      "fields": {
          "city": "Cairo"
      }
  }),
});
const data = await res.json();
console.log(data);
Node: HTTP Request
Method: POST
URL: https://bcmagency.net/wp-json/wpbcm/v1/contacts
Authentication: None
Send Headers: ON
  • token = YOUR_API_TOKEN
Send Body: ON → JSON
{
    "phone": "201001234567",
    "name": "Ahmed",
    "group_ids": [
        1
    ],
    "fields": {
        "city": "Cairo"
    }
}

عرض جهات الاتصال

GEThttps://bcmagency.net/wp-json/wpbcm/v1/contacts

البحث في جهات الاتصال وتقسيمها لصفحات.

المعاملمطلوبالوصف
searchلاالاسم أو الرقم أو البريد.
group_idلا1
curl -X GET "https://bcmagency.net/wp-json/wpbcm/v1/contacts" \
  -H "token: YOUR_API_TOKEN"
<?php
$ch = curl_init('https://bcmagency.net/wp-json/wpbcm/v1/contacts');
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CUSTOMREQUEST  => 'GET',
    CURLOPT_HTTPHEADER     => ['token: YOUR_API_TOKEN', 'Content-Type: application/json'],
]);
$response = json_decode(curl_exec($ch), true);
curl_close($ch);
print_r($response);
const res = await fetch('https://bcmagency.net/wp-json/wpbcm/v1/contacts', {
  method: 'GET',
  headers: { 'token': 'YOUR_API_TOKEN', 'Content-Type': 'application/json' },
});
const data = await res.json();
console.log(data);
Node: HTTP Request
Method: GET
URL: https://bcmagency.net/wp-json/wpbcm/v1/contacts
Authentication: None
Send Headers: ON
  • token = YOUR_API_TOKEN

عرض مجموعات جهات الاتصال

GEThttps://bcmagency.net/wp-json/wpbcm/v1/groups

المجموعات مع عدد جهات الاتصال.

curl -X GET "https://bcmagency.net/wp-json/wpbcm/v1/groups" \
  -H "token: YOUR_API_TOKEN"
<?php
$ch = curl_init('https://bcmagency.net/wp-json/wpbcm/v1/groups');
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CUSTOMREQUEST  => 'GET',
    CURLOPT_HTTPHEADER     => ['token: YOUR_API_TOKEN', 'Content-Type: application/json'],
]);
$response = json_decode(curl_exec($ch), true);
curl_close($ch);
print_r($response);
const res = await fetch('https://bcmagency.net/wp-json/wpbcm/v1/groups', {
  method: 'GET',
  headers: { 'token': 'YOUR_API_TOKEN', 'Content-Type': 'application/json' },
});
const data = await res.json();
console.log(data);
Node: HTTP Request
Method: GET
URL: https://bcmagency.net/wp-json/wpbcm/v1/groups
Authentication: None
Send Headers: ON
  • token = YOUR_API_TOKEN

عرض قوالب الرسائل

GEThttps://bcmagency.net/wp-json/wpbcm/v1/templates

قوالبك المحفوظة.

curl -X GET "https://bcmagency.net/wp-json/wpbcm/v1/templates" \
  -H "token: YOUR_API_TOKEN"
<?php
$ch = curl_init('https://bcmagency.net/wp-json/wpbcm/v1/templates');
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CUSTOMREQUEST  => 'GET',
    CURLOPT_HTTPHEADER     => ['token: YOUR_API_TOKEN', 'Content-Type: application/json'],
]);
$response = json_decode(curl_exec($ch), true);
curl_close($ch);
print_r($response);
const res = await fetch('https://bcmagency.net/wp-json/wpbcm/v1/templates', {
  method: 'GET',
  headers: { 'token': 'YOUR_API_TOKEN', 'Content-Type': 'application/json' },
});
const data = await res.json();
console.log(data);
Node: HTTP Request
Method: GET
URL: https://bcmagency.net/wp-json/wpbcm/v1/templates
Authentication: None
Send Headers: ON
  • token = YOUR_API_TOKEN

عرض أرقام الواتساب

GEThttps://bcmagency.net/wp-json/wpbcm/v1/instances

كل الأرقام مع حالة الاتصال.

curl -X GET "https://bcmagency.net/wp-json/wpbcm/v1/instances" \
  -H "token: YOUR_API_TOKEN"
<?php
$ch = curl_init('https://bcmagency.net/wp-json/wpbcm/v1/instances');
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CUSTOMREQUEST  => 'GET',
    CURLOPT_HTTPHEADER     => ['token: YOUR_API_TOKEN', 'Content-Type: application/json'],
]);
$response = json_decode(curl_exec($ch), true);
curl_close($ch);
print_r($response);
const res = await fetch('https://bcmagency.net/wp-json/wpbcm/v1/instances', {
  method: 'GET',
  headers: { 'token': 'YOUR_API_TOKEN', 'Content-Type': 'application/json' },
});
const data = await res.json();
console.log(data);
Node: HTTP Request
Method: GET
URL: https://bcmagency.net/wp-json/wpbcm/v1/instances
Authentication: None
Send Headers: ON
  • token = YOUR_API_TOKEN

الاستجابة

{
    "success": true,
    "instances": [
        {
            "id": "ins_xxx",
            "name": "Sales",
            "driver": "gateway",
            "status": "connected",
            "phone": "201001234567"
        }
    ]
}

الحالة اللحظية للرقم

GEThttps://bcmagency.net/wp-json/wpbcm/v1/instances/{instance_id}/status

يحدّث حالة الاتصال من واتساب.

curl -X GET "https://bcmagency.net/wp-json/wpbcm/v1/instances/ins_xxxxxxxx/status" \
  -H "token: YOUR_API_TOKEN"
<?php
$ch = curl_init('https://bcmagency.net/wp-json/wpbcm/v1/instances/ins_xxxxxxxx/status');
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CUSTOMREQUEST  => 'GET',
    CURLOPT_HTTPHEADER     => ['token: YOUR_API_TOKEN', 'Content-Type: application/json'],
]);
$response = json_decode(curl_exec($ch), true);
curl_close($ch);
print_r($response);
const res = await fetch('https://bcmagency.net/wp-json/wpbcm/v1/instances/ins_xxxxxxxx/status', {
  method: 'GET',
  headers: { 'token': 'YOUR_API_TOKEN', 'Content-Type': 'application/json' },
});
const data = await res.json();
console.log(data);
Node: HTTP Request
Method: GET
URL: https://bcmagency.net/wp-json/wpbcm/v1/instances/ins_xxxxxxxx/status
Authentication: None
Send Headers: ON
  • token = YOUR_API_TOKEN

الحساب والباقة والاستهلاك

GEThttps://bcmagency.net/wp-json/wpbcm/v1/account

حالة الاشتراك والحدود وعدادات الاستهلاك.

curl -X GET "https://bcmagency.net/wp-json/wpbcm/v1/account" \
  -H "token: YOUR_API_TOKEN"
<?php
$ch = curl_init('https://bcmagency.net/wp-json/wpbcm/v1/account');
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CUSTOMREQUEST  => 'GET',
    CURLOPT_HTTPHEADER     => ['token: YOUR_API_TOKEN', 'Content-Type: application/json'],
]);
$response = json_decode(curl_exec($ch), true);
curl_close($ch);
print_r($response);
const res = await fetch('https://bcmagency.net/wp-json/wpbcm/v1/account', {
  method: 'GET',
  headers: { 'token': 'YOUR_API_TOKEN', 'Content-Type': 'application/json' },
});
const data = await res.json();
console.log(data);
Node: HTTP Request
Method: GET
URL: https://bcmagency.net/wp-json/wpbcm/v1/account
Authentication: None
Send Headers: ON
  • token = YOUR_API_TOKEN

Webhooks

أضف رابط Webhook من لوحة التحكم واختر الأحداث. نرسل طلب POST بصيغة JSON لكل حدث ونوقّعه بالمفتاح السري الخاص بك (HMAC-SHA256) في الترويسة X-WPBCM-Signature.

الحدثالوصف
message.receivedرسالة واردة
message.sentتم إرسال الرسالة
message.failedفشل الرسالة
message.statusحالة التسليم / القراءة
instance.statusاتصال / انفصال الرقم
campaign.completedاكتملت الحملة
otp.verifiedتم التحقق من OTP

مثال على البيانات

{
    "event": "message.received",
    "webhook_id": 4,
    "timestamp": 1790000000,
    "data": {
        "id": 2051,
        "instance_id": "ins_xxxxxxxx",
        "direction": "in",
        "phone": "201001234567",
        "contact_name": "Ahmed",
        "type": "text",
        "body": "Hello",
        "status": "received",
        "is_group": false
    }
}

التحقق من التوقيع

$payload   = file_get_contents('php://input');
$signature = $_SERVER['HTTP_X_WPBCM_SIGNATURE'] ?? '';
$expected  = 'sha256=' . hash_hmac('sha256', $payload, 'YOUR_WEBHOOK_SECRET');
if (!hash_equals($expected, $signature)) { http_response_code(401); exit; }
$event = json_decode($payload, true);
// $event['event'], $event['data']['phone'], $event['data']['body'] ...
http_response_code(200);
const crypto = require('crypto');
app.post('/whatsapp-webhook', express.raw({ type: 'application/json' }), (req, res) => {
  const expected = 'sha256=' + crypto.createHmac('sha256', 'YOUR_WEBHOOK_SECRET').update(req.body).digest('hex');
  if (req.get('X-WPBCM-Signature') !== expected) return res.sendStatus(401);
  const event = JSON.parse(req.body);
  console.log(event.event, event.data);
  res.sendStatus(200);
});

WooCommerce

  1. من لوحة التحكم افتح التكاملات ← WooCommerce واختر الرقم واكتب رسالة لكل حالة طلب.
  2. انسخ رابط التكامل الخاص بك.
  3. في متجرك اذهب إلى WooCommerce ← الإعدادات ← متقدم ← Webhooks ← إضافة Webhook. الموضوع: "Order created" (وواحد آخر لـ "Order updated")، رابط التسليم: رابط التكامل الخاص بك، والمفتاح السري: نفس المفتاح المحفوظ في التكامل (اختياري).
  4. احفظ. سيستلم العملاء الآن رسائل واتساب تلقائياً مع متغيرات مثل {{first_name}} و {{order_number}} و {{total}} و {{status}} و {{items}}.

EasyOrders

  1. من لوحة التحكم افتح التكاملات ← EasyOrders وأنشئ التكامل.
  2. انسخ رابط التكامل وأضفه كـ Webhook في إعدادات متجر EasyOrders (إنشاء طلب / تغيير حالة الطلب).
  3. يتم اكتشاف رقم العميل والاسم ورقم الطلب والإجمالي والحالة تلقائياً. إذا كانت البيانات تستخدم حقلاً آخر للرقم، حدد مساره (مثل customer.phone).

n8n

  1. أضف عقدة "HTTP Request" بطريقة POST والرابط هو الـ endpoint المطلوب (مثل /send-message).
  2. فعّل "Send Headers" وأضف ترويسة باسم token تحتوي مفتاح API.
  3. فعّل "Send Body" بصيغة JSON مع phone و message — يمكنك ربط القيم من العقد السابقة.
  4. للتفاعل مع الرسائل الواردة، أضف عقدة "Webhook" في n8n والصق رابطها في لوحة التحكم ← Webhooks.

المكتبات والتحميلات