Oversikt over Management API
Management API er beregnet på backoffice-oppgaver som ikke innebærer å sende chatmeldinger:
- opprette en bot programmatisk med
POST /v1/management/bots - hente en bestemt bot du eier med
GET /v1/management/bots/{bot_id} - oppdatere en bestemt bot med
PATCH /v1/management/bots/{bot_id} - hente abonnementsforbruk med
GET /v1/usage
Management-nøkler er knyttet til kontoen din, ikke til en bestemt bot. De holdes bevisst adskilt 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 administratorpanelet 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 hvitelisting av IP-adresser og hastighetsgrense, og send inn.
- Velg bare tillatelsene integrasjonen din trenger, og kopier hele nøkkelen fra bekreftelsesvinduet. Klarteksten vises bare én gang.
- Lagre den på serveren din, ikke i nettleserkode eller et offentlig filområde. Gjør en skrivebeskyttet forespørsel som
GET /v1/usagemed tillatelsenusagefor å bekrefte tilgangen. - Tilbakekall ubrukte eller kompromitterte nøkler fra Management API-siden.
En nøkkel ser slik ut: mk_abcdefghijklmnopqrstuvwxyz012345. Prefikset mk_ skiller den fra Bot Talk-nøkler (ck_).
Autentisering
Authorization: Bearer mk_abcdefghijklmnopqrstuvwxyz012345
Sender du en mk_-nøkkel til /v1/chat (eller et annet Bot Talk-endepunkt), returneres 403 key_type_not_allowed. Sender du en ck_-nøkkel til /v1/management/*, returneres samme feil.
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 ca. 1 token hvert 6. sekund). Kan konfigureres nedover ved opprettelse - angi en lavere
rateLimitPerMinute, så reduseres taket og påfyllingshastigheten skalerer tilsvarende.
Tillatelser
Hver Management-nøkkel har et hvilket som helst delsett av de tre tillatelsene nedenfor. Minst én må velges ved opprettelse; ellers avvises forespørselen med 400 invalid_request_error. Kalles et endepunkt med en nøkkel som mangler den nødvendige tillatelsen, returneres 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 for Bot Settings i administratorpanelet, slik at JSON-nøklene og de synlige fanene stemmer overens: hvis du endrer consent.humanSupportRequirePolicyAccept via API-et, ser du den samme bryteren endre seg i fanen Consent & Privacy (Samtykke og personvern) i administratorpanelet.
role- botpersona, råinstruks (prompt), svarlengde, språk, nettsteds-/bedriftskontekst (fanen Role & Behavior)conversation- velkomstmelding, søkeforbedring, samtalekontinuitet, vurderingsbryter + verktøytips, innhold for foreslåtte spørsmål + dynamiske oppfølginger (fanen Chat Conversation)chatMemory- bryter for chatminne, instruksjoner for sammendrag, kontekstfordeling (fanen Summaries & Memory)appearance- farger, tekster, dimensjoner, tilpasset CSS, velkomstskjerm, stil for foreslåtte spørsmål, innstillinger for automatisk åpning, simulering av menneskelig skriving, bunntekst-markdown (fanen Appearance)humanSupport- kontaktskjema for menneskelig hjelp (fanen Human Contact Form)leadCollection- skjema for lead-innsamling (fanen Lead Collection)liveChat- overlevering til Live Chat (fanen Live Chat)consent- alle fire samtykkebrytere for personvernerklæring samt teksten på samtykkeskjermen (fanen Consent & Privacy)whiteLabel- skjul logo, tilpasset lenke på logo, hosting på eget domene (fanen Whitelabel)security- tillatte domener, søppelpostfilter, hastighetsgrenser for samtaler (fanen Security)voice- stemmeinndata og talesamtaler: modell, stemme, språk, prompt, varighetstak (fanen Voice Conversation)multilingual- flerspråklig modus, basisspråk, tilbudte språk, håndtering av kunnskapsspråk (fanen Languages)advanced- LLM-modell, temperatur, kontekststørrelse, meldingsgrense for boten, internt språkområde, Offer Cards (fanen Model & Advanced)
Av de skrivbare innstillingene er det bare name som ligger på toppnivå, fordi det identifiserer boten i stedet for å tilhøre en bestemt fane.
Sidemenyen for Bot Settings har for øyeblikket 16 underfaner, og 13 av dem samsvarer med seksjonene over. De tre underfanene uten en tilsvarende seksjon er Flow, Actions og Forms - alle tre omtales under «Utenfor API-ets omfang» nedenfor. De 13 som har en tilsvarende seksjon, 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 svar-body deler samme struktur. Svaret inneholder to ekstra elementer:
meta- skrivebeskyttet: bot-id og tidsstempler. Fjern dette for å gjøre et GET-svar om til en gyldig POST-body.apiKey- vises kun ved opprettelse - den nyopprettede Bot Talk API-nøkkelen for den nye boten.
To felt i den delte strukturen er skrivebeskyttede - de returneres i svaret og ignoreres hvis du prøver å sende dem med POST/PATCH:
appearance.avatarUrl- fullstendig offentlig URL til botens avatarbilde (f.eks.https://api.chatlab.com/aichat/content/avatar_xyz.png). Utfør en GET direkte mot den for å laste ned filen. For å endre den laster du opp en ny fil via multipart-delenavatar(se PATCH).whiteLabel.whitelabelLogoUrl- fullstendig offentlig URL til topplogoen for White Label. Samme mønster somavatarUrl. For å 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 dette 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 det enkelte feltet. null på feltnivå sletter aldri en lagret verdi - det betyr bare «ikke rør».
Rolle og oppbygging av prompt
Systeminstruksen (prompten) som språkmodellen faktisk mottar, settes sammen på én av to måter avhengig av role.role. Ved å vite hvilken gren du befinner deg på, vet du hvilke felt som er viktige 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 inneholder:
role.role- rollebetegnelse (f.eks. «Customer Support») og rollespesifikke instruksjoner legges til automatiskname- botnavn, flettes inn i åpningssetningenrole.language-"Auto Detect"gjør at boten følger 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; når det ikke er tomt, legges det til som «for the users of the website {url}»role.companyDescription- valgfritt; når det 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 tilpasset atferd og sikkerhetsrammer automatisk.
Gren B - role.role er CUSTOM (egendefinert prompt fra oppkaller)
Backend bruker role.rawPrompt som rolleinstruks og legger til plattformens faste retningslinjer for svarlengde. Dette er uavhengig av role.responseLength: den valgfrie innstillingen Concise/Normal/Detailed flettes ikke inn for en CUSTOM-rolle. På samme måte lagres language, websiteAddress og companyDescription, men flettes ikke inn i denne rolleinstruksen. Inkluder ønsket språk, mål for svarlengde eller bedriftskontekst i rawPrompt selv. Ytterligere kjøretidsinstruksjoner og hentet kontekst kan også legges til, så rawPrompt utgjør ikke hele inndataene til modellen. Instruksjonene for tonefall fra den forhåndsdefinerte rollen legges ikke til, men å velge CUSTOM fjerner ikke alle plattforminstruksjoner.
Bruk CUSTOM bare når den malbaserte instruksen ikke passer til ditt bruksområde (f.eks. hvis du trenger en svært domenespesifikk persona, egne sikkerhetsbegrensninger eller et ustandardisert utdataformat).
Enum- og lukkede felt
Enum-felt og felt med faste verdisett avviser ugyldige verdier med 400 invalid_parameter. Andre felt er vanlige strenger, selv der grensesnittet tilbyr en fast liste. Bruk den dokumenterte skrivemåten og valider nyttelasten din i stedet for å anta at enhver streng som ikke støttes, blir avvist.
role.role-CUSTOMER_SUPPORT,SALES,LEAD_COLLECTION_AGENT,CUSTOMrole.responseLength-Concise,Normal,Detailedrole.language- fullt engelsk språknavn fra rullegardinmenyen i administratorpanelet, f.eks.Auto Detect,English,Polish,Spanish,German,French,Italian,Portuguese,Dutch,Russian,Chinese (Simplified),Japanese,Arabic,Hindiog ca. 80 andre. Verdien lagres ordrett og settes inn i prompt-malen, så to-bokstavers ISO-koder (en,pl) og andre verdier utenfor listen avvises ikke av API-et, men fører til en misvisende instruksjon som «Output in en, unless...». Standardverdien erAuto Detecthvis den utelates ved opprettelse.advanced.model- se «AI-tekstmodeller» nedenfor. Dette er en streng, ikke en validert enum i forespørselsskjemaet; bruk en støttet verdi, ikke et vilkårlig modellnavn.advanced.chatContextSize- bruk8000,16000eller32000, i samsvar med grensesnittet. Verdier over kontoens maksimumsgrense justeres ned automatisk; dataobjektet håndhever ikke dette treverdisettet.chatMemory.clientSummaryPromptType-DEFAULT,CUSTOMchatMemory.conversationSummaryPromptType-DEFAULT,CUSTOMappearance.chatAlignment-left,rightappearance.minimizedDisplayMode-icon,minified,pillappearance.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 felt og verdiområder
Felt som ser ut som enkle strenger eller tall, men som har spesifikke formater, verdiområder eller særegenheter i administrasjonsgrensesnittet som er verdt å kjenne til.
-
advanced.temperature- godkjent område er0.0til1.0, tilsvarende glidebryteren i administratorpanelet. Verdier utenfor dette området avvises med400 invalid_parameter. -
chatMemory.summariesToKnowledgeRatio- heltall i prosent,10-90; brukergrensesnittet bruker trinn på10, men API-et godtar alle heltall i dette området. Standardverdi er50. Når minne er aktivert og konteksten er større enn 8k, fordeler dette budsjettet for kunnskap og minne etter at det er satt av plass til prompt og nylig samtalehistorikk - ikke hele modellkonteksten. Ved 8k tildeles det ikke noe sammendragsbudsjett via denne innstillingen. -
liveChat.schedule- JSON kodet som en streng, ikke et nestet JSON-objekt i sendingen. Serveren lagrer råstrengen ordrett; administratorpanelet parser den på klientsiden ved visning av tidsplankonfigurasjonen. Når den er parset, er strengen 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\"}"Utenom de oppførte tidspunktene vises
liveChat.outOfHoursMessagetil den besøkende, og overlevering til Live Chat deaktiveres. Validering av den indre strukturen skjer kun på klientsiden i administratorpanelet - ugyldig JSON eller ukjente nøkler godtas av API-et som en ren streng og vil først vise seg som en visningsfeil når en person senere åpner boten i administrasjonspanelet. Valider strukturen på din side før du sender den. - hver ukedagsnøkkel (
-
conversation.positiveRatingTooltip/conversation.negativeRatingTooltip- korte etiketter som vises på vurderingsknappene for 👍 / 👎 nårconversation.conversationRatingEnabled=true. Standardtekst er «I like the response» / «I don't like the response». Synlig for sluttbrukere. -
whiteLabel.hideRoboAssistLogo- White Label-funksjon, avhengig av kontogrensene dine. Skjuler «Powered by ChatLab» i bunnteksten. Hvis kontoen din ikke inkluderer White Label, lagres verdien, men ignoreres, og bunnteksten vises alltid. -
whiteLabel.whitelabelLogoLink- White Label-funksjon, avhengig av kontogrensene dine. Klikkmål-URL for 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 bot-bobler nårsimulateHumanTyping=true. Standardverdi er5. -
appearance.autoOpenChatDelaySeconds- sekunder, heltall. Forsinkelse før widgeten åpnes automatisk nårautoOpenChat=trueogautoOpenChatDelay=true. -
advanced.internalLocale- IETF-lokalitets-/regionskode i formatetll_CC(understrek, IKKEll-CCmed bindestrek). Godkjente verdier hentes fra en fast liste med ca. 95 språkområder: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 bare en to-bokstavers kode ("en") eller BCP-47 ("en-US") støttes ikke i den tillatte listen. Standardverdi eren_US. Dette er språkområdet som brukes til dato- og tallformatering i widget-grensesnittet, i motsetning tilrole.language(botens utdataspråk i samtalen). -
security.talkMessagesRateLimit/security.talkMessagesRateLimitDurationSeconds- heltall (sendes som JSON-tall, f.eks.30, ikke"30"). Sett meldingsgrensen til0for å deaktivere denne øktbaserte grensen. Når du aktiverer den, må du oppgi en positiv varighet. Backend håndhever N meldinger per økt per varighet-i-sekunder førsecurity.talkMessagesRateLimitHitMessagevises til den besøkende. -
advanced.botMessagesLimit- heltall (JSON-tall, f.eks.1000).0betyr at det ikke er noe ekstra tak per bot, mens kontoens kredittkvote fortsatt gjelder; ellers må det være et multiplum av 1000 (1000,2000,10000, ...). Verdier som100eller1500avvises med400 invalid_parameter. Dette er et månedlig kredittak for boten, ikke et antall meldinger per samtale. Tilordningen justerer ikke denne verdien ned mot kontobudsjettet; kontoens kvote begrenser fortsatt den faktiske bruken.
AI-tekstmodeller (advanced.model)
Bruk den nøyaktige modellidentifikatoren som returneres i advanced.model når du henter en bot konfigurert med den ønskede modellen i Settings > Model & Advanced (Innstillinger > Modell og avansert). Gjeldende standardverdi ved opprettelse er 5.6-LUNA. Identifikatorene skiller mellom store og små bokstaver og avviker fra visningsnavnene; for eksempel vises 5.6-LUNA som GPT 5.6-luna.
Modelloversikten endres over tid. Ikke anta at en vilkårlig streng eller en leverandørs offentlige modell-ID støttes bare fordi forespørselsskjemaet godtar en streng. Hent ut den lagrede konfigurasjonen og test den resulterende chatbotten før du tar den i bruk.
Feltreferanse (fullstendig forespørselsskjema)
De støttede seksjonene og feltene, med tilhørende typer og viktige begrensninger. PATCH-semantikk: ethvert felt som utelates (eller sendes som null), lar den lagrede verdien forbli uendret. Samme struktur brukes for responsen (minus binært multipart-innhold; pluss den skrivebeskyttede meta-blokken i alle responser og apiKey utelukkende i opprettelsesresponsen).
Toppnivå
| Felt | Type | Begrensning | Beskrivelse |
|---|---|---|---|
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 responsen:
meta: { id, createdAt, updatedAt }- skrivebeskyttet.apiKey- string, finnes kun i responsen påPOST /v1/management/bots- den nyopprettede Bot Talk-nøkkelen for den nye boten, returnert nøyaktig én gang.
§ role
| Felt | Type | Begrensning | Beskrivelse |
|---|---|---|---|
role |
string (enum) | CUSTOMER_SUPPORT, SALES, LEAD_COLLECTION_AGENT, CUSTOM |
Persona-forhåndsinnstilling; velger ledetekstmalen (se "Role and prompt construction") |
language |
string | fullt engelsk språknavn (English, Polish, ...) eller Auto Detect |
Hovedspråk som mates inn i ledetekstmalen |
responseLength |
string | ∈ {Concise, Normal, Detailed} |
Ønsket detaljnivå for AI-svaret |
websiteAddress |
string | Nettsted som brukes til ledetekstkontekst | |
companyDescription |
string | Selskapsbeskrivelse som brukes til ledetekstkontekst | |
rawPrompt |
string | Tilpasset systemledetekst - brukes ordrett kun når role=CUSTOM |
§ conversation
| Felt | Type | Begrensning | Beskrivelse |
|---|---|---|---|
welcomeMessage |
string | Første melding som vises til den besøkende ved åpning | |
queryRefinementEnabled |
boolean | Hvis true, forbedres den besøkendes spørsmål før RAG-gjenfinning | |
conversationContinuityEnabled |
boolean | Hvis true, gjenopptar tilbakevendende besøkende sin forrige samtale | |
conversationRatingEnabled |
boolean | Hvis true, vises tommel opp/ned-knapper for samtalevurdering | |
positiveRatingTooltip |
string | Verktøytips på knappen for positiv vurdering | |
negativeRatingTooltip |
string | Verktøytips på knappen for negativ vurdering | |
suggestedQuestions |
string | Linjeskiftseparerte foreslåtte spørsmål / samtaleåpnere | |
dynamicSuggestedFollowups |
boolean | Hvis true, foreslår AI oppfølgingsspørsmål etter hvert svar | |
positiveRatingMessage |
string | Melding som vises etter positiv tilbakemelding | |
negativeRatingMessage |
string | Melding som vises etter negativ tilbakemelding | |
hideSuggestedQuestionsAfterFirstUse |
boolean | Skjul statiske forslag etter bruk | |
dynamicFollowupsAutoIcons |
boolean | Hvis true, velger AI automatisk emoji-ikoner for de dynamiske oppfølgingene |
§ chatMemory
| Felt | Type | Begrensning | Beskrivelse |
|---|---|---|---|
enabled |
boolean | Hovedbryter for chat-minnefunksjonen | |
summaryConversationsEnabled |
boolean | Lagre sammendrag per samtale | |
conversationSummaryPrompt |
string | Tilpasset ledetekst som brukes til å oppsummere hver samtale | |
conversationSummaryPromptType |
string (enum) | ∈ {DEFAULT, CUSTOM} |
Hvorvidt standard eller tilpasset oppsummeringsledetekst skal brukes |
clientSummaryPrompt |
string | Tilpasset ledetekst som brukes til å oppsummere klienten på tvers av samtaler | |
clientSummaryPromptType |
string (enum) | ∈ {DEFAULT, CUSTOM} |
Standard vs tilpasset klientprofil-ledetekst |
summariesToKnowledgeRatio |
int | 10-90 (grensesnitt-trinn 10) |
% av det tilgjengelige kunnskaps-/minnebudsjettet tildelt sammendrag ved kontekster over 8k |
§ appearance
| Felt | Type | Begrensning | Beskrivelse |
|---|---|---|---|
launcherLabelLine1 |
string | maks 60 | Første linje med startknapptekst |
launcherLabelLine2 |
string | maks 60 | Andre linje med startknapptekst |
launcherTextColor |
string | Tekstfarge for startknapp | |
launcherDismissEnabled |
boolean | Tillat å lukke startknappen | |
widgetFontFamily |
string | inter, system, nunito, lato, montserrat, poppins, source-serif, jetbrains-mono |
Skriftfamilie for widget |
chatDrawerEnabled |
boolean | Aktiver skuffepresentasjon (drawer) | |
launcherColor |
string (hex) | Bakgrunnsfarge for startknapp (chat-ikon) | |
headerColor |
string (hex) | Bakgrunnsfarge for chat-topptekst | |
titleColor |
string (hex) | Tittelfarge for chat-topptekst | |
subtitleColor |
string (hex) | Undertittelfarge for chat-topptekst | |
clientMessageBubbleColor |
string (hex) | Boblefarge for meldinger fra besøkende | |
clientMessageTextColor |
string (hex) | Tekstfarge for meldinger fra besøkende | |
responseMessageBubbleColor |
string (hex) | Boblefarge for bot-svar | |
responseMessageTextColor |
string (hex) | Tekstfarge for bot-svar | |
chatSubheader |
string | Slagord som vises under chat-tittelen | |
senderPlaceholder |
string | Plassholdertekst i meldingsfeltet | |
resetConversationTooltip |
string | Verktøytips på knappen for å tilbakestille samtalen | |
chatAlignment |
string (enum) | ∈ {left, right} |
Hvilken side av skjermen chatten skal forankres til |
launcherBottomMargin |
int | 0-500 |
Startknappens avstand fra bunnkanten (px) |
launcherSideMargin |
int | 0-500 |
Startknappens avstand fra sidekanten (px) |
displayShadow |
boolean | Skygge under widgeten | |
customCss |
string | Rå CSS injisert i widget-iframe | |
chatMessageLinkTarget |
string (enum) | ∈ {_blank, _self} |
Hvordan lenker inne i bot-meldinger åpnes |
minimizedDisplayMode |
string (enum) | ∈ {icon, minified, pill} |
Minimert tilstand: startknappikon, kompakt inntastingsfelt eller pille |
chatDesktopWidthPx |
int | Widget-bredde på datamaskin | |
chatDesktopHeightPx |
int | Widget-høyde på datamaskin | |
chatMobileSizePercent |
int | Widget-størrelse på mobil som % av visningsområdet | |
messageFontSize |
int | Skriftstørrelse for meldingstekst (px) | |
showChatbotBubblesDesktop |
boolean | Vis de flytende oppmerksomhetsboblene på datamaskin | |
showChatbotBubblesMobile |
boolean | Vis de flytende oppmerksomhetsboblene på mobil | |
chatbotBubblesDelaySeconds |
int | Forsinkelse før oppmerksomhetsboblene vises (sekunder) | |
launcherIconFullSize |
boolean | Render det egendefinerte startknappikonet helt ut til kanten i stedet for innfelt | |
welcomeScreenEnabled |
boolean | Vis Welcome Screen (velkomstskjerm) i stedet for å gå rett til chatten | |
welcomeScreenQuestionsLabel |
string | Etikett over de foreslåtte spørsmålene på velkomstskjermen | |
welcomeScreenHideHumanContactForm |
boolean | Skjul handlingen for kontaktskjema til mennesker i toppteksten mens velkomstskjermen vises. Den dukker opp igjen etter den besøkendes første melding. Boter opprettet før 2026-09-02 har true som standard |
|
welcomeScreenHideLiveChat |
boolean | Skjul live chat-handlingen i toppteksten mens velkomstskjermen vises. Den dukker opp igjen etter den besøkendes første melding. Boter opprettet før 2026-09-02 har true som standard |
|
headerActionsLayout |
string | ICONS eller DROPDOWN |
Hvordan live chat og kontaktskjema til mennesker tilbys i chat-toppteksten: ICONS (hvert sitt ikon) eller DROPDOWN (gruppert i topptekstmenyen). Boter opprettet før 2026-09-02 har ICONS som standard |
stackSuggestedQuestions |
boolean | Stable foreslåtte spørsmål vertikalt (i motsetning til side om side) | |
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 bot-svar i bobler med skriveanimasjon | |
simulateHumanTypingDelay |
int | 0-200 |
Forsinkelse mellom meldingsbobler (sekunder) |
footerMarkdown |
string | maks 255 | Egendefinert bunntekst-markdown vist under chatten |
avatarUrl |
string | skrivebeskyttet | Fullstendig offentlig URL for avataren; for å endre den, last opp via multipart-delen avatar |
Multipart ved POST/PATCH: avatar (fildel). GET- / responsinnhold utelater filinnholdet - bare URL-en overføres.
§ humanSupport
| Felt | Type | Begrensning | Beskrivelse |
|---|---|---|---|
enabled |
boolean | Bryter for Human Support-flyten | |
email |
string | obligatorisk (create-strict) når enabled=true |
Adresse som mottar e-poster for menneskelig brukerstøtte |
dialogMessage |
string | Oppfordringsmelding 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 tekstfeltet for melding | |
emailWithConversationContent |
boolean | Hvis true, inkluderes samtalehistorikken i e-postteksten | |
customFormId |
long | id for et eksisterende tilpasset skjema | Erstatt det innebygde kontaktskjemaet med et tilpasset skjema. Ved opprettelse brukes det innebygde skjemaet dersom feltet utelates; ved PATCH lar null gjeldende valg forbli uendret |
customFormMapping |
string | JSON-kodet streng | Mapper felter fra det tilpassede skjemaet over til e-postfeltene for menneskelig brukerstøtte |
requirePolicyAccept ligger under consent.humanSupportRequirePolicyAccept, ikke her.
§ leadCollection
| Felt | Type | Begrensning | Beskrivelse |
|---|---|---|---|
enabled |
boolean | Bryter for lead-skjema | |
nameEnabled |
boolean | Samle inn navn | |
nameLabel |
string | Etikett på navnefeltet | |
emailEnabled |
boolean | Samle inn e-post | |
emailLabel |
string | obligatorisk (create-strict) når enabled=true OG emailEnabled=true |
Etikett på e-postfeltet |
phoneEnabled |
boolean | Samle inn telefonnummer | |
phoneLabel |
string | obligatorisk (create-strict) når enabled=true OG phoneEnabled=true |
Etikett på telefonfeltet |
leaveDetailsMessage |
string | obligatorisk (create-strict) når enabled=true |
Melding som oppfordrer den besøkende til å legge igjen kontaktinformasjon |
thankYouMessage |
string | obligatorisk (create-strict) når enabled=true |
Bekreftelse som vises etter innsending |
requireBeforeNewConversation |
boolean | Hvis true, må skjemaet sendes inn før chatten starter; hvis false, avgjør AI når skjemaet skal vises |
|
emailNotificationEnabled |
boolean | Send e-post til eieren hver gang et lead samles inn | |
emailNotificationAddress |
string | Varselmottaker (bruker standardmessig kontoens e-postadresse) | |
emailWithConversationContent |
boolean | Hvis true, inkluderes samtalehistorikken i varselet |
| customFormId | long | id for et eksisterende tilpasset skjema | Erstatt det innebygde lead-skjemaet med et tilpasset skjema. Ved opprettelse brukes det innebygde skjemaet dersom feltet utelates; ved PATCH lar null gjeldende valg forbli uendret |
| customFormMapping | string | JSON-kodet streng | Mapper felter fra det tilpassede skjemaet over til navn / e-post / telefon |
Regel på tvers av felter ved opprettelse (create-strict): enabled=true krever minst én av emailEnabled eller phoneEnabled. requirePolicyAccept ligger under consent.leadCollectionRequirePolicyAccept, ikke her.
§ liveChat
| Felt | Type | Begrensning | Beskrivelse |
|---|---|---|---|
enabled |
boolean | Bryter for Live Chat-funksjonen | |
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) |
Åpningstider for live chat - se "Structured fields and ranges" for nøyaktig format |
outOfHoursMessage |
string | Melding som vises når åpningstidene tilsier at vi er stengt | |
closeModalMessage |
string | Tittel på modalfeltet for "lukke live chat?" | |
closeModalConfirmLabel |
string | Etikett på bekreftelsesknappen i lukkemodalen | |
closeModalCancelLabel |
string | Etikett på avbrytknappen i lukkemodalen | |
closeModalTooltipText |
string | Verktøytips på knappen for å avslutte 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 true, videresendes til Human Support-skjemaet når ingen operatør svarer | |
requireAdminOnline |
boolean | Krev en tilgjengelig operatør i henhold til tilstedeværelsesinnstillinger | |
presenceMode |
string | Tilstedeværelsesmodus; bruk verdien fra en bot konfigurert i brukergrensesnittet | |
hideHumanSupportWhenLiveChatAvailable |
boolean | Skjul kontaktskjemaet når live chat er tilgjengelig | |
missedEmailEnabled |
boolean | standard true |
Send e-post til boteieren når en live chat-forespørsel ikke ble besvart. Forblir usatt på eldre boter, noe som tolkes som aktivert |
requirePolicyAccept ligger under consent.liveChatRequirePolicyAccept, ikke her.
§ consent
| Felt | Type | Begrensning | Beskrivelse |
|---|---|---|---|
newConversationRequirePolicyAccept |
boolean | Krev samtykke til personvernerklæringen før en ny samtale startes | |
humanSupportRequirePolicyAccept |
boolean | Krev samtykke til personvernerklæringen før Human Support-skjemaet sendes inn | |
leadCollectionRequirePolicyAccept |
boolean | Krev samtykke til personvernerklæringen før lead-skjemaet sendes inn | |
liveChatRequirePolicyAccept |
boolean | Krev samtykke til personvernerklæringen før en live chat-økt startes | |
newConversationConsentDescription |
string | Innledende tekst for samtykkeskjermen ved samtalestart | |
privacyPolicyConsentCheckboxLabel |
string | Etikett ved siden av samtykkeavmerkingsboksen (inneholder vanligvis en lenke til personvernerklæringen) |
§ whiteLabel
| Felt | Type | Begrensning | Beskrivelse |
|---|---|---|---|
hideRoboAssistLogo |
boolean | White Label-funksjon; underlagt kontogrenser | Skjul standard ChatLab-logo i bunnteksten |
whitelabelLogoLink |
string | White Label-funksjon; underlagt kontogrenser | URL som den tilpassede bunntekstlogoen lenker til |
assignToCustomDomain |
boolean | begrenset av CUSTOM_DOMAIN-funksjonen |
Vær vert for chatten på det konfigurerte egendefinerte domenet |
whitelabelLogoUrl |
string | skrivebeskyttet | Fullstendig offentlig URL for White Label-logoen; for å endre den, last opp via multipart-delen whitelabel_logo |
Multipart ved POST/PATCH: whitelabel_logo (fildel). GET- / responsinnhold utelater filinnholdet - bare URL-en overføres.
§ security
| Felt | Type | Begrensning | Beskrivelse |
|---|---|---|---|
allowedDomains |
string | Kommaseparert liste over domener som har tillatelse til å bygge inn widgeten (tom = ingen hvitliste) | |
spamFilterEnabled |
boolean | Aktiver søppelpostfilteret per bot for innkommende meldinger | |
countryFilterMode |
string | BLACKLIST eller WHITELIST |
Hvordan landlistene tolkes. Selve listene forblir kun tilgjengelige for administratorer |
talkMessagesRateLimit |
int | >= 0; 0 deaktiverer |
Maksimalt antall brukermeldinger tillatt innenfor frekvensgrensevinduet |
talkMessagesRateLimitDurationSeconds |
int | >= 0 |
Varighet for frekvensgrensevinduet (sekunder) |
talkMessagesRateLimitHitMessage |
string | Melding som vises til den besøkende når frekvensgrensen er nådd |
§ voice
| Felt | Type | Begrensning | Beskrivelse |
|---|---|---|---|
inputEnabled |
boolean | Tillat den besøkende å diktere meldinger (tale til tekst) | |
conversationEnabled |
boolean | krever talefunksjonen 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-* |
Talemodell. Faktureres per minutt, prisene varierer per modell |
turnDetection |
string | leverandørspesifikk | Modus for turtaking |
audioPrompt |
string | Ekstra systemledetekst som kun brukes for taleinnlegg | |
welcomeMessage |
string | Muntlig åpningsreplikk | |
language |
string | språkkode | Hovedspråk for tale |
additionalLanguages |
string | kommaseparerte språkkoder | Ekstra språk taleagenten godtar |
maxDurationSeconds |
int | Absolutt maksgrense for en enkelt talesamtale | |
maxDurationMessage |
string | Melding som vises når maksgrensen er nådd |
§ multilingual
| Felt | Type | Begrensning | Beskrivelse |
|---|---|---|---|
enabled |
boolean | Bryter for flerspråklig modus | |
mode |
string | AUTODETECT eller FIXED_LIST |
Hvordan boten velger svarspråk |
baseLanguage |
string | språkkode | Språket botens egne tekster er skrevet på |
languages |
string | kommaseparerte språkkoder | Språk som tilbys den besøkende |
knowledgeLanguageMode |
string | NONE, MAIN eller DYNAMIC |
Hvordan kunnskap på andre språk håndteres |
knowledgeLanguageFallback |
string | språkkode | Språk som brukes når det ikke finnes treff |
§ advanced
| Felt | Type | Begrensning | Beskrivelse |
|---|---|---|---|
model |
string | underlagt kontogrenser; se "AI text models" ovenfor | LLM-identifikator (f.eks. 5.6-LUNA) |
temperature |
decimal | 0.0-1.0 |
Samplings-temperatur (tilsvarer glidebryteren i grensesnittet) |
chatContextSize |
int | ∈ {8000, 16000, 32000}; justeres automatisk ned til kontogrensen |
Konfigurert kontekstbudsjett, inkludert instruksjoner, historikk og kunnskap |
botMessagesLimit |
long | 0 eller multiplum av 1000 (f.eks. 1000, 2000, 10000) |
Månedlig grense for bot-meldingskreditter (0 = ingen ekstra bot-grense; kontobudsjettet gjelder fortsatt) |
internalLocale |
string | språkkode i formatet ll_CC |
Språk for grensesnittelementer i widgeten (atskilt fra role.language) |
productsViewEnabled |
boolean | Hvis true, vises Offer Cards (tilbudskort) for netthandel inne i chatten | |
includeProductsInKnowledgeBase |
boolean | Hvis true, indekseres produktkatalogen som en del av kunnskapsbasen |
Utenfor API-ets omfang
Administrasjonsgrensesnittet har noen områder som med hensikt ikke er eksponert i denne versjonen av Management API:
- Trening og sletting - disse endepunktene lister ikke opp alle boter, administrerer ikke treningsdatasett og sletter ikke boter. Bruk appen for disse arbeidsflytene.
- Flow-fanen - det visuelle redigeringsverktøyet for samtalesekvenser (Flow Editor - trinn og overganger). Ikke eksponert via Management API.
- Actions-fanen - administrerte integrasjoner for e-handel/bestilling, AI Search og egendefinerte API-funksjoner. Verktøykall (tool calling) har aldri vært en del av Management API.
- Selve byggemaskinen for tilpassede skjemaer - opprettelse og redigering av tilpassede skjemaer er ikke eksponert. Du kan likevel koble et eksisterende skjema til en bot via
leadCollection.customFormIdoghumanSupport.customFormId. - Egendefinerte ikoner for åpning/lukking av chat -
customLauncherIconVisible,openChatIcon,closeChatIcon. API-et eksponerer kun de viktigste multipart-deleneavatarogwhitelabel_logo. - IP- og landlister - selve oppføringene er kun tilgjengelige for administratorer. Bare tolkningsmodusen er eksponert via
security.countryFilterMode.
Endepunkter
POST /v1/management/bots
Opprett en ny bot. To likeverdige Content-Types godtas; velg den som passer best.
Modus A - ren JSON (anbefales når du ikke trenger å laste opp en avatar / logo i samme forespørsel):
Content-Type: application/json- Forespørselskroppen (request body) er JSON-konfigurasjonen for boten (ingen
data-innpakning) - Filer (avatar / logo) kan lastes opp senere via en ny
PATCHved bruk av modus B
Modus B - multipart/form-data (brukes ved opplasting av filer i samme forespørsel):
Content-Type: multipart/form-data; boundary=...data-JSON-del (påkrevd,Content-Type: application/json) - botkonfigurasjon i den nestede strukturen beskrevet ovenforavatar-fildel (valgfri) - avatarbilde for botenwhitelabel_logo-fildel (valgfri) - White Label-logo (gjelder bare hvis kontoen din inkluderer White Label)
Bare name er påkrevd i JSON; alle andre felt faller tilbake til standardverdiene som veiviseren i administrasjonsgrensesnittet ville ha satt.
Eksempel på forespørselskropp
Dette er den maksimale data-JSON-en - hver seksjon er fylt ut. Send bare de seksjonene du har bruk 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.6-LUNA",
"temperature": 0.4,
"chatContextSize": 16000,
"botMessagesLimit": 1000,
"internalLocale": "en_US",
"productsViewEnabled": false
}
}
Valideringsregler med egne feilmeldinger:
name- påkrevd, maks 150 tegnadvanced.temperature- mellom0.0og1.0chatMemory.summariesToKnowledgeRatio- heltall mellom10og90(prosent, trinn på10)appearance.launcherBottomMargin,appearance.launcherSideMargin- mellom0og500appearance.footerMarkdown- maks 255 tegnhumanSupport.enabled=truekrever athumanSupport.emailer angittleadCollection.enabled=truekrever at minst én avleadCollection.emailEnabledellerleadCollection.phoneEnableder satt til true; kanalen som er aktivert krever også tilhørende etikett, i tillegg tilleaveDetailsMessageogthankYouMessageadvanced.chatContextSizelåses til kontoens maksimale støttede kontekststørrelse. Ikke gå ut fra at andre numeriske felt låses automatisk.
Felt med verdien null på serveren utelates fra JSON-kroppen - bare felt med verdier som ikke er null overføres.
Eksempel på svarkropp (201)
Samme struktur som forespørselen, i tillegg til den skrivebeskyttede meta-blokken og engangsverdien apiKey på øverste nivå. 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.6-LUNA",
"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 som er knyttet til den nye boten. Klarteksten vises én gang og kan ikke hentes frem igjen fra API-et senere; ta vare på den på din side umiddelbart.
Svarhodet 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 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}
Returner den nåværende konfigurasjonen for en bot du eier.
Curl-eksempel
curl https://api.chatlab.com/aichat/v1/management/bots/4287 \
-H "Authorization: Bearer mk_..."
Eksempel på svarkropp (200)
Samme struktur som POST-svaret, minus engangsverdien apiKey. meta-blokken er inkludert. Returnerer 404 not_found_error hvis boten ikke finnes eller ikke tilhører kontoen din.
Nåværende avatar og White Label-logo leveres som fullt kvalifiserte, skrivebeskyttede nettadresser (appearance.avatarUrl, whiteLabel.whitelabelLogoUrl) - basert på samme protokoll + vert + kontekstbane som betjente denne forespørselen. Hent dataene ved å gjøre en GET-forespørsel direkte mot disse adressene; for å erstatte en av filene laster du opp en ny via multipart-delen avatar / whitelabel_logo ved PATCH. Disse URL-feltene ignoreres dersom de sendes inn i en forespørselskropp.
{
"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.6-LUNA",
"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"
}
}
Klone en bot
Forespørselskroppen (request body) til POST /v1/management/bots og responskroppen til GET /v1/management/bots/{bot_id} har samme struktur, så kloning er en tretrinnsprosess: GET kilden, fjern serveradministrerte identitetsfelter, 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å toppnivå. meta-objektet (id, createdAt, updatedAt) er serveradministrert og skrivebeskyttet - å la det ligge i POST-kroppen gjør ingen skade (serveren ignorerer det), men å fjerne det gjør intensjonen eksplisitt og holder nyttelasten ren. Rediger eventuelt name slik at klonen kan skilles 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 oppbygging av 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 i ren tekst returneres kun i denne opprettelsesresponsen - kopier den før du forkaster responskroppen; den kan ikke hentes ut senere.
Dette kopierer støttede innstillinger, ikke en ferdig trent chatbot. Treningsinnhold, samtalehistorikk, integrasjoner/handlinger, Flow og skjemadefinisjoner klones ikke av disse endepunktene. Konfigurer disse separat i appen.
Ytterligere 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 kilde-URL-ene og laster dem opp som multipartavatar/whitelabel_logo-deler - enten i selve opprettelses-POST-en (Modus B) eller i en påfø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 av opprettelses-POST-en er den eneste som genereres automatisk; opprett flere nøkler fra botens API-fane ved behov.
PATCH /v1/management/bots/{bot_id}
Oppdater ett eller flere felter på en bot du eier. Bare seksjoner/felter som er til stede i JSON-en blir endret; alt som utelates (eller sendes som null) forblir uendret. Semantikk for delvis oppdatering gjelder per felt innenfor en innsendt seksjon.
To likeverdige Content-Type-verdier godtas (samme som POST):
Modus A - ren JSON (anbefales når du bare oppdaterer innstillinger):
Content-Type: application/json- Forespørselskroppen er patch-JSON-en (ingen
data-innpakning)
Modus B - multipart/form-data (brukes ved opplasting av filer):
dataJSON-del (valgfri) - selve patchen. Sendes bare hvis du vil endre felter. Kan utelates helt hvis du bare vil laste opp en avatar eller logo.avatarfildel (valgfri) - erstatter avatarenwhitelabel_logofildel (valgfri) - erstatter White Label-logoen (gjelder bare hvis kontoen din inkluderer White Label)
Alle tre delene er valgfrie i PATCH, men minst én må være til stede for at kallet skal ha noen funksjon.
Eksempel på forespørselskropp (flere seksjoner)
Alle felter som godtas av POST /v1/management/bots kan også sendes her. Eksempelet nedenfor illustrerer flere seksjoner, ikke alle støttede felter; i praksis sender du bare 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 uendret.
{
"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 - erstatt 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 patchen ble utført, inkludert meta-blokken. Ingen apiKey-felt. Returnerer 404 not_found_error hvis boten ikke finnes eller ikke tilhører din konto.
Eksempelet nedenfor viser responsen etter å ha utført patchen fra Full request body (multiple sections) ovenfor på boten fra GET-eksempelet - endrede felter gjenspeiler 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 abonnementsbruk for kontoen som eier Management-nøkkelen.
Responskropp (200)
{
"subscriptionType": "your-plan-id",
"messages": {"used": 4123, "limit": 11000, "remaining": 6877},
"bots": {"used": 3, "limit": 5, "remaining": 2}
}
subscriptionTypeer en identifikator i små bokstaver for kontoens gjeldende plan (your-plan-ider en illustrativ plassholder). 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 ugjennomsiktig streng, ikke en fast enum.messages.used/limit/remaininger meldingskreditter for gjeldende kalendermåned, og tilbakestilles den første dagen i måneden, ikke på fornyelsesdagen for abonnementet. De er kredittvektet, ikke rene antall svar.bots.used/limit/remainingteller eide boter, inkludert boter satt på pause, opp mot kontoens totale bot-grense.
Rate limit-headere
Responser som når rate limit-stadiet (dvs. autentisering og IP-hviteliste er bestått) inkluderer:
X-RateLimit-Limit: 10
X-RateLimit-Remaining: 7
X-RateLimit-Reset: 1715430000
X-RateLimit-Limit- grensen per nøkkel som faktisk ble brukt for dette kallet (10 som standard, eller din konfigurerterateLimitPerMinutehvis den er lavere).X-RateLimit-Remaining- gjenværende tokens i bøtten rett etter dette kallet.X-RateLimit-Reset- Unix epoch-sekunder 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-responser settes også Retry-After, oppgitt i hele sekunder til minst ett 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 - begrensningen sjekkes først etter at autentisering og IP-kontroller er fullført.
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 det er lett å se hvilken del som feilet:
{
"error": {
"type": "invalid_request_error",
"code": "invalid_parameter",
"message": "humanSupport.email Human support email is required when humanSupport.enabled=true"
}
}
Ugyldige verdier for enum- / lukkede felt (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.