HTTP API для автоматизації

Пишіть клієнтам першими з будь-якої системи

API ClickUni приймає GET або POST запити, ставить повідомлення в чергу, повертає ідентифікатор і дозволяє перевіряти стан відправки.

api.php
POST /api.php
token={token}
phone=380661234567
message=Ваше замовлення прийнято
Основний запит

Відправка повідомлень

Усі повідомлення через API потрібно надсилати лише через HTTPS. Підтримуються запити типу GET та POST.

https://click-uni.com/api.php?token={token}&phone={phone}&message={message}
https://click-uni.com/api.php?token=5e75b6cc9528bbcbc2843da816968d1c&phone=0509395315&message=Привіт
tokenString, обов'язковий. Токен, який автоматично видається після реєстрації.
phoneString, обов'язковий. Номер телефону у форматі 380661234567 або 0661234567. Нецифрові символи ігноруються, для 10 цифр з 0 додається код країни 38.
messageString, обов'язковий. Текст повідомлення у форматі URL. Підтримуються %0A для переносу, %20 для пробілу і mes_separation для розділення на частини.
file_urlString, необов'язковий. URL файлу, зображення або документа, який буде прикріплено до повідомлення.
cURL
curl -X POST "https://click-uni.com/api.php" \
  -d "token=5e75b6cc9528bbcbc2843da816968d1c" \
  -d "phone=380661234567" \
  -d "message=Привіт%20світе!%0AЯк%20справи?" \
  -d "file_url=https://example.com/file.jpg"
JavaScript fetch
fetch("https://click-uni.com/api.php", {
  method: "POST",
  headers: { "Content-Type": "application/x-www-form-urlencoded" },
  body: new URLSearchParams({
    token: "5e75b6cc9528bbcbc2843da816968d1c",
    phone: "380661234567",
    message: "Привіт світе! Як справи?",
    file_url: "https://example.com/file.jpg"
  })
})
Відповідь для повідомлення, розділеного через mes_separation
<response>
  <status>success</status>
  <description>Усі частини повідомлення підготовлено до відправки</description>
  <messages>
    <item>
      <message_id>6e6bc4e49dd477ebc98ef4046c067b5f</message_id>
      <message>Частина 1</message>
    </item>
    <item>
      <message_id>b6d767d2f8ed5d21a44b0e5886680cb9</message_id>
      <message>Частина 2</message>
    </item>
  </messages>
</response>
XML для одного повідомлення
<response>
  <status>success</status>
  <description>Повідомлення підготовлено до відправки</description>
  <message_id>6e6bc4e49dd477ebc98ef4046c067b5f</message_id>
  <message>Привіт світе!</message>
</response>
Помилка
{
  "status": "error",
  "error": "Параметри token, phone або message відсутні або порожні"
}
Контроль доступу

Перевірка тарифу

Запит дозволяє перевірити активний тариф, залишок повідомлень і баланс користувача. Підтримуються запити типу GET та POST.

https://click-uni.com/api.php?type=tariff&token={token}
https://click-uni.com/api.php?type=tariff&token=5e75b6cc9528bbcbc2843da816968d1c
typeString, обов'язковий. Значення tariff для перевірки тарифу користувача.
tokenString, обов'язковий. Токен користувача, який видається після реєстрації.
cURL
curl -X POST "https://click-uni.com/api.php" \
  -d "type=tariff" \
  -d "token=5e75b6cc9528bbcbc2843da816968d1c"
JavaScript fetch
fetch("https://click-uni.com/api.php", {
  method: "POST",
  headers: { "Content-Type": "application/x-www-form-urlencoded" },
  body: new URLSearchParams({
    type: "tariff",
    token: "5e75b6cc9528bbcbc2843da816968d1c"
  })
})
Приклад відповіді
<response>
  <status>success</status>
  <description>Тариф користувача знайдено</description>
  <tariff>
    <name>Premium</name>
    <tariff_id>2</tariff_id>
    <date_start>2025-01-01</date_start>
    <date_end>31.12.2025</date_end>
    <days_left>83</days_left>
    <value_msg>1000</value_msg>
    <balance>500.00</balance>
  </tariff>
</response>
Помилка
<response>
  <status>error</status>
  <description>Користувача не знайдено по токену</description>
</response>
Статус доставки

Перевірка стану повідомлення

Після відправки API повертає message_id. За ним можна перевірити поточний стан повідомлення. Підтримуються запити типу GET та POST.

