Bot Talk API
Bot Talk API je REST API pro komunikaci s jedním konkrétním chatbotem z vaší vlastní aplikace - vlastních aplikací, interních nástrojů nebo automatizací, které si sami vytvoříte. Vytvoříte si klíč API na kartě bota API, a poté zavoláte koncový bod chatu s tímto klíčem jako tokenem Bearer, abyste získali odpovědi bota, a to buď jako jednorázovou odpověď, nebo streamovanou přes SSE.
Začínáme
- Vyberte svého chatbota a přejděte na záložku API v horní části stránky bota (Select Bot > API (Vybrat bota > API)).
- Klikněte na Create API Key (Vytvořit klíč API).
Počítadlo vedle tlačítka ukazuje, kolik klíčů je aktivních („1 of 5 API keys active“). Odkaz View API Documentation (Zobrazit dokumentaci API) otevře tuto referenční příručku a curl ukázka v části Quick Start (Rychlý start) vám poskytne příklad připravený k okamžitému spuštění.
- V dialogovém okně Create API Key (Vytvořit klíč API) klíč pojmenujte, volitelně nastavte povolené IP adresy (whitelist) a limit požadavků (rate limit), vyberte příslušná oprávnění a klikněte na Create (Vytvořit).
- Zkopírujte celý klíč z potvrzovacího dialogového okna. Nezašifrovaný text se zobrazí pouze jednou.
Klíč vypadá jako ck_abcdefghijklmnopqrstuvwxyz012345. Každý klíč patří pouze danému botovi, takže každý požadavek odeslaný s tímto klíčem komunikuje přímo s tímto botem - bot je identifikován klíčem a v URL se nikdy neobjevuje.
- Ze svého serveru spusťte níže uvedený curl příklad se svým klíčem a krátkou testovací zprávou. Uložte vrácené
conversationIda poté ho znovu použijte pro navazující zprávu. Odpověď a konverzaci si ověřte v záložce Chatlogs (Záznamy chatu) daného bota.
Klíče ck_ uchovávejte na svém serveru, nikoli v JavaScriptu na webu nebo v balíčcích mobilních aplikací. Oprávnění Conversations uděluje přístup k uloženým konverzacím tohoto bota napříč návštěvníky, takže vaše aplikace musí každého koncového uživatele před vrácením těchto dat autorizovat. Chcete-li klíč vyřadit, použijte na záložce API možnost Revoke (Odvolat) nebo Delete (Smazat); ani jedna akce znovu nezobrazí jeho nezašifrovaný text.
Než začnete, vytvořte a natrénujte svého chatbota a zkontrolujte, zda váš účet zahrnuje přístup k API a má kredity na zprávy.
Základní URL
https://api.chatlab.com/aichat
Všechny koncové body v tomto článku jsou relativní k této základní adrese URL.
Oprávnění klíče
Každý klíč má jedno nebo obě tato oprávnění, nastavená pomocí přepínačů v dialogovém okně Create API Key:
- Chat (send messages and receive responses) (odesílat zprávy a přijímat odpovědi) - povoluje koncové body
/v1/chata/v1/chat/stream. - Conversation history (list and read past conversations) (zobrazit seznam a číst minulé konverzace) - povoluje koncové body
/v1/conversations.
Na kartě API se udělená oprávnění každého klíče zobrazují jako štítky Chat a Conversations.
Ověření
Klíč odešlete v hlavičce Authorization při každém požadavku:
Authorization: Bearer ck_abcdefghijklmnopqrstuvwxyz012345
Požadavky bez hlavičky Authorization: Bearer ... vracejí 401 missing_api_key. Neznámé klíče vracejí 401 invalid_api_key; odvolané klíče vracejí 401 revoked_api_key. Pět neplatných pokusů za minutu ze stejné IP adresy spustí blokování na 60 minut.
Limity
- Maximálně 5 aktivních klíčů Bot Talk na jednoho bota
- Maximálně 60 požadavků za minutu na klíč (token bucket, kapacita 60, plynulé doplňování rychlostí 1 token za sekundu). Lze nakonfigurovat na nižší hodnotu při vytváření - nastavte nižší
rateLimitPerMinutea strop klesne, rychlost doplňování se tomu přizpůsobí. - Maximální délka zprávy je 4000 znaků
- Souběžné streamy SSE na jeden klíč podléhají limitům vašeho účtu
Koncové body (Endpoints)
POST /v1/chat
Odešlete botovi zprávu a získejte kompletní odpověď v jedné JSON odpovědi.
Tělo požadavku (Request body)
{
"message": "Hi, can you help me track my order?",
"conversationId": "550e8400-e29b-41d4-a716-446655440000",
"metadata": {"userEmail": "alice@example.com"}
}
message- povinný řetězec, max. 4000 znaků.conversationId- volitelné UUID. U nové konverzace vynechte; pro připojení k existující konverzaci znovu použijte hodnotu, kterou server vrátil dříve.metadata- volitelný objekt přijímající{source, userName, userEmail, userPhone}. V současnosti se zde používá pouzeuserEmailk odvození identifikátoru klienta; kanál se zaznamenává jako API. Nespoléhejte na to, že se ostatní pole metadat uloží do záznamu leadu.
Tělo odpovědi (200)
{
"message": {"role": "assistant", "content": "Sure, what's your order number?"},
"conversationId": "550e8400-e29b-41d4-a716-446655440000",
"model": "5.6-LUNA",
"usage": {"creditsUsed": 2},
"actions": []
}
message.roleje vždy"assistant";message.contentpředstavuje celou odpověď.modelje ID modelu, na kterém bot při tomto volání běžel.usage.creditsUsedv současnosti hlásí 2 plus jeden kredit za každé nahlášené volání nástroje pro dokončený krok (turn). Toto počítadlo v odpovědi nezahrnuje kreditové násobitele modelu/kontextu a nesmí sloužit jako vaše účetní kniha pro fakturaci. Pro spotřebu účtu využijte Využití účtu přes Management API a podívejte se na kredity za zprávy (message credits).actionsuvádí spuštění nástrojů, která proběhla během tohoto kroku. V současné době se odesílají pouze položkyfunction_call(s hodnotamitype,name,status: "completed").
POST /v1/chat/stream
Streamovací varianta koncového bodu /v1/chat. Vrací Content-Type: text/event-stream pomocí událostí Server-Sent Events (SSE).
Tělo požadavku
Stejná struktura jako u POST /v1/chat. Příznak stream v těle není vyžadován - použití této cesty samo o sobě aktivuje SSE.
Tělo odpovědi (SSE události)
message.reset- zahoďte text nashromážděný pro aktuální odpověď a začněte znovu shromažďovat přírůstky (delty). K tomu může dojít při restartování generování; připojení obou verzí by vedlo k duplicitní nebo překonané odpovědi.message.delta- fragment obsahu{ "content": "..." }. Těchto událostí přichází více postupně se streamováním tokenů.action- spuštění nástroje{ "type", "name", "status": "executing" }. Odesílá se ve chvíli, kdy bot vyvolá volání funkce.message.done- koncová událost obsahujícíconversationId,model,usagea (případně) dokončený seznamactions.error- odesílá se, pokud generování selže; stream se následně ukončí.
Během dlouhých generování se každých 15 sekund posílají keep-alive SSE komentáře (:keepalive). Časové limity na straně serveru: 30 sekund na první token, celkem 120 sekund na stream.
Příklad pro curl
curl -N -X POST https://api.chatlab.com/aichat/v1/chat/stream \
-H "Authorization: Bearer ck_..." \
-H "Content-Type: application/json" \
-d '{"message":"hello"}'
GET /v1/conversations
Zobrazí seznam konverzací bota přiřazeného k vašemu klíči napříč všemi zdroji (widget, WhatsApp, API atd.).
Parametry dotazu (Query parameters)
limit- 1-100, výchozí hodnota je 20. Hodnoty mimo tento rozsah se automaticky omezí na mezní hodnoty.cursor- neprůhledná hodnota (opaque value) vrácená vnextCursorna předchozí stránce. U první stránky parametr vynechte.
Tělo odpovědi (200)
{
"data": [
{
"conversationId": "550e8400-e29b-41d4-a716-446655440000",
"createdAt": "2026-05-10T14:11:02Z",
"lastMessageAt": "2026-05-10T14:12:34Z",
"messageCount": 6,
"lastMessagePreview": "Thanks for the help."
}
],
"hasMore": false,
"nextCursor": null
}
lastMessagePreviewje zkráceno na 100 znaků a doplněno příponou....nextCursormá na poslední stránce hodnotunull; pro načtení další stránky předejte tuto hodnotu jakocursor.
GET /v1/conversations/{conversation_id}
Uchovávané zprávy konverzace zpřístupněné tímto koncovým bodem.
Tělo odpovědi (200)
{
"conversationId": "550e8400-e29b-41d4-a716-446655440000",
"createdAt": "2026-05-10T14:11:02Z",
"lastMessageAt": "2026-05-10T14:12:34Z",
"messageCount": 6,
"messages": [
{"role": "user", "content": "Hi", "createdAt": "2026-05-10T14:11:02Z"},
{"role": "assistant", "content": "Hello! How can I help?", "createdAt": "2026-05-10T14:11:03Z"}
]
}
Vrací se pouze role user a assistant; interní zprávy typu system a zprávy nástrojů se odfiltrují. Pokud konverzace nepatří botovi přiřazenému k vašemu klíči, vrátí se 404 not_found_error.
Pro kontrolu konfigurace bota použijte koncový bod Management API GET /v1/management/bots/{bot_id} s klíčem Management API.
Hlavičky limitu frekvence požadavků
Odpovědi, které dosáhnou fáze ověřování limitu frekvence (tj. ověření totožnosti a seznam povolených IP adres proběhly úspěšně), obsahují:
X-RateLimit-Limit: 60
X-RateLimit-Remaining: 57
X-RateLimit-Reset: 1715430000
X-RateLimit-Limit- limit na klíč skutečně použitý pro toto volání (ve výchozím nastavení 60 nebo vámi nakonfigurovanýrateLimitPerMinute, pokud je nižší).X-RateLimit-Remaining- tokeny zbývající v zásobníku bezprostředně po tomto volání.X-RateLimit-Reset- sekundy Unix epochy, kdy bude k dispozici další token (nejedná se o úplné resetování zásobníku; zásobník se doplňuje průběžně). Pokud je zásobník plný, jedná se o aktuální čas.
U odpovědí 429 rate_limit_exceeded se nastavuje také Retry-After, vyjádřený v celých sekundách do uvolnění alespoň jednoho tokenu.
Chyby před ověřením (401 missing_api_key, 401 invalid_api_key, 403 ip_blocked) a 403 ip_not_whitelisted neobsahují hlavičky X-RateLimit-* - limiter se uplatňuje až po úspěšném ověření a kontrole IP adresy.
Formát chyb
Všechny chyby sdílejí jednotnou obálku:
{
"error": {
"type": "rate_limit_error",
"code": "rate_limit_exceeded",
"message": "Rate limit exceeded. Try again in 12 seconds.",
"param": null
}
}
Běžné HTTP kódy:
400 invalid_request_error- chybný vstup (invalid_parameter)415 invalid_request_error- nepodporovaný typ obsahu (unsupported_media_type)401 authentication_error- chybějící klíč (missing_api_key), neznámý klíč (invalid_api_key) nebo odvolaný klíč (revoked_api_key)402 quota_exceeded_error- vyčerpané kredity zpráv403 permission_error- zablokovaná IP adresa (ip_blocked), IP adresa není na whitelistu klíče (ip_not_whitelisted) nebo typ klíče tento koncový bod nepovoluje (key_type_not_allowed,insufficient_permissions)404 not_found_error- konverzace nepatří tomuto botovi405 invalid_request_error(method_not_allowed) - chybná HTTP metoda na dané URL429 rate_limit_error- příliš mnoho požadavků (rate_limit_exceeded) nebo příliš mnoho souběžných streamů (concurrent_streams_exceeded)500 api_error- interní chyba
Související
Operace na úrovni účtu (vytváření botů, aktualizace botů, získávání údajů o využití) naleznete v části Management API.