Management API áttekintés
A Management API olyan háttérirodai műveletekre szolgál, amelyek nem járnak chatüzenetek küldésével:
- bot programozott létrehozása a
POST /v1/management/botshasználatával - egy saját bot adatainak lekérése a
GET /v1/management/bots/{bot_id}használatával - egy adott bot frissítése a
PATCH /v1/management/bots/{bot_id}használatával - az előfizetés-használat lekérése a
GET /v1/usagehasználatával
A Management-kulcsok a fiókjához kapcsolódnak, nem egy-egy adott bothoz. Szándékosan el vannak különítve a Bot Talk-kulcsoktól, így egy kompromittálódott chatkulcs nem tudja módosítani a botjait, és nem férhet hozzá a számlázási adataihoz sem.
Alap URL
https://api.chatlab.com/aichat
A jelen cikkben szereplő összes végpont ehhez az alap URL-hez viszonyítva értendő.
Első lépések
- Nyissa meg az adminisztrációs felületet, és lépjen az Account Settings > Management API (Fiókbeállítások > Management API) menüpontra.
- Kattintson a Create Management Key (Management-kulcs létrehozása) lehetőségre, adja meg a nevét, szükség esetén állítson be IP-engedélyezési listát (whitelist) és kérésszám-korlátot (rate limit), majd mentse el.
- Másolja ki a teljes kulcsot a sikeres műveletet jelző felugró ablakból. A szöveges kulcs csak egyszer jelenik meg.
A kulcs formátuma a következőre hasonlít: mk_abcdefghijklmnopqrstuvwxyz012345. Az mk_ előtag különbözteti meg a Bot Talk-kulcsoktól (ck_).
Hitelesítés
Authorization: Bearer mk_abcdefghijklmnopqrstuvwxyz012345
Ha egy mk_ kulcsot küld a /v1/chat (vagy bármely más Bot Talk) végpontra, a rendszer a 403 key_type_not_allowed hibát adja vissza. Ha egy ck_ kulcsot küld a /v1/management/* végpontokra, ugyanezt a hibát fogja kapni.
Korlátok
- Felhasználónként legfeljebb 5 aktív Management API-kulcs
- Kulcsonként legfeljebb 10 kérés percenként (token bucket algoritmus, 10-es kapacitás, egyenletes újratöltés kb. 6 másodpercenként 1 tokennel). Létrehozáskor lefelé módosítható - alacsonyabb
rateLimitPerMinutebeállításakor a felső korlát csökken, és az újratöltési sebesség is ehhez igazodik.
Jogosultságok
Minden Management-kulcs az alábbi három jogosultság bármely részhalmazával rendelkezhet. Létrehozáskor legalább egyet ki kell választani, ellenkező esetben a kérés a következő hibával elutasításra kerül: 400 invalid_request_error. Ha olyan kulccsal hív meg egy végpontot, amely nem rendelkezik a szükséges jogosultsággal, a rendszer a 403 insufficient_permissions hibát adja vissza.
bot_read- szükséges aGET /v1/management/bots/{bot_id}híváshozbot_management- szükséges aPOST /v1/management/botsés aPATCH /v1/management/bots/{bot_id}híváshozusage- szükséges aGET /v1/usagehíváshoz
A kéréstörzs felépítése: beágyazott szakaszok, amelyek leképezik az adminfelület füleit
A POST és a PATCH kérések egy 13 szakaszra osztott JSON törzset fogadnak el. Mindegyik szakasz az adminfelület botbeállításainak oldalsávján található egy-egy alfület képez le, így a JSON-kulcsok és a látható fülek megegyeznek: ha módosítja a consent.humanSupportRequirePolicyAccept értékét az API-n keresztül, ugyanaz a kapcsoló fog átváltani a Consent & Privacy (Hozzájárulás és adatvédelem) fülön az adminfelületen.
role- bot perszónája, nyers prompt, válaszhossz, nyelv, webhely / vállalati kontextus (Role & Behavior fül)conversation- üdvözlőüzenet, kérdésfinomítás, beszélgetés-folytonosság, értékelési kapcsoló + elemleírások, javasolt kérdések tartalma + dinamikus kísérőkérdések (Chat Conversation fül)chatMemory- chatmemória-kapcsoló, összefoglaló promptok, kontextus-elosztás (Summaries & Memory fül)appearance- színek, szövegek, méretek, egyéni CSS, üdvözlőképernyő, javasolt kérdések stílusa, automatikus megnyitási viselkedés, emberi gépelés szimulálása, lábléc markdown (Appearance fül)humanSupport- emberi kapcsolatfelvételi űrlap (Human Contact Form fül)leadCollection- érdeklődőgyűjtő űrlap (Lead Collection fül)liveChat- élő chates átadás (Live Chat fül)consent- mind a négy adatvédelmi hozzájárulási kapcsoló, valamint a hozzájárulási képernyő szövege (Consent & Privacy fül)whiteLabel- logó elrejtése, egyéni logóhivatkozás, egyéni doménes hosztolás (Whitelabel fül)security- engedélyezett domének, spamszűrő, beszélgetési kérésszám-korlátok (Security fül)voice- hangbevitel és hangbeszélgetések: modell, hang, nyelvek, prompt, időtartamkorlát (Voice Conversation fül)multilingual- többnyelvű mód, alapnyelv, felkínált nyelvek, tudásbázis-nyelvek kezelése (Languages fül)advanced- LLM-modell, hőmérséklet (temperature), kontextusméret, bot üzenetkorlát, belső területi beállítás, Offer Cards (Model & Advanced fül)
Egyedül a name található a legfelső szinten, mivel ez a botot azonosítja, és nem tartozik egyik konkrét fülhöz sem.
A botbeállítások oldalsávja jelenleg 15 alfület tartalmaz, amelyek közül 13 a fenti szakaszoknak felel meg. Az a két alfül, amelyhez nem tartozik megfelelő szakasz: a Flow és az Actions - mindkettőt az alábbi "Az API hatókörén kívül eső elemek" rész ismerteti. A 13 leképezett fül a következő: Appearance, Chat Conversation, Role & Behavior, Human Contact Form, Lead Collection, Live Chat, Whitelabel, Consent & Privacy, Security, Model & Advanced, Summaries & Memory, Voice Conversation és Languages.
A kéréstörzs és a választörzs felépítése megegyezik. A válasz két további elemet tartalmaz:
meta- csak olvasható: botazonosító és időbélyegek. Ennek eltávolításával a GET-válasz érvényes POST-törzzsé alakítható.apiKey- kizárólag létrehozáskor szerepel a válaszban: az új bothoz újonnan létrehozott Bot Talk API-kulcs.
A közös adatstruktúrán belül két mező csak olvasható - megjelenik a válaszban, de a rendszer figyelmen kívül hagyja őket, ha a POST/PATCH kérésben próbálja elküldeni őket:
appearance.avatarUrl- a bot avatárképének teljes, nyilvános URL-címe (pl.https://api.chatlab.com/aichat/content/avatar_xyz.png). A bájtok letöltéséhez közvetlenül indítson rá egy GET-kérést. Módosításához töltsön fel egy új fájlt a többrészesavatarrész használatával (lásd a PATCH leírását).whiteLabel.whitelabelLogoUrl- a white-label fejléclogó teljes, nyilvános URL-címe. Ugyanaz a működési elv, mint azavatarUrlesetében. Módosításához töltsön fel egy új fájlt a többrészeswhitelabel_logorész használatával (lásd a PATCH leírását).
Mindkét URL az aktuális kérés sémáját + hosztját + kontextusútvonalát használja, így egy white-label egyéni domén esetén az adott domén gyökerével térnek vissza (pl. https://api.acme.com/aichat/content/...).
Ha a PATCH során ki szeretne hagyni egy szakaszt, küldjön null értéket; ha egy szakaszon belül egyetlen mezőt szeretne kihagyni, adjon meg null értéket arra a mezőre. A mezőszintű null soha nem törli a tárolt értéket - csupán annyit jelent: "ne módosítsd".
Szerepkör és a prompt összeállítása
Az LLM által ténylegesen megkapott rendszerprompt (system prompt) a role.role értékétől függően kétféleképpen épülhet fel. Ha tudja, melyik ágon van, pontosan látni fogja, mely mezők számítanak, és melyek azok, amelyeket a rendszer ugyan tárol, de figyelmen kívül hagy.
A ág - a role.role értéke CUSTOMER_SUPPORT, SALES vagy LEAD_COLLECTION_AGENT (sablonvezérelt)
A háttérrendszer egy beépített sablon alapján állítja össze a promptot, és a role.rawPrompt értékét teljesen figyelmen kívül hagyja (az érték továbbra is elmentésre kerül a botnál, csupán nincs használatban). A sablon a következőket foglalja magában:
role.role- a szerepkör megnevezése (pl. "Customer Support") és a szerepkör-specifikus utasítások automatikusan hozzáfűzvename- a bot neve, beillesztve a bevezető mondatbarole.language- az"Auto Detect"beállítás hatására a bot a felhasználó nyelvét követi; bármely más érték (pl."English","Polish") a következő utasítássá alakul: "Output in {language}, unless user uses another language"role.responseLength- egy célérték szerinti szószámhoz rendelve:Concise≈ 50 szó,Normal≈ 100 szó,Detailed≈ 200 szórole.websiteAddress- opcionális; ha nem üres, hozzáfűzésre kerül a következő formában: "for the users of the website {url}"role.companyDescription- opcionális; ha nem üres, egy extra bekezdésként beillesztésre kerül a szerepkör utasításai elé
A legtöbb bot számára ez az ajánlott ág - így külön beállítások nélkül kap szerepkörre optimalizált viselkedést és beépített biztonsági korlátokat.
B ág - a role.role értéke CUSTOM (a hívó által megadott prompt)
A háttérrendszer a role.rawPrompt értékét szó szerint, teljes egészében rendszerpromptként használja. A responseLength, language, websiteAddress, companyDescription értékek elmentésre kerülnek, de nem kerülnek be a promptba - ha azt szeretné, hogy bármelyikük tükröződjön a bot viselkedésében, azt önállóan kell belefoglalnia a rawPrompt szövegébe. A szerepkör-specifikus biztonsági korlátok és a hangnemre vonatkozó utasítások sem kerülnek hozzáadásra; a teljes promptot Ön határozza meg.
A CUSTOM értéket csak akkor használja, ha a sablonvezérelt prompt nem felel meg az Ön felhasználási céljának (pl. rendkívül iparág-specifikus perszónára, egyedi biztonsági megkötésekre vagy nem szabványos kimeneti formátumra van szüksége).
Felsorolás / zárt értékkészletű mezők
Több mező csupán egy rögzített karakterlánc-készletet fogad el. A listán kívüli értékek küldése elutasításra kerül a következő hibával: 400 validation_failed, a mező útvonalát pedig az error.param jelzi. Az értékek megkülönböztetik a kis- és nagybetűket (case-sensitive).
role.role-CUSTOMER_SUPPORT,SALES,LEAD_COLLECTION_AGENT,CUSTOMrole.responseLength-Concise,Normal,Detailedrole.language- a teljes angol nyelvnév az adminfelület legördülő menüjéből, pl.Auto Detect,English,Polish,Spanish,German,French,Italian,Portuguese,Dutch,Russian,Chinese (Simplified),Japanese,Arabic,Hindi, és kb. 80 további nyelv. Az érték szó szerint tárolódik, és behelyettesítésre kerül a promptsablonba, így a kétbetűs ISO-kódokat (en,pl) és a listán nem szereplő egyéb értékeket az API nem utasítja el, de értelmetlen utasítást eredményez, például: "Output in en, unless...". Ha a létrehozáskor nincs megadva, az alapértelmezett érték azAuto Detect.advanced.model- lásd az "AI szöveges modellek" részt lentebb; a választható készletet a fiókkorlátok határozzák meg, és minden olyan érték, amelyet a fiókja nem használhat,400 invalid_parameterhibát adadvanced.chatContextSize-8000,16000,32000. A fiókkorlátok függvénye; a magasabb értékek csendben levágásra kerülnekchatMemory.clientSummaryPromptType-DEFAULT,CUSTOMchatMemory.conversationSummaryPromptType-DEFAULT,CUSTOMappearance.chatAlignment-left,rightappearance.minimizedDisplayMode-icon,minifiedappearance.chatMessageLinkTarget-_blank,_selfleadCollection.requireBeforeNewConversation- logikai (boolean) kapcsoló. Atruearra kötelezi a felhasználót, hogy a beszélgetés megkezdése előtt kitöltse az űrlapot; afalselehetővé teszi, hogy a mesterséges intelligencia döntse el, mikor jeleníti meg az űrlapot (alapértelmezett).
Strukturált mezők és tartományok
Olyan mezők, amelyek egyszerű karakterláncnak vagy számnak tűnnek, de valójában sajátos formátumuk, tartományuk vagy adminfelületi sajátosságuk van, amelyeket érdemes ismerni.
-
advanced.temperature- az elfogadott tartomány0.0és1.0között van, igazodva az adminfelület csúszkájához. Az ezen a tartományon kívül eső értékek elutasításra kerülnek:400 validation_failed. -
chatMemory.summariesToKnowledgeRatio- egész számként megadott százalékérték,10-90között,10-es lépésközzel. Meghatározza, hogy a chat kontextusának mekkora része legyen fenntartva az ügyfél korábbi összefoglalói számára a többi tartalommal (tudásbázis, aktuális beszélgetés, utasítások) szemben. Alapértelmezett értéke50. A10-90tartományon kívül eső értékek elutasításra kerülnek:400 validation_failed. Csak akkor érvényesül, ha achatMemory.enabled=trueÉS achatMemory.summaryConversationsEnabled=true. -
liveChat.schedule- karakterláncként kódolt JSON, a hálózaton nem beágyazott JSON-objektumként halad át. A szerver a nyers karakterláncot szó szerint tárolja; az adminfelület a menetrendszerkesztő renderelésekor a kliensoldalon értelmezi (parse-olja). Értelmezés után a karakterlánc naponkénti egy-egy bejegyzést és egytimezonekulcsot tartalmaz:- minden hétköznap kulcsa (
monday-sunday) a következőhöz rendelődik hozzá:{enabled: boolean, from: "H:MM", to: "H:MM"}24 órás formátumban - a
timezoneegy IANA zónanév (pl."Europe/Warsaw","America/New_York")
Példaérték (ügyeljen a külső idézőjelekre és a belső idézőjelek escape-elésére - ez egyetlen karakterláncmező, nem pedig beágyazott objektum):
"{\"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\"}"A felsorolt órákon kívül a
liveChat.outOfHoursMessageüzenet jelenik meg a látogatónak, és az élő chates átadás szünetel. A belső struktúra érvényesítése kizárólag a kliensoldalon, az adminfelületen fut le - a hibás formátumú JSON-t vagy az ismeretlen kulcsokat az API sima karakterláncként elfogadja, és renderelési hibaként fog megjelenni, amikor később egy emberi felhasználó megnyitja a botot az adminban. A küldés előtt a saját oldalán érvényesítse a struktúrát. - minden hétköznap kulcsa (
-
conversation.positiveRatingTooltip/conversation.negativeRatingTooltip- rövid szövegek, amelyek az egyes AI-válaszok mellett található 👍 / 👎 gombokon jelennek meg, ha aconversation.conversationRatingEnabled=true. Az alapértelmezett szöveg: "I like the response" / "I don't like the response". A végfelhasználók számára látható. -
whiteLabel.hideRoboAssistLogo- white-label képesség, a fiókkorlátok függvénye. Elrejti a "Powered by ChatLab" sort a láblécben. Ha a fiókja nem tartalmazza a white-label funkciót, a rendszer tárolja az értéket, de figyelmen kívül hagyja, és a lábléc mindig megjelenik. -
whiteLabel.whitelabelLogoLink- white-label képesség, a fiókkorlátok függvénye. A kattintás cél-URL-je az egyéni logóhoz, ha ahideRoboAssistLogo=true, és egyéni logófájl lett feltöltve awhitelabel_logotöbbrészes részen keresztül. -
appearance.simulateHumanTypingDelay- másodperc (nem ezredmásodperc),0-200közötti egész szám. A bot egymást követő üzenetbuborékai közötti szünet, ha asimulateHumanTyping=true. Alapértelmezett értéke5. -
appearance.autoOpenChatDelaySeconds- másodperc, egész szám. A widget automatikus megnyílása előtti késleltetés, ha azautoOpenChat=trueés azautoOpenChatDelay=true. -
advanced.internalLocale- IETF területi beállítás kódll_CCformátumban (alsóvonással, NEMll-CCkötőjellel). Az elfogadott értékek egy kb. 95 területi beállításból álló rögzített listából származnak: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_IL, és még sok más. Egy önálló kétbetűs kód ("en") vagy BCP-47 ("en-US") küldése nem szerepel az engedélyezett listán. Alapértelmezett értékeen_US. Ez a beállítás a widget felületén a dátumok/számok formázására szolgál, és elkülönül arole.languagemezőtől (amely a bot társalgási kimeneti nyelve). -
security.talkMessagesRateLimit/security.talkMessagesRateLimitDurationSeconds- egész számok (JSON-számként küldendők, pl.30, nem pedig"30"formában). A0kikapcsolja az IP-nkénti kérésszám-korlátot. Nullától eltérő érték esetén a widget N üzenetet engedélyez a megadott másodperces időtartam alatt, mielőtt megjelenítené asecurity.talkMessagesRateLimitHitMessageüzenetet a látogatónak. -
advanced.botMessagesLimit- egész szám (JSON-szám, pl.1000). A0jelentése "nincs korlát"; egyébként 1000 többszörösének kell lennie (1000,2000,10000, ...). Az olyan értékek, mint a100vagy az1500, elutasításra kerülnek:400 validation_failed. Ezt követően a rendszer csendben a fiókkorláthoz igazítja az értéket.
AI szöveges modellek (advanced.model)
Adja meg a pontos API-értéket (a bal oldali, kódformázott oszlop). Az adminfelületen megjelenő név zárójelben látható. A fiókkorlátok határozzák meg, hogy melyik részhalmaz választható ki; olyan modell küldése, amelyet a fiókja nem használhat, 400 invalid_parameter hibát eredményez. Az új botok alapértelmezett modellje az 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)
Mezőreferencia (teljes kérelemséma)
Minden mező az átviteli rétegben (on the wire), a típusával, korlátozásával és egysoros leírásával. PATCH-szemantika: minden elhagyott (vagy null értékként elküldött) mező érintetlenül hagyja a tárolt értéket. Ugyanez a struktúra érvényes a válaszra is (levonva a többrészes bináris tartalmat; kiegészítve az írásvédett meta blokkal minden válaszban, valamint az apiKey mezővel kizárólag a létrehozási válaszban).
Felső szint
| Field | Type | Constraint | Description |
|---|---|---|---|
name |
string | max 150, kötelező létrehozáskor | A bot megjelenített neve |
role |
object | Lásd: § role | |
conversation |
object | Lásd: § conversation | |
chatMemory |
object | Lásd: § chatMemory | |
appearance |
object | Lásd: § appearance | |
humanSupport |
object | Lásd: § humanSupport | |
leadCollection |
object | Lásd: § leadCollection | |
liveChat |
object | Lásd: § liveChat | |
consent |
object | Lásd: § consent | |
whiteLabel |
object | Lásd: § whiteLabel | |
security |
object | Lásd: § security | |
advanced |
object | Lásd: § advanced |
Csak a válaszban szereplő kiegészítések:
meta: { id, createdAt, updatedAt }- írásvédett.apiKey- string, kizárólag aPOST /v1/management/botsválaszban szerepel - a frissen generált Bot Talk kulcs az új bothoz, amelyet pontosan egyszer ad vissza a rendszer.
§ role
| Field | Type | Constraint | Description |
|---|---|---|---|
role |
string (enum) | CUSTOMER_SUPPORT, SALES, LEAD_COLLECTION_AGENT, CUSTOM |
Előre beállított perszóna; kiválasztja a prompt-sablont (lásd a „Role and prompt construction” szakaszt) |
language |
string | a nyelv teljes angol neve (English, Polish, ...) vagy Auto Detect |
A prompt-sablonnak átadott elsődleges nyelv |
responseLength |
string | ∈ {Concise, Normal, Detailed} |
A kívánt AI-válaszhosszúság (részletesség) |
websiteAddress |
string | A prompt-kontextushoz használt weboldal | |
companyDescription |
string | A prompt-kontextushoz használt cégleírás | |
rawPrompt |
string | Egyéni rendszerszintű prompt - szó szerint csak akkor használatos, ha a role=CUSTOM |
§ conversation
| Field | Type | Constraint | Description |
|---|---|---|---|
welcomeMessage |
string | Az első üzenet, amely megnyitáskor megjelenik a látogatónak | |
queryRefinementEnabled |
boolean | Ha true, pontosítja a látogató kérdését a RAG-lekérés előtt | |
conversationContinuityEnabled |
boolean | Ha true, a visszatérő látogatók a legutóbbi beszélgetésüket folytatják | |
conversationRatingEnabled |
boolean | Ha true, megjeleníti a hüvelykujj fel/le értékelést a bot üzeneteinél | |
positiveRatingTooltip |
string | Eszköztipp a pozitív értékelés gombján | |
negativeRatingTooltip |
string | Eszköztipp a negatív értékelés gombján | |
suggestedQuestions |
string | Új sorokkal elválasztott javasolt kérdések / beszélgetésindítók | |
dynamicSuggestedFollowups |
boolean | Ha true, az AI minden válasz után további javaslatokat tesz a folytatásra | |
dynamicFollowupsAutoIcons |
boolean | Ha true, az AI automatikusan választ emodzsi-ikonokat a dinamikus javaslatokhoz |
§ chatMemory
| Field | Type | Constraint | Description |
|---|---|---|---|
enabled |
boolean | Főkapcsoló a chat-memória funkcióhoz | |
summaryConversationsEnabled |
boolean | Beszélgetésenkénti összefoglalók tárolása | |
conversationSummaryPrompt |
string | Egyéni prompt az egyes beszélgetések összegzéséhez | |
conversationSummaryPromptType |
string (enum) | ∈ {DEFAULT, CUSTOM} |
Az alapértelmezett vagy az egyéni összegző prompt használata |
clientSummaryPrompt |
string | Egyéni prompt az ügyfél több beszélgetésen átívelő összegzéséhez | |
clientSummaryPromptType |
string (enum) | ∈ {DEFAULT, CUSTOM} |
Alapértelmezett vagy egyéni ügyfélprofil-prompt |
summariesToKnowledgeRatio |
int | 10-90, lépésköz 10 |
A chat-kontextusablak összefoglalókra fordított százaléka a RAG-tudásbázissal szemben |
§ appearance
| Field | Type | Constraint | Description |
|---|---|---|---|
launcherColor |
string (hex) | Az indítóikon (chatikon) háttérszíne | |
headerColor |
string (hex) | A chat fejlécének háttérszíne | |
titleColor |
string (hex) | A chat fejlécében lévő cím színe | |
subtitleColor |
string (hex) | A chat fejlécében lévő alcím színe | |
clientMessageBubbleColor |
string (hex) | A látogatói üzenetbuborék színe | |
clientMessageTextColor |
string (hex) | A látogatói üzenet szövegszíne | |
responseMessageBubbleColor |
string (hex) | A bot válaszbuborékjának színe | |
responseMessageTextColor |
string (hex) | A bot válaszának szövegszíne | |
chatSubheader |
string | A chat címe alatt megjelenő szlogen / alcím | |
senderPlaceholder |
string | Helyőrző szöveg az üzenetbeviteli mezőben | |
resetConversationTooltip |
string | Eszköztipp a „reset conversation” (beszélgetés visszaállítása) gombon | |
chatAlignment |
string (enum) | ∈ {left, right} |
A képernyő melyik oldalához igazodjon a chat |
launcherBottomMargin |
int | 0-500 |
Az indítóikon távolsága az alsó széltől (px) |
launcherSideMargin |
int | 0-500 |
Az indítóikon távolsága az oldalsó széltől (px) |
displayShadow |
boolean | Vetett árnyék a widget alatt | |
customCss |
string | A widget iframe-jébe injektált egyéni CSS | |
chatMessageLinkTarget |
string (enum) | ∈ {_blank, _self} |
Hogyan nyíljanak meg a bot üzeneteiben található hivatkozások |
minimizedDisplayMode |
string (enum) | ∈ {icon, minified} |
Minimalizált állapot: indítóikon vagy kompakt beviteli sáv |
chatDesktopWidthPx |
int | Asztali widget-szélesség | |
chatDesktopHeightPx |
int | Asztali widget-magasság | |
chatMobileSizePercent |
int | Mobil widget-méret a nézetablak (viewport) százalékában | |
messageFontSize |
int | Az üzenetszöveg betűmérete (px) | |
showChatbotBubblesDesktop |
boolean | Lebegő figyelemfelkeltő buborékok megjelenítése asztali nézetben | |
showChatbotBubblesMobile |
boolean | Lebegő figyelemfelkeltő buborékok megjelenítése mobilon | |
chatbotBubblesDelaySeconds |
int | Késleltetés a figyelemfelkeltő buborékok megjelenése előtt (másodperc) | |
launcherIconFullSize |
boolean | Az egyéni indítóikon megjelenítése teljes méretben (széltől szélig), belső margó nélkül | |
welcomeScreenEnabled |
boolean | A Welcome Screen (üdvözlőképernyő) megjelenítése a közvetlen chat helyett | |
welcomeScreenQuestionsLabel |
string | A javasolt kérdések feletti címke az üdvözlőképernyőn | |
welcomeScreenHideHumanContactForm |
boolean | Az emberi kapcsolatfelvételi űrlap gombjának elrejtése a fejlécben, amíg a Welcome Screen látható. A látogató első üzenete után újra megjelenik. A 2026-09-02 előtt létrehozott botoknál az alapérték true |
|
welcomeScreenHideLiveChat |
boolean | A Live Chat funkció gombjának elrejtése a fejlécben, amíg a Welcome Screen látható. A látogató első üzenete után újra megjelenik. A 2026-09-02 előtt létrehozott botoknál az alapérték true |
|
headerActionsLayout |
string | DROPDOWN |
Hogyan jelenjen meg a Live Chat és az emberi kapcsolatfelvételi űrlap a chat fejlécében: ICONS (külön ikon mindkettőnek) vagy DROPDOWN (a fejléc menüjébe csoportosítva). A 2026-09-02 előtt létrehozott botoknál az alapérték ICONS |
stackSuggestedQuestions |
boolean | Javasolt kérdések elrendezése függőlegesen (egymás mellé helyezés helyett) | |
suggestedQuestionsFontSize |
int | A javasolt kérdések címkéinek betűmérete (px) | |
suggestedQuestionsTextColor |
string (hex) | A javasolt kérdések címkeszövegének színe | |
suggestedQuestionsBackgroundColor |
string (hex) | A javasolt kérdések címkehátterének színe | |
autoOpenChat |
boolean | A chat automatikus megnyitása asztali nézetben | |
autoOpenChatOnMobiles |
boolean | A chat automatikus megnyitása mobilon | |
autoOpenChatDelay |
boolean | Késleltetés alkalmazása az automatikus megnyitás előtt | |
autoOpenChatDelaySeconds |
int | Automatikus megnyitási késleltetés (másodperc) | |
simulateHumanTyping |
boolean | A bot válaszának buborékokra bontása gépelési animációval | |
simulateHumanTypingDelay |
int | 0-200 |
Késleltetés az egyes üzenetbuborékok között (másodperc) |
footerMarkdown |
string | max 255 | A chat alatt megjelenő egyéni lábléc-markdown |
avatarUrl |
string | írásvédett | Az avatár teljes, nyilvános URL-címe; módosításához töltse fel a többrészes avatar részen keresztül |
Többrészes kérés POST/PATCH esetén: avatar (fájlrész). A GET / választörzsek kihagyják a fájltartalmat - csak az URL szerepel az átvitelben.
§ humanSupport
| Field | Type | Constraint | Description |
|---|---|---|---|
enabled |
boolean | Human Support (emberi ügyfélszolgálat) folyamat kapcsolója | |
email |
string | kötelező (szigorú létrehozás), ha az enabled=true |
Az a cím, amelyre az emberi ügyfélszolgálat e-mailjei érkeznek |
dialogMessage |
string | Az űrlap felett megjelenő, kapcsolatfelvételre ösztönző üzenet | |
thankYouMessage |
string | Az elküldés után megjelenő visszaigazoló üzenet | |
emailMessageSubjectTemplate |
string | Az ügynöknek küldött e-mail tárgysablonja | |
emailMessageContentTemplate |
string | Az ügynöknek küldött e-mail törzssablonja | |
emailPlaceholder |
string | Helyőrző az e-mail beviteli mezőben | |
messagePlaceholder |
string | Helyőrző az üzenet szövegterületén | |
emailWithConversationContent |
boolean | Ha true, a beszélgetés átiratát is tartalmazza az e-mail törzse | |
customFormId |
long | egy létező egyéni űrlap azonosítója | A beépített kapcsolatfelvételi űrlap leváltása egyéni űrlapra. A null megtartja a beépített űrlapot |
customFormMapping |
string | JSON-kódolt karakterlánc | Leképezi az egyéni űrlap mezőit az emberi támogatás e-mail-mezőire |
A requirePolicyAccept a consent.humanSupportRequirePolicyAccept mezőben található, nem itt.
§ leadCollection
| Field | Type | Constraint | Description |
|---|---|---|---|
enabled |
boolean | Leadgyűjtő űrlap kapcsolója | |
nameEnabled |
boolean | Név gyűjtése | |
nameLabel |
string | Címke a név beviteli mezőjénél | |
emailEnabled |
boolean | E-mail gyűjtése | |
emailLabel |
string | kötelező (szigorú létrehozás), ha az enabled=true ÉS az emailEnabled=true |
Címke az e-mail beviteli mezőjénél |
phoneEnabled |
boolean | Telefonszám gyűjtése | |
phoneLabel |
string | kötelező (szigorú létrehozás), ha az enabled=true ÉS a phoneEnabled=true |
Címke a telefon beviteli mezőjénél |
leaveDetailsMessage |
string | kötelező (szigorú létrehozás), ha az enabled=true |
Üzenet, amely arra ösztönzi a látogatót, hogy adja meg az adatait |
thankYouMessage |
string | kötelező (szigorú létrehozás), ha az enabled=true |
Az elküldés után megjelenő visszaigazoló üzenet |
requireBeforeNewConversation |
boolean | Ha true, az űrlapot el kell küldeni a chat kezdete előtt; ha false, az AI dönti el, mikor jelenítse meg az űrlapot |
|
emailNotificationEnabled |
boolean | E-mail értesítés a tulajdonosnak minden egyes begyűjtött lead után | |
emailNotificationAddress |
string | Értesítés címzettje (alapértelmezés szerint a fiók e-mail-címe) | |
emailWithConversationContent |
boolean | Ha true, a beszélgetés átiratát is tartalmazza az értesítés |
Mezők közötti létrehozási szabály: az enabled=true beállítás megköveteli az emailEnabled vagy a phoneEnabled legalább egyikének engedélyezését. A requirePolicyAccept a consent.leadCollectionRequirePolicyAccept mezőben található, nem itt.
| customFormId | long | egy létező egyéni űrlap azonosítója | A beépített leadgyűjtő űrlap leváltása egyéni űrlapra. A null megtartja a beépített űrlapot |
| customFormMapping | string | JSON-kódolt karakterlánc | Leképezi az egyéni űrlap mezőit a név / e-mail / telefon mezőkre |
§ liveChat
| Field | Type | Constraint | Description |
|---|---|---|---|
enabled |
boolean | Live Chat funkció kapcsolója | |
infoMessage |
string | Átadás előtti tájékoztató üzenet | |
startMessage |
string | Az élő munkamenet kezdetekor megjelenő üzenet | |
endMessage |
string | Az élő munkamenet végén megjelenő üzenet | |
nameLabel |
string | Címke a név beviteli mezőjénél az élő chat előzetes űrlapján | |
emailLabel |
string | Címke az e-mail beviteli mezőjénél az élő chat előzetes űrlapján | |
schedule |
string | JSON-kódolt karakterlánc (hétköznapok kapcsolói + from/to + timezone) |
Az élő chat működési ütemezése - a pontos struktúrát lásd a „Structured fields and ranges” szakaszban |
outOfHoursMessage |
string | Munkaidőn kívül megjelenő üzenet | |
closeModalMessage |
string | A „bezárja az élő chatet?” modális ablak címe | |
closeModalConfirmLabel |
string | Megerősítő gomb felirata a bezárási ablakban | |
closeModalCancelLabel |
string | Mégse gomb felirata a bezárási ablakban | |
closeModalTooltipText |
string | Eszköztipp a chat bezárására szolgáló gombon | |
operatorHasJoinedLabel |
string | Egy operátor csatlakozásakor megjelenő felirat | |
operatorDidNotJoinInTimeLabel |
string | Megjelenő felirat, ha az időkorláton belül nem csatlakozik operátor | |
waitingForOperatorToJoinLabel |
string | Az operátorra való várakozás közben megjelenő felirat | |
waitingForOperatorSeconds |
int | Időtúllépés az operátor fogadására (másodperc) | |
redirectToHumanSupportForm |
boolean | Ha true, átirányít a Human Support űrlapra, ha egyetlen operátor sem fogadja a hívást | |
missedEmailEnabled |
boolean | alapértelmezett: true |
E-mail küldése a bot tulajdonosának, ha egy élő chat kérés válasz nélkül maradt. A korábbi botoknál nincs beállítva, ami engedélyezettként értelmeződik |
A requirePolicyAccept a consent.liveChatRequirePolicyAccept mezőben található, nem itt.
§ consent
| Field | Type | Constraint | Description |
|---|---|---|---|
newConversationRequirePolicyAccept |
boolean | Adatvédelmi nyilatkozat elfogadásának megkövetelése új beszélgetés indítása előtt | |
humanSupportRequirePolicyAccept |
boolean | Adatvédelmi nyilatkozat elfogadásának megkövetelése a humán támogatási űrlap elküldése előtt | |
leadCollectionRequirePolicyAccept |
boolean | Adatvédelmi nyilatkozat elfogadásának megkövetelése a leadgyűjtő űrlap elküldése előtt | |
liveChatRequirePolicyAccept |
boolean | Adatvédelmi nyilatkozat elfogadásának megkövetelése élő chat munkamenet indítása előtt | |
newConversationConsentDescription |
string | Bevezető szöveg a beleegyezési képernyőhöz a beszélgetés kezdetén | |
privacyPolicyConsentCheckboxLabel |
string | A beleegyező jelölőnégyzet melletti címke (általában linket tartalmaz az adatvédelmi nyilatkozatra) |
§ whiteLabel
| Field | Type | Constraint | Description |
|---|---|---|---|
hideRoboAssistLogo |
boolean | White Label funkció; a fiók korlátaihoz kötött | Az alapértelmezett ChatLab logó elrejtése a láblécben |
whitelabelLogoLink |
string | White Label funkció; a fiók korlátaihoz kötött | URL, amelyre az egyéni lábléc-logó mutat |
assignToCustomDomain |
boolean | a CUSTOM_DOMAIN funkcióhoz kötött |
A chat hosztolása a konfigurált egyéni domainen |
whitelabelLogoUrl |
string | írásvédett | A White Label logó teljes, nyilvános URL-je; módosításához töltse fel a többrészes whitelabel_logo részen keresztül |
Többrészes kérés POST/PATCH esetén: whitelabel_logo (fájlrész). A GET / választörzsek kihagyják a fájltartalmat - csak az URL szerepel az átvitelben.
§ security
| Field | Type | Constraint | Description |
|---|---|---|---|
allowedDomains |
string | Vesszővel elválasztott domainlista, amelyeken engedélyezett a widget beágyazása (üres = nincs engedélyezési lista) | |
spamFilterEnabled |
boolean | Botonkénti spamszűrő engedélyezése a bejövő üzenetekhez | |
countryFilterMode |
string | BLACKLIST vagy WHITELIST |
Az országlisták értelmezési módja. Maguk a listák csak az adminisztrátorok számára érhetők el |
talkMessagesRateLimit |
int | >= 0; a 0 letiltja |
A gyakoriságkorlátozási (rate-limit) időablakban engedélyezett felhasználói üzenetek maximális száma |
talkMessagesRateLimitDurationSeconds |
int | >= 0 |
A gyakoriságkorlátozási ablak hossza (másodperc) |
talkMessagesRateLimitHitMessage |
string | A látogatónak megjelenített üzenet a gyakorisági korlát elérésekor |
§ voice
| Field | Type | Constraint | Description |
|---|---|---|---|
inputEnabled |
boolean | Lehetővé teszi a látogató számára az üzenetek diktálását (beszédfelismerés / speech to text) | |
conversationEnabled |
boolean | a hangfunkció elérhetőségét igényli a csomagban | Teljes hangalapú beszélgetések engedélyezése |
voiceId |
string | szolgáltató-specifikus hangazonosító (pl. alloy) |
Melyik szintetikus hang beszéljen |
model |
string | pl. GPT-REALTIME-MINI, GEMINI-LIVE, ELEVENLABS-* |
Hangmodell. Percenkénti díjazású, modellenként eltérő díjszabással |
turnDetection |
string | szolgáltató-specifikus | Megszólalás-észlelési mód (turn-taking) |
audioPrompt |
string | Kiegészítő rendszerszintű prompt, amely csak a hangalapú megszólalásoknál használatos | |
welcomeMessage |
string | Kimondott nyitómondat | |
language |
string | nyelvkód | Elsődleges hangnyelv |
additionalLanguages |
string | vesszővel elválasztott nyelvkódok | További nyelvek, amelyeket a hangügynök elfogad |
maxDurationSeconds |
int | Egyetlen hangalapú beszélgetés maximális időtartama | |
maxDurationMessage |
string | Az időkorlát elérésekor megjelenített üzenet |
§ multilingual
| Field | Type | Constraint | Description |
|---|---|---|---|
enabled |
boolean | Többnyelvű mód kapcsolója | |
mode |
string | AUTODETECT vagy rögzített listás mód |
Hogyan válassza ki a bot a válasz nyelvét |
baseLanguage |
string | nyelvkód | Az a nyelv, amelyen a bot saját szövegei készültek |
languages |
string | vesszővel elválasztott nyelvkódok | A látogatónak felkínált nyelvek |
knowledgeLanguageMode |
string | Hogyan kezelje a más nyelveken lévő tudásbázis-elemeket | |
knowledgeLanguageFallback |
string | nyelvkód | Egyezés hiányában használt tartalék nyelv |
§ advanced
| Field | Type | Constraint | Description |
|---|---|---|---|
model |
string | a fiók korlátaihoz kötött; lásd a fenti „AI text models” szakaszt | LLM-azonosító (pl. 5-MINI) |
temperature |
decimal | 0.0-1.0 |
Mintavételezési hőmérséklet (megegyezik a felületen lévő csúszkával) |
chatContextSize |
int | ∈ {8000, 16000, 32000}; automatikusan a fiók limitjéhez igazítva |
A chathistória tokenablakának mérete |
botMessagesLimit |
long | 0 vagy 1000 többszöröse (pl. 1000, 2000, 10000) |
Maximális botválaszok száma beszélgetésenként (0 = nincs korlát) |
internalLocale |
string | nyelvi területi kód ll_CC formátumban |
A widget kezelőfelületi feliratainak területi beállítása (elkülönül a role.language értéktől) |
productsViewEnabled |
boolean | Ha true, megjeleníti az e-kereskedelmi Offer Cards elemeket a chaten belül | |
includeProductsInKnowledgeBase |
boolean | Ha true, indexeli a termékkatalógust a tudásbázis részeként |
Az API hatókörén kívül eső elemek
Az adminisztrációs felület tartalmaz néhány olyan területet, amelyek szándékosan nincsenek közzétéve a Management API jelenlegi verziójában:
- Flow lap - a vizuális beszélgetésfolyamat-szerkesztő (Flow Editor - szakaszok és átmenetek). Nem érhető el a Management API-n keresztül.
- Actions lap - kezelt e-kereskedelmi / foglalási integrációk, AI Search és egyéni API-funkciók. Az eszközhívás (tool calling) sosem képezte a Management API részét.
- Maga az egyéni űrlapkészítő - az egyéni űrlapok létrehozása és szerkesztése nincs közzétéve. Mindazonáltal hozzárendelhet egy meglévő űrlapot a bothoz a
leadCollection.customFormIdés ahumanSupport.customFormIdmezőkön keresztül. - Egyéni chat-megnyitó/-bezáró ikonok -
customLauncherIconVisible,openChatIcon,closeChatIcon. Az API kizárólag a főavataréswhitelabel_logotöbbrészes elemeket teszi elérhetővé. - IP- és országlisták - maguk a bejegyzések csak rendszergazdák számára érhetők el. Kizárólag az értelmezési mód érhető el a
security.countryFilterModemezőn keresztül.
Végpontok
POST /v1/management/bots
Új bot létrehozása. Két egyenértékű Content-Type elfogadott; válassza azt, amelyik kényelmesebb.
A mód - egyszerű JSON (ajánlott, ha nem szükséges avatárt / logót feltölteni ugyanabban a kérésben):
Content-Type: application/json- A kérés törzse maga a bot konfigurációs JSON-ja (
databurkoló nélkül) - A fájlok (avatár / logó) később is feltölthetők egy második
PATCHkéréssel a B mód használatával
B mód - multipart/form-data (akkor használja, ha fájlokat tölt fel ugyanabban a kérésben):
Content-Type: multipart/form-data; boundary=...dataJSON rész (kötelező,Content-Type: application/json) - bot konfiguráció a fent leírt beágyazott formátumbanavatarfájlrész (opcionális) - bot avatár képewhitelabel_logofájlrész (opcionális) - White Label logó (csak akkor érvényes, ha a fiókja tartalmazza a White Label funkciót)
A JSON-ban kizárólag a name megadása kötelező; minden más mező ugyanarra az alapértelmezett értékre áll vissza, amelyet az adminisztrációs felület varázslója is beállítana.
Teljes kéréstörzs
Ez a maximális data JSON - minden szakasz kitöltve. Csak azokat a szakaszokat küldje el, amelyekre szüksége van; minden más az alapértelmezett értéket veszi fel.
{
"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
}
}
Érvényesítési szabályok saját hibaüzenetekkel:
name- kötelező, legfeljebb 150 karakteradvanced.temperature-0.0és1.0közöttchatMemory.summariesToKnowledgeRatio- egész szám10és90között (százalék,10-es lépésközzel)appearance.launcherBottomMargin,appearance.launcherSideMargin-0és500közöttappearance.footerMarkdown- legfeljebb 255 karakter- A
humanSupport.enabled=truemegköveteli ahumanSupport.emailmegadását - A
leadCollection.enabled=truemegköveteli, hogy aleadCollection.emailEnabledvagy aleadCollection.phoneEnabledközül legalább az egyik értéketruelegyen; amelyik csatorna be van kapcsolva, annak a címkéje is kötelező, aleaveDetailsMessageés athankYouMessagemezőkkel együtt - A korlátozott mezők (
advanced.chatContextSize,advanced.botMessagesLimitstb.) csendben a fiókja korlátaihoz igazodnak
Azok a mezők, amelyek értéke a kiszolgálón null, kimaradnak a JSON-törzsből - az adatátvitel során csak a nem null értékű mezők továbbítódnak.
Teljes választörzs (201)
Ugyanolyan felépítésű, mint a kérés, kiegészítve a csak olvasható meta blokkal és az egyszer használatos apiKey értékkel a legfelső szinten. A csak olvasható fájl-URL-eket (appearance.avatarUrl, whiteLabel.whitelabelLogoUrl) a kiszolgáló tölti ki, ha a megfelelő multipart részek fel lettek töltve.
{
"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"
}
Az apiKey mező kizárólag a létrehozáskor jelenik meg - ez az újonnan generált Bot Talk kulcs, amely az új bothoz van kötve. Az egyszerű szöveges formátum csak egyszer látható, és később nem kérhető le az API-ból; azonnal mentse el a saját oldalán.
A Location válaszfejléc tartalmazza az új bot URL-jét (/v1/management/bots/{id}).
Curl példák
A mód - egyszerű JSON (a legegyszerűbb):
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!"}}'
B mód - multipart avatárral:
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}
Egy Ön által birtokolt bot aktuális konfigurációjának lekérése.
Curl példa
curl https://api.chatlab.com/aichat/v1/management/bots/4287 \
-H "Authorization: Bearer mk_..."
Teljes választörzs (200)
Ugyanolyan felépítésű, mint a POST válasza, kivéve az egyszer használatos apiKey mezőt. A meta blokk szerepel benne. 404 not_found_error hibát ad vissza, ha a bot nem létezik, vagy nem a fiókjához tartozik.
Az aktuális avatár és a White Label logó teljes körűen minősített, csak olvasható URL-ként jelenik meg (appearance.avatarUrl, whiteLabel.whitelabelLogoUrl) - ugyanarra a sémára, gazdagépre és környezeti útvonalra hivatkozva, amely ezt a kérést kiszolgálta. A bájtokat ezen URL-ek közvetlen GET kérésével töltheti le; bármelyik fájl cseréjéhez töltsön fel egy újat a PATCH multipart avatar / whitelabel_logo részén keresztül. Ezeket az URL-mezőket a rendszer figyelmen kívül hagyja, ha kéréstörzsben küldik el őket.
{
"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"
}
}
Bot klónozása
A POST /v1/management/bots kéréstörzse és a GET /v1/management/bots/{bot_id} választörzse azonos felépítésű, így a klónozás egy háromlépéses folyamat: kérje le a forrást GET kéréssel, távolítsa el a szerver által kezelt azonosító mezőket, majd küldje el az eredményt POST kéréssel.
1. A forrásbot lekérése (GET).
curl https://api.chatlab.com/aichat/v1/management/bots/4287 \
-H "Authorization: Bearer mk_..." \
-o source-bot.json
2. A legfelső szintű meta blokk eltávolítása. A meta objektum (id, createdAt, updatedAt) szerver által felügyelt és írásvédett - ha a POST törzsében hagyja, nem okoz hibát (a szerver figyelmen kívül hagyja), de az eltávolítása egyértelművé teszi a szándékot, és tisztán tartja az adatcsomagot. Szükség esetén módosítsa a name mezőt, hogy a klón megkülönböztethető legyen a forrástól.
jq 'del(.meta) | .name = "Helpdesk Bot (clone)"' source-bot.json > clone-body.json
3. A megtisztított törzs elküldése (POST) a klón létrehozásához. A teljes törzsformátumot és az érvényesítési szabályokat lásd a fenti POST /v1/management/bots dokumentációban.
curl -X POST https://api.chatlab.com/aichat/v1/management/bots \
-H "Authorization: Bearer mk_..." \
-H "Content-Type: application/json" \
-d @clone-body.json
A válasz tartalmazza az új bot meta.id azonosítóját, valamint egy újonnan generált apiKey kulcsot (a klónhoz tartozó Bot Talk kulcsot). Az apiKey egyszerű szövegként kizárólag ebben a létrehozási válaszban jelenik meg - másolja ki, mielőtt elvetné a választörzset; később már nem lehet lekérni.
Két fontos megjegyzés:
- A fájlok nem klónozódnak. Az
appearance.avatarUrlés awhiteLabel.whitelabelLogoUrlírásvédettek, és a forrásbot fájljaira mutatnak. Ha a klónon is ugyanazt az avatárt vagy White Label logót szeretné használni, töltse le a bájtokat a forrás URL-ekről, majd töltse fel őket több részből álló multipartavatar/whitelabel_logorészként - vagy a létrehozási POST kérés során (B mód), vagy egy későbbi PATCH kérésben. - A Bot Talk kulcsok nem klónozódnak. Minden bot saját Bot Talk kulcskészlettel rendelkezik. A létrehozási POST által visszaadott egyetlen
apiKeyaz egyetlen, amely automatikusan generálódik; szükség esetén hozzon létre további kulcsokat a bot API fülén (API tab).
PATCH /v1/management/bots/{bot_id}
Egy vagy több mező frissítése egy saját tulajdonú boton. Csak a JSON-ben szereplő szakaszok / mezők módosulnak; minden kihagyott (vagy null értékként elküldött) elem változatlan marad. A részleges frissítés szemantikája mezőnként érvényesül az elküldött szakaszon belül.
Két egyenértékű Content-Type fogadható el (ugyanúgy, mint a POST esetében):
A mód - sima JSON (ajánlott, ha csak beállításokat frissít):
Content-Type: application/json- A kéréstörzs maga a javító JSON (nincs
databurkoló)
B mód - multipart/form-data (fájlok feltöltésekor használandó):
dataJSON rész (opcionális) - a módosítás. Csak akkor küldje el, ha mezőket kíván módosítani. Teljesen kihagyható, ha csak avatárt vagy logót szeretne feltölteni.avatarfájlrész (opcionális) - az avatár cseréjewhitelabel_logofájlrész (opcionális) - a White Label logó cseréje (csak akkor érvényes, ha a fiókja tartalmazza a whitelabel funkciót)
A PATCH kérésben mindhárom rész opcionális, de a hívás értelmezhetőségéhez legalább az egyiknek jelen kell lennie.
Teljes kéréstörzs (maximális felület)
Bármely olyan mező elküldhető itt is, amelyet a POST /v1/management/bots elfogad. Az alábbi példa a teljes felületet mutatja be; a gyakorlatban csak azokat a kulcsokat kell elküldeni, amelyeket módosítani kíván (lásd a lenti „Minimális részleges frissítés” részt) - minden kihagyott (vagy null értékként megadott) kulcs változatlanul hagyja a tárolt értéket.
{
"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
}
}
Minimális részleges frissítés
Egyetlen mező módosítása (PATCH) kizárólag a módosítani kívánt kulcsok elküldésével - minden más megmarad.
{
"appearance": {
"launcherColor": "#abcdef"
}
}
Curl példák
A mód - sima JSON (legegyszerűbb):
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"}}'
B mód - multipart (avatár / logó cseréjekor):
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'
B mód - csak az avatár cseréje (mezőmódosítások nélkül):
curl -X PATCH https://api.chatlab.com/aichat/v1/management/bots/4287 \
-H "Authorization: Bearer mk_..." \
-F 'avatar=@./new-avatar.png'
Választörzs (200)
Ugyanolyan felépítésű, mint a GET /v1/management/bots/{bot_id} - a bot teljes konfigurációja a javítás alkalmazása után, beleértve a meta blokkot is. Nem tartalmaz apiKey mezőt. 404 not_found_error hibát ad vissza, ha a bot nem létezik, vagy nem az Ön fiókjához tartozik.
Az alábbi példa a választ mutatja be, miután a fenti Teljes kéréstörzs (maximális felület) javítást alkalmaztuk a GET példában szereplő botra - a módosított mezők az új értékeket tükrözik, az érintetlen mezők megmaradnak, a meta.updatedAt pedig frissül.
{
"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
A Management kulcsot birtokló fiók aktuális előfizetési használatának lekérdezése.
Választörzs (200)
{
"subscriptionType": "standard",
"messages": {"used": 4123, "limit": 11000, "remaining": 6877},
"bots": {"used": 3, "limit": 5, "remaining": 2}
}
- A
subscriptionTypea fiók aktuális csomagjának kisbetűs azonosítója (pl. a fenti példábanstandard). A csomagok dinamikus katalógusból származnak, így az azonosítók pontos köre idővel változhat a csomagok átnevezése vagy hozzáadása miatt - kezelje ezt nem átlátható (opaque) karakterláncként, nem rögzített felsorolásként (enum). - A
messages.used/limit/remainingaz aktuális számlázási időszak üzenetkeretét (kreditjeit) mutatja. - A
bots.used/limit/remainingaz aktív botok számát méri a fiók botkorlátjához viszonyítva.
Rate limit fejlécek
Azok a válaszok, amelyek elérik a rate limit fázist (azaz a hitelesítés és az IP-engedélyezőlista ellenőrzése sikeres volt), a következőket tartalmazzák:
X-RateLimit-Limit: 10
X-RateLimit-Remaining: 7
X-RateLimit-Reset: 1715430000
X-RateLimit-Limit- az erre a hívásra ténylegesen alkalmazott kulcsonkénti korlát (alapértelmezés szerint 10, vagy az Ön által konfiguráltrateLimitPerMinute, ha az alacsonyabb).X-RateLimit-Remaining- a tokengyűjtőben közvetlenül a hívás után fennmaradó tokenek száma.X-RateLimit-Reset- Unix-korszak szerinti másodperc, amikor a következő token elérhetővé válik (ez nem a teljes gyűjtő visszaállítása; a gyűjtő folyamatosan újratöltődik). Ha a gyűjtő tele van, ez a jelenlegi időpont.
A 429 rate_limit_exceeded válaszok esetén a Retry-After fejléc is beállításra kerül, egész másodpercekben kifejezve addig, amíg legalább egy token fel nem szabadul.
A hitelesítés előtti hibák (401 missing_api_key, 401 invalid_api_key, 403 ip_blocked) és a 403 ip_not_whitelisted nem tartalmazzák az X-RateLimit-* fejléceket - a korlátozó csak a hitelesítés és az IP-ellenőrzések sikeres lefutása után lép működésbe.
Hibaformátum
Ugyanaz a burkoló, mint a Bot Talk API esetében:
{
"error": {
"type": "permission_error",
"code": "key_type_not_allowed",
"message": "This endpoint requires a MANAGEMENT API key.",
"param": null
}
}
A validációs hibák a code: "invalid_parameter" értéket használják, és az üzenet elejére fűzik a hibás mező elérési útját, így a hibás szakasz könnyen azonosítható:
{
"error": {
"type": "invalid_request_error",
"code": "invalid_parameter",
"message": "humanSupport.email Human support email is required when humanSupport.enabled=true"
}
}
Az enum / zárt készletű mezők érvénytelen értékei (pl. chatMemory.clientSummaryPromptType = "BOGUS") tartalmazzák a mező elérési útját, az elutasított értéket és az engedélyezett értékek listáját:
{
"error": {
"type": "invalid_request_error",
"code": "invalid_parameter",
"message": "chatMemory.clientSummaryPromptType 'BOGUS' is not a valid value. Allowed: CUSTOM, DEFAULT"
}
}
Kapcsolódó anyagok
A beszélgetési végpontokkal és az SSE-streameléssel kapcsolatban lásd: Bot Talk API.