Bot Talk API
Bot Talk API er et REST API for å kommunisere med en spesifikk chatbot fra din egen applikasjon - tilpassede apper, interne verktøy eller automatiseringer du bygger selv. Du oppretter en API-nøkkel i botens API-fane, og kaller deretter chat-endepunktet med nøkkelen som et Bearer-token for å motta botens svar, enten som en enkeltrespons eller strømmet over SSE.
Komme i gang
- Velg chatboten din og gå til API-fanen øverst på botsiden (Select Bot > API (Velg bot > API)).
- Klikk på Create API Key (Opprett API-nøkkel).
Telleren ved siden av knappen viser hvor mange nøkler som er aktive («1 of 5 API keys active»). Lenken View API Documentation (Vis API-dokumentasjon) åpner denne referansen, og Quick Start (Hurtigstart)-curl-kodesnutten gir deg et eksempel som er klart til å kjøres.
- I dialogvinduet Create API Key gir du nøkkelen et navn, angir eventuelt en IP-hviteliste og en hastighetsgrense, velger hvilke tillatelser den skal ha, og klikker deretter på Create (Opprett).
- Kopier hele nøkkelen fra bekreftelsesvinduet. Ren tekst vises bare én gang.
En nøkkel ser slik ut: ck_abcdefghijklmnopqrstuvwxyz012345. Hver nøkkel tilhører den ene boten, så enhver forespørsel som gjøres med nøkkelen, kommuniserer med denne boten - boten identifiseres av nøkkelen og vises aldri i URL-en.
Basis-URL
https://api.chatlab.com/aichat
Alle endepunkter i denne artikkelen er relative til denne basis-URL-en.
Nøkkeltillatelser
Hver nøkkel har én eller begge av disse tillatelsene, som angis med bryterne i Create API Key-dialogvinduet:
- Chat (send messages and receive responses) - tillater endepunktene
/v1/chatog/v1/chat/stream. - Conversation history (list and read past conversations) - tillater endepunktene
/v1/conversations.
API-fanen viser hver nøkkels tildelte tillatelser som Chat- og Conversations-merker.
Autentisering
Send nøkkelen i Authorization-headeren på hver forespørsel:
Authorization: Bearer ck_abcdefghijklmnopqrstuvwxyz012345
Forespørsler uten en Authorization: Bearer ...-header returnerer 401 missing_api_key. Ukjente nøkler returnerer 401 invalid_api_key; tilbakekalte nøkler returnerer 401 revoked_api_key. Fem ugyldige forsøk i løpet av ett minutt fra samme IP utløser en 60-minutters blokkering.
Grenser
- Maks 5 aktive Bot Talk-nøkler per bot
- Maks 60 forespørsler per minutt per nøkkel (token bucket, kapasitet 60, jevn påfylling med 1 token per sekund). Kan konfigureres nedover ved opprettelse - sett en lavere
rateLimitPerMinuteslik at grensen reduseres, og påfyllingshastigheten skalerer i takt med den. - Maks meldingslengde 4000 tegn
- Samtidige SSE-strømmer per nøkkel er underlagt kontogrensene dine
Endepunkter
POST /v1/chat
Send en melding til boten og motta hele svaret i én enkelt JSON-respons.
Forespørselskropp
{
"message": "Hi, can you help me track my order?",
"conversationId": "550e8400-e29b-41d4-a716-446655440000",
"metadata": {"userEmail": "alice@example.com"}
}
message- obligatorisk streng, maks 4000 tegn.conversationId- valgfri UUID. Utelat for en ny samtale; gjenbruk verdien serveren returnerte tidligere for å legge til i en eksisterende.metadata- valgfritt objekt:{source, userName, userEmail, userPhone}.userEmailbrukes også til å utlede den interne klient-ID-en.
Responskropp (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.roleer alltid"assistant";message.contenter hele svaret.modeler modell-ID-en boten kjørte på for dette kallet.usage.creditsUsedgjør rede for brukermeldingen + botsvaret (vanligvis 2), pluss én ekstra credit per utførte verktøykall.actionsviser verktøykjøringer som ble utført under denne runden. For øyeblikket sendes barefunction_call-oppføringer (medtype,name,status: "completed").
POST /v1/chat/stream
Strømmende variant av /v1/chat. Returnerer Content-Type: text/event-stream med Server-Sent Events.
Forespørselskropp
Samme struktur som POST /v1/chat. stream-flagget i kroppen er ikke påkrevd - det er bruken av denne stien som utløser SSE.
Responskropp (SSE-hendelser)
message.delta- innholdsfragment{ "content": "..." }. Flere av disse strømmes etter hvert som tokens ankommer.action- verktøykjøring{ "type", "name", "status": "executing" }. Sendes når boten utløser et funksjonskall.message.done- avsluttende hendelse medconversationId,model,usageog (hvis aktuelt) den fullførteactions-listen.error- sendes hvis genereringen mislykkes; strømmen avsluttes deretter.
Keep-alive SSE-kommentarer (:keepalive) sendes hvert 15. sekund under lange genereringer. Tidsavbrudd på serversiden: 30 sekunder for første token, 120 sekunder totalt per strøm.
Curl-eksempel
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
List opp samtaler for boten som er knyttet til nøkkelen din, på tvers av alle kilder (widget, WhatsApp, API osv.).
Spørringsparametere
limit- 1-100, standardverdi 20. Verdier utenfor området justeres til grensene.cursor- ugjennomsiktig verdi returnert inextCursorpå forrige side. Utelat for første side.
Responskropp (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
}
lastMessagePreviewavkortes til 100 tegn med et...-suffiks.nextCursorernullpå den siste siden; send den somcursorfor å hente neste.
GET /v1/conversations/{conversation_id}
Fullstendig samtalehistorikk.
Responskropp (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"}
]
}
Bare user- og assistant-roller returneres; interne system- og verktøymeldinger filtreres ut. Returnerer 404 not_found_error hvis samtalen ikke tilhører boten som er knyttet til nøkkelen din.
For å inspisere botkonfigurasjonen bruker du Management API-endepunktet GET /v1/management/bots/{bot_id} med en Management-nøkkel.
Hastighetsgrense-headere
Responser som når trinnet for hastighetsbegrensning (dvs. autentisering og IP-hviteliste er godkjent), inkluderer:
X-RateLimit-Limit: 60
X-RateLimit-Remaining: 57
X-RateLimit-Reset: 1715430000
X-RateLimit-Limit- grensen per nøkkel som faktisk ble brukt for dette kallet (60 som standard, eller din konfigurerterateLimitPerMinutehvis den er lavere).X-RateLimit-Remaining- gjenværende tokens i bøtten rett etter dette kallet.X-RateLimit-Reset- Unix epoch-sekunder der neste token blir tilgjengelig (ikke en fullstendig tilbakestilling av bøtten; bøtten fylles opp kontinuerlig). Når bøtten er full, er dette gjeldende tidspunkt.
Ved 429 rate_limit_exceeded-responser settes også Retry-After, uttrykt i hele sekunder til minst ett token blir ledig.
Feil før autentisering (401 missing_api_key, 401 invalid_api_key, 403 ip_blocked) og 403 ip_not_whitelisted inneholder ikke X-RateLimit-*-headere - hastighetsbegrenseren konsulteres først etter at autentisering og IP-kontroller er fullført.
Feilformat
Alle feil deler samme innpakning:
{
"error": {
"type": "rate_limit_error",
"code": "rate_limit_exceeded",
"message": "Rate limit exceeded. Try again in 12 seconds.",
"param": null
}
}
Vanlige HTTP-koder:
400 invalid_request_error- feilformatert inndata (koder:invalid_parameter,unsupported_media_type)401 authentication_error- manglende nøkkel (missing_api_key), ukjent nøkkel (invalid_api_key) eller tilbakekalt nøkkel (revoked_api_key)402 quota_exceeded_error- meldings-credits er oppbrukt403 permission_error- IP blokkert (ip_blocked), IP ikke i nøkkelens hviteliste (ip_not_whitelisted), eller nøkkeltypen tillater ikke dette endepunktet (key_type_not_allowed,insufficient_permissions)404 not_found_error- samtalen tilhører ikke denne boten405 invalid_request_error(method_not_allowed) - feil HTTP-metode på URL-en429 rate_limit_error- for mange forespørsler (rate_limit_exceeded) eller for mange samtidige strømmer (concurrent_streams_exceeded)500 api_error- intern feil
Relatert
For handlinger på kontonivå (opprette boter, oppdatere boter, hente forbruk), se Management API.