Oversigt over Management API
Management API er beregnet til backoffice-arbejde, som ikke involverer afsendelse af chatbeskeder:
- opret en bot programmatisk med
POST /v1/management/bots - læs en specifik bot, du ejer, med
GET /v1/management/bots/{bot_id} - opdater en specifik bot med
PATCH /v1/management/bots/{bot_id} - aflæs forbrug af abonnement med
GET /v1/usage
Management-nøgler er knyttet til din konto og ikke til en bestemt bot. De holdes bevidst adskilt fra Bot Talk-nøgler, så en kompromitteret chatnøgle ikke kan ændre dine botter eller læse dine faktureringsdata.
Base-URL
https://api.chatlab.com/aichat
Alle endpoints i denne artikel er relative i forhold til denne base-URL.
Kom godt i gang
- Åbn administrationspanelet og gå til Account Settings > Management API (Kontoindstillinger > Management API).
- Klik på Create Management Key (Opret Management-nøgle), giv den et navn, angiv eventuelt IP-hvidliste og hastighedsgrænse (rate limit), og send derefter formularen.
- Kopiér hele nøglen fra bekræftelsesvinduet. Nøglen i klartekst vises kun én gang.
En nøgle ser ud som mk_abcdefghijklmnopqrstuvwxyz012345. Præfikset mk_ adskiller den fra Bot Talk-nøgler (ck_).
Godkendelse
Authorization: Bearer mk_abcdefghijklmnopqrstuvwxyz012345
Sender du en mk_-nøgle til /v1/chat (eller et hvilket som helst andet Bot Talk-endpoint), returneres 403 key_type_not_allowed. Sender du en ck_-nøgle til /v1/management/*, returneres den samme fejl.
Grænser
- Maks. 5 aktive Management API-nøgler pr. bruger
- Maks. 10 anmodninger i minuttet pr. nøgle (token bucket, kapacitet på 10, jævn genopfyldning med ~1 token for hver 6 sekunder). Kan konfigureres nedadgående ved oprettelse - sæt en lavere
rateLimitPerMinute, så falder grænsen, og genopfyldningshastigheden skaleres tilsvarende.
Tilladelser
Hver Management-nøgle bærer et vilkårligt undersæt af de tre nedenstående tilladelser. Mindst én skal vælges ved oprettelse; ellers afvises anmodningen med 400 invalid_request_error. Kaldes et endpoint med en nøgle, der mangler den påkrævede tilladelse, returneres 403 insufficient_permissions.
bot_read- påkrævet forGET /v1/management/bots/{bot_id}bot_management- påkrævet forPOST /v1/management/botsogPATCH /v1/management/bots/{bot_id}usage- påkrævet forGET /v1/usage
Body-struktur: indlejrede sektioner, der afspejler fanerne i administrationspanelet
POST og PATCH accepterer en JSON-body grupperet i 13 sektioner. Hver sektion svarer til en underfane i sidepanelet Bot Settings (Botindstillinger) i administrationspanelet, så JSON-nøglerne og de synlige faner passer sammen: Hvis du ændrer consent.humanSupportRequirePolicyAccept via API'et, vil du se den samme indstilling skifte på fanen Consent & Privacy (Samtykke og privatliv) i administrationspanelet.
role- bot-persona, rå prompt, svarlængde, sprog, website-/virksomhedskontekst (fanen Role & Behavior (Rolle og adfærd))conversation- velkomstbesked, forespørgselsforfinelse, samtalekontinuitet, vurderingsknap + værktøjstip, indhold af foreslåede spørgsmål + dynamisk opfølgning (fanen Chat Conversation (Chatsamtale))chatMemory- slå chathukommelse til/fra, opsummeringsprompts, konteksttildeling (fanen Summaries & Memory (Opsummeringer og hukommelse))appearance- farver, tekst, dimensioner, tilpasset CSS, velkomstskærm, styling af foreslåede spørgsmål, adfærd for automatisk åbning, simulering af menneskelig indtastning, sidefod-markdown (fanen Appearance (Udseende))humanSupport- kontaktformular til menneskelig support (fanen Human Contact Form (Menneskelig kontaktformular))leadCollection- formular til indsamling af leads (fanen Lead Collection (Lead-indsamling))liveChat- overdragelse til live chat (fanen Live Chat)consent- alle fire samtykkeindstillinger for privatlivspolitik samt teksten på samtykkeskærmen (fanen Consent & Privacy (Samtykke og privatliv))whiteLabel- skjul logo, tilpasset logolink, hosting på eget domæne (fanen Whitelabel)security- tilladte domæner, spamfilter, hastighedsgrænser for samtaler (fanen Security (Sikkerhed))voice- stemmeinput og stemmesamtaler: model, stemme, sprog, prompt, maksimal varighed (fanen Voice Conversation (Stemmesamtale))multilingual- flersproget tilstand, grundsprog, tilbudte sprog, håndtering af videnssprog (fanen Languages (Sprog))advanced- LLM-model, temperatur, kontekststørrelse, grænse for bot-beskeder, intern landestandard, Offer Cards (fanen Model & Advanced (Model og avanceret))
Kun name findes på øverste niveau, fordi det identificerer botten i stedet for at høre til en specifik fane.
Sidepanelet Bot Settings har i øjeblikket 15 underfaner, hvoraf de 13 svarer til sektionerne ovenfor. De to underfaner uden en tilsvarende sektion er Flow og Actions (Handlinger) - begge er beskrevet under "Uden for API'ets rækkevidde" nedenfor. De 13 faner, der matcher, 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.
Request body og response body deler den samme struktur. Responsen tilføjer to ekstra felter:
meta- skrivebeskyttet: bot-id og tidsstempler. Fjern dette for at gøre et GET-svar til en gyldig POST-body.apiKey- vises kun ved oprettelse - den nyoprettede Bot Talk API-nøgle til den nye bot.
To felter i den fælles struktur er skrivebeskyttede - de returneres i svaret, men ignoreres, hvis du forsøger at sende dem med i POST/PATCH:
appearance.avatarUrl- fuldt kvalificeret offentlig URL til bottens avatarbillede (f.eks.https://api.chatlab.com/aichat/content/avatar_xyz.png). Hent den direkte med GET for at downloade billeddataene. For at ændre det uploades en ny fil via multipart-delenavatar(se PATCH).whiteLabel.whitelabelLogoUrl- fuldt kvalificeret offentlig URL til header-logoet ved white label. Samme mønster somavatarUrl. For at ændre det uploades en ny fil via multipart-delenwhitelabel_logo(se PATCH).
Begge URL'er anvender den aktuelle anmodnings protokol + host + kontekststi, så på et tilpasset white-label-domæne returneres de med rod i dette domæne (f.eks. https://api.acme.com/aichat/content/...).
Send null for en sektion for at springe den over ved PATCH; send null for et felt i en sektion for at springe det enkelte felt over. null på feltniveau rydder aldrig en gemt værdi - det betyder blot "rør ikke".
Rolle og opbygning af prompt
Den system-prompt, som LLM'en rent faktisk modtager, opbygges på en af to måder afhængigt af role.role. Når du ved, hvilken gren du benytter, ved du også, hvilke felter der betyder noget, og hvilke der blot gemmes, men ignoreres.
Gren A - role.role er CUSTOMER_SUPPORT, SALES eller LEAD_COLLECTION_AGENT (skabelonbaseret)
Backend sammensætter prompten ud fra en indbygget skabelon og ignorerer role.rawPrompt fuldstændigt (værdien gemmes stadig på botten, men bruges ikke). Skabelonen indeholder:
role.role- rollebetegnelse (f.eks. "Customer Support") og rollespecifikke instruktioner, der tilføjes automatiskname- bottens navn, som indsættes i åbningssætningenrole.language-"Auto Detect"får botten til at følge brugerens sprog; enhver anden værdi (f.eks."English","Polish") bliver til "Output in {language}, unless user uses another language"role.responseLength- knyttet til et målantal af ord:Concise≈ 50 ord,Normal≈ 100 ord,Detailed≈ 200 ordrole.websiteAddress- valgfrit; når feltet er udfyldt, tilføjes det som "for the users of the website {url}"role.companyDescription- valgfrit; når feltet er udfyldt, foranstilles det som et ekstra afsnit før rolleinstruktionerne
Dette er den anbefalede gren for de fleste botter - du får adfærd tilpasset rollen samt faste sikkerhedsrammer uden ekstra arbejde.
Gren B - role.role er CUSTOM (brugerdefineret prompt)
Backend anvender role.rawPrompt ordret som hele system-prompten. responseLength, language, websiteAddress, companyDescription gemmes, men indsættes ikke i prompten - hvis du ønsker, at de skal afspejles i bottens adfærd, skal du selv inkludere dem i din rawPrompt-tekst. Rollespecifikke sikkerhedsrammer og toneinstruktioner tilføjes heller ikke; du styrer hele prompten selv.
Brug kun CUSTOM, hvis den skabelonbaserede prompt ikke passer til dit brugsscenarie (f.eks. hvis du har brug for en meget branchespecifik persona, dine egne sikkerhedsbegrænsninger eller et atypisk outputformat).
Enum-felter og felter med faste værdier
Flere felter accepterer kun et fast sæt strengværdier. Hvis der sendes værdier uden for listen, afvises anmodningen med 400 validation_failed samt feltstien i error.param. Værdierne skelner mellem store og små bogstaver.
role.role-CUSTOMER_SUPPORT,SALES,LEAD_COLLECTION_AGENT,CUSTOMrole.responseLength-Concise,Normal,Detailedrole.language- fulde engelske sprognavne fra dropdown-menuen i administrationspanelet, f.eks.Auto Detect,English,Polish,Spanish,German,French,Italian,Portuguese,Dutch,Russian,Chinese (Simplified),Japanese,Arabic,Hindiog ~80 andre. Værdien gemmes ordret og indsættes i promptskabelonen, så to-bogstavs ISO-koder (en,pl) og andre værdier uden for listen afvises ikke af API'et, men fører til en misvisende instruktion som f.eks. "Output in en, unless...". Standardværdien erAuto Detect, hvis feltet udelades ved oprettelse.advanced.model- se "AI-tekstmodeller" nedenfor; det tilgængelige udvalg afhænger af dine kontogrænser, og enhver værdi, din konto ikke har adgang til, returnerer400 invalid_parameteradvanced.chatContextSize-8000,16000,32000. Afhænger af dine kontogrænser; højere værdier begrænses automatisk uden fejlmeddelelsechatMemory.clientSummaryPromptType-DEFAULT,CUSTOMchatMemory.conversationSummaryPromptType-DEFAULT,CUSTOMappearance.chatAlignment-left,rightappearance.minimizedDisplayMode-icon,minifiedappearance.chatMessageLinkTarget-_blank,_selfleadCollection.requireBeforeNewConversation- boolesk indstilling.truetvinger brugeren til at udfylde lead-formularen, før en samtale startes;falselader AI'en bestemme, hvornår formularen skal vises (standard).
Strukturerede felter og intervaller
Felter, der ligner simple strenge eller tal, men som i virkeligheden har specifikke formater, intervaller eller særheder i administrationspanelet, som er værd at kende til.
-
advanced.temperature- det accepterede interval er0.0til1.0, svarende til skyderen i administrationspanelet. Værdier uden for dette interval afvises med400 validation_failed. -
chatMemory.summariesToKnowledgeRatio- heltalsprocent,10-90med trin på10. Styrer, hvor stor en del af chatkonteksten der reserveres til kunders historiske opsummeringer i forhold til resten (vidensbase, aktuel samtale, instruktioner). Standardværdi er50. Værdier uden for10-90afvises med400 validation_failed. Gælder kun, nårchatMemory.enabled=trueOGchatMemory.summaryConversationsEnabled=true. -
liveChat.schedule- JSON kodet som en streng, ikke et indlejret JSON-objekt i datastrømmen. Serveren gemmer den rå streng uændret; administrationspanelet parser den på klientsiden ved visning af tidsplankonfigurationen. Når strengen er parset, er strukturen opbygget med ét element pr. ugedag plus entimezone-nøgle:- hver ugedagsnøgle (
monday-sunday) peger på{enabled: boolean, from: "H:MM", to: "H:MM"}i 24-timers format timezoneer et IANA-zonenavn (f.eks."Europe/Warsaw","America/New_York")
Eksempel på værdi (bemærk de ydre anførselstegn og de escapede indre anførselstegn - det er ét strengfelt, ikke et indlejret 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\"}"Uden for de angivne åbningstider vises
liveChat.outOfHoursMessagetil den besøgende, og overdragelse til live chat deaktiveres. Validering af den indre struktur sker kun på klientsiden i administrationspanelet - forkert formateret JSON eller ukendte nøgler accepteres af API'et blot som en streng, men vil udløse en visningsfejl, når en person senere åbner botten i administrationspanelet. Valider strukturen på din egen side før afsendelse. - hver ugedagsnøgle (
-
conversation.positiveRatingTooltip/conversation.negativeRatingTooltip- korte tekster, der vises på knapperne 👍 / 👎 ud for hvert AI-svar, nårconversation.conversationRatingEnabled=true. Standardteksten er "I like the response" / "I don't like the response". Synlig for slutbrugere. -
whiteLabel.hideRoboAssistLogo- white label-funktion, underlagt dine kontogrænser. Skjuler sidefoden "Powered by ChatLab". Hvis din konto ikke omfatter white label, gemmes værdien, men den ignoreres, og sidefoden vises altid. -
whiteLabel.whitelabelLogoLink- white label-funktion, underlagt dine kontogrænser. URL-destinationslink for det tilpassede logo, nårhideRoboAssistLogo=true, og en tilpasset logofil er uploadet via multipart-delenwhitelabel_logo. -
appearance.simulateHumanTypingDelay- sekunder (ikke millisekunder), heltal0-200. Pause mellem efterfølgende bot-talebobler, nårsimulateHumanTyping=true. Standardværdi er5. -
appearance.autoOpenChatDelaySeconds- sekunder, heltal. Forsinkelse, før widgetten åbnes automatisk, nårautoOpenChat=trueogautoOpenChatDelay=true. -
advanced.internalLocale- IETF-sprog- og regionskode i formatetll_CC(med understregning, IKKEll-CCmed bindestreg). Accepterede værdier kommer fra en fast liste med ~95 landestandarder: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. Sendes en to-bogstavs kode alene ("en") eller BCP-47 ("en-US"), findes den ikke på listen over tilladte værdier. Standardværdi eren_US. Dette er den landestandard, der anvendes til dato- og talformatering i widget-grænsefladen, til forskel frarole.language(bottens sprog i samtaleoutput). -
security.talkMessagesRateLimit/security.talkMessagesRateLimitDurationSeconds- heltal (sendes som JSON-tal, f.eks.30, ikke"30").0deaktiverer hastighedsgrænsen pr. IP. Er værdien over nul, håndhæver widgetten N beskeder pr. varighed i sekunder, førsecurity.talkMessagesRateLimitHitMessagevises for den besøgende. -
advanced.botMessagesLimit- heltal (JSON-tal, f.eks.1000).0betyder "ingen grænse"; ellers skal værdien være et multiplum af 1000 (1000,2000,10000osv.). Værdier som100eller1500afvises med400 validation_failed. Værdien begrænses desuden automatisk opadtil af din kontogrænse.
AI-tekstmodeller (advanced.model)
Send den nøjagtige API-værdi (den venstre kolonne markeret med backticks). Det viste navn i administrationspanelet står i parentes. Dine kontogrænser afgør, hvilket undersæt der kan vælges; sendes en model, din konto ikke har adgang til, returneres 400 invalid_parameter. Standardmodellen for nye botter 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)
Feltreference (fuldt request-skema)
Hvert felt på forbindelsen, med dets type, begrænsning og en linjes beskrivelse. PATCH-semantik: udelades et felt (eller sendes som null), efterlades den gemte værdi uændret. Den samme struktur bruges til svaret (minus binært multipart-indhold; plus den skrivebeskyttede meta-blok på alle svar og apiKey udelukkende på create-svaret).
Øverste niveau
| Felt | Type | Begrænsning | Beskrivelse |
|---|---|---|---|
name |
string | maks 150, påkrævet ved oprettelse | Bottens viste navn |
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 |
Tilføjelser, der kun optræder i svar:
meta: { id, createdAt, updatedAt }- skrivebeskyttet.apiKey- string, findes kun i svaret påPOST /v1/management/bots- den nyoprettede Bot Talk-nøgle til den nye bot, returneret præcis én gang.
§ role
| Felt | Type | Begrænsning | Beskrivelse |
|---|---|---|---|
role |
string (enum) | CUSTOMER_SUPPORT, SALES, LEAD_COLLECTION_AGENT, CUSTOM |
Persona-forudindstilling; vælger promptskabelonen (se "Role and prompt construction") |
language |
string | fuldt engelsk sprognavn (English, Polish, ...) eller Auto Detect |
Primært sprog, der sendes ind i promptskabelonen |
responseLength |
string | ∈ {Concise, Normal, Detailed} |
Ønsket detaljegrad for AI-svaret |
websiteAddress |
string | Hjemmeside anvendt til promptkontekst | |
companyDescription |
string | Virksomhedsbeskrivelse anvendt til promptkontekst | |
rawPrompt |
string | Tilpasset systemprompt - anvendes kun ordret, når role=CUSTOM |
§ conversation
| Felt | Type | Begrænsning | Beskrivelse |
|---|---|---|---|
welcomeMessage |
string | Første besked, der vises for den besøgende ved åbning | |
queryRefinementEnabled |
boolean | Hvis true, præciseres den besøgendes spørgsmål før RAG-hentning | |
conversationContinuityEnabled |
boolean | Hvis true, genoptager tilbagevendende besøgende deres seneste samtale | |
conversationRatingEnabled |
boolean | Hvis true, vises tommelfinger op/ned-bedømmelse på botbeskeder | |
positiveRatingTooltip |
string | Værktøjstip på knappen til positiv bedømmelse | |
negativeRatingTooltip |
string | Værktøjstip på knappen til negativ bedømmelse | |
suggestedQuestions |
string | Forslåede spørgsmål / samtaleåbnere adskilt af linjeskift | |
dynamicSuggestedFollowups |
boolean | Hvis true, foreslår AI opfølgende forslag efter hvert svar | |
dynamicFollowupsAutoIcons |
boolean | Hvis true, vælger AI automatisk emoji-ikoner til de dynamiske opfølgninger |
§ chatMemory
| Felt | Type | Begrænsning | Beskrivelse |
|---|---|---|---|
enabled |
boolean | Hovedafbryder for funktionen chat-hukommelse | |
summaryConversationsEnabled |
boolean | Gem opsummeringer pr. samtale | |
conversationSummaryPrompt |
string | Tilpasset prompt brugt til at opsummere hver samtale | |
conversationSummaryPromptType |
string (enum) | ∈ {DEFAULT, CUSTOM} |
Hvorvidt standardprompten eller den tilpassede opsummeringsprompt skal bruges |
clientSummaryPrompt |
string | Tilpasset prompt brugt til at opsummere klienten på tværs af samtaler | |
clientSummaryPromptType |
string (enum) | ∈ {DEFAULT, CUSTOM} |
Standard- vs. tilpasset klientprofil-prompt |
summariesToKnowledgeRatio |
int | 10-90, trin 10 |
% af chat-kontekstvinduet tildelt opsummeringer vs. RAG-viden |
§ appearance
| Felt | Type | Begrænsning | Beskrivelse |
|---|---|---|---|
launcherColor |
string (hex) | Baggrundsfarve på starter (chatikon) | |
headerColor |
string (hex) | Baggrundsfarve på chat-header | |
titleColor |
string (hex) | Titelfarve på chat-header | |
subtitleColor |
string (hex) | Undertitelfarve på chat-header | |
clientMessageBubbleColor |
string (hex) | Farve på den besøgendes beskedboble | |
clientMessageTextColor |
string (hex) | Tekstfarve på den besøgendes besked | |
responseMessageBubbleColor |
string (hex) | Farve på bottens svarboble | |
responseMessageTextColor |
string (hex) | Tekstfarve på bottens svar | |
chatSubheader |
string | Tagline vist under chattitlen | |
senderPlaceholder |
string | Pladsholdertekst i beskedfeltet | |
resetConversationTooltip |
string | Værktøjstip på knappen "nulstil samtale" | |
chatAlignment |
string (enum) | ∈ {left, right} |
Hvilken side af skærmen chatten er fastgjort til |
launcherBottomMargin |
int | 0-500 |
Starterens afstand fra bundkanten (px) |
launcherSideMargin |
int | 0-500 |
Starterens afstand fra sidekanten (px) |
displayShadow |
boolean | Dråbeskygge under widgetten | |
customCss |
string | Rå CSS indsat i widgettens iframe | |
chatMessageLinkTarget |
string (enum) | ∈ {_blank, _self} |
Hvordan links inde i botbeskeder åbnes |
minimizedDisplayMode |
string (enum) | ∈ {icon, minified} |
Minimeret tilstand: starterikon eller kompakt afsenderlinje |
chatDesktopWidthPx |
int | Widget-bredde på desktop | |
chatDesktopHeightPx |
int | Widget-højde på desktop | |
chatMobileSizePercent |
int | Widget-størrelse på mobil som % af visningsfeltet | |
messageFontSize |
int | Skriftstørrelse på beskedtekst (px) | |
showChatbotBubblesDesktop |
boolean | Vis de svævende teaserbobler på desktop | |
showChatbotBubblesMobile |
boolean | Vis de svævende teaserbobler på mobil | |
chatbotBubblesDelaySeconds |
int | Forsinkelse, før teaserboblerne vises (sekunder) | |
launcherIconFullSize |
boolean | Vis det tilpassede starterikon helt til kant i stedet for med indrykning | |
welcomeScreenEnabled |
boolean | Vis velkomstskærmen i stedet for at gå direkte til chatten | |
welcomeScreenQuestionsLabel |
string | Etiket over de foreslåede spørgsmål på velkomstskærmen | |
welcomeScreenHideHumanContactForm |
boolean | Skjul handlingen til den menneskelige kontaktformular i headeren, mens velkomstskærmen vises. Den dukker op igen efter den besøgendes første besked. Bots oprettet før 2026-09-02 har som standard true |
|
welcomeScreenHideLiveChat |
boolean | Skjul handlingen til livechat i headeren, mens velkomstskærmen vises. Den dukker op igen efter den besøgendes første besked. Bots oprettet før 2026-09-02 har som standard true |
|
headerActionsLayout |
string | DROPDOWN |
Hvordan livechat og den menneskelige kontaktformular tilbydes i chattens header: ICONS (hvert sit ikon) eller DROPDOWN (grupperet i header-menuen). Bots oprettet før 2026-09-02 har som standard ICONS |
stackSuggestedQuestions |
boolean | Stabl foreslåede spørgsmål lodret (modsat side om side) | |
suggestedQuestionsFontSize |
int | Skriftstørrelse på brikker med foreslåede spørgsmål (px) | |
suggestedQuestionsTextColor |
string (hex) | Tekstfarve på brikker med foreslåede spørgsmål | |
suggestedQuestionsBackgroundColor |
string (hex) | Baggrundsfarve på brikker med foreslåede spørgsmål | |
autoOpenChat |
boolean | Åbn automatisk chatten på desktop | |
autoOpenChatOnMobiles |
boolean | Åbn automatisk chatten på mobil | |
autoOpenChatDelay |
boolean | Brug en forsinkelse før automatisk åbning | |
autoOpenChatDelaySeconds |
int | Forsinkelse ved automatisk åbning (sekunder) | |
simulateHumanTyping |
boolean | Opdel botsvar i bobler med skriveanimation | |
simulateHumanTypingDelay |
int | 0-200 |
Forsinkelse mellem boblebeskeder (sekunder) |
footerMarkdown |
string | maks 255 | Tilpasset footer-markdown vist under chatten |
avatarUrl |
string | skrivebeskyttet | Fuldt kvalificeret offentlig URL til avataren; for at ændre den skal den uploades via multipart-delen avatar |
Multipart ved POST/PATCH: avatar (fildel). GET- / svardata udelader filindholdet - kun URL'en er med over forbindelsen.
§ humanSupport
| Felt | Type | Begrænsning | Beskrivelse |
|---|---|---|---|
enabled |
boolean | Afbryder til Human Support-flowet | |
email |
string | påkrævet (create-strict) når enabled=true |
Adresse, der modtager e-mails til menneskelig support |
dialogMessage |
string | Opmuntrende besked vist over formularen | |
thankYouMessage |
string | Bekræftelse vist efter indsendelse | |
emailMessageSubjectTemplate |
string | Emneskabelon til e-mailen sendt til agenten | |
emailMessageContentTemplate |
string | Brødtekstskabelon til e-mailen sendt til agenten | |
emailPlaceholder |
string | Pladsholder i e-mailfeltet | |
messagePlaceholder |
string | Pladsholder i beskedtekstfeltet | |
emailWithConversationContent |
boolean | Hvis true, inkluderes samtaleudskriften i e-mailens brødtekst | |
customFormId |
long | id på en eksisterende tilpasset formular | Erstat den indbyggede kontaktformular med en tilpasset formular. null beholder den indbyggede formular |
customFormMapping |
string | JSON-kodet streng | Knytter felter fra den tilpassede formular til felterne i e-mailen til menneskelig support |
requirePolicyAccept findes under consent.humanSupportRequirePolicyAccept, ikke her.
§ leadCollection
| Felt | Type | Begrænsning | Beskrivelse |
|---|---|---|---|
enabled |
boolean | Afbryder til leadformular | |
nameEnabled |
boolean | Indsaml navn | |
nameLabel |
string | Etiket på navnefeltet | |
emailEnabled |
boolean | Indsaml e-mail | |
emailLabel |
string | påkrævet (create-strict) når enabled=true OG emailEnabled=true |
Etiket på e-mailfeltet |
phoneEnabled |
boolean | Indsaml telefon | |
phoneLabel |
string | påkrævet (create-strict) når enabled=true OG phoneEnabled=true |
Etiket på telefonfeltet |
leaveDetailsMessage |
string | påkrævet (create-strict) når enabled=true |
Besked, der opfordrer den besøgende til at efterlade sine oplysninger |
thankYouMessage |
string | påkrævet (create-strict) når enabled=true |
Bekræftelse vist efter indsendelse |
requireBeforeNewConversation |
boolean | Hvis true, skal formularen indsendes, før chatten starter; hvis false, beslutter AI, hvornår formularen skal vises |
|
emailNotificationEnabled |
boolean | Send en e-mail til ejeren, hver gang et lead indsamles | |
emailNotificationAddress |
string | Modtager af notifikationer (standard er kontoens e-mail) | |
emailWithConversationContent |
boolean | Hvis true, inkluderes samtaleudskriften i notifikationen |
Create-strict-regel på tværs af felter: enabled=true kræver mindst én af emailEnabled eller phoneEnabled. requirePolicyAccept findes under consent.leadCollectionRequirePolicyAccept, ikke her.
| customFormId | long | id på en eksisterende tilpasset formular | Erstat den indbyggede leadformular med en tilpasset formular. null beholder den indbyggede formular |
| customFormMapping | string | JSON-kodet streng | Knytter felter fra den tilpassede formular til navn / e-mail / telefon |
§ liveChat
| Felt | Type | Begrænsning | Beskrivelse |
|---|---|---|---|
enabled |
boolean | Afbryder til Live Chat-funktionen | |
infoMessage |
string | Forklarende besked før overdragelse | |
startMessage |
string | Besked vist, når live-sessionen starter | |
endMessage |
string | Besked vist, når live-sessionen slutter | |
nameLabel |
string | Etiket på navnefeltet i livechat-forformularen | |
emailLabel |
string | Etiket på e-mailfeltet i livechat-forformularen | |
schedule |
string | JSON-kodet streng (ugedags-toggles + from/to + timezone) |
Driftstidsplan for livechat - se "Structured fields and ranges" for den nøjagtige struktur |
outOfHoursMessage |
string | Besked vist, når tidsplanen angiver, at der er lukket | |
closeModalMessage |
string | Titel på "luk livechat?"-modalen | |
closeModalConfirmLabel |
string | Etiket på bekræft-knappen i lukke-modalen | |
closeModalCancelLabel |
string | Etiket på annuller-knappen i lukke-modalen | |
closeModalTooltipText |
string | Værktøjstip på luk-chat-elementet | |
operatorHasJoinedLabel |
string | Etiket vist, når en operatør deltager | |
operatorDidNotJoinInTimeLabel |
string | Etiket vist, når ingen operatør deltager inden for tidsfristen | |
waitingForOperatorToJoinLabel |
string | Etiket vist, mens der ventes på en operatør | |
waitingForOperatorSeconds |
int | Tidsfrist for, at en operatør tager imod (sekunder) | |
redirectToHumanSupportForm |
boolean | Hvis true, viderestilles der til Human Support-formularen, hvis ingen operatør svarer | |
missedEmailEnabled |
boolean | standard true |
Send en e-mail til bottens ejer, når en anmodning om livechat ikke blev besvaret. Er udeladt på ældre bots, hvilket tolkes som aktiveret |
requirePolicyAccept findes under consent.liveChatRequirePolicyAccept, ikke her.
§ consent
| Felt | Type | Begrænsning | Beskrivelse |
|---|---|---|---|
newConversationRequirePolicyAccept |
boolean | Kræv accept af privatlivspolitik, før en ny samtale startes | |
humanSupportRequirePolicyAccept |
boolean | Kræv accept af privatlivspolitik, før formularen til menneskelig support indsendes | |
leadCollectionRequirePolicyAccept |
boolean | Kræv accept af privatlivspolitik, før lead-indsamlingsformularen indsendes | |
liveChatRequirePolicyAccept |
boolean | Kræv accept af privatlivspolitik, før en livechat-session startes | |
newConversationConsentDescription |
string | Introduktionstekst til samtykkeskærmen ved samtalens start | |
privacyPolicyConsentCheckboxLabel |
string | Etiket ved siden af samtykke-afkrydsningsfeltet (indeholder typisk et link til privatlivspolitikken) |
§ whiteLabel
| Felt | Type | Begrænsning | Beskrivelse |
|---|---|---|---|
hideRoboAssistLogo |
boolean | White Label-funktion; underlagt kontogrænser | Skjul standard ChatLab-logoet i footeren |
whitelabelLogoLink |
string | White Label-funktion; underlagt kontogrænser | URL, som det tilpassede footer-logo linker til |
assignToCustomDomain |
boolean | styret af funktionen CUSTOM_DOMAIN |
Host chatten på det konfigurerede tilpassede domæne |
whitelabelLogoUrl |
string | skrivebeskyttet | Fuldt kvalificeret offentlig URL til White Label-logoet; for at ændre det skal det uploades via multipart-delen whitelabel_logo |
Multipart ved POST/PATCH: whitelabel_logo (fildel). GET- / svardata udelader filindholdet - kun URL'en er med over forbindelsen.
§ security
| Felt | Type | Begrænsning | Beskrivelse |
|---|---|---|---|
allowedDomains |
string | Kommasepareret liste over domæner med tilladelse til at integrere widgetten (tom = ingen hvidliste) | |
spamFilterEnabled |
boolean | Aktivér spamfilteret på indgående beskeder for den enkelte bot | |
countryFilterMode |
string | BLACKLIST eller WHITELIST |
Hvordan landelisterne fortolkes. Selve listerne forbliver kun tilgængelige for administratorer |
talkMessagesRateLimit |
int | >= 0; 0 deaktiverer |
Maksimalt antal tilladte brugerbeskeder i rate-limit-vinduet |
talkMessagesRateLimitDurationSeconds |
int | >= 0 |
Varighed af rate-limit-vinduet (sekunder) |
talkMessagesRateLimitHitMessage |
string | Besked vist til den besøgende, når grænsen for rate-limit nås |
§ voice
| Felt | Type | Begrænsning | Beskrivelse |
|---|---|---|---|
inputEnabled |
boolean | Tillad den besøgende at diktere beskeder (tale til tekst) | |
conversationEnabled |
boolean | kræver talefunktionen i abonnementet | Aktivér fulde talesamtaler |
voiceId |
string | udbyderspecifikt stemme-id (f.eks. alloy) |
Hvilken syntetisk stemme der taler |
model |
string | f.eks. GPT-REALTIME-MINI, GEMINI-LIVE, ELEVENLABS-* |
Stemmemodel. Afregnes pr. minut, taksterne varierer pr. model |
turnDetection |
string | udbyderspecifik | Turtagningstilstand |
audioPrompt |
string | Ekstra systemprompt, der kun bruges ved talesekvenser | |
welcomeMessage |
string | Talt åbningsreplik | |
language |
string | sprogkode | Primært talesprog |
additionalLanguages |
string | kommaseparerede sprogkoder | Ekstra sprog, som taleagenten accepterer |
maxDurationSeconds |
int | Hård grænse for en enkelt talesamtale | |
maxDurationMessage |
string | Besked vist, når grænsen nås |
§ multilingual
| Felt | Type | Begrænsning | Beskrivelse |
|---|---|---|---|
enabled |
boolean | Afbryder til flersproget tilstand | |
mode |
string | AUTODETECT eller en fast listetilstand |
Hvordan botten vælger svarspråk |
baseLanguage |
string | sprogkode | Sprog, som bottens egne tekster er forfattet på |
languages |
string | kommaseparerede sprogkoder | Sprog tilbudt til den besøgende |
knowledgeLanguageMode |
string | Hvordan viden på andre sprog behandles | |
knowledgeLanguageFallback |
string | sprogkode | Sprog, der bruges, når der ikke findes et match |
§ advanced
| Felt | Type | Begrænsning | Beskrivelse |
|---|---|---|---|
model |
string | underlagt kontogrænser; se "AI text models" ovenfor | LLM-identifikator (f.eks. 5-MINI) |
temperature |
decimal | 0.0-1.0 |
Sampling-temperatur (matcher skyderen i brugerfladen) |
chatContextSize |
int | ∈ {8000, 16000, 32000}; tilpasses automatisk til din kontogrænse |
Token-vindue til chathistorik |
botMessagesLimit |
long | 0 eller multiplum af 1000 (f.eks. 1000, 2000, 10000) |
Maksimalt antal botsvar pr. samtale (0 = ingen grænse) |
internalLocale |
string | sprog- og landekode i formen ll_CC |
Sprogindstilling til widget-elementernes etiketter (adskilt fra role.language) |
productsViewEnabled |
boolean | Hvis true, gøres e-handels-Offer Cards synlige inde i chatten | |
includeProductsInKnowledgeBase |
boolean | Hvis true, indekseres produktkataloget som en del af vidensbasen |
Uden for API-omfanget
Administratorbrugerfladen indeholder enkelte områder, som med overlæg ikke er eksponeret i denne version af Management API:
- Fanen Flow - den visuelle Conversation Flow-editor (faser og overgange). Ikke eksponeret via Management API.
- Fanen Actions - administrerede e-handels- / reservationsintegrationer, AI Search og tilpassede API-funktioner. Tool calling har aldrig været en del af Management API.
- Selve værktøjet til oprettelse af tilpassede formularer - oprettelse og redigering af tilpassede formularer er ikke eksponeret. Du kan dog knytte en eksisterende formular til en bot via
leadCollection.customFormIdoghumanSupport.customFormId. - Tilpassede ikoner for åbn / luk chat -
customLauncherIconVisible,openChatIcon,closeChatIcon. API'et eksponerer kun de overordnede multipart-dele foravatarogwhitelabel_logo. - IP- og landelister - selve indtastningerne er kun tilgængelige for administratorer. Kun fortolkningstilstanden er eksponeret via
security.countryFilterMode.
Endpoints
POST /v1/management/bots
Opret en ny bot. To ækvivalente Content-Types accepteres; vælg den, der passer dig bedst.
Tilstand A - ren JSON (anbefales, når du ikke behøver at uploade en avatar / et logo i den samme anmodning):
Content-Type: application/json- Request body er JSON-konfigurationen for botten (uden
data-indpakning) - Filer (avatar / logo) kan uploades senere via et efterfølgende
PATCHved hjælp af tilstand B
Tilstand B - multipart/form-data (bruges ved upload af filer i samme anmodning):
Content-Type: multipart/form-data; boundary=...data-JSON-del (påkrævet,Content-Type: application/json) - botkonfiguration i den indlejrede struktur beskrevet ovenforavatar-fildel (valgfri) - avatarbillede til bottenwhitelabel_logo-fildel (valgfri) - white-label-logo (gælder kun, hvis din konto inkluderer White Label)
Kun name er påkrævet i JSON-strukturen; alle andre felter falder tilbage til de samme standardværdier, som guiden i administratorbrugerfladen ville sætte.
Fuld request body
Dette er den maksimale data-JSON - alle sektioner er udfyldt. Send kun de sektioner, du har brug for; alt andet tildeles standardværdier.
{
"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 fejlmeddelelser:
name- påkrævet, maks. 150 tegnadvanced.temperature- mellem0.0og1.0chatMemory.summariesToKnowledgeRatio- heltal mellem10og90(procent, trin10)appearance.launcherBottomMargin,appearance.launcherSideMargin- mellem0og500appearance.footerMarkdown- maks. 255 tegnhumanSupport.enabled=truekræver, athumanSupport.emailer angivetleadCollection.enabled=truekræver, at mindst én afleadCollection.emailEnabledellerleadCollection.phoneEnableder sat til true; den aktiverede kanal kræver desuden sin etiket samtleaveDetailsMessageogthankYouMessage- Begrænsede felter (
advanced.chatContextSize,advanced.botMessagesLimitosv.) tilpasses automatisk til grænserne på din konto
Felter, hvis værdi er null på serveren, udelades fra JSON-strukturen - der sendes udelukkende felter med værdier, der ikke er null.
Fuld response body (201)
Samme struktur som anmodningen, plus den skrivebeskyttede meta-blok og engangsnøglen apiKey på øverste niveau. Skrivebeskyttede filadresser (appearance.avatarUrl, whiteLabel.whitelabelLogoUrl) udfyldes af serveren, når de tilsvarende multipart-dele er uploadet.
{
"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 oprettelse - det er den nyligt genererede Bot Talk-nøgle, der er knyttet til den nye bot. Værdien i klartekst vises én gang og kan ikke hentes via API'et senere; gem den på din side med det samme.
Svar-headeren Location indeholder URL'en til den nye bot (/v1/management/bots/{id}).
Curl-eksempler
Tilstand 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!"}}'
Tilstand B - multipart med avatar:
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}
Returnerer den aktuelle konfiguration for en bot, du ejer.
Curl-eksempel
curl https://api.chatlab.com/aichat/v1/management/bots/4287 \
-H "Authorization: Bearer mk_..."
Fuld response body (200)
Samme struktur som svaret på POST, minus engangsnøglen apiKey. meta-blokken er inkluderet. Returnerer 404 not_found_error, hvis botten ikke findes eller ikke tilhører din konto.
Den aktuelle avatar og white-label-logoet vises som fuldt kvalificerede skrivebeskyttede URL'er (appearance.avatarUrl, whiteLabel.whitelabelLogoUrl) - baseret på den samme protokol + vært + kontekststi, som betjente denne anmodning. Hent de rå bytes ved at foretage et GET direkte til disse URL'er; for at udskifte en af filerne skal du uploade en ny via multipart-delen avatar / whitelabel_logo i et PATCH. Disse URL-felter ignoreres, hvis de sendes med i en request body.
{
"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
Request body for POST /v1/management/bots og response body for GET /v1/management/bots/{bot_id} deler samme struktur, så kloning er en tretrins proces: Hent kilden med GET, fjern serverstyrede identitetsfelter, og send resultatet med POST.
1. Hent kildebotten med GET.
curl https://api.chatlab.com/aichat/v1/management/bots/4287 \
-H "Authorization: Bearer mk_..." \
-o source-bot.json
2. Fjern meta-blokken på øverste niveau. meta-objektet (id, createdAt, updatedAt) styres af serveren og er skrivebeskyttet - at lade det blive i POST-bodyen gør ingen skade (serveren ignorerer det), men at fjerne det gør hensigten tydelig og holder dataindholdet rent. Rediger eventuelt name, så klonen kan skelnes fra kilden.
jq 'del(.meta) | .name = "Helpdesk Bot (clone)"' source-bot.json > clone-body.json
3. Send den rensede body med POST for at oprette klonen. Se referencen for POST /v1/management/bots ovenfor for den fulde struktur 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
Svaret indeholder den nye bots meta.id samt en nyligt genereret apiKey (Bot Talk-nøglen til klonen). Denne apiKey i klartekst returneres kun i dette oprettelsessvar - kopiér den, før du kasserer svarindholdet; den kan ikke hentes senere.
To vigtige forbehold:
- Filer klones ikke.
appearance.avatarUrlogwhiteLabel.whitelabelLogoUrler skrivebeskyttede og peger på kildebottens filer. Hvis du har brug for den samme avatar eller det samme white-label-logo på klonen, skal du downloade filerne fra kildens URL-adresser og uploade dem som multipartavatar/whitelabel_logo-dele - enten ved oprettelses-POST (Mode B) eller i en efterfølgende PATCH. - Bot Talk-nøgler klones ikke. Hver bot har sin egen pulje af Bot Talk-nøgler. Den enkelte
apiKey, der returneres ved oprettelses-POST, er den eneste, der genereres automatisk; opret yderligere nøgler fra bottens fane API (API-fane), hvis det er nødvendigt.
PATCH /v1/management/bots/{bot_id}
Opdater et eller flere felter på en bot, du ejer. Kun sektioner/felter, der er til stede i JSON-strukturen, ændres; alt udeladt (eller sendt som null) forbliver uberørt. Semantikken for delvis opdatering gælder pr. felt inden for en afsendt sektion.
To ækvivalente Content-Types accepteres (samme som POST):
Mode B - almindelig JSON (anbefales, når du kun opdaterer indstillinger):
Content-Type: application/json- Request body er patch-JSON (ingen
data-indpakning)
Mode B - multipart/form-data (bruges ved upload af filer):
dataJSON-del (valgfri) - selve ændringen. Send kun denne, hvis du vil ændre felter. Udelad helt, hvis du kun vil uploade en avatar eller et logo.avatarfil-del (valgfri) - erstat avatarenwhitelabel_logofil-del (valgfri) - erstat white-label-logoet (gælder kun, hvis din konto inkluderer White Label)
Alle tre dele er valgfrie ved PATCH, men mindst én skal være til stede, for at kaldet giver mening.
Fuld request body (maksimal struktur)
Ethvert felt, der accepteres af POST /v1/management/bots, kan også sendes her. Nedenstående eksempel viser hele strukturen; i praksis sender du kun de nøgler, du ønsker at ændre (se "Minimal delvis opdatering" længere nede) - enhver nøgle, der udelades (eller sendes som null), lader den gemte værdi forblive uberø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 opdatering
Foretag en PATCH af et enkelt felt ved udelukkende at sende de nøgler, du ønsker ændret - alt andet bevares.
{
"appearance": {
"launcherColor": "#abcdef"
}
}
Curl-eksempler
Mode A - almindelig 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"}}'
Mode B - multipart (ved udskiftning af 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'
Mode B - erstat kun avataren (ingen feltændringer):
curl -X PATCH https://api.chatlab.com/aichat/v1/management/bots/4287 \
-H "Authorization: Bearer mk_..." \
-F 'avatar=@./new-avatar.png'
Response body (200)
Samme struktur som GET /v1/management/bots/{bot_id} - bottens fulde konfiguration efter opdateringen er udført, inklusive meta-blokken. Intet apiKey-felt. Returnerer 404 not_found_error, hvis botten ikke findes eller ikke tilhører din konto.
Nedenstående eksempel viser svaret efter anvendelse af patchen fra Fuld request body (maksimal struktur) ovenfor på botten fra GET-eksemplet - ændrede felter afspejler de nye værdier, uberørte felter bevares, og meta.updatedAt opdateres.
{
"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
Læs det aktuelle abonnementsforbrug for kontoen, der ejer Management-nøglen.
Response body (200)
{
"subscriptionType": "standard",
"messages": {"used": 4123, "limit": 11000, "remaining": 6877},
"bots": {"used": 3, "limit": 5, "remaining": 2}
}
subscriptionTypeer en identifikator med små bogstaver for kontoens aktuelle abonnement (f.eks.standardi eksemplet). Abonnementer stammer fra et dynamisk katalog, så det nøjagtige sæt af identifikatorer kan ændre sig over tid, efterhånden som planer omdøbes eller tilføjes - behandl dette som en uigennemskuelig streng (opaque string), ikke som en fast enum.messages.used/limit/remainingangiver den aktuelle faktureringsperiodes besked-credits.bots.used/limit/remainingtæller aktive botter i forhold til din kontos bot-grænse.
Rate limit-headere
Svar, der når rate limit-stadiet (dvs. godkendelse og IP-hvidliste er bestået), indeholder:
X-RateLimit-Limit: 10
X-RateLimit-Remaining: 7
X-RateLimit-Reset: 1715430000
X-RateLimit-Limit- grænsen pr. nøgle, der rent faktisk anvendes på dette kald (10 som standard, eller din konfigurerederateLimitPerMinute, hvis den er lavere).X-RateLimit-Remaining- tokens tilbage i bucket umiddelbart efter dette kald.X-RateLimit-Reset- Unix epoch-sekunder, hvor den næste token bliver tilgængelig (ikke en fuldstændig nulstilling af bucket; bucket fyldes op løbende). Når bucket er fuld, er dette det aktuelle tidspunkt.
Ved 429 rate_limit_exceeded-svar er Retry-After også angivet, udtrykt i hele sekunder, indtil mindst én token bliver ledig.
Fejl før godkendelse (401 missing_api_key, 401 invalid_api_key, 403 ip_blocked) og 403 ip_not_whitelisted indeholder ikke X-RateLimit-*-headere - begrænseren kontrolleres først, efter godkendelse og IP-tjek er gennemført.
Fejlformat
Samme struktur som Bot Talk API:
{
"error": {
"type": "permission_error",
"code": "key_type_not_allowed",
"message": "This endpoint requires a MANAGEMENT API key.",
"param": null
}
}
Valideringsfejl bruger code: "invalid_parameter" og tilføjer stien til det fejlbehæftede felt foran meddelelsen, så det er nemt at finde den sektion, der fejler:
{
"error": {
"type": "invalid_request_error",
"code": "invalid_parameter",
"message": "humanSupport.email Human support email is required when humanSupport.enabled=true"
}
}
Ugyldige værdier for enum- / lukkede felter (f.eks. chatMemory.clientSummaryPromptType = "BOGUS") indeholder feltstien, den afviste værdi og listen over tilladte værdier:
{
"error": {
"type": "invalid_request_error",
"code": "invalid_parameter",
"message": "chatMemory.clientSummaryPromptType 'BOGUS' is not a valid value. Allowed: CUSTOM, DEFAULT"
}
}
Relateret
For samtale-endpoints og SSE-streaming, se Bot Talk API.