Контракт API: POST /api/chat

Изменено Пн, 17 Авг на 11:06 PM

Авторизация: заголовок Authorization: Bearer <партнёрский ключ>. У sandbox и production разные ключи и базовые URL (выдаются при онбординге).

Один вызов на ход диалога, синхронно с ответом ассистента. Тело ≤ 256 КБ — передавайте последние ~8–12 ходов, а не всю историю.

Запрос


{
  "messages": [ {"role":"user","content":"нужен рюкзак для ноутбука"} ],
  "geo": "MY",
  "session_id": "abc123",
  "lang": "ru"
}
  • messages[] — обязательно; история диалога, роли user / assistant.
  • geo — обязательно; страна пользователя, ISO-3166 alpha-2 (MY, ID, BR…). От неё зависят инвентарь и ставки.
  • session_id — опционально; стабильный на сессию пользователя, для честных лимитов и антифрода.
  • lang — опционально; подсказка о языке интерфейса.
  • Опциональный заголовок X-Forwarded-For с IP конечного пользователя для лимитов на пользователя. PII не требуется.

Ответ 200


{
  "reply": "…текст ассистента, показывать всегда…",
  "ad": {
    "type": "product",
    "title": "…", "desc": "…", "price": "MYR 129",
    "image": "https://cdn…/p.jpg",
    "sponsored": true,
    "click_url": "https://api.indoleads.ai/c/<token>"
  },
  "intent": { "show_ad": true, "confidence": 0.72, "category": "…" }
}
  • reply — рендерить всегда.
  • ad — объект или null (нет коммерческого интента). type: product | offer | coupon (есть code) | banner. Рисуйте title, desc, price, image; ссылка на click_url с rel="sponsored noopener" target="_blank" и видимой меткой Sponsored. Никогда не переписывайте и не оборачивайте click_url.
  • intent — для вашей аналитики.

Коды ответа

КодЗначениеЧто делать
200ok (ad может быть null)показать reply; если есть ad — карточку
400нет messages[] / битый JSONисправить запрос
401 / 403неверный или отсутствующий ключпроверить Authorization
429превышен лимитне повторять; показать ответ без карточки
5xxвнутренняя ошибка1 повтор с backoff, затем fail-soft

Задержка: определяется LLM — 0,8–3 с, редко 5–8 с. Таймаут клиента ≥ 10 с. При ошибке/таймауте/ad:null показывайте ответ без карточки — реклама никогда не должна ломать чат.

Статья помогла?

Отлично!

Спасибо за ваш отзыв

Извините, что не удалось помочь!

Спасибо за ваш отзыв

Расскажите, как мы можем улучшить эту статью!

Выберите хотя бы одну причину
Требуется проверка CAPTCHA.

Комментарий отправлен

Мы ценим вашу помощь и постараемся исправить статью