Súgóközpont
Chat API

Management API

Utoljára frissítve:

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/bots haszná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/usage haszná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

  1. 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.
  2. 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.
  3. 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 rateLimitPerMinute beá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 a GET /v1/management/bots/{bot_id} híváshoz
  • bot_management - szükséges a POST /v1/management/bots és a PATCH /v1/management/bots/{bot_id} híváshoz
  • usage - szükséges a GET /v1/usage hí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észes avatar ré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 az avatarUrl esetében. Módosításához töltsön fel egy új fájlt a többrészes whitelabel_logo ré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űzve
  • name - a bot neve, beillesztve a bevezető mondatba
  • role.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, CUSTOM
  • role.responseLength - Concise, Normal, Detailed
  • role.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 az Auto 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_parameter hibát ad
  • advanced.chatContextSize - 8000, 16000, 32000. A fiókkorlátok függvénye; a magasabb értékek csendben levágásra kerülnek
  • chatMemory.clientSummaryPromptType - DEFAULT, CUSTOM
  • chatMemory.conversationSummaryPromptType - DEFAULT, CUSTOM
  • appearance.chatAlignment - left, right
  • appearance.minimizedDisplayMode - icon, minified
  • appearance.chatMessageLinkTarget - _blank, _self
  • leadCollection.requireBeforeNewConversation - logikai (boolean) kapcsoló. A true arra kötelezi a felhasználót, hogy a beszélgetés megkezdése előtt kitöltse az űrlapot; a false lehető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ány 0.0 és 1.0 kö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-90 kö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éke 50. A 10-90 tartományon kívül eső értékek elutasításra kerülnek: 400 validation_failed. Csak akkor érvényesül, ha a chatMemory.enabled=true ÉS a chatMemory.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 egy timezone kulcsot 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 timezone egy 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.

  • conversation.positiveRatingTooltip / conversation.negativeRatingTooltip - rövid szövegek, amelyek az egyes AI-válaszok mellett található 👍 / 👎 gombokon jelennek meg, ha a conversation.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 a hideRoboAssistLogo=true, és egyéni logófájl lett feltöltve a whitelabel_logo többrészes részen keresztül.

  • appearance.simulateHumanTypingDelay - másodperc (nem ezredmásodperc), 0-200 közötti egész szám. A bot egymást követő üzenetbuborékai közötti szünet, ha a simulateHumanTyping=true. Alapértelmezett értéke 5.

  • appearance.autoOpenChatDelaySeconds - másodperc, egész szám. A widget automatikus megnyílása előtti késleltetés, ha az autoOpenChat=true és az autoOpenChatDelay=true.

  • advanced.internalLocale - IETF területi beállítás kód ll_CC formátumban (alsóvonással, NEM ll-CC kö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éke en_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 a role.language mező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). A 0 kikapcsolja 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é a security.talkMessagesRateLimitHitMessage üzenetet a látogatónak.

  • advanced.botMessagesLimit - egész szám (JSON-szám, pl. 1000). A 0 jelentése "nincs korlát"; egyébként 1000 többszörösének kell lennie (1000, 2000, 10000, ...). Az olyan értékek, mint a 100 vagy az 1500, 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 a POST /v1/management/bots vá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 a humanSupport.customFormId mezőkön keresztül.
  • Egyéni chat-megnyitó/-bezáró ikonok - customLauncherIconVisible, openChatIcon, closeChatIcon. Az API kizárólag a fő avatar és whitelabel_logo tö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.countryFilterMode mező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 (data burkoló nélkül)
  • A fájlok (avatár / logó) később is feltölthetők egy második PATCH ké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=...
  • data JSON rész (kötelező, Content-Type: application/json) - bot konfiguráció a fent leírt beágyazott formátumban
  • avatar fájlrész (opcionális) - bot avatár képe
  • whitelabel_logo fá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 karakter
  • advanced.temperature - 0.0 és 1.0 között
  • chatMemory.summariesToKnowledgeRatio - egész szám 10 és 90 között (százalék, 10-es lépésközzel)
  • appearance.launcherBottomMargin, appearance.launcherSideMargin - 0 és 500 között
  • appearance.footerMarkdown - legfeljebb 255 karakter
  • A humanSupport.enabled=true megköveteli a humanSupport.email megadását
  • A leadCollection.enabled=true megköveteli, hogy a leadCollection.emailEnabled vagy a leadCollection.phoneEnabled közül legalább az egyik értéke true legyen; amelyik csatorna be van kapcsolva, annak a címkéje is kötelező, a leaveDetailsMessage és a thankYouMessage mezőkkel együtt
  • A korlátozott mezők (advanced.chatContextSize, advanced.botMessagesLimit stb.) 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 a whiteLabel.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ó multipart avatar / whitelabel_logo ré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 apiKey az 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 data burkoló)

B mód - multipart/form-data (fájlok feltöltésekor használandó):

  • data JSON 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.
  • avatar fájlrész (opcionális) - az avatár cseréje
  • whitelabel_logo fá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 subscriptionType a fiók aktuális csomagjának kisbetűs azonosítója (pl. a fenti példában standard). 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 / remaining az aktuális számlázási időszak üzenetkeretét (kreditjeit) mutatja.
  • A bots.used / limit / remaining az 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ált rateLimitPerMinute, 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.