Документация API

Интегрируйте функции официальной платформы Meta WhatsApp Business Platform в CRM, ERP, интернет-магазины и другие системы через REST API iSend.az.

Начало работы

Все запросы отправляются по HTTPS в формате JSON. Ответы API также возвращаются в формате JSON.

Базовый URL https://api.isend.az
Официальная интеграция Meta

Эта документация относится только к официальным номерам Meta WhatsApp Business, подключённым к iSend.az.

Аутентификация

API-ключ передаётся в JSON-теле каждого запроса в поле apikey.

JSON
{
  "apikey": "YOUR_API_KEY"
}
Защитите API-ключ

Не размещайте API-ключ во frontend-коде, открытых репозиториях и не передавайте его третьим лицам.

Эндпоинты

POST

/get-user-package.json

Возвращает активный тариф пользователя, лимит номеров, лимит сообщений и разрешения API/массовой отправки.

Пример запроса

cURL
curl -X POST https://api.isend.az/get-user-package.json \
  -H "Content-Type: application/json" \
  -d '{
    "apikey": "YOUR_API_KEY"
  }'

Успешный ответ

JSON
{
  "success": true,
  "package": {
    "id": 4,
    "num_limit": 3,
    "num_used": 2,
    "msg_limit": 5000,
    "msg_used": 318,
    "allow_bulk": true,
    "allow_api": true,
    "is_unlimited": 0
  }
}
POST

/numbers-list.json

Возвращает активные официальные номера Meta WhatsApp, подключённые к аккаунту пользователя iSend.az.

cURL
curl -X POST https://api.isend.az/numbers-list.json \
  -H "Content-Type: application/json" \
  -d '{
    "apikey": "YOUR_API_KEY"
  }'
JSON
{
  "success": true,
  "numbers": {
    "205": {
      "number": "994501234567",
      "provider": "meta",
      "status": "active",
      "meta_status": "connected",
      "verified_name": "ERAsoft"
    }
  }
}
Использование number_id

Ключ объекта в ответе, например 205, используется как number_id в запросах отправки сообщений.

POST

/send-message.json

Отправляет свободный текст или медиа в 24-часовом окне обслуживания, открытом после последнего сообщения клиента.

Поле Тип Описание
apikeystring

API-ключ, созданный в панели iSend.az.

number_idinteger

ID номера Meta, полученный из ответа numbers-list.json.

number_tostring

Номер получателя с кодом страны, 10–15 цифр, без знака +.

messagestring

Текст сообщения. Максимум 4096 символов.

media_urlstring

Публичный HTTPS-адрес изображения, видео или документа. Необязательно.

file_namestring

Имя файла, отображаемое для документа. Необязательно.

Пример текстового сообщения

cURL
curl -X POST https://api.isend.az/send-message.json \
  -H "Content-Type: application/json" \
  -d '{
    "apikey": "YOUR_API_KEY",
    "number_id": 205,
    "number_to": "994771234567",
    "message": "Salam, müraciətiniz qeydə alındı."
  }'

Пример медиа-сообщения

cURL
curl -X POST https://api.isend.az/send-message.json \
  -H "Content-Type: application/json" \
  -d '{
    "apikey": "YOUR_API_KEY",
    "number_id": 205,
    "number_to": "994771234567",
    "message": "Fayl əlavə olunur.",
    "media_url": "https://example.com/files/document.pdf",
    "file_name": "document.pdf"
  }'
24-часовое окно обслуживания

Если окно закрыто, свободное сообщение отклоняется с ошибкой META_FREE_TEXT_24H_WINDOW_ERROR. Используйте одобренный шаблон Meta.

Успешный ответ

JSON
{
  "success": true,
  "provider": "meta",
  "campaign_id": 102,
  "recipient_id": 5001,
  "message_id": 8001,
  "meta_message_id": "wamid.HBgL...",
  "status": "accepted",
  "message": "Your message was accepted by Meta."
}
POST

/send-bulk-message.json

Создаёт кампанию для одного или нескольких получателей с использованием одобренного шаблона Meta и добавляет её в очередь отправки.

Только одобренные шаблоны

template_name и template_language должны соответствовать шаблону, синхронизированному в iSend.az и одобренному Meta.

Поле Тип Описание
apikeystring

API-ключ, созданный в панели iSend.az.

number_idinteger

ID номера Meta, полученный из ответа numbers-list.json.

titlestring

Название кампании, отображаемое в iSend.az.

template_namestring

Имя шаблона Meta в нижнем регистре.

template_languagestring

Код языка шаблона Meta, например az, en_US или ru.

recipientsarray

Массив номеров получателей и индивидуальных переменных.

Пример переменных body и динамической URL-кнопки

cURL
curl -X POST https://api.isend.az/send-bulk-message.json \
  -H "Content-Type: application/json" \
  -d '{
    "apikey": "YOUR_API_KEY",
    "number_id": 205,
    "title": "Sifariş məlumatları",
    "template_name": "sifaris_melumati",
    "template_language": "az",
    "recipients": [
      {
        "number_to": "994771234567",
        "variables": {
          "{{1}}": "Elvin",
          "{{2}}": "TS-310111",
          "{{3}}": "Təsdiqləndi"
        },
        "button_values": {
          "0": "TS-310111"
        }
      }
    ]
  }'

Ответ кампании, добавленной в очередь

JSON
{
  "success": true,
  "provider": "meta",
  "campaign_id": 110,
  "queued_count": 1,
  "message": "Meta template campaign added to queue."
}
Соответствие переменных

variables, header_value и button_values должны точно соответствовать компонентам шаблона. При несоответствии возвращается ошибка с recipient_index.

POST

/campaign-data.json

Возвращает текущие статусы Meta, сведения об ошибках и время изменения статусов получателей кампании.

cURL
curl -X POST https://api.isend.az/campaign-data.json \
  -H "Content-Type: application/json" \
  -d '{
    "apikey": "YOUR_API_KEY",
    "campaign_id": 110
  }'
JSON
{
  "success": true,
  "data": {
    "5001": {
      "provider": "meta",
      "number_from": "994501234567",
      "number_to": "994771234567",
      "message": "Template preview",
      "meta_status": "delivered",
      "error_code": "",
      "error_message": "",
      "is_sent": 1,
      "sent_at": "2026-07-18 11:10:07",
      "delivered_at": "2026-07-18 11:10:10",
      "read_at": null,
      "failed_at": null,
      "created_at": "2026-07-18 11:10:05"
    }
  }
}

Статусы сообщений

После принятия сообщения статусы обновляются на основе webhook-событий Meta.

accepted

Запрос принят Meta, и создан ID сообщения.

sent

Сообщение отправлено Meta.

delivered

Сообщение доставлено на WhatsApp-устройство получателя.

read

Сообщение прочитано получателем.

failed

Сообщение не отправлено; проверьте error_code и error_message.

Коды ошибок

В ответах с ошибкой success имеет значение false, а системный код возвращается в поле error.

META_FREE_TEXT_24H_WINDOW_ERROR24-часовое окно обслуживания закрыто.
META_TEMPLATE_NOT_APPROVEDШаблон не найден или не одобрен Meta.
META_TEMPLATE_VARIABLES_INVALIDПеременные шаблона не соответствуют компонентам.
API_NOT_ALLOWEDВ тарифе пользователя не разрешён доступ к API.
MESSAGE_LIMIT_EXCEEDEDВ тарифе недостаточно доступного лимита сообщений.
JSON
{
  "success": false,
  "provider": "meta",
  "error": "META_TEMPLATE_VARIABLES_INVALID",
  "recipient_index": 0
}