Bot Talk API
Bot Talk API yra REST API, skirtas bendrauti su konkrečiu pokalbių robotu tiesiai iš Jūsų programos - individualių sistemų, vidinių įrankių ar Jūsų sukurtų automatizacijų. Sukuriate API raktą roboto skirtuke API, tada iškviečiate pokalbio galinį tašką (angl. endpoint) naudodami raktą kaip Bearer prieigos raktą, kad gautumėte roboto atsakymus kaip vieną atsaką arba srautu per SSE.
Darbo pradžia
- Pasirinkite savo pokalbių robotą ir eikite į skirtuką API roboto puslapio viršuje (Select Bot > API (Pasirinkti robotą > API)).
- Spustelėkite Create API Key (Sukurti API raktą).
Šalia mygtuko esantis skaitiklis rodo, kiek raktų yra aktyvūs („1 of 5 API keys active“). Nuoroda View API Documentation (Peržiūrėti API dokumentaciją) atidaro šį žinyną, o Quick Start (Greita pradžia) curl fragmentas pateikia paruoštą paleisti pavyzdį.
- Lange Create API Key suteikite raktui pavadinimą, pasirinktinai nustatykite leidžiamų IP adresų sąrašą (angl. IP whitelist) ir užklausų limitą (angl. rate limit), pasirinkite jam suteikiamas teises ir spustelėkite Create (Sukurti).
- Nukopijuokite visą raktą iš sėkmės lango. Paprastu tekstu raktas rodomas tik vieną kartą.
Raktas atrodo taip: ck_abcdefghijklmnopqrstuvwxyz012345. Kiekvienas raktas priklauso konkrečiam robotui, todėl kiekviena užklausa, atlikta su šiuo raktu, komunikuoja su tuo robotu - robotas identifikuojamas pagal raktą ir URL adrese niekada nepateikiamas.
Bazinis URL
https://api.chatlab.com/aichat
Visi šiame straipsnyje nurodyti galiniai taškai yra santykiniai šio bazinio URL atžvilgiu.
Rakto teisės
Kiekvienas raktas turi vieną arba abi šias teises, kurios nustatomos perjungikliais langelyje Create API Key:
- Chat (send messages and receive responses) (Pokalbiai (siųsti žinutes ir gauti atsakymus)) - suteikia prieigą prie
/v1/chatir/v1/chat/streamgalinių taškų. - Conversation history (list and read past conversations) (Pokalbių istorija (peržiūrėti sąrašą ir skaityti buvusius pokalbius)) - suteikia prieigą prie
/v1/conversationsgalinių taškų.
Skirtuke API kiekvienam raktui suteiktos teisės rodomos kaip ženkliukai Chat ir Conversations.
Autentifikavimas
Kiekvienoje užklausoje pateikite raktą Authorization antraštėje:
Authorization: Bearer ck_abcdefghijklmnopqrstuvwxyz012345
Užklausos be Authorization: Bearer ... antraštės grąžina 401 missing_api_key. Nežinomi raktai grąžina 401 invalid_api_key; anuliuoti raktai grąžina 401 revoked_api_key. Penki neteisingi bandymai per minutę iš to paties IP adreso sukelia 60 minučių blokavimą.
Limitai
- Ne daugiau kaip 5 aktyvūs Bot Talk raktai vienam robotui
- Ne daugiau kaip 60 užklausų per minutę vienam raktui (angl. token bucket algoritmas, talpa 60, tolygus papildymas po 1 žetoną per sekundę). Kurdami galite nustatyti mažesnę reikšmę - nustačius mažesnį
rateLimitPerMinute, viršutinė riba sumažėja, o papildymo greitis proporcingai perskaičiuojamas. - Maksimalus žinutės ilgis - 4000 simbolių
- Lygiagrečių SSE srautų skaičius vienam raktui priklauso nuo Jūsų paskyros limitų
Galiniai taškai
POST /v1/chat
Išsiunčia žinutę robotui ir gauna pilną atsakymą viename JSON atsake.
Užklausos turinys (angl. request body)
{
"message": "Hi, can you help me track my order?",
"conversationId": "550e8400-e29b-41d4-a716-446655440000",
"metadata": {"userEmail": "alice@example.com"}
}
message- privaloma eilutė, daugiausia 4000 simbolių.conversationId- neprivalomas UUID. Praleiskite naujam pokalbiui; pakartotinai naudokite serverio anksčiau grąžintą reikšmę, jei norite tęsti esamą.metadata- neprivalomas objektas:{source, userName, userEmail, userPhone}.userEmailtaip pat naudojamas vidiniam kliento ID išvesti.
Atsako turinys (200)
{
"message": {"role": "assistant", "content": "Sure, what's your order number?"},
"conversationId": "550e8400-e29b-41d4-a716-446655440000",
"model": "gpt-4o-mini",
"usage": {"creditsUsed": 2},
"actions": []
}
message.rolevisada yra"assistant";message.contentyra pilnas atsakymas.modelyra modelio identifikatorius, su kuriuo robotas apdorojo šį iškvietimą.usage.creditsUsedapima vartotojo žinutę + roboto atsakymą (paprastai 2), taip pat po vieną papildomą kreditą už kiekvieną įvykdytą įrankio iškvietimą.actionspateikia įrankių vykdymus, atliktus šio kreipimosi metu. Šiuo metu grąžinami tikfunction_callįrašai (sutype,name,status: "completed").
POST /v1/chat/stream
Srautinis /v1/chat variantas. Grąžina Content-Type: text/event-stream su Server-Sent Events (SSE).
Užklausos turinys
Tokia pati struktūra kaip ir POST /v1/chat. Parametras stream užklausos turinyje nėra būtinas - būtent šio kelio naudojimas suaktyvina SSE.
Atsako turinys (SSE įvykiai)
message.delta- turinio fragmentas{ "content": "..." }. Gaunant žetonus, perduodami keli tokie fragmentai.action- įrankio vykdymas{ "type", "name", "status": "executing" }. Siunčiamas, kai robotas inicijuoja funkcijos iškvietimą.message.done- galutinis įvykis suconversationId,model,usageir (jei yra) įvykdytųactionssąrašu.error- siunčiamas nepavykus generavimui; po to srautas nutraukiamas.
Ilgų generavimų metu kas 15 sekundžių siunčiami ryšio palaikymo SSE komentarai (:keepalive). Serverio skirtieji laikai (angl. timeouts): 30 sekundžių pirmajam žetonui, iš viso 120 sekundžių vienam srautui.
Curl pavyzdys
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
Pateikia su Jūsų raktu susieto roboto pokalbių sąrašą iš visų šaltinių (valdiklio, WhatsApp, API ir kt.).
Užklausos parametrai (angl. query parameters)
limit- 1-100, numatytoji reikšmė 20. Reikšmės už šio rėžio ribų yra automatiškai pakoreguojamos.cursor- nepermatoma reikšmė, grąžintanextCursorlauke ankstesniame puslapyje. Praleiskite pirmajam puslapiui.
Atsako turinys (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
}
lastMessagePreviewsutrumpinama iki 100 simbolių su galūne....nextCursorpaskutiniame puslapyje yranull; perduokite jį kaipcursor, kad gautumėte kitą puslapį.
GET /v1/conversations/{conversation_id}
Visa pokalbio istorija.
Atsako turinys (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"}
]
}
Grąžinami tik user ir assistant vaidmenys; vidinės system ir įrankių žinutės yra išfiltruojamos. Grąžina 404 not_found_error, jei pokalbis nepriklauso robotui, susietam su Jūsų raktu.
Norėdami peržiūrėti roboto konfigūraciją, naudokite Management API galinį tašką GET /v1/management/bots/{bot_id} su Management raktu.
Užklausų ribojimo antraštės
Atsakuose, kurie pasiekia užklausų ribojimo etapą (t. y. autentifikavimas ir IP leidžiamųjų sąrašas sėkmingai praeiti), pateikiama:
X-RateLimit-Limit: 60
X-RateLimit-Remaining: 57
X-RateLimit-Reset: 1715430000
X-RateLimit-Limit- šiam iškvietimui faktiškai pritaikyta rakto riba (numatytoji - 60 arba Jūsų sukonfigūruotasrateLimitPerMinute, jei jis mažesnis).X-RateLimit-Remaining- žetonų likutis krepšelyje iškart po šio iškvietimo.X-RateLimit-Reset- Unix epochos sekundės, kada bus pasiekiamas kitas žetonas (tai nėra pilnas krepšelio atstatymas; krepšelis pildomas nuolatos). Kai krepšelis pilnas, tai yra dabartinis laikas.
429 rate_limit_exceeded atsakuose taip pat nustatoma Retry-After antraštė, išreikšta sveikomis sekundėmis, kol atsilaisvins bent vienas žetonas.
Iki autentifikavimo įvykusios klaidos (401 missing_api_key, 401 invalid_api_key, 403 ip_blocked) ir 403 ip_not_whitelisted neturi X-RateLimit-* antraščių - ribotuvas tikrinamas tik sėkmingai atlikus autentifikavimą ir IP patikras.
Klaidų formatas
Visos klaidos pateikiamos bendru formatu:
{
"error": {
"type": "rate_limit_error",
"code": "rate_limit_exceeded",
"message": "Rate limit exceeded. Try again in 12 seconds.",
"param": null
}
}
Dažni HTTP kodai:
400 invalid_request_error- netinkamai suformuota įvestis (kodai:invalid_parameter,unsupported_media_type)401 authentication_error- trūksta rakto (missing_api_key), nežinomas raktas (invalid_api_key) arba anuliuotas raktas (revoked_api_key)402 quota_exceeded_error- išnaudoti žinučių kreditai403 permission_error- IP užblokuotas (ip_blocked), IP nėra rakto leidžiamųjų sąraše (ip_not_whitelisted) arba rakto tipas neleidžia naudoti šio galinio taško (key_type_not_allowed,insufficient_permissions)404 not_found_error- pokalbis nepriklauso šiam robotui405 invalid_request_error(method_not_allowed) - netinkamas HTTP veiksmas nurodytam URL429 rate_limit_error- per daug užklausų (rate_limit_exceeded) arba per daug lygiagrečių srautų (concurrent_streams_exceeded)500 api_error- vidinė klaida
Susiję
Norėdami atlikti paskyros lygio operacijas (kurti robotus, atnaujinti robotus, gauti naudojimo statistiką), žiūrėkite Management API.