Oversikt over Management API
Management API er beregnet på backoffice-arbeid som ikke innebærer å sende chatmeldinger:
- opprett en bot programmatisk med
POST /v1/management/bots - les en bestemt bot du eier med
GET /v1/management/bots/{bot_id} - oppdater en bestemt bot med
PATCH /v1/management/bots/{bot_id} - les forbruk for abonnementet med
GET /v1/usage
Management-nøkler er knyttet til kontoen din, ikke til en bestemt bot. De holdes bevisst atskilt fra Bot Talk-nøkler, slik at en kompromittert chatnøkkel ikke kan endre botene dine eller lese faktureringsdataene dine.
Basis-URL
https://api.chatlab.com/aichat
Alle endepunkter i denne artikkelen er relative til denne basis-URL-en.
Komme i gang
- Åpne administrasjonsappen og gå til Account Settings > Management API (Kontoinnstillinger > Management API).
- Klikk på Create Management Key (Opprett Management-nøkkel), gi den et navn, angi eventuelt IP-hviteliste og hastighetsgrense, og send inn.
- Kopier hele nøkkelen fra bekreftelsesvinduet. Ren tekst vises bare én gang.
En nøkkel ser slik ut: mk_abcdefghijklmnopqrstuvwxyz012345. Prefikset mk_ skiller den fra Bot Talk-nøkler (ck_).
Autentisering
Authorization: Bearer mk_abcdefghijklmnopqrstuvwxyz012345
Hvis du sender en mk_-nøkkel til /v1/chat (eller et hvilket som helst annet Bot Talk-endepunkt), returneres 403 key_type_not_allowed. Hvis du sender en ck_-nøkkel til /v1/management/*, returneres samme feilmelding.
Grenser
- Maks 5 aktive Management API-nøkler per bruker
- Maks 10 forespørsler per minutt per nøkkel (token bucket, kapasitet 10, jevn påfylling med ~1 token hvert 6. sekund). Kan konfigureres nedover ved opprettelse - angi en lavere
rateLimitPerMinute, så reduseres taket og påfyllingshastigheten justeres deretter.
Tillatelser
Hver Management-nøkkel har et hvilket som helst delsett av de tre tillatelsene nedenfor. Minst én må velges ved opprettelse; ellers blir forespørselen avvist med 400 invalid_request_error. Et kall til et endepunkt med en nøkkel som mangler den påkrevde tillatelsen, returnerer 403 insufficient_permissions.
bot_read- kreves forGET /v1/management/bots/{bot_id}bot_management- kreves forPOST /v1/management/botsogPATCH /v1/management/bots/{bot_id}usage- kreves forGET /v1/usage
Struktur på body: nestede seksjoner som speiler fanene i administrasjonsgrensesnittet
POST og PATCH godtar en JSON-body gruppert i 13 seksjoner. Hver seksjon tilsvarer en underfane i sidemenyen Bot Settings (Bot-innstillinger) i administrasjonsappen, slik at JSON-nøklene og de synlige fanene stemmer overens: Hvis du endrer consent.humanSupportRequirePolicyAccept via API-et, ser du at den samme bryteren endres i fanen Consent & Privacy (Samtykke og personvern) i administrasjonsappen.
role- botpersona, råinstruks (prompt), svarlengde, språk, kontekst for nettsted/selskap (fanen Role & Behavior [Rolle og atferd])conversation- velkomstmelding, spørringsforbedring, samtalekontinuitet, vurderingsbryter + verktøytips, innhold for foreslåtte spørsmål + dynamiske oppfølginger (fanen Chat Conversation [Chatsamtale])chatMemory- bryter for chatminne, instruksjoner for oppsummering, kontekstallokering (fanen Summaries & Memory [Sammendrag og minne])appearance- farger, tekst, dimensjoner, tilpasset CSS, velkomstskjerm, stil for foreslåtte spørsmål, atferd for automatisk åpning, simulering av menneskelig skriving, bunntekst i markdown (fanen Appearance [Utseende])humanSupport- kontaktskjema for menneskelig hjelp (fanen Human Contact Form [Kontaktskjema for mennesker])leadCollection- skjema for lead-innsamling (fanen Lead Collection [Lead-innsamling])liveChat- overlevering til Live Chat (fanen Live Chat)consent- alle fire brytere for samtykke til personvernerklæring samt teksten på samtykkeskjermen (fanen Consent & Privacy [Samtykke og personvern])whiteLabel- skjul logo, lenke til tilpasset logo, hosting på eget domene (fanen Whitelabel)security- tillatte domener, søppelpostfilter, hastighetsgrenser for samtaler (fanen Security [Sikkerhet])voice- taleinndata og talesamtaler: modell, stemme, språk, instruks, maks varighet (fanen Voice Conversation [Talesamtale])multilingual- flerspråklig modus, basisspråk, tilbudte språk, håndtering av kunnskapsspråk (fanen Languages [Språk])advanced- LLM-modell, temperatur, kontekststørrelse, grense for botmeldinger, intern språkkode, Offer Cards (fanen Model & Advanced [Modell og avansert])
Bare name ligger på toppnivået, fordi det identifiserer boten i stedet for å tilhøre en bestemt fane.
Sidemenyen for Bot Settings har for øyeblikket 15 underfaner, og 13 av dem tilsvarer seksjonene ovenfor. De to underfanene som ikke har noen tilsvarende seksjon, er Flow (Flyt) og Actions (Handlinger) - begge omtales under "Utenfor API-ets omfang" nedenfor. De 13 som tilsvarer seksjonene, er Appearance, Chat Conversation, Role & Behavior, Human Contact Form, Lead Collection, Live Chat, Whitelabel, Consent & Privacy, Security, Model & Advanced, Summaries & Memory, Voice Conversation og Languages.
Forespørsels- og svarkroppen har samme struktur. Svaret inneholder to ekstra felter:
meta- skrivebeskyttet: bot-id og tidsstempler. Fjern dette for å gjøre et GET-svar om til en gyldig POST-body.apiKey- finnes kun ved opprettelse - den nyopprettede Bot Talk API-nøkkelen for den nye boten.
To felter i den felles strukturen er skrivebeskyttede - de returneres i svaret, men ignoreres hvis du prøver å sende dem med POST/PATCH:
appearance.avatarUrl- fullstendig offentlig URL for botens avatarbilde (f.eks.https://api.chatlab.com/aichat/content/avatar_xyz.png). Utfør en GET direkte mot denne for å laste ned dataene. Hvis du vil endre den, laster du opp en ny fil via multipart-delenavatar(se PATCH).whiteLabel.whitelabelLogoUrl- fullstendig offentlig URL for white label-topplogoen. Samme mønster somavatarUrl. Hvis du vil endre den, laster du opp en ny fil via multipart-delenwhitelabel_logo(se PATCH).
Begge URL-ene bruker den gjeldende forespørselens protokoll + vert + kontekststi, så på et tilpasset white label-domene returneres de med det domenet som rot (f.eks. https://api.acme.com/aichat/content/...).
Send null for en seksjon for å hoppe over den ved PATCH; send null for et felt i en seksjon for å hoppe over akkurat det feltet. null på feltnivå sletter aldri en lagret verdi - det betyr bare "ikke rør".
Rolle- og promptoppbygging
Systeminstruksen (system prompt) som LLM-en faktisk mottar, bygges opp på én av to måter avhengig av role.role. Ved å vite hvilken gren du befinner deg på, vet du hvilke felter som har betydning, og hvilke som lagres, men ignoreres.
Gren A - role.role er CUSTOMER_SUPPORT, SALES eller LEAD_COLLECTION_AGENT (malbasert)
Backend setter sammen instruksen fra en innebygd mal og ignorerer role.rawPrompt fullstendig (verdien lagres fortsatt på boten, men brukes ikke). Malen inkluderer:
role.role- rolleetikett (f.eks. "Customer Support") og rollespesifikke instruksjoner legges til automatiskname- botnavn, flettes inn i åpningssetningenrole.language-"Auto Detect"gjør at boten tilpasser seg brukerens språk; alle andre verdier (f.eks."English","Polish") blir til "Output in {language}, unless user uses another language"role.responseLength- tilordnes et målantall ord:Concise≈ 50 ord,Normal≈ 100,Detailed≈ 200role.websiteAddress- valgfritt; hvis feltet ikke er tomt, legges det til som "for the users of the website {url}"role.companyDescription- valgfritt; hvis feltet ikke er tomt, legges det til som et ekstra avsnitt før rolleinstruksjonene
Dette er den anbefalte grenen for de fleste boter - du får rollespesifikk atferd og sikkerhetsrammer automatisk.
Gren B - role.role er CUSTOM (egendefinert instruks)
Backend bruker role.rawPrompt ordrett som hele systeminstruksen. responseLength, language, websiteAddress og companyDescription lagres, men flettes ikke inn i instruksen - hvis du vil at noen av disse skal gjenspeiles i botens atferd, må du selv inkludere dem i teksten for rawPrompt. Rollespesifikke sikkerhetsrammer og toneangivelser legges heller ikke til; du styrer hele instruksen selv.
Bruk CUSTOM bare når den malbaserte instruksen ikke passer til ditt bruksområde (f.eks. hvis du trenger en svært bransjespesifikk persona, egne sikkerhetsbegrensninger eller et ustandardisert utdataformat).
Enum- / lukkede felter
Flere felter godtar bare et fast sett med strengverdier. Hvis du sender noe utenfor listen, avvises det med 400 validation_failed og feltstien i error.param. Det skilles mellom store og små bokstaver.
role.role-CUSTOMER_SUPPORT,SALES,LEAD_COLLECTION_AGENT,CUSTOMrole.responseLength-Concise,Normal,Detailedrole.language- fullt engelsk språknavn fra rullegardinmenyen i administrasjonen, f.eks.Auto Detect,English,Polish,Spanish,German,French,Italian,Portuguese,Dutch,Russian,Chinese (Simplified),Japanese,Arabic,Hindiog omtrent 80 andre. Verdien lagres ordrett og settes inn i instruksmalen, så to-bokstavers ISO-koder (en,pl) og andre verdier utenfor listen blir ikke avvist av API-et, men skaper en feilaktig instruksjon som "Output in en, unless...". Standardverdien erAuto Detecthvis feltet utelates ved opprettelse.advanced.model- se "AI-tekstmodeller" nedenfor; settet du kan velge fra, avhenger av kontogrensene dine, og verdier kontoen din ikke har tilgang til, returnerer400 invalid_parameteradvanced.chatContextSize-8000,16000,32000. Avhenger av kontogrensene dine; høyere verdier blir automatisk justert nedchatMemory.clientSummaryPromptType-DEFAULT,CUSTOMchatMemory.conversationSummaryPromptType-DEFAULT,CUSTOMappearance.chatAlignment-left,rightappearance.minimizedDisplayMode-icon,minifiedappearance.chatMessageLinkTarget-_blank,_selfleadCollection.requireBeforeNewConversation- boolsk bryter.truetvinger brukeren til å fylle ut lead-skjemaet før samtalen startes;falselar AI-en avgjøre når skjemaet skal vises (standard).
Strukturerte felter og intervaller
Felter som ser ut som enkle strenger eller tall, men som har spesifikke formater, intervaller eller særegenheter i administrasjonsgrensesnittet som er verdt å kjenne til.
-
advanced.temperature- godkjent intervall er0.0til1.0, som tilsvarer glidebryteren i administrasjonsgrensesnittet. Verdier utenfor dette intervallet avvises med400 validation_failed. -
chatMemory.summariesToKnowledgeRatio- heltall i prosent,10-90med trinn på10. Styrer hvor mye av chatkonteksten som settes av til historiske klientsammendrag kontra resten (kunnskapsbase, gjeldende samtale, instruksjoner). Standard er50. Verdier utenfor10-90avvises med400 validation_failed. Gjelder bare nårchatMemory.enabled=trueOGchatMemory.summaryConversationsEnabled=true. -
liveChat.schedule- JSON kodet som en streng, ikke et nestet JSON-objekt i sendingen. Serveren lagrer den rå strengen ordrett; administrasjonsgrensesnittet parser den på klientsiden ved visning av timeplaneditoren. Når strengen er parset, er den strukturert med én oppføring per ukedag pluss entimezone-nøkkel:- hver ukedagsnøkkel (
monday-sunday) peker til{enabled: boolean, from: "H:MM", to: "H:MM"}i 24-timersformat timezoneer et IANA-sonenavn (f.eks."Europe/Warsaw","America/New_York")
Eksempelverdi (merk de ytre anførselstegnene og de escaped indre anførselstegnene - det er ett strengfelt, ikke et nestet objekt):
"{\"monday\":{\"enabled\":true,\"from\":\"9:00\",\"to\":\"17:00\"},\"tuesday\":{\"enabled\":true,\"from\":\"9:00\",\"to\":\"17:00\"},\"wednesday\":{\"enabled\":true,\"from\":\"9:00\",\"to\":\"17:00\"},\"thursday\":{\"enabled\":true,\"from\":\"9:00\",\"to\":\"17:00\"},\"friday\":{\"enabled\":true,\"from\":\"9:00\",\"to\":\"17:00\"},\"saturday\":{\"enabled\":false,\"from\":\"9:00\",\"to\":\"17:00\"},\"sunday\":{\"enabled\":false,\"from\":\"9:00\",\"to\":\"17:00\"},\"timezone\":\"Europe/Warsaw\"}"Utenfor de oppførte tidene vises
liveChat.outOfHoursMessagefor den besøkende, og overlevering til live chat undertrykkes. Validering av den indre strukturen skjer bare på klientsiden i administrasjonsgrensesnittet - feilformatert JSON eller ukjente nøkler godtas av API-et som en ren streng, og vil føre til visningsfeil når et menneske senere åpner boten i administrasjonen. Valider strukturen på din side før sending. - hver ukedagsnøkkel (
-
conversation.positiveRatingTooltip/conversation.negativeRatingTooltip- korte etiketter som vises på knappene 👍 / 👎 ved hvert AI-svar nårconversation.conversationRatingEnabled=true. Standardteksten er "I like the response" / "I don't like the response". Synlig for sluttbrukere. -
whiteLabel.hideRoboAssistLogo- white label-funksjon, underlagt kontogrensene dine. Skjuler bunntekstlinjen "Powered by ChatLab". Hvis kontoen din ikke inkluderer white label, lagres verdien, men ignoreres, og bunnteksten vises alltid. -
whiteLabel.whitelabelLogoLink- white label-funksjon, underlagt kontogrensene dine. Mål-URL ved klikk på den tilpassede logoen nårhideRoboAssistLogo=trueog en tilpasset logofil er lastet opp via multipart-delenwhitelabel_logo. -
appearance.simulateHumanTypingDelay- sekunder (ikke millisekunder), heltall0-200. Pause mellom påfølgende botbobler nårsimulateHumanTyping=true. Standard er5. -
appearance.autoOpenChatDelaySeconds- sekunder, heltall. Forsinkelse før widgeten åpnes automatisk nårautoOpenChat=trueogautoOpenChatDelay=true. -
advanced.internalLocale- IETF-språk- og regionskode på formenll_CC(understrek, IKKEll-CCmed bindestrek). Godkjente verdier kommer fra en fast liste med omtrent 95 koder:en_US,pl_PL,de_DE,fr_FR,es_ES,it_IT,pt_PT,nl_NL,ru_RU,zh_CN,zh_TW,ja_JP,ko_KR,ar_SA,hi_IN,tr_TR,cs_CZ,da_DK,fi_FI,sv_SE,no_NO,el_GR,he_ILog mange flere. Å sende en to-bokstavers kode alene ("en") eller BCP-47 ("en-US") støttes ikke i den tillatte listen. Standard eren_US. Dette er koden som brukes for formatering av dato og tall i selve widgetgrensesnittet, i motsetning tilrole.language(språket boten svarer på i samtalen). -
security.talkMessagesRateLimit/security.talkMessagesRateLimitDurationSeconds- heltall (sendes som JSON-tall, f.eks.30, ikke"30").0deaktiverer hastighetsgrensen per IP. Hvis verdien er ulik null, håndhever widgeten N meldinger per varighet i sekunder førsecurity.talkMessagesRateLimitHitMessagevises for den besøkende. -
advanced.botMessagesLimit- heltall (JSON-tall, f.eks.1000).0betyr "ingen grense"; ellers må det være et multiplum av 1000 (1000,2000,10000, ...). Verdier som100eller1500avvises med400 validation_failed. Deretter justeres verdien automatisk ned til kontogrensen din.
AI-tekstmodeller (advanced.model)
Send den nøyaktige API-verdien (venstre kolonne med kodelit你怎么). Visningsnavnet i administrasjonsgrensesnittet står i parentes. Kontogrensene dine bestemmer hvilke modeller du kan velge; hvis du sender en modell kontoen din ikke har tilgang til, returneres 400 invalid_parameter. Standardverdi for nye boter er 5-MINI.
4-O-MINI(GPT 4-o mini)4-O(GPT 4-o)4.1-MINI(GPT 4.1-mini)4.1(GPT 4.1)5-MINI(GPT 5-mini)5(GPT 5)5.1(GPT 5.1)5.4-MINI(GPT 5.4-mini)5.4(GPT 5.4)5.5(GPT 5.5)GEMINI 2.5 PRO(Gemini 2.5 Pro)GEMINI 3 Flash(Gemini 3 Flash)GEMINI 3.5 Flash(Gemini 3.5 Flash)GEMINI 3.7 Flash(Gemini 3.7 Flash)GEMINI 3.8 Flash(Gemini 3.8 Flash)GEMINI 3.1 Flash-Lite(Gemini 3.1 Flash-Lite)GEMINI 3 PRO(Gemini 3 Pro)
Feltreferanse (fullstendig forespørselsskjema)
Hvert felt på tråden, med type, begrensning og en kort beskrivelse. PATCH-semantikk: ethvert felt som utelates (eller sendes som null), lar den lagrede verdien forbli uendret. Samme format brukes for svaret (minus binært innhold i flere deler; pluss den skrivebeskyttede meta-blokken i hvert svar og apiKey kun i opprettelsessvaret).
Toppnivå
| Field | Type | Constraint | Description |
|---|---|---|---|
name |
string | maks 150, obligatorisk ved opprettelse | Botens visningsnavn |
role |
object | Se § role | |
conversation |
object | Se § conversation | |
chatMemory |
object | Se § chatMemory | |
appearance |
object | Se § appearance | |
humanSupport |
object | Se § humanSupport | |
leadCollection |
object | Se § leadCollection | |
liveChat |
object | Se § liveChat | |
consent |
object | Se § consent | |
whiteLabel |
object | Se § whiteLabel | |
security |
object | Se § security | |
advanced |
object | Se § advanced |
Tillegg som kun finnes i svar:
meta: { id, createdAt, updatedAt }- skrivebeskyttet.apiKey- string, finnes kun i svaret forPOST /v1/management/bots- den nyopprettede Bot Talk-nøkkelen for den nye boten, returneres nøyaktig én gang.
§ role
| Field | Type | Constraint | Description |
|---|---|---|---|
role |
string (enum) | CUSTOMER_SUPPORT, SALES, LEAD_COLLECTION_AGENT, CUSTOM |
Forhåndsinnstilt persona; velger promptmalen (se "Rolle- og promptoppbygging") |
language |
string | fullt engelsk språknavn (English, Polish, ...) eller Auto Detect |
Hovedspråk som mates inn i promptmalen |
responseLength |
string | ∈ {Concise, Normal, Detailed} |
Ønsket detaljnivå for AI-svaret |
websiteAddress |
string | Nettsted som brukes for promptkontekst | |
companyDescription |
string | Selskapsbeskrivelse som brukes for promptkontekst | |
rawPrompt |
string | Tilpasset systemprompt - brukes ordrett kun når role=CUSTOM |
§ conversation
| Field | Type | Constraint | Description |
|---|---|---|---|
welcomeMessage |
string | Første melding som vises til den besøkende ved åpning | |
queryRefinementEnabled |
boolean | Hvis sann, optimaliseres den besøkendes spørsmål før RAG-innhenting | |
conversationContinuityEnabled |
boolean | Hvis sann, gjenopptar tilbakevendende besøkende sin forrige samtale | |
conversationRatingEnabled |
boolean | Hvis sann, vises vurdering med tommel opp/ned på botmeldinger | |
positiveRatingTooltip |
string | Verktøytips på knappen for positiv vurdering | |
negativeRatingTooltip |
string | Verktøytips på knappen for negativ vurdering | |
suggestedQuestions |
string | Linjeskift-separerte foreslåtte spørsmål / samtaleåpnere | |
dynamicSuggestedFollowups |
boolean | Hvis sann, foreslår AI oppfølgingsspørsmål etter hvert svar | |
dynamicFollowupsAutoIcons |
boolean | Hvis sann, velger AI automatisk emoji-ikoner for dynamiske oppfølginger |
§ chatMemory
| Field | Type | Constraint | Description |
|---|---|---|---|
enabled |
boolean | Hovedbryter for funksjonen for chatsamtaleminne | |
summaryConversationsEnabled |
boolean | Lagre sammendrag per samtale | |
conversationSummaryPrompt |
string | Tilpasset prompt som brukes til å oppsummere hver samtale | |
conversationSummaryPromptType |
string (enum) | ∈ {DEFAULT, CUSTOM} |
Hvorvidt standard eller tilpasset sammendragsprompt skal brukes |
clientSummaryPrompt |
string | Tilpasset prompt som brukes til å oppsummere klienten på tvers av samtaler | |
clientSummaryPromptType |
string (enum) | ∈ {DEFAULT, CUSTOM} |
Standard vs. tilpasset prompt for klientprofil |
summariesToKnowledgeRatio |
int | 10-90, trinn 10 |
% av chatkontekstvinduet som tildeles sammendrag vs. RAG-kunnskap |
§ appearance
| Field | Type | Constraint | Description |
|---|---|---|---|
launcherColor |
string (hex) | Bakgrunnsfarge for starteren (chatikonet) | |
headerColor |
string (hex) | Bakgrunnsfarge for chattoppteksten | |
titleColor |
string (hex) | Tittelfarge for chattoppteksten | |
subtitleColor |
string (hex) | Undertittelfarge for chattoppteksten | |
clientMessageBubbleColor |
string (hex) | Boblefarge for den besøkendes meldinger | |
clientMessageTextColor |
string (hex) | Tekstfarge for den besøkendes meldinger | |
responseMessageBubbleColor |
string (hex) | Boblefarge for botsvar | |
responseMessageTextColor |
string (hex) | Tekstfarge for botsvar | |
chatSubheader |
string | Slagord som vises under chattittelen | |
senderPlaceholder |
string | Plassholdertekst i meldingsfeltet | |
resetConversationTooltip |
string | Verktøytips på knappen for "tilbakestill samtale" | |
chatAlignment |
string (enum) | ∈ {left, right} |
Hvilken side av skjermen chatten festes til |
launcherBottomMargin |
int | 0-500 |
Starterens avstand fra bunnkanten (px) |
launcherSideMargin |
int | 0-500 |
Starterens avstand fra sidekanten (px) |
displayShadow |
boolean | Fallskygge under widgeten | |
customCss |
string | Rå CSS som settes inn i widgetens iframe | |
chatMessageLinkTarget |
string (enum) | ∈ {_blank, _self} |
Hvordan lenker inne i botmeldinger åpnes |
minimizedDisplayMode |
string (enum) | ∈ {icon, minified} |
Minimert tilstand: starterikon eller kompakt meldingslinje |
chatDesktopWidthPx |
int | Widgetbredde på datamaskin | |
chatDesktopHeightPx |
int | Widgethøyde på datamaskin | |
chatMobileSizePercent |
int | Mobil widgetstørrelse i % av visningsområdet | |
messageFontSize |
int | Skriftstørrelse for meldingstekst (px) | |
showChatbotBubblesDesktop |
boolean | Vis flytende oppmerksomhetsbobler på datamaskin | |
showChatbotBubblesMobile |
boolean | Vis flytende oppmerksomhetsbobler på mobil | |
chatbotBubblesDelaySeconds |
int | Forsinkelse før oppmerksomhetsboblene vises (sekunder) | |
launcherIconFullSize |
boolean | Vis det tilpassede starterikonet helt ut til kanten i stedet for innfelt | |
welcomeScreenEnabled |
boolean | Vis Welcome Screen (velkomstskjerm) i stedet for å gå rett til chatten | |
welcomeScreenQuestionsLabel |
string | Tekst over de foreslåtte spørsmålene på velkomstskjermen | |
welcomeScreenHideHumanContactForm |
boolean | Skjul handlingen for kontaktskjema til mennesker i toppteksten mens Welcome Screen vises. Den dukker opp igjen etter den besøkendes første melding. Boter opprettet før 2026-09-02 har standardverdi true |
|
welcomeScreenHideLiveChat |
boolean | Skjul handlingen for Live Chat i toppteksten mens Welcome Screen vises. Den dukker opp igjen etter den besøkendes første melding. Boter opprettet før 2026-09-02 har standardverdi true |
|
headerActionsLayout |
string | DROPDOWN |
Hvordan Live Chat og kontaktskjemaet til mennesker tilbys i chattoppteksten: ICONS (hvert sitt ikon) eller DROPDOWN (gruppert i topptekstmenyen). Boter opprettet før 2026-09-02 har standardverdi ICONS |
stackSuggestedQuestions |
boolean | Plasser foreslåtte spørsmål vertikalt over hverandre (vs. ved siden av hverandre) | |
suggestedQuestionsFontSize |
int | Skriftstørrelse for brikker med foreslåtte spørsmål (px) | |
suggestedQuestionsTextColor |
string (hex) | Tekstfarge for brikker med foreslåtte spørsmål | |
suggestedQuestionsBackgroundColor |
string (hex) | Bakgrunnsfarge for brikker med foreslåtte spørsmål | |
autoOpenChat |
boolean | Åpne chatten automatisk på datamaskin | |
autoOpenChatOnMobiles |
boolean | Åpne chatten automatisk på mobil | |
autoOpenChatDelay |
boolean | Bruk en forsinkelse før automatisk åpning | |
autoOpenChatDelaySeconds |
int | Forsinkelse for automatisk åpning (sekunder) | |
simulateHumanTyping |
boolean | Del opp botsvaret i bobler med skriveanimasjon | |
simulateHumanTypingDelay |
int | 0-200 |
Forsinkelse mellom meldingsbobler (sekunder) |
footerMarkdown |
string | maks 255 | Tilpasset bunntekst-markdown som vises under chatten |
avatarUrl |
string | read-only | Fullstendig kvalifisert offentlig URL til avataren; for å endre den, last opp via multipart-delen avatar |
Flerdelt innhold (multipart) ved POST/PATCH: avatar (fildel). GET- / svartekster utelater filinnholdet - kun URL-en sendes over nettverket.
§ humanSupport
| Field | Type | Constraint | Description |
|---|---|---|---|
enabled |
boolean | Bryter for flyten Human Support (menneskelig brukerstøtte) | |
email |
string | obligatorisk (streng opprettelse) når enabled=true |
E-postadresse som mottar henvendelser til brukerstøtte |
dialogMessage |
string | Oppmuntrende melding som vises over skjemaet | |
thankYouMessage |
string | Bekreftelse som vises etter innsending | |
emailMessageSubjectTemplate |
string | Emnemal for e-posten som sendes til agenten | |
emailMessageContentTemplate |
string | Innholdsmal for e-posten som sendes til agenten | |
emailPlaceholder |
string | Plassholder i e-postfeltet | |
messagePlaceholder |
string | Plassholder i meldingsfeltet | |
emailWithConversationContent |
boolean | Hvis sann, inkluderes samtalehistorikken i e-postteksten | |
customFormId |
long | ID for et eksisterende tilpasset skjema | Erstatt det innebygde kontaktskjemaet med et tilpasset skjema. null beholder det innebygde skjemaet |
customFormMapping |
string | JSON-kodet streng | Mapper felter i det tilpassede skjemaet til e-postfeltene for brukerstøtte |
requirePolicyAccept ligger under consent.humanSupportRequirePolicyAccept, ikke her.
§ leadCollection
| Field | Type | Constraint | Description |
|---|---|---|---|
enabled |
boolean | Bryter for leadsskjema | |
nameEnabled |
boolean | Innhent navn | |
nameLabel |
string | Etikett på navnefeltet | |
emailEnabled |
boolean | Innhent e-post | |
emailLabel |
string | obligatorisk (streng opprettelse) når enabled=true OG emailEnabled=true |
Etikett på e-postfeltet |
phoneEnabled |
boolean | Innhent telefonnummer | |
phoneLabel |
string | obligatorisk (streng opprettelse) når enabled=true OG phoneEnabled=true |
Etikett på telefonfeltet |
leaveDetailsMessage |
string | obligatorisk (streng opprettelse) når enabled=true |
Melding som oppfordrer den besøkende til å legge igjen kontaktinformasjon |
thankYouMessage |
string | obligatorisk (streng opprettelse) når enabled=true |
Bekreftelse som vises etter innsending |
requireBeforeNewConversation |
boolean | Hvis true, må skjemaet sendes inn før samtalen starter; hvis false, avgjør AI når skjemaet skal vises |
|
emailNotificationEnabled |
boolean | Send e-post til eieren hver gang et lead innhentes | |
emailNotificationAddress |
string | Mottaker av varsler (standard er kontoens e-postadresse) | |
emailWithConversationContent |
boolean | Hvis sann, inkluderes samtalehistorikken i varselet |
Regel på tvers av felter ved opprettelse: enabled=true krever minst én av emailEnabled eller phoneEnabled. requirePolicyAccept ligger under consent.leadCollectionRequirePolicyAccept, ikke her.
| customFormId | long | ID for et eksisterende tilpasset skjema | Erstatt det innebygde leadsskjemaet med et tilpasset skjema. null beholder det innebygde skjemaet |
| customFormMapping | string | JSON-kodet streng | Mapper felter i det tilpassede skjemaet til navn / e-post / telefon |
§ liveChat
| Field | Type | Constraint | Description |
|---|---|---|---|
enabled |
boolean | Funksjonsbryter for Live Chat | |
infoMessage |
string | Forklarende melding før overlevering | |
startMessage |
string | Melding som vises når live-økten starter | |
endMessage |
string | Melding som vises når live-økten avsluttes | |
nameLabel |
string | Etikett på navnefeltet i forhåndsskjemaet for Live Chat | |
emailLabel |
string | Etikett på e-postfeltet i forhåndsskjemaet for Live Chat | |
schedule |
string | JSON-kodet streng (ukedagbrytere + from/to + timezone) |
Driftstidsplan for Live Chat - se "Strukturerte felter og områder" for nøyaktig format |
outOfHoursMessage |
string | Melding som vises utenom åpningstid | |
closeModalMessage |
string | Tittel på modaldialogen "Lukke Live Chat?" | |
closeModalConfirmLabel |
string | Etikett for bekreftelsesknappen i lukkemodalen | |
closeModalCancelLabel |
string | Etikett for avbryt-knappen i lukkemodalen | |
closeModalTooltipText |
string | Verktøytips på lukkehandlingen for chatten | |
operatorHasJoinedLabel |
string | Etikett som vises når en operatør blir med | |
operatorDidNotJoinInTimeLabel |
string | Etikett som vises når ingen operatør blir med innen tidsfristen | |
waitingForOperatorToJoinLabel |
string | Etikett som vises mens man venter på en operatør | |
waitingForOperatorSeconds |
int | Tidsavbrudd for at en operatør skal svare (sekunder) | |
redirectToHumanSupportForm |
boolean | Hvis sann, viderekobles det til Human Support-skjemaet når ingen operatør svarer | |
missedEmailEnabled |
boolean | standard true |
Send e-post til boteieren når en forespørsel om Live Chat forble ubesvart. Ikke satt på eldre boter, noe som tolkes som aktivert |
requirePolicyAccept ligger under consent.liveChatRequirePolicyAccept, ikke her.
§ consent
| Field | Type | Constraint | Description |
|---|---|---|---|
newConversationRequirePolicyAccept |
boolean | Krev samtykke til personvernerklæring før en ny samtale startes | |
humanSupportRequirePolicyAccept |
boolean | Krev samtykke til personvernerklæring før Human Support-skjemaet sendes inn | |
leadCollectionRequirePolicyAccept |
boolean | Krev samtykke til personvernerklæring før leadsinnsamlingsskjemaet sendes inn | |
liveChatRequirePolicyAccept |
boolean | Krev samtykke til personvernerklæring før en Live Chat-økt startes | |
newConversationConsentDescription |
string | Innledende tekst for samtykkeskjermen ved samtaleoppstart | |
privacyPolicyConsentCheckboxLabel |
string | Etikett ved siden av avmerkingsboksen for samtykke (inneholder vanligvis en lenke til personvernerklæringen) |
§ whiteLabel
| Field | Type | Constraint | Description |
|---|---|---|---|
hideRoboAssistLogo |
boolean | White Label-funksjon; underlagt kontobegrensninger | Skjul standard ChatLab-logo i bunnteksten |
whitelabelLogoLink |
string | White Label-funksjon; underlagt kontobegrensninger | URL som den tilpassede bunntekstlogoen lenker til |
assignToCustomDomain |
boolean | styres av funksjonen CUSTOM_DOMAIN |
Ha chatten på det konfigurerte egendefinerte domenet |
whitelabelLogoUrl |
string | read-only | Fullstendig kvalifisert offentlig URL til White Label-logoen; for å endre den, last opp via multipart-delen whitelabel_logo |
Flerdelt innhold (multipart) ved POST/PATCH: whitelabel_logo (fildel). GET- / svartekster utelater filinnholdet - kun URL-en sendes over nettverket.
§ security
| Field | Type | Constraint | Description |
|---|---|---|---|
allowedDomains |
string | Kommadelt liste over domener som har tillatelse til å bygge inn widgeten (tom = ingen hvitliste) | |
spamFilterEnabled |
boolean | Aktiver spambeskyttelse per bot for innkommende meldinger | |
countryFilterMode |
string | BLACKLIST eller WHITELIST |
Hvordan landelistene tolkes. Selve listene forblir kun tilgjengelige for administratorer |
talkMessagesRateLimit |
int | >= 0; 0 deaktiverer |
Maksimalt antall brukermeldinger tillatt innenfor hastighetsbegrensningsvinduet |
talkMessagesRateLimitDurationSeconds |
int | >= 0 |
Lengde på hastighetsbegrensningsvinduet (sekunder) |
talkMessagesRateLimitHitMessage |
string | Melding som vises til den besøkende når hastighetsgrensen nås |
§ voice
| Field | Type | Constraint | Description |
|---|---|---|---|
inputEnabled |
boolean | La den besøkende diktere meldinger (tale til tekst) | |
conversationEnabled |
boolean | krever stemmefunksjonen i abonnementet | Aktiver fullstendige talesamtaler |
voiceId |
string | leverandørspesifikk stemme-ID (f.eks. alloy) |
Hvilken syntetisk stemme som snakker |
model |
string | f.eks. GPT-REALTIME-MINI, GEMINI-LIVE, ELEVENLABS-* |
Stemmemodell. Faktureres per minutt, prisene varierer per modell |
turnDetection |
string | leverandørspesifikk | Modus for turtaking |
audioPrompt |
string | Ekstra systemprompt som kun brukes for taleinnlegg | |
welcomeMessage |
string | Muntlig åpningsreplikk | |
language |
string | språkkode | Primært talespråk |
additionalLanguages |
string | kommadikterte språkkoder | Ekstra språk taleagenten godtar |
maxDurationSeconds |
int | Fast maksimumsgrense for en enkelt talesamtale | |
maxDurationMessage |
string | Melding som vises når maksimumsgrensen nås |
§ multilingual
| Field | Type | Constraint | Description |
|---|---|---|---|
enabled |
boolean | Bryter for flerspråklig modus | |
mode |
string | AUTODETECT eller en fastlistemodus |
Hvordan boten velger svarspråk |
baseLanguage |
string | språkkode | Språket botens egne tekster er skrevet på |
languages |
string | kommadikterte språkkoder | Språk som tilbys den besøkende |
knowledgeLanguageMode |
string | Hvordan kunnskap på andre språk behandles | |
knowledgeLanguageFallback |
string | språkkode | Språk som brukes når ingen treff blir funnet |
§ advanced
| Field | Type | Constraint | Description |
|---|---|---|---|
model |
string | underlagt kontobegrensninger; se "AI-tekstmodeller" ovenfor | LLM-identifikator (f.eks. 5-MINI) |
temperature |
decimal | 0.0-1.0 |
Samplingstemperatur (samsvarer med glidebryteren i grensesnittet) |
chatContextSize |
int | ∈ {8000, 16000, 32000}; justeres automatisk til din kontogrense |
Tokenvindu for samtalehistorikk |
botMessagesLimit |
long | 0 eller multiplum av 1000 (f.eks. 1000, 2000, 10000) |
Maksimalt antall botsvar per samtale (0 = ingen grense) |
internalLocale |
string | språkkode på formatet ll_CC |
Språkinnstilling for etiketter i widgetgrensesnittet (atskilt fra role.language) |
productsViewEnabled |
boolean | Hvis sann, vises e-handelens Offer Cards inne i chatten | |
includeProductsInKnowledgeBase |
boolean | Hvis sann, indekseres produktkatalogen som en del av kunnskapsbasen |
Utenfor API-ets omfang
Administratorgrensesnittet har noen områder som med vilje ikke er tilgjengelige i denne versjonen av Management API:
- Flow-fanen - det visuelle redigeringsverktøyet Conversation Flow Editor (samtaleflyt med steg og overganger). Ikke tilgjengelig via Management API.
- Actions-fanen - administrerte integrasjoner for e-handel / booking, AI Search og tilpassede API-funksjoner. Verktøykalling (tool calling) har aldri vært en del av Management API.
- Selve verktøyet for tilpassede skjemaer - opprettelse og redigering av tilpassede skjemaer er ikke tilgjengelig. Du kan likevel koble et eksisterende skjema til en bot via
leadCollection.customFormIdoghumanSupport.customFormId. - Tilpassede ikoner for åpning/lukking av chat -
customLauncherIconVisible,openChatIcon,closeChatIcon. API-et eksponerer kun flerdelte data (multipart parts) for hoved-avatarogwhitelabel_logo. - IP- og landelister - selve oppføringene er kun for administratorer. Bare tolkingsmodusen eksponeres, via
security.countryFilterMode.
Endepunkter
POST /v1/management/bots
Opprett en ny bot. To likeverdige Content-Type-verdier godtas; velg den som passer best.
Modus A - ren JSON (anbefales når du ikke trenger å laste opp et profilbilde / en logo i samme forespørsel):
Content-Type: application/json- Forespørselens brødtekst er bot-konfigurasjonen i JSON (ingen
data-innpakning) - Filer (profilbilde / logo) kan lastes opp senere via en ny
PATCHved hjelp av modus B
Modus B - multipart/form-data (brukes ved opplasting av filer i samme forespørsel):
Content-Type: multipart/form-data; boundary=...dataJSON-del (obligatorisk,Content-Type: application/json) - bot-konfigurasjon i den nestede strukturen beskrevet ovenforavatarfildel (valgfri) - profilbilde for botenwhitelabel_logofildel (valgfri) - White Label-logo (gjelder bare hvis kontoen din inkluderer White Label)
Kun name er obligatorisk i JSON-koden; alle andre felt faller tilbake på standardverdiene som veiviseren i administrasjonsgrensesnittet ville ha satt.
Fullstendig forespørselsbrødtekst
Dette er den maksimale data-JSON-en - med alle seksjoner utfylt. Send bare de seksjonene du har behov for; alt annet får standardverdier.
{
"name": "Helpdesk Bot",
"role": {
"rawPrompt": "You are a friendly support assistant for Acme Inc.",
"role": "CUSTOMER_SUPPORT",
"language": "English",
"responseLength": "Normal",
"websiteAddress": "https://acme.com",
"companyDescription": "Acme sells industrial widgets."
},
"conversation": {
"welcomeMessage": "Hi! How can I help today?",
"queryRefinementEnabled": true,
"conversationContinuityEnabled": true,
"conversationRatingEnabled": true,
"positiveRatingTooltip": "Helpful",
"negativeRatingTooltip": "Not helpful",
"suggestedQuestions": "What are your hours?\nHow do I cancel?\nWhere is my order?",
"dynamicSuggestedFollowups": true,
"dynamicFollowupsAutoIcons": true
},
"chatMemory": {
"enabled": true,
"summaryConversationsEnabled": true,
"conversationSummaryPrompt": "Summarize this conversation in 3 sentences.",
"clientSummaryPrompt": "Summarize what we know about this customer.",
"clientSummaryPromptType": "DEFAULT",
"conversationSummaryPromptType": "DEFAULT",
"summariesToKnowledgeRatio": 50
},
"appearance": {
"launcherColor": "#1A73E8",
"headerColor": "#1A73E8",
"titleColor": "#FFFFFF",
"subtitleColor": "#FFFFFF",
"clientMessageBubbleColor": "#000000",
"clientMessageTextColor": "#FFFFFF",
"responseMessageBubbleColor": "#F4F4F4",
"responseMessageTextColor": "#000000",
"chatSubheader": "AI support assistant",
"senderPlaceholder": "Type a message...",
"resetConversationTooltip": "Restart conversation",
"chatAlignment": "right",
"launcherBottomMargin": 20,
"launcherSideMargin": 20,
"displayShadow": true,
"customCss": ".rcw-conversation-container { border-radius: 16px; }",
"chatMessageLinkTarget": "_blank",
"minimizedDisplayMode": "icon",
"chatDesktopWidthPx": 400,
"chatDesktopHeightPx": 600,
"chatMobileSizePercent": 100,
"messageFontSize": 14,
"showChatbotBubblesDesktop": true,
"showChatbotBubblesMobile": false,
"chatbotBubblesDelaySeconds": 5,
"welcomeScreenEnabled": false,
"welcomeScreenQuestionsLabel": "Quick start",
"welcomeScreenHideHumanContactForm": false,
"welcomeScreenHideLiveChat": false,
"headerActionsLayout": "DROPDOWN",
"stackSuggestedQuestions": false,
"suggestedQuestionsFontSize": 14,
"suggestedQuestionsTextColor": "#000000",
"suggestedQuestionsBackgroundColor": "#F4F4F4",
"autoOpenChat": false,
"autoOpenChatOnMobiles": false,
"autoOpenChatDelay": false,
"autoOpenChatDelaySeconds": 5,
"simulateHumanTyping": true,
"simulateHumanTypingDelay": 5,
"footerMarkdown": "Powered by Acme"
},
"humanSupport": {
"enabled": true,
"email": "support@acme.com",
"dialogMessage": "Leave us a message and we will get back to you.",
"thankYouMessage": "Thanks - we received your message.",
"emailMessageSubjectTemplate": "[Acme support] New message from {customerName}",
"emailMessageContentTemplate": "{message}\n\n - \n{conversationTranscript}",
"emailPlaceholder": "your@email.com",
"messagePlaceholder": "How can we help?",
"emailWithConversationContent": true
},
"leadCollection": {
"enabled": true,
"nameEnabled": true,
"nameLabel": "Your name",
"emailEnabled": true,
"emailLabel": "Email",
"phoneEnabled": false,
"phoneLabel": "Phone",
"leaveDetailsMessage": "Please leave your details and we will get in touch.",
"thankYouMessage": "Thanks - we will be in touch shortly.",
"requireBeforeNewConversation": false,
"emailNotificationEnabled": true,
"emailNotificationAddress": "leads@acme.com",
"emailWithConversationContent": true
},
"liveChat": {
"enabled": false,
"infoMessage": "Connecting you with a human agent...",
"startMessage": "You are now chatting with our team.",
"endMessage": "Live chat has ended.",
"nameLabel": "Your name",
"emailLabel": "Email",
"schedule": "{\"monday\":{\"enabled\":true,\"from\":\"9:00\",\"to\":\"17:00\"},\"tuesday\":{\"enabled\":true,\"from\":\"9:00\",\"to\":\"17:00\"},\"wednesday\":{\"enabled\":true,\"from\":\"9:00\",\"to\":\"17:00\"},\"thursday\":{\"enabled\":true,\"from\":\"9:00\",\"to\":\"17:00\"},\"friday\":{\"enabled\":true,\"from\":\"9:00\",\"to\":\"17:00\"},\"saturday\":{\"enabled\":false,\"from\":\"9:00\",\"to\":\"17:00\"},\"sunday\":{\"enabled\":false,\"from\":\"9:00\",\"to\":\"17:00\"},\"timezone\":\"Europe/Warsaw\"}",
"outOfHoursMessage": "We are currently offline.",
"closeModalMessage": "End the live chat session?",
"closeModalConfirmLabel": "Yes, end",
"closeModalCancelLabel": "Cancel",
"closeModalTooltipText": "End live chat",
"operatorHasJoinedLabel": "An agent has joined.",
"operatorDidNotJoinInTimeLabel": "No agent available right now.",
"waitingForOperatorToJoinLabel": "Waiting for an agent...",
"waitingForOperatorSeconds": 60,
"redirectToHumanSupportForm": true
},
"consent": {
"newConversationRequirePolicyAccept": false,
"humanSupportRequirePolicyAccept": false,
"leadCollectionRequirePolicyAccept": true,
"liveChatRequirePolicyAccept": false,
"newConversationConsentDescription": "By starting a conversation you agree to our terms.",
"privacyPolicyConsentCheckboxLabel": "I have read and accepted the privacy policy."
},
"whiteLabel": {
"hideRoboAssistLogo": false,
"whitelabelLogoLink": "https://acme.com",
"assignToCustomDomain": false
},
"security": {
"allowedDomains": "acme.com,support.acme.com",
"spamFilterEnabled": true,
"talkMessagesRateLimit": 30,
"talkMessagesRateLimitDurationSeconds": 60,
"talkMessagesRateLimitHitMessage": "Please slow down."
},
"advanced": {
"model": "5-MINI",
"temperature": 0.4,
"chatContextSize": 16000,
"botMessagesLimit": 1000,
"internalLocale": "en_US",
"productsViewEnabled": false
}
}
Valideringsregler med egne feilmeldinger:
name- obligatorisk, maksimalt 150 tegnadvanced.temperature- mellom0.0og1.0chatMemory.summariesToKnowledgeRatio- heltall mellom10og90(prosent, trinn på10)appearance.launcherBottomMargin,appearance.launcherSideMargin- mellom0og500appearance.footerMarkdown- maksimalt 255 tegnhumanSupport.enabled=truekrever athumanSupport.emailer angittleadCollection.enabled=truekrever at minst én avleadCollection.emailEnabledellerleadCollection.phoneEnableder satt til true; kanalen som er aktivert, krever også etiketten sin, i tillegg tilleaveDetailsMessageogthankYouMessage- Begrensede felt (
advanced.chatContextSize,advanced.botMessagesLimitosv.) justeres automatisk ned til grensene for kontoen din
Felt med verdien null på serveren utelates fra JSON-brødteksten - kun felt med verdier som ikke er null, overføres.
Fullstendig svarkropp (201)
Samme struktur som forespørselen, i tillegg til den skrivebeskyttede meta-blokken og engangsnøkkelen apiKey på toppnivå. Skrivebeskyttede filadresser (appearance.avatarUrl, whiteLabel.whitelabelLogoUrl) fylles ut av serveren når de tilhørende multipart-delene ble lastet opp.
{
"name": "Helpdesk Bot",
"role": {
"rawPrompt": "You are a friendly support assistant for Acme Inc.",
"role": "CUSTOMER_SUPPORT",
"language": "English",
"responseLength": "Normal",
"websiteAddress": "https://acme.com",
"companyDescription": "Acme sells industrial widgets."
},
"conversation": {
"welcomeMessage": "Hi! How can I help today?",
"queryRefinementEnabled": true,
"conversationContinuityEnabled": true,
"conversationRatingEnabled": true,
"positiveRatingTooltip": "Helpful",
"negativeRatingTooltip": "Not helpful",
"suggestedQuestions": "What are your hours?\nHow do I cancel?\nWhere is my order?",
"dynamicSuggestedFollowups": true,
"dynamicFollowupsAutoIcons": true
},
"chatMemory": {
"enabled": true,
"summaryConversationsEnabled": true,
"conversationSummaryPrompt": "Summarize this conversation in 3 sentences.",
"clientSummaryPrompt": "Summarize what we know about this customer.",
"clientSummaryPromptType": "DEFAULT",
"conversationSummaryPromptType": "DEFAULT",
"summariesToKnowledgeRatio": 50
},
"appearance": {
"launcherColor": "#1A73E8",
"headerColor": "#1A73E8",
"titleColor": "#FFFFFF",
"subtitleColor": "#FFFFFF",
"clientMessageBubbleColor": "#000000",
"clientMessageTextColor": "#FFFFFF",
"responseMessageBubbleColor": "#F4F4F4",
"responseMessageTextColor": "#000000",
"chatSubheader": "AI support assistant",
"senderPlaceholder": "Type a message...",
"resetConversationTooltip": "Restart conversation",
"chatAlignment": "right",
"launcherBottomMargin": 20,
"launcherSideMargin": 20,
"displayShadow": true,
"customCss": ".rcw-conversation-container { border-radius: 16px; }",
"chatMessageLinkTarget": "_blank",
"minimizedDisplayMode": "icon",
"chatDesktopWidthPx": 400,
"chatDesktopHeightPx": 600,
"chatMobileSizePercent": 100,
"messageFontSize": 14,
"showChatbotBubblesDesktop": true,
"showChatbotBubblesMobile": false,
"chatbotBubblesDelaySeconds": 5,
"welcomeScreenEnabled": false,
"welcomeScreenQuestionsLabel": "Quick start",
"welcomeScreenHideHumanContactForm": false,
"welcomeScreenHideLiveChat": false,
"headerActionsLayout": "DROPDOWN",
"stackSuggestedQuestions": false,
"suggestedQuestionsFontSize": 14,
"suggestedQuestionsTextColor": "#000000",
"suggestedQuestionsBackgroundColor": "#F4F4F4",
"autoOpenChat": false,
"autoOpenChatOnMobiles": false,
"autoOpenChatDelay": false,
"autoOpenChatDelaySeconds": 5,
"simulateHumanTyping": true,
"simulateHumanTypingDelay": 5,
"footerMarkdown": "Powered by Acme",
"avatarUrl": "https://api.chatlab.com/aichat/content/avatar_a8f3b2c1_2026060110.png"
},
"humanSupport": {
"enabled": true,
"email": "support@acme.com",
"dialogMessage": "Leave us a message and we will get back to you.",
"thankYouMessage": "Thanks - we received your message.",
"emailMessageSubjectTemplate": "[Acme support] New message from {customerName}",
"emailMessageContentTemplate": "{message}\n\n - \n{conversationTranscript}",
"emailPlaceholder": "your@email.com",
"messagePlaceholder": "How can we help?",
"emailWithConversationContent": true
},
"leadCollection": {
"enabled": true,
"nameEnabled": true,
"nameLabel": "Your name",
"emailEnabled": true,
"emailLabel": "Email",
"phoneEnabled": false,
"phoneLabel": "Phone",
"leaveDetailsMessage": "Please leave your details and we will get in touch.",
"thankYouMessage": "Thanks - we will be in touch shortly.",
"requireBeforeNewConversation": false,
"emailNotificationEnabled": true,
"emailNotificationAddress": "leads@acme.com",
"emailWithConversationContent": true
},
"liveChat": {
"enabled": false,
"infoMessage": "Connecting you with a human agent...",
"startMessage": "You are now chatting with our team.",
"endMessage": "Live chat has ended.",
"nameLabel": "Your name",
"emailLabel": "Email",
"schedule": "{\"monday\":{\"enabled\":true,\"from\":\"9:00\",\"to\":\"17:00\"},\"tuesday\":{\"enabled\":true,\"from\":\"9:00\",\"to\":\"17:00\"},\"wednesday\":{\"enabled\":true,\"from\":\"9:00\",\"to\":\"17:00\"},\"thursday\":{\"enabled\":true,\"from\":\"9:00\",\"to\":\"17:00\"},\"friday\":{\"enabled\":true,\"from\":\"9:00\",\"to\":\"17:00\"},\"saturday\":{\"enabled\":false,\"from\":\"9:00\",\"to\":\"17:00\"},\"sunday\":{\"enabled\":false,\"from\":\"9:00\",\"to\":\"17:00\"},\"timezone\":\"Europe/Warsaw\"}",
"outOfHoursMessage": "We are currently offline.",
"closeModalMessage": "End the live chat session?",
"closeModalConfirmLabel": "Yes, end",
"closeModalCancelLabel": "Cancel",
"closeModalTooltipText": "End live chat",
"operatorHasJoinedLabel": "An agent has joined.",
"operatorDidNotJoinInTimeLabel": "No agent available right now.",
"waitingForOperatorToJoinLabel": "Waiting for an agent...",
"waitingForOperatorSeconds": 60,
"redirectToHumanSupportForm": true
},
"consent": {
"newConversationRequirePolicyAccept": false,
"humanSupportRequirePolicyAccept": false,
"leadCollectionRequirePolicyAccept": true,
"liveChatRequirePolicyAccept": false,
"newConversationConsentDescription": "By starting a conversation you agree to our terms.",
"privacyPolicyConsentCheckboxLabel": "I have read and accepted the privacy policy."
},
"whiteLabel": {
"hideRoboAssistLogo": false,
"whitelabelLogoLink": "https://acme.com",
"assignToCustomDomain": false,
"whitelabelLogoUrl": "https://api.chatlab.com/aichat/content/custom_logo_4287_2026060110.png"
},
"security": {
"allowedDomains": "acme.com,support.acme.com",
"spamFilterEnabled": true,
"talkMessagesRateLimit": 30,
"talkMessagesRateLimitDurationSeconds": 60,
"talkMessagesRateLimitHitMessage": "Please slow down."
},
"advanced": {
"model": "5-MINI",
"temperature": 0.4,
"chatContextSize": 16000,
"botMessagesLimit": 1000,
"internalLocale": "en_US",
"productsViewEnabled": false
},
"meta": {
"id": 4287,
"createdAt": "2026-06-01T10:11:02Z",
"updatedAt": "2026-06-01T10:11:02Z"
},
"apiKey": "ck_freshly_minted_bot_talk_key_here"
}
Feltet apiKey vises kun ved opprettelse - det er den nyopprettede Bot Talk-nøkkelen knyttet til den nye boten. Klarteksten vises kun én gang og kan ikke hentes frem igjen fra API-et senere; ta vare på den på din side med en gang.
Respons-headeren Location inneholder URL-en til den nye boten (/v1/management/bots/{id}).
Curl-eksempler
Modus A - ren JSON (enklest):
curl -X POST https://api.chatlab.com/aichat/v1/management/bots \
-H "Authorization: Bearer mk_..." \
-H "Content-Type: application/json" \
-d '{"name":"Helpdesk Bot","conversation":{"welcomeMessage":"Hi!"}}'
Modus B - multipart med profilbilde:
curl -X POST https://api.chatlab.com/aichat/v1/management/bots \
-H "Authorization: Bearer mk_..." \
-F 'data={"name":"Helpdesk Bot","conversation":{"welcomeMessage":"Hi!"}};type=application/json' \
-F 'avatar=@./avatar.png'
GET /v1/management/bots/{bot_id}
Returner den gjeldende konfigurasjonen for en bot du eier.
Curl-eksempel
curl https://api.chatlab.com/aichat/v1/management/bots/4287 \
-H "Authorization: Bearer mk_..."
Fullstendig svarkropp (200)
Samme struktur som svaret for POST, minus engangsnøkkelen apiKey. meta-blokken er inkludert. Returnerer 404 not_found_error hvis boten ikke finnes eller ikke tilhører kontoen din.
Gjeldende profilbilde og White Label-logo vises som fullstendige, skrivebeskyttede URL-er (appearance.avatarUrl, whiteLabel.whitelabelLogoUrl) - forankret i samme protokoll + vert + kontekststi som behandlet denne forespørselen. Hent filene ved å sende en GET-forespørsel direkte til disse nettadressene; for å erstatte en av filene laster du opp en ny via multipart-delen avatar / whitelabel_logo ved PATCH. Disse URL-feltene ignoreres hvis de sendes med i en forespørselsbrødtekst.
{
"name": "Helpdesk Bot",
"role": {
"rawPrompt": "You are a friendly support assistant for Acme Inc.",
"role": "CUSTOMER_SUPPORT",
"language": "English",
"responseLength": "Normal",
"websiteAddress": "https://acme.com",
"companyDescription": "Acme sells industrial widgets."
},
"conversation": {
"welcomeMessage": "Hi! How can I help today?",
"queryRefinementEnabled": true,
"conversationContinuityEnabled": true,
"conversationRatingEnabled": true,
"positiveRatingTooltip": "Helpful",
"negativeRatingTooltip": "Not helpful",
"suggestedQuestions": "What are your hours?\nHow do I cancel?\nWhere is my order?",
"dynamicSuggestedFollowups": true,
"dynamicFollowupsAutoIcons": true
},
"chatMemory": {
"enabled": true,
"summaryConversationsEnabled": true,
"conversationSummaryPrompt": "Summarize this conversation in 3 sentences.",
"clientSummaryPrompt": "Summarize what we know about this customer.",
"clientSummaryPromptType": "DEFAULT",
"conversationSummaryPromptType": "DEFAULT",
"summariesToKnowledgeRatio": 50
},
"appearance": {
"launcherColor": "#1A73E8",
"headerColor": "#1A73E8",
"titleColor": "#FFFFFF",
"subtitleColor": "#FFFFFF",
"clientMessageBubbleColor": "#000000",
"clientMessageTextColor": "#FFFFFF",
"responseMessageBubbleColor": "#F4F4F4",
"responseMessageTextColor": "#000000",
"chatSubheader": "AI support assistant",
"senderPlaceholder": "Type a message...",
"resetConversationTooltip": "Restart conversation",
"chatAlignment": "right",
"launcherBottomMargin": 20,
"launcherSideMargin": 20,
"displayShadow": true,
"customCss": ".rcw-conversation-container { border-radius: 16px; }",
"chatMessageLinkTarget": "_blank",
"minimizedDisplayMode": "icon",
"chatDesktopWidthPx": 400,
"chatDesktopHeightPx": 600,
"chatMobileSizePercent": 100,
"messageFontSize": 14,
"showChatbotBubblesDesktop": true,
"showChatbotBubblesMobile": false,
"chatbotBubblesDelaySeconds": 5,
"welcomeScreenEnabled": false,
"welcomeScreenQuestionsLabel": "Quick start",
"welcomeScreenHideHumanContactForm": false,
"welcomeScreenHideLiveChat": false,
"headerActionsLayout": "DROPDOWN",
"stackSuggestedQuestions": false,
"suggestedQuestionsFontSize": 14,
"suggestedQuestionsTextColor": "#000000",
"suggestedQuestionsBackgroundColor": "#F4F4F4",
"autoOpenChat": false,
"autoOpenChatOnMobiles": false,
"autoOpenChatDelay": false,
"autoOpenChatDelaySeconds": 5,
"simulateHumanTyping": true,
"simulateHumanTypingDelay": 5,
"footerMarkdown": "Powered by Acme",
"avatarUrl": "https://api.chatlab.com/aichat/content/avatar_a8f3b2c1_2026060110.png"
},
"humanSupport": {
"enabled": true,
"email": "support@acme.com",
"dialogMessage": "Leave us a message and we will get back to you.",
"thankYouMessage": "Thanks - we received your message.",
"emailMessageSubjectTemplate": "[Acme support] New message from {customerName}",
"emailMessageContentTemplate": "{message}\n\n - \n{conversationTranscript}",
"emailPlaceholder": "your@email.com",
"messagePlaceholder": "How can we help?",
"emailWithConversationContent": true
},
"leadCollection": {
"enabled": true,
"nameEnabled": true,
"nameLabel": "Your name",
"emailEnabled": true,
"emailLabel": "Email",
"phoneEnabled": false,
"phoneLabel": "Phone",
"leaveDetailsMessage": "Please leave your details and we will get in touch.",
"thankYouMessage": "Thanks - we will be in touch shortly.",
"requireBeforeNewConversation": false,
"emailNotificationEnabled": true,
"emailNotificationAddress": "leads@acme.com",
"emailWithConversationContent": true
},
"liveChat": {
"enabled": false,
"infoMessage": "Connecting you with a human agent...",
"startMessage": "You are now chatting with our team.",
"endMessage": "Live chat has ended.",
"nameLabel": "Your name",
"emailLabel": "Email",
"schedule": "{\"monday\":{\"enabled\":true,\"from\":\"9:00\",\"to\":\"17:00\"},\"tuesday\":{\"enabled\":true,\"from\":\"9:00\",\"to\":\"17:00\"},\"wednesday\":{\"enabled\":true,\"from\":\"9:00\",\"to\":\"17:00\"},\"thursday\":{\"enabled\":true,\"from\":\"9:00\",\"to\":\"17:00\"},\"friday\":{\"enabled\":true,\"from\":\"9:00\",\"to\":\"17:00\"},\"saturday\":{\"enabled\":false,\"from\":\"9:00\",\"to\":\"17:00\"},\"sunday\":{\"enabled\":false,\"from\":\"9:00\",\"to\":\"17:00\"},\"timezone\":\"Europe/Warsaw\"}",
"outOfHoursMessage": "We are currently offline.",
"closeModalMessage": "End the live chat session?",
"closeModalConfirmLabel": "Yes, end",
"closeModalCancelLabel": "Cancel",
"closeModalTooltipText": "End live chat",
"operatorHasJoinedLabel": "An agent has joined.",
"operatorDidNotJoinInTimeLabel": "No agent available right now.",
"waitingForOperatorToJoinLabel": "Waiting for an agent...",
"waitingForOperatorSeconds": 60,
"redirectToHumanSupportForm": true
},
"consent": {
"newConversationRequirePolicyAccept": false,
"humanSupportRequirePolicyAccept": false,
"leadCollectionRequirePolicyAccept": true,
"liveChatRequirePolicyAccept": false,
"newConversationConsentDescription": "By starting a conversation you agree to our terms.",
"privacyPolicyConsentCheckboxLabel": "I have read and accepted the privacy policy."
},
"whiteLabel": {
"hideRoboAssistLogo": false,
"whitelabelLogoLink": "https://acme.com",
"assignToCustomDomain": false,
"whitelabelLogoUrl": "https://api.chatlab.com/aichat/content/custom_logo_4287_2026060110.png"
},
"security": {
"allowedDomains": "acme.com,support.acme.com",
"spamFilterEnabled": true,
"talkMessagesRateLimit": 30,
"talkMessagesRateLimitDurationSeconds": 60,
"talkMessagesRateLimitHitMessage": "Please slow down."
},
"advanced": {
"model": "5-MINI",
"temperature": 0.4,
"chatContextSize": 16000,
"botMessagesLimit": 1000,
"internalLocale": "en_US",
"productsViewEnabled": false
},
"meta": {
"id": 4287,
"createdAt": "2026-06-01T10:11:02Z",
"updatedAt": "2026-06-01T11:02:19Z"
}
}
Klon en bot
Forespørselskroppen til POST /v1/management/bots og responskroppen til GET /v1/management/bots/{bot_id} deler samme struktur, så kloning er en tretrinns prosess: GET kildeboten, fjern serverstyrte identitetsfelter, og POST resultatet.
1. GET kildeboten.
curl https://api.chatlab.com/aichat/v1/management/bots/4287 \
-H "Authorization: Bearer mk_..." \
-o source-bot.json
2. Fjern meta-blokken på øverste nivå. meta-objektet (id, createdAt, updatedAt) styres av serveren og er skrivebeskyttet - å la det ligge i POST-kroppen gjør ingen skade (serveren ignorerer det), men å fjerne det gjør intensjonen tydelig og holder nyttelasten ren. Rediger eventuelt name slik at klonen skiller seg fra kilden.
jq 'del(.meta) | .name = "Helpdesk Bot (clone)"' source-bot.json > clone-body.json
3. POST den rensede kroppen for å opprette klonen. Se referansen for POST /v1/management/bots ovenfor for fullstendig form på kroppen og valideringsregler.
curl -X POST https://api.chatlab.com/aichat/v1/management/bots \
-H "Authorization: Bearer mk_..." \
-H "Content-Type: application/json" \
-d @clone-body.json
Responsen inneholder den nye botens meta.id pluss en nygenerert apiKey (Bot Talk-nøkkelen for klonen). apiKey returneres i klartekst kun i denne opprettelsesresponsen - kopier den før du forkaster responskroppen; den kan ikke hentes frem senere.
To forbehold:
- Filer klones ikke.
appearance.avatarUrlogwhiteLabel.whitelabelLogoUrler skrivebeskyttede og peker til kildebotens filer. Hvis du trenger samme avatar eller White Label-logo på klonen, laster du ned filene fra kildeadressene og laster dem opp som multipart-deler foravatar/whitelabel_logo- enten ved opprettelse med POST (Modus B) eller via en oppfølgende PATCH. - Bot Talk-nøkler klones ikke. Hver bot har sitt eget utvalg av Bot Talk-nøkler. Den ene
apiKey-verdien som returneres fra opprettelses-POST-kallet er den eneste som genereres automatisk; opprett flere nøkler fra botens API (API)-fane ved behov.
PATCH /v1/management/bots/{bot_id}
Oppdater ett eller flere felter på en bot du eier. Kun seksjoner/felter som er til stede i JSON-koden endres; alt som utelates (eller sendes som null) forblir urørt. Semantikk for delvis oppdatering gjelder per felt innenfor en innsendt seksjon.
To likeverdige Content-Type-hoder godtas (samme som POST):
Modus A - ren JSON (anbefales når du kun oppdaterer innstillinger):
Content-Type: application/json- Forespørselskroppen er selve oppdaterings-JSON-en (uten noen
data-innpakning)
Modus B - multipart/form-data (brukes ved opplasting av filer):
dataJSON-del (valgfri) - oppdateringsdataene. Sendes kun dersom du vil endre felter. Utelat den helt dersom du bare vil laste opp en avatar eller logo.avatarfildel (valgfri) - erstatter avatarenwhitelabel_logofildel (valgfri) - erstatter White Label-logoen (gjelder kun dersom kontoen din inkluderer White Label)
Alle tre deler er valgfrie ved PATCH, men minst én må være til stede for at kallet skal ha noen funksjon.
Fullstendig forespørselskropp (maksimalt omfang)
Alle felter som godtas av POST /v1/management/bots kan også sendes her. Eksempelet nedenfor viser det maksimale omfanget; i praksis sender du kun nøklene du ønsker å endre (se "Minimal delvis oppdatering" lenger ned) - hver nøkkel som utelates (eller sendes som null), lar den lagrede verdien forbli urørt.
{
"name": "Helpdesk Bot",
"role": {
"rawPrompt": "You are a friendly support assistant for Acme Inc. Be concise.",
"role": "CUSTOMER_SUPPORT",
"language": "English",
"responseLength": "Concise",
"websiteAddress": "https://acme.com",
"companyDescription": "Acme sells industrial widgets."
},
"conversation": {
"welcomeMessage": "Hello there!",
"queryRefinementEnabled": true,
"conversationContinuityEnabled": true,
"conversationRatingEnabled": true,
"positiveRatingTooltip": "Helpful",
"negativeRatingTooltip": "Not helpful",
"suggestedQuestions": "Pricing\nShipping times\nReturns policy",
"dynamicSuggestedFollowups": true,
"dynamicFollowupsAutoIcons": true
},
"chatMemory": {
"enabled": true,
"summaryConversationsEnabled": true,
"conversationSummaryPrompt": "Summarize the conversation in 3 sentences.",
"clientSummaryPrompt": "Summarize what we know about the customer.",
"clientSummaryPromptType": "DEFAULT",
"conversationSummaryPromptType": "DEFAULT",
"summariesToKnowledgeRatio": 50
},
"appearance": {
"launcherColor": "#abcdef",
"headerColor": "#abcdef",
"titleColor": "#FFFFFF",
"subtitleColor": "#FFFFFF",
"clientMessageBubbleColor": "#000000",
"clientMessageTextColor": "#FFFFFF",
"responseMessageBubbleColor": "#F4F4F4",
"responseMessageTextColor": "#000000",
"chatSubheader": "AI assistant",
"senderPlaceholder": "Type a message",
"resetConversationTooltip": "Restart conversation",
"chatAlignment": "right",
"launcherBottomMargin": 20,
"launcherSideMargin": 20,
"displayShadow": true,
"customCss": ".rcw-conversation-container { border-radius: 16px; }",
"chatMessageLinkTarget": "_blank",
"minimizedDisplayMode": "icon",
"chatDesktopWidthPx": 400,
"chatDesktopHeightPx": 600,
"chatMobileSizePercent": 100,
"messageFontSize": 14,
"showChatbotBubblesDesktop": true,
"showChatbotBubblesMobile": false,
"chatbotBubblesDelaySeconds": 5,
"welcomeScreenEnabled": false,
"welcomeScreenQuestionsLabel": "Quick start",
"welcomeScreenHideHumanContactForm": false,
"welcomeScreenHideLiveChat": false,
"headerActionsLayout": "DROPDOWN",
"stackSuggestedQuestions": false,
"suggestedQuestionsFontSize": 14,
"suggestedQuestionsTextColor": "#000000",
"suggestedQuestionsBackgroundColor": "#F4F4F4",
"autoOpenChat": false,
"autoOpenChatOnMobiles": false,
"autoOpenChatDelay": false,
"autoOpenChatDelaySeconds": 5,
"simulateHumanTyping": true,
"simulateHumanTypingDelay": 5,
"footerMarkdown": "Powered by Acme"
},
"humanSupport": {
"enabled": true,
"email": "support@acme.com",
"dialogMessage": "Leave us a message and we'll get back to you.",
"thankYouMessage": "Thanks!",
"emailMessageSubjectTemplate": "[Acme support] New message from {customerName}",
"emailMessageContentTemplate": "{message}\n\n - \n{conversationTranscript}",
"emailPlaceholder": "your@email.com",
"messagePlaceholder": "How can we help?",
"emailWithConversationContent": true
},
"leadCollection": {
"enabled": true,
"nameEnabled": true,
"nameLabel": "Your name",
"emailEnabled": true,
"emailLabel": "Email",
"phoneEnabled": false,
"phoneLabel": "Phone",
"leaveDetailsMessage": "Please leave your details.",
"thankYouMessage": "Thanks!",
"requireBeforeNewConversation": true,
"emailNotificationEnabled": true,
"emailNotificationAddress": "leads@acme.com",
"emailWithConversationContent": true
},
"liveChat": {
"enabled": false,
"infoMessage": "Connecting you with a human agent...",
"startMessage": "You are now chatting with our team.",
"endMessage": "Live chat has ended.",
"nameLabel": "Your name",
"emailLabel": "Email",
"schedule": "{\"monday\":{\"enabled\":true,\"from\":\"9:00\",\"to\":\"17:00\"},\"tuesday\":{\"enabled\":true,\"from\":\"9:00\",\"to\":\"17:00\"},\"wednesday\":{\"enabled\":true,\"from\":\"9:00\",\"to\":\"17:00\"},\"thursday\":{\"enabled\":true,\"from\":\"9:00\",\"to\":\"17:00\"},\"friday\":{\"enabled\":true,\"from\":\"9:00\",\"to\":\"17:00\"},\"saturday\":{\"enabled\":false,\"from\":\"9:00\",\"to\":\"17:00\"},\"sunday\":{\"enabled\":false,\"from\":\"9:00\",\"to\":\"17:00\"},\"timezone\":\"Europe/Warsaw\"}",
"outOfHoursMessage": "We are currently offline.",
"closeModalMessage": "End the live chat session?",
"closeModalConfirmLabel": "Yes, end",
"closeModalCancelLabel": "Cancel",
"closeModalTooltipText": "End live chat",
"operatorHasJoinedLabel": "An agent has joined.",
"operatorDidNotJoinInTimeLabel": "No agent available right now.",
"waitingForOperatorToJoinLabel": "Waiting for an agent...",
"waitingForOperatorSeconds": 60,
"redirectToHumanSupportForm": true
},
"consent": {
"newConversationRequirePolicyAccept": false,
"humanSupportRequirePolicyAccept": false,
"leadCollectionRequirePolicyAccept": true,
"liveChatRequirePolicyAccept": false,
"newConversationConsentDescription": "By starting a conversation you agree to our terms.",
"privacyPolicyConsentCheckboxLabel": "I have read and accepted the privacy policy."
},
"whiteLabel": {
"hideRoboAssistLogo": false,
"whitelabelLogoLink": "https://acme.com",
"assignToCustomDomain": false
},
"security": {
"allowedDomains": "acme.com,support.acme.com",
"spamFilterEnabled": true,
"talkMessagesRateLimit": 30,
"talkMessagesRateLimitDurationSeconds": 60,
"talkMessagesRateLimitHitMessage": "Please slow down."
},
"advanced": {
"model": "5",
"temperature": 0.2,
"chatContextSize": 32000,
"botMessagesLimit": 2000,
"internalLocale": "en_US",
"productsViewEnabled": false
}
}
Minimal delvis oppdatering
Utfør en PATCH på et enkelt felt ved å sende nøyaktig de nøklene du vil ha endret - alt annet beholdes.
{
"appearance": {
"launcherColor": "#abcdef"
}
}
Curl-eksempler
Modus A - ren JSON (enklest):
curl -X PATCH https://api.chatlab.com/aichat/v1/management/bots/4287 \
-H "Authorization: Bearer mk_..." \
-H "Content-Type: application/json" \
-d '{"appearance":{"launcherColor":"#abcdef"}}'
Modus B - multipart (ved utskifting av avatar / logo):
curl -X PATCH https://api.chatlab.com/aichat/v1/management/bots/4287 \
-H "Authorization: Bearer mk_..." \
-F 'data={"appearance":{"launcherColor":"#abcdef"}};type=application/json' \
-F 'avatar=@./new-avatar.png'
Modus B - erstatte kun avataren (ingen feltendringer):
curl -X PATCH https://api.chatlab.com/aichat/v1/management/bots/4287 \
-H "Authorization: Bearer mk_..." \
-F 'avatar=@./new-avatar.png'
Responskropp (200)
Samme struktur som GET /v1/management/bots/{bot_id} - botens fullstendige konfigurasjon etter at oppdateringen ble utført, inkludert meta-blokken. Ingen apiKey-felter. Returnerer 404 not_found_error dersom boten ikke finnes eller ikke tilhører kontoen din.
Eksempelet nedenfor viser responsen etter at oppdateringen fra Fullstendig forespørselskropp (maksimalt omfang) over er utført på boten fra GET-eksempelet - endrede felter viser de nye verdiene, urørte felter beholdes, og meta.updatedAt oppdateres.
{
"name": "Helpdesk Bot",
"role": {
"rawPrompt": "You are a friendly support assistant for Acme Inc. Be concise.",
"role": "CUSTOMER_SUPPORT",
"language": "English",
"responseLength": "Concise",
"websiteAddress": "https://acme.com",
"companyDescription": "Acme sells industrial widgets."
},
"conversation": {
"welcomeMessage": "Hello there!",
"queryRefinementEnabled": true,
"conversationContinuityEnabled": true,
"conversationRatingEnabled": true,
"positiveRatingTooltip": "Helpful",
"negativeRatingTooltip": "Not helpful",
"suggestedQuestions": "Pricing\nShipping times\nReturns policy",
"dynamicSuggestedFollowups": true,
"dynamicFollowupsAutoIcons": true
},
"chatMemory": {
"enabled": true,
"summaryConversationsEnabled": true,
"conversationSummaryPrompt": "Summarize the conversation in 3 sentences.",
"clientSummaryPrompt": "Summarize what we know about the customer.",
"clientSummaryPromptType": "DEFAULT",
"conversationSummaryPromptType": "DEFAULT",
"summariesToKnowledgeRatio": 50
},
"appearance": {
"launcherColor": "#abcdef",
"headerColor": "#abcdef",
"titleColor": "#FFFFFF",
"subtitleColor": "#FFFFFF",
"clientMessageBubbleColor": "#000000",
"clientMessageTextColor": "#FFFFFF",
"responseMessageBubbleColor": "#F4F4F4",
"responseMessageTextColor": "#000000",
"chatSubheader": "AI assistant",
"senderPlaceholder": "Type a message",
"resetConversationTooltip": "Restart conversation",
"chatAlignment": "right",
"launcherBottomMargin": 20,
"launcherSideMargin": 20,
"displayShadow": true,
"customCss": ".rcw-conversation-container { border-radius: 16px; }",
"chatMessageLinkTarget": "_blank",
"minimizedDisplayMode": "icon",
"chatDesktopWidthPx": 400,
"chatDesktopHeightPx": 600,
"chatMobileSizePercent": 100,
"messageFontSize": 14,
"showChatbotBubblesDesktop": true,
"showChatbotBubblesMobile": false,
"chatbotBubblesDelaySeconds": 5,
"welcomeScreenEnabled": false,
"welcomeScreenQuestionsLabel": "Quick start",
"welcomeScreenHideHumanContactForm": false,
"welcomeScreenHideLiveChat": false,
"headerActionsLayout": "DROPDOWN",
"stackSuggestedQuestions": false,
"suggestedQuestionsFontSize": 14,
"suggestedQuestionsTextColor": "#000000",
"suggestedQuestionsBackgroundColor": "#F4F4F4",
"autoOpenChat": false,
"autoOpenChatOnMobiles": false,
"autoOpenChatDelay": false,
"autoOpenChatDelaySeconds": 5,
"simulateHumanTyping": true,
"simulateHumanTypingDelay": 5,
"footerMarkdown": "Powered by Acme",
"avatarUrl": "https://api.chatlab.com/aichat/content/avatar_a8f3b2c1_2026060110.png"
},
"humanSupport": {
"enabled": true,
"email": "support@acme.com",
"dialogMessage": "Leave us a message and we'll get back to you.",
"thankYouMessage": "Thanks!",
"emailMessageSubjectTemplate": "[Acme support] New message from {customerName}",
"emailMessageContentTemplate": "{message}\n\n - \n{conversationTranscript}",
"emailPlaceholder": "your@email.com",
"messagePlaceholder": "How can we help?",
"emailWithConversationContent": true
},
"leadCollection": {
"enabled": true,
"nameEnabled": true,
"nameLabel": "Your name",
"emailEnabled": true,
"emailLabel": "Email",
"phoneEnabled": false,
"phoneLabel": "Phone",
"leaveDetailsMessage": "Please leave your details.",
"thankYouMessage": "Thanks!",
"requireBeforeNewConversation": true,
"emailNotificationEnabled": true,
"emailNotificationAddress": "leads@acme.com",
"emailWithConversationContent": true
},
"liveChat": {
"enabled": false,
"infoMessage": "Connecting you with a human agent...",
"startMessage": "You are now chatting with our team.",
"endMessage": "Live chat has ended.",
"nameLabel": "Your name",
"emailLabel": "Email",
"schedule": "{\"monday\":{\"enabled\":true,\"from\":\"9:00\",\"to\":\"17:00\"},\"tuesday\":{\"enabled\":true,\"from\":\"9:00\",\"to\":\"17:00\"},\"wednesday\":{\"enabled\":true,\"from\":\"9:00\",\"to\":\"17:00\"},\"thursday\":{\"enabled\":true,\"from\":\"9:00\",\"to\":\"17:00\"},\"friday\":{\"enabled\":true,\"from\":\"9:00\",\"to\":\"17:00\"},\"saturday\":{\"enabled\":false,\"from\":\"9:00\",\"to\":\"17:00\"},\"sunday\":{\"enabled\":false,\"from\":\"9:00\",\"to\":\"17:00\"},\"timezone\":\"Europe/Warsaw\"}",
"outOfHoursMessage": "We are currently offline.",
"closeModalMessage": "End the live chat session?",
"closeModalConfirmLabel": "Yes, end",
"closeModalCancelLabel": "Cancel",
"closeModalTooltipText": "End live chat",
"operatorHasJoinedLabel": "An agent has joined.",
"operatorDidNotJoinInTimeLabel": "No agent available right now.",
"waitingForOperatorToJoinLabel": "Waiting for an agent...",
"waitingForOperatorSeconds": 60,
"redirectToHumanSupportForm": true
},
"consent": {
"newConversationRequirePolicyAccept": false,
"humanSupportRequirePolicyAccept": false,
"leadCollectionRequirePolicyAccept": true,
"liveChatRequirePolicyAccept": false,
"newConversationConsentDescription": "By starting a conversation you agree to our terms.",
"privacyPolicyConsentCheckboxLabel": "I have read and accepted the privacy policy."
},
"whiteLabel": {
"hideRoboAssistLogo": false,
"whitelabelLogoLink": "https://acme.com",
"assignToCustomDomain": false,
"whitelabelLogoUrl": "https://api.chatlab.com/aichat/content/custom_logo_4287_2026060110.png"
},
"security": {
"allowedDomains": "acme.com,support.acme.com",
"spamFilterEnabled": true,
"talkMessagesRateLimit": 30,
"talkMessagesRateLimitDurationSeconds": 60,
"talkMessagesRateLimitHitMessage": "Please slow down."
},
"advanced": {
"model": "5",
"temperature": 0.2,
"chatContextSize": 32000,
"botMessagesLimit": 2000,
"internalLocale": "en_US",
"productsViewEnabled": false
},
"meta": {
"id": 4287,
"createdAt": "2026-06-01T10:11:02Z",
"updatedAt": "2026-06-01T12:45:08Z"
}
}
GET /v1/usage
Les av gjeldende abonnementsforbruk for kontoen som eier Management-nøkkelen.
Responskropp (200)
{
"subscriptionType": "standard",
"messages": {"used": 4123, "limit": 11000, "remaining": 6877},
"bots": {"used": 3, "limit": 5, "remaining": 2}
}
subscriptionTypeer en identifikator med små bokstaver for kontoens nåværende plan (f.eks.standardi eksempelet). Planer hentes fra en dynamisk katalog, så det nøyaktige settet med identifikatorer kan endre seg over tid etter hvert som planer får nye navn eller legges til - behandle dette som en vilkårlig strengverdi, ikke en fast enum.messages.used/limit/remaininger meldingskreditter for den gjeldende faktureringsperioden.bots.used/limit/remainingteller aktive boter opp mot kontoens bot-grense.
Rate limit-headere
Svar som når rate limit-stadiet (det vil si at autentisering og IP-hviteliste er bestått) inneholder:
X-RateLimit-Limit: 10
X-RateLimit-Remaining: 7
X-RateLimit-Reset: 1715430000
X-RateLimit-Limit- grensen per nøkkel som faktisk ble brukt på dette kallet (10 som standard, eller din konfigurerterateLimitPerMinutehvis den er lavere).X-RateLimit-Remaining- antall tokens igjen i bøtten rett etter dette kallet.X-RateLimit-Reset- Unix epoch-sekunder når 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-svar er Retry-After også angitt, uttrykt i hele sekunder frem til minst én token frigjøres.
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-sjekker er vellykkede.
Feilformat
Samme konvolutt som Bot Talk API:
{
"error": {
"type": "permission_error",
"code": "key_type_not_allowed",
"message": "This endpoint requires a MANAGEMENT API key.",
"param": null
}
}
Valideringsfeil bruker code: "invalid_parameter" og setter feltstien som feilet foran meldingen, slik at delen som feiler er enkel å oppdage:
{
"error": {
"type": "invalid_request_error",
"code": "invalid_parameter",
"message": "humanSupport.email Human support email is required when humanSupport.enabled=true"
}
}
Ugyldige verdier for opplisting / lukkede sett med felter (f.eks. chatMemory.clientSummaryPromptType = "BOGUS") inkluderer feltstien, den avviste verdien og listen over tillatte verdier:
{
"error": {
"type": "invalid_request_error",
"code": "invalid_parameter",
"message": "chatMemory.clientSummaryPromptType 'BOGUS' is not a valid value. Allowed: CUSTOM, DEFAULT"
}
}
Relatert
For samtale-endepunkter og SSE-strømming, se Bot Talk API.