Помилки й ліміти API
Для розробників, у коді: кожен статус і код помилки обох API, ліміти сплеску і місячна квота, як виглядає м'яке блокування і стелі за тарифами.
Статуси рантайму
| Статус | Де | Сенс |
|---|---|---|
400 |
/tts, /conversation |
/tts: режим розмови у віджета вимкнений; /conversation: недійсний або прострочений токен |
401 |
ендпоінти з автентифікацією в заголовку | ключа немає або такого не існує |
403 |
ті самі, і /conversation |
ключ неактивний або origin не в списку ключа; вимкнений віджет на /message; токен передачі іншого ключа |
404 |
/message, /widget/config, /tts, /conversation |
невідомий помічник, код віджета чи розмова; на /widget/config і /tts — ще й вимкнений віджет |
409 |
/message, /conversation |
у віджета немає помічника; токен передачі вже використаний |
422 |
усюди | валідація тіла (detail — список pydantic); на /handoff — "unrecognised_contact"; на /tts — немає голосу для мови |
429 |
/message, /tts, /handoff |
ліміт сплеску; кредит не витрачається |
502 |
/tts |
провайдер мовлення не відповів |
503 |
/message |
модель не відповіла; спробуйте знову |
204 |
/followed, /handoff/opened |
завжди — маячок нічого не розкриває |
Коди помилок сокета — у WebSocket і Мовленні й розпізнаванні.
Статуси керування
| Статус | Сенс |
|---|---|
403 {"detail": …} |
будь-яка невдала автентифікація (401 не буває), обмеження тарифу або ліміт тарифу — detail каже, що саме |
404 |
чужий рядок — для вас він не існує |
400 |
валідація; тіло називає поле |
409 |
видалення помічника, якого ще використовує віджет |
202 |
асинхронну задачу поставлено в чергу (імпорт, провізіонування, пакетна обробка) |
Ліміти сплеску
Фіксовані вікна за хвилину, рахуються на весь акаунт і, де таблиця так каже, ще й на кожного
відвідувача — відвідувач це одна адреса на одному сайті. Понад ліміт: 429 або кадр помилки
rate_limited на сокеті; кредит не витрачається, хід не виконується.
| Відро | За хвилину |
|---|---|
чат (/message, повідомлення /ws) |
30 до тарифу · 60 Starter · 180 Growth · 360 Pro · 900 Business; 20 на відвідувача |
мовлення (/tts) |
120; 60 на відвідувача |
потоки розпізнавання (/ws/stt) |
60; 20 на відвідувача |
передача (/handoff, /handoff/opened) |
30 |
| маячок переходу | 120 |
| кадри голосових таймінгів | 120 |
| перевірка інструмента (панель) | 30 |
| аналіз при онбордингу (панель) | 20 |
У відвідувача є ще й доба: 300 ходів чату, 300 потоків розпізнавання і 30 000 символів мовлення.
Після цього хід чату отримує 429 або rate_limited, як за будь-якого сплеску, а /tts відповідає
429 з Speech limit reached for today.
Мовлення й розпізнавання самі кредитів не списують, тож акаунт заробляє їх своїми відповідями: кожна
відповідь додає до бюджету цього дня 2 500 символів мовлення і 6 потоків розпізнавання, понад
20 000 символів і 200 потоків на добу для того, за що жодна відповідь не платить, — привітання
голосом, Shukai.speak, диктування, яке так і не надіслали. Після цього /tts відповідає 429 з
Speech limit reached for today, а /ws/stt надсилає rate_limited. Речення, повторене з кешу
аудіо, нічого не коштує і ніколи не відхиляється.
Місячна квота і м’яке блокування
Кожен хід із відповіддю коштує кредити за моделлю плюс голосову надбавку, якщо озвучено (Кредити й моделі). Ліміт поновлюється в день підписки; докуплені кредити переносяться і витрачаються після нього. На стелі:
- виклик
/messageусе одно повертає200з локалізованим повідомленням про ліміт якanswerі порожніми списками; - хід на сокеті отримує
limit_reachedпісляstartзамість відповіді; GET /widget/configвіддаєactive: falseз наступного завантаження, тож віджет нічого не монтує;- власник отримує листи на 80 % і 100 %.
До активації тарифу в акаунта свій обсяг: 50 кредитів на добу і 300 на місяць, 20 000 символів мовлення і 100 потоків розпізнавання на добу. Після нього хід отримує відповідь, як на місячній стелі, — повідомлення, що пробний обсяг вичерпано, — і лист не надсилається.
Власний фронтенд має трактувати limit_reached і active: false як «помічник відсутній», а не
як помилку.
Стелі за тарифами
| Starter | Growth | Pro | Business | |
|---|---|---|---|---|
| кредитів / місяць | 3 000 | 7 000 | 18 000 | 52 000 |
| сайтів (один до вибору плану) | 1 | 3 | 10 | 25 |
| сторінок (джерел), разом на всіх ваших сайтах | 500 | 2 000 | 5 000 | 10 000 |
| історія розмов | 30 днів | 90 | 180 | 365 |
| сплеск чату / хв | 20 | 60 | 120 | 300 |
| власні інструменти, події, дії на сторінці, проактивність, доставка | — | ✓ | ✓ | ✓ |
| глобальних інструментів / подій | 0 | 6 | 8 | 11 |
| екранних інструментів / подій | 0 | 50 | 150 | 500 |
Створення сайту понад кількість сайтів у плані і створення джерела понад стелю сторінок — це
403, чий detail називає стелю; створення інструмента чи події понад
стелю — 400 на scope; обидва оцінюються за підсумковою кількістю, тож при переході вниз ніщо
збережене не втрачається — воно позначається «не у вашому тарифі» і перестає обслуговуватися.
Стелі за хід
| Стеля | Значення |
|---|---|
| викликів власних інструментів за хід | 3 |
| таймаут · відповідь · одночасність · кеш інструмента | 10 с · 256 KB · 8 · 600 с |
| прив’язаних інструментів і подій за хід | 12 інструментів і 12 подій серед прив’язаних до екрана, за назвою; решта відкидається лише з записом у журналі сервера |
| обмінів дій на сторінці · кроків на виклик · таймаут моста · попереднє зчитування | 40 · 40 · 5 с · 1,5 с |
| пошуків у базі знань на повідомлення | 3 |
| голосова відповідь | щонайбільше 1 200 токенів виводу; 1 200 символів на речення /tts |
| токен передачі розмови | 90 с, одноразовий |