Спасылка на API

Інтэграваць enuchat у вашы сістэмы з дапамогай Tenant API. Кіруйце размовамі, адпраўляйце паведамленні і атрымлівайце даныя аб аплаце праграмна.

Аўтэнтыфікацыя

Усе API-запыты аўтэнтыфікуюцца з выкарыстаннем API-ключа, адпраўленага ў загалоўку X-Api-Key.

Атрыманне вашага API-ключа

  1. Перайдзіце ў Налады → API-ключы у вашай панэлі
  2. Націсніце Стварыць API-ключ і дайце яму імя
  3. Скапіруйце ключ неадкладна — ён паказваецца толькі адзін раз
  4. Захоўвайце яго бяспечна (зменная асяроддзя, менеджэр сакрэтаў)

Выкананне запытаў

Уключыце ключ у кожны запыт:

curl -H "X-Api-Key: tak_your_key_here" \
     https://api.enuchat.com/api/v1/tenant-api/widgets

Усе адказы — JSON. Паспяховыя адказы маюць поле data. Памылкі маюць поле error з code і message.

Бяспека: API-ключы хэшуюцца (SHA-256) у нашай базе даных. Мы ніколі не захоўваем сыры ключ. Стаўцеся да вашага ключа як да пароля — не камітуйце яго ў код і не дзяліцеся ім публічна.

Базавы URL

https://api.enuchat.com/api/v1/tenant-api

Усе endpointы ніжэй адносныя да гэтага базавага URL.

Endpointы

GET /widgets

Спіс усіх віджэтаў для вашага акаўнта.

Адказ

{'{'}
  "data": [
{'{'}
      "id": "019d19c6-7e0b-...",
      "name": "Main Website Chat",
      "isActive": true,
      "aiEnabled": true,
      "translationEnabled": true,
      "primaryColor": "#2563eb",
      "position": "bottom-right"
    }
  ]
}

GET /conversations

Спіс размоў, упарадкаваных па самым нядаўнім паведамленні.

Параметры запыту

ПараметрТыпАпісанне
statusstringФільтр па статусе: open, pending, closed
widgetIdstringФільтр па UUID віджэта
limitintegerМакс. вынікі (па змаўчанні 20, макс. 100)
offsetintegerПрапусціць N вынікаў

Прыклад

curl -H "X-Api-Key: tak_..." \
     "https://api.enuchat.com/api/v1/tenant-api/conversations?status=open&limit=10"

Адказ

{'{'}
  "data": [
{'{'}
      "id": "019d6724-000e-...",
      "widgetId": "019d19c6-7e0b-...",
      "visitorId": "v-abc123",
      "visitorName": "John",
      "visitorEmail": "john{'@'}example.com",
      "visitorLanguage": "en",
      "status": "open",
      "assignedTo": null,
      "lastMessageAt": "2026-04-11T14:30:00+00:00",
      "startedAt": "2026-04-11T14:25:00+00:00"
    }
  ]
}

GET /conversations/{'{'}id}

Атрымаць размову з усімі паведамленнямі.

Параметры запыту

ПараметрТыпАпісанне
limitintegerМакс. паведамленні (па змаўчанні 50, макс. 200)

Адказ

{'{'}
  "data": {'{'}
    "id": "019d6724-000e-...",
    "visitorLanguage": "en",
    "status": "open",
    "messages": [
{'{'}
        "id": "019d6724-1234-...",
        "role": "visitor",
        "content": "Hello, how much does it cost?",
        "contentLanguage": "en",
        "translatedContent": "Cześć, ile to kosztuje?",
        "translatedLanguage": "pl",
        "isAutoReply": false,
        "createdAt": "2026-04-11T14:25:30+00:00"
      },
{'{'}
        "id": "019d6724-5678-...",
        "role": "ai",
        "content": "Our plans start at €19/month...",
        "isAutoReply": true,
        "createdAt": "2026-04-11T14:25:32+00:00"
      }
    ]
  }
}

POST /conversations/{'{'}id}/messages

Адправіць паведамленне ў размову. Паведамленне будзе дастаўлена наведвальніку ў рэжыме рэальнага часу праз чат-віджэт.

Цела запыту

{'{'}
  "content": "Thanks for reaching out! We'll process your request.",
  "role": "system"
}
ПолеТыпАпісанне
contentstringАбавязкова. Тэкст паведамлення.
rolestringsystem (па змаўчанні) або operator

Адказ (201 Created)

{'{'}
  "data": {'{'}
    "id": "019d6725-abcd-...",
    "role": "system",
    "content": "Thanks for reaching out!",
    "createdAt": "2026-04-11T14:35:00+00:00"
  }
}

PATCH /conversations/{'{'}id}

Абнавіць статус або прызначэнне размовы.

Цела запыту

{'{'}
  "status": "closed"
}
ПолеТыпАпісанне
statusstringopen, pending або closed
assignedTostring|nullUUID аператара для прызначэння або null для скасавання

GET /billing/balance

Атрымаць ваш бягучы план і баланс крэдытаў.

Адказ

{'{'}
  "data": {'{'}
    "plan": "pro",
    "creditBalance": 4500000,
    "totalCreditsAdded": 10000000
  }
}

Апрацоўка памылак

Памылкі вяртаюць не-2xx код стану з целам JSON:

{'{'}
  "error": {'{'}
    "code": "NOT_FOUND",
    "message": "Conversation not found."
  }
}
HTTP-статусЗначэнне
401Несапраўдны, скончаны або адсутны API-ключ
400Несапраўднае цела запыту або параметры
404Рэсурс не знойдзены (або належыць іншаму tenant)
500Памылка сервера

Звычайныя выпадкі выкарыстання

Інтэграцыя CRM

Запытвайце новыя размовы і сінхранізуйце даныя наведвальніка (імя, email, мова) з вашай CRM. Выкарыстоўвайце ID размовы як знешні ідэнтыфікатар.

Аўтаматызаваныя наступныя дзеянні

Пасля закрыцця размовы адпраўце наступнае паведамленне праз API: "Дзякуй за размову! Ці ёсць яшчэ нешта, з чым мы можам дапамагчы?"

Альтэрнатыва вэбхукам

Пакуль выходныя вэбхукі не даступныя, перыядычна апытвайце endpoint размоў, каб выявіць новыя паведамленні або змены статусу.

Аперацыі ў масавым парадку

Закрывайце ўсе размовы старэйшыя за 7 дзён, прызначайце размовы аператарам на аснове знешняй логікі або экспартуйце гісторыю размоў для аналітыкі.

Абмежаванні хуткасці

API дазваляе да 60 запытаў у хвіліну на API-ключ. Калі вы перавышаеце гэты ліміт, вы атрымаеце адказ 429 Too Many Requests. Пачакайце і паўтарыце з экспанентным backoff.

Гатовыя інтэгравацца?

Стварыце ваш бясплатны акаўнт і згенеруйце API-ключ за лічаныя хвіліны.

Пачаць бясплатна