Если вы работали с Meta WhatsApp Cloud API, вы уже знакомы с нашим API. Тот же путь, тот же JSON, та же авторизация Bearer.
01Быстрый старт
Три вещи, и ваше первое сообщение отправлено: базовый URL, ключ устройства и эндпоинт сообщений.
Base URL
https://api.smartsybox.com
Authentication
Authorization: Bearer <YOUR_DEVICE_KEY>
Content type
application/json
Эндпоинт
POST
/v26.0/{phone-number-id}/messages
Сегмент версии принимается в любой форме v — используйте ваш текущий код.
02Отправка первого сообщения
Обычное текстовое сообщение. Тело представляет собой стандартный payload Cloud API.
cURL
curl -X POST https://api.smartsybox.com/v26.0/PHONE_NUMBER_ID/messages \
-H "Authorization: Bearer YOUR_DEVICE_KEY" \
-H "Content-Type: application/json" \
-d '{
"messaging_product": "whatsapp",
"to": "15551234567",
"type": "text",
"text": { "body": "Hello from SyBox 👋" }
}'
C# · HttpClient
using System.Net.Http;
using System.Net.Http.Headers;
using System.Text;
var http = new HttpClient();
http.DefaultRequestHeaders.Authorization =
new AuthenticationHeaderValue("Bearer", "YOUR_DEVICE_KEY");
string json = @"{
""messaging_product"": ""whatsapp"",
""to"": ""15551234567"",
""type"": ""text"",
""text"": { ""body"": ""Hello from SyBox"" }
}";
var res = await http.PostAsync(
"https://api.smartsybox.com/v26.0/PHONE_NUMBER_ID/messages",
new StringContent(json, Encoding.UTF8, "application/json"));
Console.WriteLine(await res.Content.ReadAsStringAsync());
Ответ
Вы получаете ровно то, что возвращает Meta, с тем же статусом HTTP.
200 OK · application/json
{
"messaging_product": "whatsapp",
"contacts": [{ "input": "15551234567", "wa_id": "15551234567" }],
"messages": [{ "id": "wamid.HBgLMTU1NTEyMzQ1NjcVAgARGBI…" }]
}
04Отображение ваших данных рядом с чатом
Когда оператор открывает чат, SyBox вызывает ВАШ эндпоинт и показывает полученные данные прямо рядом с чатом.
Request · SyBox → your endpoint
POST YOUR_ERP_URL
Authorization: Bearer YOUR_ERP_KEY
X-Sybox-Action: lookup
# body: { "data": "<json string>" } — the decoded "data":
{
"phone": "15551234567",
"email": "customer@example.com",
"ref": ""
}
Your reply · application/json
{
"renderAs": "table",
"content": [
{ "Order": "#10432", "Status": "Shipped", "Total": "1,250 MAD" }
]
}
renderAs
Укажите renderAs, чтобы сообщить SyBox, как отобразить ваш контент:
table
Rows & columns. content = an array of flat objects (or { rows: [ … ] }). Object keys become the column headers.
cards · kpi
Compact tiles (a balance, an order count). content = an array of { label, value } (or { cards: [ … ] }).
feed · list · thread
A timeline of rich cards. content = an array of { title, text, date, tags, media:[{ type, url, name }] }.
message
A single message-style card (one record laid out as a note).
html
Your own trusted HTML — content = a string. Use only for markup you generate yourself.
sections
Several blocks at once: content = { sections: [ { title, renderAs, content } ] } — mix a table + cards + a feed in one reply.
json
The default when renderAs is omitted — SyBox pretty-prints your content as-is.
Добавьте sybox_ref к любой строке таблицы, чтобы сделать ее кликабельной.
Мы передаем телефон и e-mail — ответьте структурой { renderAs, content }.
05Открытие заявки из вашей системы
Маршрут для ERP или учетных систем для открытия единого тикета в CRM.
cURL
curl -X POST "https://api.smartsybox.com/v1/case" \
-H "Authorization: Bearer $SYBOX_CASE_KEY" \
-H "Content-Type: application/json" \
-d '{
"customer_unique_id": "CUST-10432",
"header": "Screen replacement not delivered",
"description": "Paid on 12 Aug, promised in 3 days, still nothing.",
"ext_ref": "TICKET-99817"
}'
Поля
customer_unique_id
Ваш собственный ID клиента.
header / description
Обязательно хотя бы одно поле. Заголовок виден операторам в списке.
ext_ref
Номер вашего тикета.
Клиент уже должен существовать в системе.
Используйте ключ типа 'case'.