https://click-uni.com/api.php?type=check&token={token}&message_id={message_id}
https://click-uni.com/api.php?type=check&token=5e75b6cc9528bbcbc2843da816968d1c&message_id=6e6bc4e49dd477ebc98ef4046c067b5f
typeString, обов'язковий. Значення check для перевірки статусу повідомлення.
tokenString, обов'язковий. Токен користувача, який видається після реєстрації.
message_idString, обов'язковий. Ідентифікатор повідомлення, який повертається при відправці.
cURL
curl -X POST "https://click-uni.com/api.php" \
  -d "type=check" \
  -d "token=5e75b6cc9528bbcbc2843da816968d1c" \
  -d "message_id=6e6bc4e49dd477ebc98ef4046c067b5f"
JavaScript fetch
fetch("https://click-uni.com/api.php", {
  method: "POST",
  headers: { "Content-Type": "application/x-www-form-urlencoded" },
  body: new URLSearchParams({
    type: "check",
    token: "5e75b6cc9528bbcbc2843da816968d1c",
    message_id: "6e6bc4e49dd477ebc98ef4046c067b5f"
  })
})
Приклад відповіді
<response>
  <status>success</status>
  <description>Повідомлення знайдено</description>
  <message_id>6e6bc4e49dd477ebc98ef4046c067b5f</message_id>
  <status_id>2</status_id>
  <status_name>Доставлено</status_name>
  <phone>******1234</phone>
</response>
Помилка
<response>
  <status>error</status>
  <description>Параметр message_id відсутній</description>
</response>
Вхідні та вихідні

Переписка по телефонах

Запит приймає масив телефонів і повертає діалоги (вхідні та вихідні повідомлення) по всіх каналах — Viber та Telegram, класичні месенджери через ClickUni, онлайн-чат, маркетплейси, соцмережі — а також вихідні SMS. Метод POST, тіло у форматі JSON. Відповідь у форматі JSON.

POST https://click-uni.com/api.php?type=dialogs
typeString, обов'язковий. Значення dialogs для отримання переписки по телефонах.
tokenString, обов'язковий. Токен, який автоматично видається після реєстрації.
phonesArray, обов'язковий для режиму списку. Масив телефонів у форматі 380661234567 або 0661234567.
limitNumber, необов'язковий. Скільки останніх повідомлень віддавати на діалог (за замовчуванням 10, максимум 100).
sourceString, для лінивої догрузки одного діалогу. Канал діалогу (наприклад viber_bot, telegram_bot, clicuni, online_chat).
conversation_idString, для лінивої догрузки одного діалогу. Ідентифікатор діалогу з відповіді.
offsetNumber, для лінивої догрузки. 1 — найновіші повідомлення (за замовчуванням), 2 — попередня «сторінка» старіших, і так далі.
cURL — список діалогів по телефонах
curl -X POST "https://click-uni.com/api.php?type=dialogs" \
  -H "Content-Type: application/json" \
  -d '{"token":"5e75b6cc9528bbcbc2843da816968d1c",
       "phones":["0661234567","0501234567"],
       "limit":10}'
cURL — догрузка старіших повідомлень діалогу
curl -X POST "https://click-uni.com/api.php?type=dialogs" \
  -H "Content-Type: application/json" \
  -d '{"token":"5e75b6cc9528bbcbc2843da816968d1c",
       "source":"viber_bot","conversation_id":"243234",
       "offset":2,"limit":10}'
Приклад відповіді
{
  "status": "success",
  "dialogs": {
    "380661234567": {
      "viber_bot:243234": {
        "channel": "viber_bot",
        "source": "viber_bot",
        "conversation_id": "243234",
        "messages": [
          {
            "message_id": "1027",
            "direction": "in",
            "text": "Доброго дня!",
            "file_url": "",
            "status": "new",
            "created_at": "2026-07-18 12:00:00"
          },
          {
            "message_id": "1031",
            "direction": "out",
            "text": "Вітаємо! Чим допомогти?",
            "file_url": "",
            "status": "sent",
            "created_at": "2026-07-18 12:01:10"
          }
        ],
        "has_more": true,
        "next_offset": 2
      },
      "clicuni:cl|380661234567": {
        "channel": "sms",
        "source": "clicuni",
        "conversation_id": "cl|380661234567",
        "messages": [ ... ],
        "has_more": false,
        "next_offset": null
      }
    },
    "380501234567": {}
  }
}
Поля повідомлення
direction  — "in" (вхідне) або "out" (вихідне)
message_id — ідентифікатор повідомлення в діалозі
text       — текст повідомлення
file_url   — вкладення, якщо є
status     — статус повідомлення (за наявності)
created_at — дата й час
Помилка
{
  "status": "error",
  "description": "Користувача не знайдено по токену"
}

Для номера без діалогів повертається порожній об'єкт. Пагінація діалогу — «лінива»: спочатку останні limit повідомлень, далі за next_offset підвантажуються старіші.