Prehľad Management API
Rozhranie Management API slúži na administratívne činnosti (back-office), ktoré nezahŕňajú odosielanie chatových správ:
- programové vytvorenie bota pomocou
POST /v1/management/bots - načítanie konkrétneho bota, ktorého vlastníte, pomocou
GET /v1/management/bots/{bot_id} - aktualizácia konkrétneho bota pomocou
PATCH /v1/management/bots/{bot_id} - zobrazenie využitia predplatného pomocou
GET /v1/usage
Kľúče Management API sú viazané na váš účet, nie na konkrétneho bota. Sú zámerne oddelené od kľúčov Bot Talk API, aby kompromitovaný chatovací kľúč nemohol upravovať vašich botov ani čítať fakturačné údaje.
Základná URL adresa (Base URL)
https://api.chatlab.com/aichat
Všetky koncové body (endpoints) v tomto článku sú relatívne k tejto základnej URL adrese.
Začíname
- Otvorte administrátorskú aplikáciu a prejdite do Account Settings > Management API (Nastavenia účtu > Management API).
- Kliknite na Create Management Key (Vytvoriť kľúč Management API), pomenujte ho, voliteľne nastavte zoznam povolených IP adries (whitelist) a obmedzenie rýchlosti požiadaviek (rate limit) a uložte.
- Skopírujte celý kľúč z potvrdzovacieho modálneho okna. V nezašifrovanej podobe (plaintext) sa zobrazí iba raz.
Kľúč vyzerá ako mk_abcdefghijklmnopqrstuvwxyz012345. Predpona mk_ ho odlišuje od kľúčov Bot Talk (ck_).
Autentifikácia
Authorization: Bearer mk_abcdefghijklmnopqrstuvwxyz012345
Odoslanie kľúča mk_ na koncový bod /v1/chat (alebo akýkoľvek iný koncový bod Bot Talk) vráti chybu 403 key_type_not_allowed. Odoslanie kľúča ck_ na /v1/management/* vráti rovnakú chybu.
Limity
- Maximálne 5 aktívnych kľúčov Management API na používateľa
- Maximálne 10 požiadaviek za minútu na jeden kľúč (algoritmus token bucket, kapacita 10, plynulé dopĺňanie rýchlosťou približne 1 token každých 6 sekúnd). Pri vytváraní je možné nastaviť nižšiu hodnotu - nastavte nižší
rateLimitPerMinute, čím sa zníži strop a adekvátne sa upraví rýchlosť dopĺňania.
Oprávnenia
Každý kľúč Management API nesie ľubovoľnú podmnožinu troch nižšie uvedených oprávnení. Pri vytváraní musíte vybrať aspoň jedno z nich, inak bude požiadavka zamietnutá s chybou 400 invalid_request_error. Volanie koncového bodu s kľúčom, ktorému chýba požadované oprávnenie, vráti chybu 403 insufficient_permissions.
bot_read- vyžaduje sa preGET /v1/management/bots/{bot_id}bot_management- vyžaduje sa prePOST /v1/management/botsaPATCH /v1/management/bots/{bot_id}usage- vyžaduje sa preGET /v1/usage
Štruktúra tela požiadavky: vnorené sekcie kopírujúce záložky v administrácii
Metódy POST a PATCH prijímajú telo vo formáte JSON rozdelené do 13 sekcií. Každá sekcia zodpovedá podzáložke v bočnom paneli Bot Settings (Nastavenia bota) v administrátorskej aplikácii, takže kľúče JSON presne zodpovedajú viditeľným záložkám: ak cez API zmeníte hodnotu consent.humanSupportRequirePolicyAccept, uvidíte rovnaké prepnutie voľby na záložke Consent & Privacy (Súhlas a ochrana osobných údajov) v aplikácii.
role- rola bota, čistý prompt (raw prompt), dĺžka odpovedí, jazyk, kontext webu / spoločnosti (záložka Role & Behavior)conversation- uvítacia správa, spresňovanie otázok, kontinuita konverzácie, prepínač hodnotenia + popisy (tooltips), obsah navrhovaných otázok + dynamické nadväzujúce otázky (záložka Chat Conversation)chatMemory- prepínač pamäte chatu, prompty pre zhrnutia, alokácia kontextu (záložka Summaries & Memory)appearance- farby, texty, rozmery, vlastné CSS, uvítacia obrazovka, štýlovanie navrhovaných otázok, správanie automatického otvorenia, simulácia písania človekom, pätička v markdown (záložka Appearance)humanSupport- kontaktný formulár pre spojenie s človekom (záložka Human Contact Form)leadCollection- formulár na zber kontaktov / leadov (záložka Lead Collection)liveChat- odovzdanie na živý chat (záložka Live Chat)consent- všetky štyri prepínače súhlasu so zásadami ochrany osobných údajov a text obrazovky súhlasu (záložka Consent & Privacy)whiteLabel- skrytie loga, odkaz na vlastné logo, hosting na vlastnej doméne (záložka Whitelabel)security- povolené domény, spamový filter, limity rýchlosti odosielania správ (záložka Security)voice- hlasový vstup a hlasové konverzácie: model, hlas, jazyky, prompt, maximálne trvanie (záložka Voice Conversation)multilingual- viacjazyčný režim, predvolený jazyk, ponúkané jazyky, spracovanie jazykov bázy znalostí (záložka Languages)advanced- LLM model, teplota (temperature), veľkosť kontextu, limit správ bota, interná lokalizácia (locale), Offer Cards (záložka Model & Advanced)
Iba parameter name sa nachádza na najvyššej úrovni (top level), pretože identifikuje bota a nepatrí pod žiadnu konkrétnu záložku.
Bočný panel Bot Settings má v súčasnosti 15 podzáložiek, z ktorých 13 zodpovedá vyššie uvedeným sekciám. Dve podzáložky, ktoré nemajú zodpovedajúcu sekciu, sú Flow a Actions - obe sú popísané nižšie v časti "Mimo rozsahu API". Tých 13, ktoré mapovanie majú, sú Appearance, Chat Conversation, Role & Behavior, Human Contact Form, Lead Collection, Live Chat, Whitelabel, Consent & Privacy, Security, Model & Advanced, Summaries & Memory, Voice Conversation a Languages.
Telo požiadavky a telo odpovede majú rovnakú štruktúru. Odpoveď navyše obsahuje dve položky:
meta- iba na čítanie (read-only): ID bota a časové pečiatky. Ich odstránením premeníte odpoveď z GET na platné telo požiadavky pre POST.apiKey- nachádza sa iba pri vytvorení - nanovo vygenerovaný kľúč Bot Talk API pre nového bota.
Dve polia v rámci spoločnej štruktúry sú iba na čítanie (read-only) - vracajú sa v odpovedi a ignorujú sa, ak sa ich pokúsite odoslať v POST/PATCH:
appearance.avatarUrl- plne kvalifikovaná verejná URL adresa obrázka avatara bota (napr.https://api.chatlab.com/aichat/content/avatar_xyz.png). Priamym volaním GET stiahnete dáta obrázka. Ak ho chcete zmeniť, nahrajte nový súbor cez multipart časťavatar(pozrite sekciu PATCH).whiteLabel.whitelabelLogoUrl- plne kvalifikovaná verejná URL adresa loga v hlavičke pre White Label. Rovnaký princíp ako priavatarUrl. Ak ho chcete zmeniť, nahrajte nový súbor cez multipart časťwhitelabel_logo(pozrite sekciu PATCH).
Obe URL adresy využívajú schému + hostiteľa + kontextovú cestu aktuálnej požiadavky, takže pri vlastnej doméne funkcie White Label sa vrátia s adresou tejto domény (napr. https://api.acme.com/aichat/content/...).
Ak chcete pri požiadavke PATCH preskočiť celú sekciu, odošlite null. Ak chcete v rámci sekcie preskočiť jedno konkrétne pole, odošlite preň null. Hodnota null na úrovni poľa nikdy nevymaže uloženú hodnotu - znamená iba "nemení sa".
Konštrukcia roly a promptu
Systémový prompt, ktorý LLM v skutočnosti dostane, sa zostavuje jedným z dvoch spôsobov v závislosti od role.role. Znalosť vetvy vám napovie, na ktorých poliach záleží a ktoré sú iba uložené, ale ignorované.
Vetva A - role.role je CUSTOMER_SUPPORT, SALES alebo LEAD_COLLECTION_AGENT (riadené šablónou)
Backend zostaví prompt zo vstavanej šablóny a úplne ignoruje role.rawPrompt (hodnota zostáva uložená pri botovi, len sa nepoužije). Šablóna zahŕňa:
role.role- označenie roly (napr. "Customer Support") a pokyny špecifické pre rolu pridané automatickyname- názov bota, vložený do úvodnej vetyrole.language- hodnota"Auto Detect"nastaví bota tak, aby reagoval v jazyku používateľa; akákoľvek iná hodnota (napr."English","Polish") sa zmení na "Output in {language}, unless user uses another language"role.responseLength- mapuje sa na cieľový počet slov:Concise≈ 50 slov,Normal≈ 100,Detailed≈ 200role.websiteAddress- voliteľné; ak nie je prázdne, pripojí sa ako "for the users of the website {url}"role.companyDescription- voliteľné; ak nie je prázdne, pridá sa ako ďalší odsek pred pokyny k role
Toto je odporúčaná vetva pre väčšinu botov - získate správanie prispôsobené konkrétnej role a bezpečnostné mantinely bez práce navyše.
Vetva B - role.role je CUSTOM (vlastný prompt dodaný volajúcim)
Backend použije role.rawPrompt doslovne ako celý systémový prompt. Polia responseLength, language, websiteAddress, companyDescription sa síce uložia, ale nevkladajú sa do promptu - ak chcete čokoľvek z toho premietnuť do správania bota, musíte to sami uviesť v texte rawPrompt. Nepridávajú sa ani bezpečnostné pravidlá špecifické pre rolu či pokyny k tónu komunikácie; celý prompt máte plne vo svojich rukách.
Hodnotu CUSTOM použite iba vtedy, ak prompt riadený šablónou nevyhovuje vášmu prípadu použitia (napr. potrebujete vysoko špecifickú persónu pre dané odvetvie, vlastné bezpečnostné obmedzenia alebo neštandardný formát výstupu).
Výčtové polia s pevnou množinou hodnôt (Enum)
Niekoľko polí prijíma iba pevne stanovenú množinu reťazcových hodnôt. Odoslanie akejkoľvek hodnoty mimo tohto zoznamu bude zamietnuté s chybou 400 validation_failed a cestou k poľu v error.param. V hodnotách záleží na veľkosti písmen (case-sensitive).
role.role-CUSTOMER_SUPPORT,SALES,LEAD_COLLECTION_AGENT,CUSTOMrole.responseLength-Concise,Normal,Detailedrole.language- celý anglický názov jazyka z rozbaľovacieho zoznamu v administrácii, napr.Auto Detect,English,Polish,Spanish,German,French,Italian,Portuguese,Dutch,Russian,Chinese (Simplified),Japanese,Arabic,Hindia približne 80 ďalších. Hodnota sa ukladá doslovne a dopĺňa do šablóny promptu, takže dvojpísmenové kódy ISO (en,pl) a iné hodnoty mimo zoznamu API neodmietne, no vytvoria skomolený pokyn ako "Output in en, unless...". Ak sa vynechá pri vytváraní, predvolená hodnota jeAuto Detect.advanced.model- pozrite časť "AI textové modely" nižšie; ponuka dostupných modelov závisí od limitov vášho účtu a akákoľvek hodnota, ktorú váš účet nemôže použiť, vráti chybu400 invalid_parameteradvanced.chatContextSize-8000,16000,32000. Podlieha limitom vášho účtu; vyššie hodnoty sa automaticky znížia na povolené maximumchatMemory.clientSummaryPromptType-DEFAULT,CUSTOMchatMemory.conversationSummaryPromptType-DEFAULT,CUSTOMappearance.chatAlignment-left,rightappearance.minimizedDisplayMode-icon,minifiedappearance.chatMessageLinkTarget-_blank,_selfleadCollection.requireBeforeNewConversation- logická hodnota (boolean). Hodnotatruevyžaduje vyplnenie formulára pred začatím konverzácie;falsenecháva rozhodnutie o zobrazení formulára na AI (predvolené).
Štruktúrované polia a rozsahy
Polia, ktoré vyzerajú ako jednoduché reťazce alebo čísla, no v skutočnosti majú špecifickú štruktúru, rozsahy alebo osobitosti v administrátorskom rozhraní, o ktorých je dobré vedieť.
-
advanced.temperature- povolený rozsah je0.0až1.0, čo zodpovedá posuvníku v administrátorskom rozhraní. Hodnoty mimo tohto rozsahu sú odmietnuté s chybou400 validation_failed. -
chatMemory.summariesToKnowledgeRatio- celé číslo v percentách,10-90s krokom10. Určuje, aká časť kontextu chatu je vyhradená pre historické zhrnutia klienta v porovnaní so zvyškom (báza znalostí, aktuálna konverzácia, pokyny). Predvolená hodnota je50. Hodnoty mimo rozsahu10-90sú odmietnuté s chybou400 validation_failed. Uplatňuje sa iba vtedy, ak platíchatMemory.enabled=trueA ZÁROVEŇchatMemory.summaryConversationsEnabled=true. -
liveChat.schedule- reťazec vo formáte JSON (JSON encoded as a string), nie priamo vnorený objekt JSON v dátovom prenose. Server ukladá pôvodný reťazec presne v odoslanej podobe; administrátorské rozhranie ho analyzuje (parsuje) na strane klienta pri vykresľovaní editora rozvrhu. Po spracovaní má reťazec štruktúru s jednou položkou pre každý deň v týždni a kľúčomtimezone:- každý kľúč dňa v týždni (
monday-sunday) sa mapuje na{enabled: boolean, from: "H:MM", to: "H:MM"}v 24-hodinovom formáte timezonepredstavuje názov časového pásma podľa databázy IANA (napr."Europe/Warsaw","America/New_York")
Príklad hodnoty (všimnite si vonkajšie úvodzovky a escapované vnútorné úvodzovky - ide o jedno reťazcové pole, nie o vnorený objekt):
"{\"monday\":{\"enabled\":true,\"from\":\"9:00\",\"to\":\"17:00\"},\"tuesday\":{\"enabled\":true,\"from\":\"9:00\",\"to\":\"17:00\"},\"wednesday\":{\"enabled\":true,\"from\":\"9:00\",\"to\":\"17:00\"},\"thursday\":{\"enabled\":true,\"from\":\"9:00\",\"to\":\"17:00\"},\"friday\":{\"enabled\":true,\"from\":\"9:00\",\"to\":\"17:00\"},\"saturday\":{\"enabled\":false,\"from\":\"9:00\",\"to\":\"17:00\"},\"sunday\":{\"enabled\":false,\"from\":\"9:00\",\"to\":\"17:00\"},\"timezone\":\"Europe/Warsaw\"}"Mimo uvedených hodín sa návštevníkovi zobrazí správa z
liveChat.outOfHoursMessagea možnosť prepnutia na live chat je potlačená. Validácia vnútornej štruktúry prebieha iba na strane klienta v administrátorskom rozhraní - neplatný JSON alebo neznáme kľúče API príjme jednoducho ako textový reťazec a prejavia sa ako chyba vykresľovania, až keď človek neskôr otvorí nastavenia bota v administrácii. Pred odoslaním si štruktúru skontrolujte na svojej strane. - každý kľúč dňa v týždni (
-
conversation.positiveRatingTooltip/conversation.negativeRatingTooltip- krátke texty zobrazené na tlačidlách 👍 / 👎 vedľa každej odpovede umelej inteligencie, ak je nastavenéconversation.conversationRatingEnabled=true. Predvolený text je "I like the response" / "I don't like the response". Viditeľné pre koncových používateľov. -
whiteLabel.hideRoboAssistLogo- funkcia White Label podliehajúca limitom vášho účtu. Skryje text "Powered by ChatLab" v pätičke. Ak váš účet nezahŕňa možnosť White Label, hodnota sa síce uloží, no ignoruje sa a pätička sa vždy zobrazí. -
whiteLabel.whitelabelLogoLink- funkcia White Label podliehajúca limitom vášho účtu. Cieľová URL adresa po kliknutí na vlastné logo, ak jehideRoboAssistLogo=truea súbor s vlastným logom bol nahraný cez multipart časťwhitelabel_logo. -
appearance.simulateHumanTypingDelay- sekundy (nie milisekundy), celé číslo0-200. Pauza medzi jednotlivými bublinami správ bota, ak je aktívnesimulateHumanTyping=true. Predvolená hodnota je5. -
appearance.autoOpenChatDelaySeconds- sekundy, celé číslo. Oneskorenie pred automatickým otvorením widgetu, ak jeautoOpenChat=trueaautoOpenChatDelay=true. -
advanced.internalLocale- kód regiónu a jazyka podľa IETF vo formátell_CC(s podčiarkovníkom, NIEll-CCso spojovníkom). Prijímané hodnoty vychádzajú z pevného zoznamu približne 95 lokalizácií: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_ILa mnohých ďalších. Samotný dvojpísmenový kód ("en") alebo formát BCP-47 ("en-US") v zozname povolených nie je. Predvolená hodnota jeen_US. Táto lokalizácia sa používa na formátovanie dátumov a čísel v používateľskom rozhraní widgetu, na rozdiel odrole.language(jazyk konverzačného výstupu bota). -
security.talkMessagesRateLimit/security.talkMessagesRateLimitDurationSeconds- celé čísla (odosielajte ako čísla v JSON, napr.30, nie"30"). Hodnota0deaktivuje limit na úrovni IP adresy. Pri nenulovej hodnote widget uplatňuje limit N správ za daný počet sekúnd pred tým, než sa návštevníkovi zobrazí správasecurity.talkMessagesRateLimitHitMessage. -
advanced.botMessagesLimit- celé číslo (v JSON ako číslo, napr.1000). Hodnota0znamená "bez limitu"; inak musí ísť o násobok čísla 1000 (1000,2000,10000, ...). Hodnoty ako100alebo1500sú odmietnuté s chybou400 validation_failed. Následne sa hodnota automaticky obmedzí podľa limitu vášho účtu.
AI textové modely (advanced.model)
Odošlite presnú hodnotu pre API (stĺpec v spätných úvodzovkách vľavo). Zobrazovaný názov v administrácii je v zátvorke. To, ktoré modely si môžete vybrať, závisí od limitov vášho účtu; odoslanie modelu, ktorý váš účet nemôže používať, vráti chybu 400 invalid_parameter. Predvolená hodnota pre nových botov je 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)
Prehľad polí (kompletná schéma požiadavky)
Každé pole prenášané v požiadavke spolu s jeho typom, obmedzením a jednoriadkovým popisom. Sémantika PATCH: akékoľvek vynechané pole (alebo odoslané ako null) ponecháva pôvodnú uloženú hodnotu nezmenenú. Rovnaká štruktúra sa používa aj pre odpoveď (okrem binárneho obsahu typu multipart; navyše s blokom meta určeným len na čítanie pri každej odpovedi a poľom apiKey, ktoré je prítomné iba pri odpovedi na vytvorenie).
Najvyššia úroveň
| Pole | Typ | Obmedzenie | Popis |
|---|---|---|---|
name |
string | max 150, povinné pri vytvorení | Zobrazovaný názov bota |
role |
object | Pozrite § role | |
conversation |
object | Pozrite § conversation | |
chatMemory |
object | Pozrite § chatMemory | |
appearance |
object | Pozrite § appearance | |
humanSupport |
object | Pozrite § humanSupport | |
leadCollection |
object | Pozrite § leadCollection | |
liveChat |
object | Pozrite § liveChat | |
consent |
object | Pozrite § consent | |
whiteLabel |
object | Pozrite § whiteLabel | |
security |
object | Pozrite § security | |
advanced |
object | Pozrite § advanced |
Prvky navyše prítomné iba v odpovedi:
meta: { id, createdAt, updatedAt }- iba na čítanie.apiKey- string, prítomný iba v odpovedi naPOST /v1/management/bots- novo vygenerovaný kľúč Bot Talk API pre nového bota, vrátený presne raz.
§ role
| Pole | Typ | Obmedzenie | Popis |
|---|---|---|---|
role |
string (enum) | CUSTOMER_SUPPORT, SALES, LEAD_COLLECTION_AGENT, CUSTOM |
Predvoľba osobnosti; vyberá šablónu promptu (pozrite „Vytváranie rolí a promptov“) |
language |
string | celý anglický názov jazyka (English, Polish, ...) alebo Auto Detect |
Hlavný jazyk odovzdávaný do šablóny promptu |
responseLength |
string | ∈ {Concise, Normal, Detailed} |
Požadovaná podrobnosť odpovedí AI |
websiteAddress |
string | Webová stránka použitá ako kontext promptu | |
companyDescription |
string | Popis spoločnosti použitý ako kontext promptu | |
rawPrompt |
string | Vlastný systémový prompt - použije sa doslovne iba vtedy, keď role=CUSTOM |
§ conversation
| Pole | Typ | Obmedzenie | Popis |
|---|---|---|---|
welcomeMessage |
string | Prvá správa zobrazená návštevníkovi po otvorení | |
queryRefinementEnabled |
boolean | Ak má hodnotu true, spresní otázku návštevníka pred vyhľadávaním v RAG | |
conversationContinuityEnabled |
boolean | Ak má hodnotu true, vracajúci sa návštevníci pokračujú vo svojej poslednej konverzácii | |
conversationRatingEnabled |
boolean | Ak má hodnotu true, zobrazí hodnotenie palcom hore/dole pri správach bota | |
positiveRatingTooltip |
string | Text pomocného popisu na tlačidle pozitívneho hodnotenia | |
negativeRatingTooltip |
string | Text pomocného popisu na tlačidle negatívneho hodnotenia | |
suggestedQuestions |
string | Navrhované otázky / úvody do konverzácie oddelené novým riadkom | |
dynamicSuggestedFollowups |
boolean | Ak má hodnotu true, AI po každej odpovedi navrhne doplňujúce otázky | |
dynamicFollowupsAutoIcons |
boolean | Ak má hodnotu true, AI automaticky vyberie ikony emoji pre dynamické návrhy |
§ chatMemory
| Pole | Typ | Obmedzenie | Popis |
|---|---|---|---|
enabled |
boolean | Hlavný prepínač pre funkciu pamäte chatu | |
summaryConversationsEnabled |
boolean | Ukladať zhrnutia jednotlivých konverzácií | |
conversationSummaryPrompt |
string | Vlastný prompt použitý na zhrnutie každej konverzácie | |
conversationSummaryPromptType |
string (enum) | ∈ {DEFAULT, CUSTOM} |
Určuje, či sa použije predvolený alebo vlastný prompt na zhrnutie |
clientSummaryPrompt |
string | Vlastný prompt použitý na vytvorenie profilu klienta naprieč konverzáciami | |
clientSummaryPromptType |
string (enum) | ∈ {DEFAULT, CUSTOM} |
Predvolený verzus vlastný prompt profilu klienta |
summariesToKnowledgeRatio |
int | 10-90, krok 10 |
% kontextového okna chatu pridelených zhrnutiam verzus znalostiam z RAG |
§ appearance
| Pole | Typ | Obmedzenie | Popis |
|---|---|---|---|
launcherColor |
string (hex) | Farba pozadia spúšťača (ikony chatu) | |
headerColor |
string (hex) | Farba pozadia hlavičky chatu | |
titleColor |
string (hex) | Farba nadpisu v hlavičke chatu | |
subtitleColor |
string (hex) | Farba podnadpisu v hlavičke chatu | |
clientMessageBubbleColor |
string (hex) | Farba bubliny správy návštevníka | |
clientMessageTextColor |
string (hex) | Farba textu správy návštevníka | |
responseMessageBubbleColor |
string (hex) | Farba bubliny odpovede bota | |
responseMessageTextColor |
string (hex) | Farba textu odpovede bota | |
chatSubheader |
string | Podtitulok zobrazený pod názvom chatu | |
senderPlaceholder |
string | Zástupný text vo vstupe pre správu | |
resetConversationTooltip |
string | Text pomocného popisu na tlačidle „resetovať konverzáciu“ | |
chatAlignment |
string (enum) | ∈ {left, right} |
Ku ktorej strane obrazovky je chat ukotvený |
launcherBottomMargin |
int | 0-500 |
Vzdialenosť spúšťača od spodného okraja (px) |
launcherSideMargin |
int | 0-500 |
Vzdialenosť spúšťača od bočného okraja (px) |
displayShadow |
boolean | Vrhaný tieň pod widgetom | |
customCss |
string | Vlastný CSS kód vložený do rámca iframe widgetu | |
chatMessageLinkTarget |
string (enum) | ∈ {_blank, _self} |
Spôsob otvárania odkazov vo vnútri správ bota |
minimizedDisplayMode |
string (enum) | ∈ {icon, minified} |
Minimalizovaný stav: ikona spúšťača alebo kompaktná lišta odosielateľa |
chatDesktopWidthPx |
int | Šírka widgetu na desktope | |
chatDesktopHeightPx |
int | Výška widgetu na desktope | |
chatMobileSizePercent |
int | Veľkosť widgetu na mobile ako % zobrazenia | |
messageFontSize |
int | Veľkosť písma textu správy (px) | |
showChatbotBubblesDesktop |
boolean | Zobrazovať plávajúce pútavé bubliny na desktope | |
showChatbotBubblesMobile |
boolean | Zobrazovať plávajúce pútavé bubliny na mobile | |
chatbotBubblesDelaySeconds |
int | Oneskorenie pred zobrazením pútavých bublín (sekundy) | |
launcherIconFullSize |
boolean | Vykresliť vlastnú ikonu spúšťača od okraja po okraj namiesto odsadenia | |
welcomeScreenEnabled |
boolean | Zobraziť Welcome Screen (uvítaciu obrazovku) namiesto priameho prechodu do chatu | |
welcomeScreenQuestionsLabel |
string | Štítok nad navrhovanými otázkami na uvítacej obrazovke | |
welcomeScreenHideHumanContactForm |
boolean | Skryť možnosť kontaktného formulára na človeka v hlavičke počas zobrazenia Welcome Screen. Znova sa objaví po prvej správe návštevníka. Pre botov vytvorených pred 2026-09-02 je predvolená hodnota true |
|
welcomeScreenHideLiveChat |
boolean | Skryť akciu pre Live Chat v hlavičke počas zobrazenia Welcome Screen. Znova sa objaví po prvej správe návštevníka. Pre botov vytvorených pred 2026-09-02 je predvolená hodnota true |
|
headerActionsLayout |
string | DROPDOWN |
Spôsob ponuky chatu naživo a kontaktného formulára v hlavičke chatu: ICONS (samostatná ikona pre každú) alebo DROPDOWN (zoskupené v menu hlavičky). Pre botov vytvorených pred 2026-09-02 je predvolená hodnota ICONS |
stackSuggestedQuestions |
boolean | Usporiadať navrhované otázky zvisle (oproti zobrazeniu vedľa seba) | |
suggestedQuestionsFontSize |
int | Veľkosť písma tlačidiel s navrhovanými otázkami (px) | |
suggestedQuestionsTextColor |
string (hex) | Farba textu tlačidiel s navrhovanými otázkami | |
suggestedQuestionsBackgroundColor |
string (hex) | Farba pozadia tlačidiel s navrhovanými otázkami | |
autoOpenChat |
boolean | Automaticky otvoriť chat na desktope | |
autoOpenChatOnMobiles |
boolean | Automaticky otvoriť chat na mobile | |
autoOpenChatDelay |
boolean | Použiť oneskorenie pred automatickým otvorením | |
autoOpenChatDelaySeconds |
int | Oneskorenie automatického otvorenia (sekundy) | |
simulateHumanTyping |
boolean | Rozdeliť odpoveď bota do bublín s animáciou písania | |
simulateHumanTypingDelay |
int | 0-200 |
Oneskorenie medzi jednotlivými bublinami správ (sekundy) |
footerMarkdown |
string | max 255 | Vlastný markdown pätičky zobrazený pod chatom |
avatarUrl |
string | iba na čítanie | Plne kvalifikovaná verejná adresa URL avatara; ak ju chcete zmeniť, nahrajte súbor cez časť multipart avatar |
Multipart pri POST/PATCH: avatar (súborová časť). Telá požiadaviek GET / odpovedí vynechávajú obsah súboru - prenáša sa iba adresa URL.
§ humanSupport
| Pole | Typ | Obmedzenie | Popis |
|---|---|---|---|
enabled |
boolean | Prepínač postupu zákazníckej podpory človekom | |
email |
string | povinné (striktné pri vytvorení), keď enabled=true |
Adresa, na ktorú chodia e-maily pre ľudskú podporu |
dialogMessage |
string | Povzbudzujúca správa zobrazená nad formulárom | |
thankYouMessage |
string | Potvrdenie zobrazené po odoslaní | |
emailMessageSubjectTemplate |
string | Šablóna predmetu e-mailu odoslaného agentovi | |
emailMessageContentTemplate |
string | Šablóna tela e-mailu odoslaného agentovi | |
emailPlaceholder |
string | Zástupný text vo vstupe pre e-mail | |
messagePlaceholder |
string | Zástupný text v textovom poli pre správu | |
emailWithConversationContent |
boolean | Ak má hodnotu true, zahrnie prepis konverzácie do tela e-mailu | |
customFormId |
long | ID existujúceho vlastného formulára | Nahradí vstavaný kontaktný formulár vlastným formulárom. Hodnota null ponechá vstavaný formulár |
customFormMapping |
string | reťazec vo formáte JSON | Mapuje polia vlastného formulára na polia e-mailu pre ľudskú podporu |
Nastavenie requirePolicyAccept sa nachádza v consent.humanSupportRequirePolicyAccept, nie tu.
§ leadCollection
| Pole | Typ | Obmedzenie | Popis |
|---|---|---|---|
enabled |
boolean | Prepínač formulára na zber kontaktov | |
nameEnabled |
boolean | Zbierať meno | |
nameLabel |
string | Štítok na vstupe pre meno | |
emailEnabled |
boolean | Zbierať e-mail | |
emailLabel |
string | povinné (striktné pri vytvorení), keď enabled=true A ZÁROVEŇ emailEnabled=true |
Štítok na vstupe pre e-mail |
phoneEnabled |
boolean | Zbierať telefón | |
phoneLabel |
string | povinné (striktné pri vytvorení), keď enabled=true A ZÁROVEŇ phoneEnabled=true |
Štítok na vstupe pre telefónne číslo |
leaveDetailsMessage |
string | povinné (striktné pri vytvorení), keď enabled=true |
Správa vyzývajúca návštevníka, aby zanechal svoje kontaktné údaje |
thankYouMessage |
string | povinné (striktné pri vytvorení), keď enabled=true |
Potvrdenie zobrazené po odoslaní |
requireBeforeNewConversation |
boolean | Ak je true, formulár musí byť odoslaný pred začiatkom chatu; ak je false, AI rozhodne, kedy formulár zobraziť |
|
emailNotificationEnabled |
boolean | Poslať e-mail majiteľovi pri každom získaní nového leadu | |
emailNotificationAddress |
string | Príjemca upozornení (predvolene e-mail účtu) | |
emailWithConversationContent |
boolean | Ak má hodnotu true, zahrnie prepis konverzácie do upozornenia |
Pravidlo vzájomnej závislosti pri vytváraní: enabled=true vyžaduje aspoň jedno z polí emailEnabled alebo phoneEnabled. Nastavenie requirePolicyAccept sa nachádza v consent.leadCollectionRequirePolicyAccept, nie tu.
| customFormId | long | ID existujúceho vlastného formulára | Nahradí vstavaný formulár na leady vlastným formulárom. Hodnota null ponechá vstavaný formulár |
| customFormMapping | string | reťazec vo formáte JSON | Mapuje polia vlastného formulára na meno / e-mail / telefón |
§ liveChat
| Pole | Typ | Obmedzenie | Popis |
|---|---|---|---|
enabled |
boolean | Prepínač funkcie Live Chat | |
infoMessage |
string | Vysvetľujúca správa pred odovzdaním operátorovi | |
startMessage |
string | Správa zobrazená pri začatí živej relácie | |
endMessage |
string | Správa zobrazená pri ukončení živej relácie | |
nameLabel |
string | Štítok poľa pre meno v úvodnom formulári pred chatom naživo | |
emailLabel |
string | Štítok poľa pre e-mail v úvodnom formulári pred chatom naživo | |
schedule |
string | reťazec vo formáte JSON (prepínače dní v týždni + from/to + timezone) |
Prevádzkový harmonogram pre Live Chat - presnú štruktúru nájdete v časti „Štruktúrované polia a rozsahy“ |
outOfHoursMessage |
string | Správa zobrazená vtedy, keď je podľa harmonogramu mimo prevádzkových hodín | |
closeModalMessage |
string | Názov modálneho okna „ukončiť chat naživo?“ | |
closeModalConfirmLabel |
string | Štítok potvrdzovacieho tlačidla v zatváracom okne | |
closeModalCancelLabel |
string | Štítok tlačidla zrušenia v zatváracom okne | |
closeModalTooltipText |
string | Text pomocného popisu prvku na zatvorenie chatu | |
operatorHasJoinedLabel |
string | Štítok zobrazený po pripojení operátora | |
operatorDidNotJoinInTimeLabel |
string | Štítok zobrazený v prípade, že sa žiadny operátor nepripojí v stanovenom časovom limite | |
waitingForOperatorToJoinLabel |
string | Štítok zobrazený počas čakania na pripojenie operátora | |
waitingForOperatorSeconds |
int | Časový limit na prevzatie konverzácie operátorom (sekundy) | |
redirectToHumanSupportForm |
boolean | Ak má hodnotu true, presmeruje na formulár ľudskej podpory, ak žiadny operátor neodpovie | |
missedEmailEnabled |
boolean | predvolene true |
Poslať e-mail majiteľovi bota, keď požiadavka na chat naživo zostala bez odpovede. Pri starších botoch nie je nastavené, čo sa interpretuje ako povolené |
Nastavenie requirePolicyAccept sa nachádza v consent.liveChatRequirePolicyAccept, nie tu.
§ consent
| Pole | Typ | Obmedzenie | Popis |
|---|---|---|---|
newConversationRequirePolicyAccept |
boolean | Vyžadovať súhlas so zásadami ochrany osobných údajov pred začatím novej konverzácie | |
humanSupportRequirePolicyAccept |
boolean | Vyžadovať súhlas so zásadami ochrany osobných údajov pred odoslaním formulára zákazníckej podpory | |
leadCollectionRequirePolicyAccept |
boolean | Vyžadovať súhlas so zásadami ochrany osobných údajov pred odoslaním formulára na zber kontaktov | |
liveChatRequirePolicyAccept |
boolean | Vyžadovať súhlas so zásadami ochrany osobných údajov pred začatím relácie Live Chat | |
newConversationConsentDescription |
string | Úvodný text obrazovky so súhlasom pri spustení konverzácie | |
privacyPolicyConsentCheckboxLabel |
string | Štítok vedľa začiarkavacieho políčka súhlasu (zvyčajne obsahuje odkaz na zásady ochrany osobných údajov) |
§ whiteLabel
| Pole | Typ | Obmedzenie | Popis |
|---|---|---|---|
hideRoboAssistLogo |
boolean | funkcia White Label; podlieha limitom účtu | Skryť predvolené logo ChatLab v pätičke |
whitelabelLogoLink |
string | funkcia White Label; podlieha limitom účtu | URL adresa, na ktorú odkazuje vlastné logo v pätičke |
assignToCustomDomain |
boolean | podmienené funkciou CUSTOM_DOMAIN |
Prevádzkovať chat na nakonfigurovanej vlastnej doméne |
whitelabelLogoUrl |
string | iba na čítanie | Plne kvalifikovaná verejná adresa URL loga White Label; ak ju chcete zmeniť, nahrajte súbor cez časť multipart whitelabel_logo |
Multipart pri POST/PATCH: whitelabel_logo (súborová časť). Telá požiadaviek GET / odpovedí vynechávajú obsah súboru - prenáša sa iba adresa URL.
§ security
| Pole | Typ | Obmedzenie | Popis |
|---|---|---|---|
allowedDomains |
string | Čiarkami oddelený zoznam domén s povolením vložiť widget (prázdne = bez zoznamu povolených) | |
spamFilterEnabled |
boolean | Zapnúť spamový filter pre prichádzajúce správy daného bota | |
countryFilterMode |
string | BLACKLIST alebo WHITELIST |
Spôsob interpretácie zoznamov krajín. Samotné zoznamy sú prístupné iba správcovi |
talkMessagesRateLimit |
int | >= 0; 0 vypína |
Maximálny počet správ používateľa povolený v rámci časového okna limitu |
talkMessagesRateLimitDurationSeconds |
int | >= 0 |
Dĺžka časového okna limitu správ (sekundy) |
talkMessagesRateLimitHitMessage |
string | Správa zobrazená návštevníkovi pri dosiahnutí limitu počtu správ |
§ voice
| Pole | Typ | Obmedzenie | Popis |
|---|---|---|---|
inputEnabled |
boolean | Povoliť návštevníkovi diktovať správy (prevod reči na text) | |
conversationEnabled |
boolean | vyžaduje hlasovú funkciu v predplatnom | Zapnúť plnohodnotné hlasové konverzácie |
voiceId |
string | ID hlasu špecifické pre poskytovateľa (napr. alloy) |
Ktorý syntetický hlas rozpráva |
model |
string | napr. GPT-REALTIME-MINI, GEMINI-LIVE, ELEVENLABS-* |
Hlasový model. Účtované za minútu, sadzby sa líšia podľa modelu |
turnDetection |
string | špecifické pre poskytovateľa | Režim striedania replík |
audioPrompt |
string | Dodatočný systémový prompt použitý iba pre hlasové repliky | |
welcomeMessage |
string | Hlasová uvítacia správa | |
language |
string | kód jazyka | Hlavný jazyk hlasu |
additionalLanguages |
string | čiarkami oddelené kódy jazykov | Ďalšie jazyky, ktoré hlasový agent prijíma |
maxDurationSeconds |
int | Pevný limit dĺžky jednej hlasovej konverzácie | |
maxDurationMessage |
string | Správa zobrazená pri dosiahnutí limitu |
§ multilingual
| Pole | Typ | Obmedzenie | Popis |
|---|---|---|---|
enabled |
boolean | Prepínač viacjazyčného režimu | |
mode |
string | AUTODETECT alebo režim pevného zoznamu |
Spôsob, akým bot vyberá jazyk odpovede |
baseLanguage |
string | kód jazyka | Jazyk, v ktorom sú napísané pôvodné texty bota |
languages |
string | čiarkami oddelené kódy jazykov | Jazyky ponúkané návštevníkovi |
knowledgeLanguageMode |
string | Spôsob zaobchádzania so znalosťami v iných jazykoch | |
knowledgeLanguageFallback |
string | kód jazyka | Záložný jazyk použitý v prípade, že sa nenájde žiadna zhoda |
§ advanced
| Pole | Typ | Obmedzenie | Popis |
|---|---|---|---|
model |
string | podlieha limitom účtu; pozrite „Textové modely AI“ vyššie | Identifikátor LLM (napr. 5-MINI) |
temperature |
decimal | 0.0-1.0 |
Teplota vzorkovania (zodpovedá posuvníku v používateľskom rozhraní) |
chatContextSize |
int | ∈ {8000, 16000, 32000}; automaticky prispôsobené limitu vášho účtu |
Tokenové okno pre históriu chatu |
botMessagesLimit |
long | 0 alebo násobok 1000 (napr. 1000, 2000, 10000) |
Maximálny počet odpovedí bota na konverzáciu (0 = bez limitu) |
internalLocale |
string | kód lokalizácie vo formáte ll_CC |
Jazyk ovládacích prvkov widgetu (odlišný od role.language) |
productsViewEnabled |
boolean | Ak má hodnotu true, sprístupní karty ponúk (Offer Cards) pre e-commerce v chate | |
includeProductsInKnowledgeBase |
boolean | Ak má hodnotu true, zaindexuje katalóg produktov ako súčasť bázy znalostí |
Mimo rozsahu API
Administrátorské rozhranie zahŕňa niekoľko oblastí, ktoré zámerne nie sú v tejto verzii rozhrania Management API sprístupnené:
- Záložka Flow (Tok) - vizuálny editor toku konverzácie Flow Editor (fázy a prechody). Nie je sprístupnené cez Management API.
- Záložka Actions (Akcie) - spravované e-commerce / rezervačné integrácie, funkcia AI Search a vlastné funkcie API. Volanie nástrojov nikdy nebolo súčasťou rozhrania Management API.
- Samotný nástroj na tvorbu vlastných formulárov - vytváranie a úprava vlastných formulárov nie sú sprístupnené. K botovi však môžete existujúci formulár pripojiť cez
leadCollection.customFormIdahumanSupport.customFormId. - Vlastné ikony na otvorenie / zatvorenie chatu -
customLauncherIconVisible,openChatIcon,closeChatIcon. Rozhranie API sprístupňuje iba hlavné multipart častiavatarawhitelabel_logo. - Zoznamy IP adries a krajín - samotné záznamy sú určené iba pre administrátorov. Sprístupnený je len režim ich interpretácie prostredníctvom
security.countryFilterMode.
Endpoints
POST /v1/management/bots
Vytvorte nového bota. Akceptované sú dva ekvivalentné typy Content-Type; vyberte si ten, ktorý vám viac vyhovuje.
Režim A - čistý JSON (odporúča sa, ak v tej istej požiadavke nepotrebujete nahrať avatar / logo):
Content-Type: application/json- Telo požiadavky je priamo konfiguračný JSON bota (bez obalu
data) - Súbory (avatar / logo) možno nahrať neskôr pomocou druhej požiadavky
PATCHs využitím režimu B
Režim B - multipart/form-data (použite pri nahrávaní súborov v rámci tej istej požiadavky):
Content-Type: multipart/form-data; boundary=...- JSON časť
data(povinné,Content-Type: application/json) - konfigurácia bota vo vnorenej štruktúre opísanej vyššie - Súborová časť
avatar(voliteľné) - obrázok avatara bota - Súborová časť
whitelabel_logo(voliteľné) - logo pre White Label (platí len v prípade, že váš účet zahŕňa funkciu White Label)
V JSON je povinný iba parameter name; pre každé ďalšie pole sa použije rovnaká predvolená hodnota, akú by nastavil sprievodca v administračnom rozhraní.
Úplné telo požiadavky
Toto je maximálny JSON pre data - každá sekcia je vyplnená. Odošlite iba tie sekcie, ktoré potrebujete; všetko ostatné prevezme predvolené hodnoty.
{
"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
}
}
Validačné pravidlá s vlastnými chybovými správami:
name- povinné, maximálne 150 znakovadvanced.temperature- v rozsahu od0.0do1.0chatMemory.summariesToKnowledgeRatio- celé číslo od10do90(percentá, krok10)appearance.launcherBottomMargin,appearance.launcherSideMargin- v rozsahu od0do500appearance.footerMarkdown- maximálne 255 znakovhumanSupport.enabled=truevyžaduje vyplneniehumanSupport.emailleadCollection.enabled=truevyžaduje, aby aspoň jedna z hodnôtleadCollection.emailEnabledaleboleadCollection.phoneEnabledbola nastavená natrue; zapnutý kanál zároveň vyžaduje svoj štítok, ako aj polialeaveDetailsMessageathankYouMessage- Polia s limitmi (
advanced.chatContextSize,advanced.botMessagesLimitatď.) sa automaticky a bez upozornenia obmedzia podľa limitov vášho účtu
Polia, ktorých hodnota je na serveri null, sa v tele JSON vynechávajú - prenosová sieť prenáša iba polia s nenulovými hodnotami.
Úplné telo odpovede (201)
Rovnaká štruktúra ako požiadavka, navyše s blokom meta (iba na čítanie) a jednorazovým kľúčom apiKey na najvyššej úrovni. URL adresy súborov určené iba na čítanie (appearance.avatarUrl, whiteLabel.whitelabelLogoUrl) server doplní vtedy, keď boli nahrané príslušné časti multipart.
{
"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"
}
Pole apiKey sa zobrazuje iba pri vytvorení - ide o novo vygenerovaný kľúč Bot Talk API naviazaný na nového bota. Jeho otvorená textová podoba sa zobrazí iba raz a neskôr ju už cez API nemožno získať; okamžite si ju na svojej strane uložte.
Hlavička odpovede Location obsahuje URL adresu nového bota (/v1/management/bots/{id}).
Príklady pre Curl
Režim A - čistý JSON (najjednoduchší):
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!"}}'
Režim B - multipart s avatarom:
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}
Vráti aktuálnu konfiguráciu bota, ktorého vlastníte.
Príklad pre Curl
curl https://api.chatlab.com/aichat/v1/management/bots/4287 \
-H "Authorization: Bearer mk_..."
Úplné telo odpovede (200)
Rovnaká štruktúra ako pri odpovedi na požiadavku POST, bez jednorazového poľa apiKey. Blok meta je súčasťou odpovede. Vracia 404 not_found_error, ak bot neexistuje alebo nepatrí k vášmu účtu.
Aktuálny avatar a logo pre White Label sa poskytujú ako plne kvalifikované URL adresy iba na čítanie (appearance.avatarUrl, whiteLabel.whitelabelLogoUrl) - odvodené od rovnakej schémy, hostiteľa a kontextovej cesty, ktoré obslúžili túto požiadavku. Samotné bajty získate priamym volaním GET na tieto URL adresy; na nahradenie ktoréhokoľvek súboru nahrajte nový súbor cez multipart časť avatar / whitelabel_logo pri požiadavke PATCH. Ak tieto polia URL odošlete v tele požiadavky, budú ignorované.
{
"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"
}
}
Klonovanie bota
Telo požiadavky POST /v1/management/bots a telo odpovede GET /v1/management/bots/{bot_id} majú rovnakú štruktúru, takže klonovanie je trojkrokový proces: vykonajte GET zdrojového bota, odstráňte identifikačné polia spravované serverom a výsledok odošlite cez POST.
1. Vykonajte GET zdrojového bota.
curl https://api.chatlab.com/aichat/v1/management/bots/4287 \
-H "Authorization: Bearer mk_..." \
-o source-bot.json
2. Odstráňte blok meta na najvyššej úrovni. Objekt meta (id, createdAt, updatedAt) spravuje server a je určený len na čítanie - jeho ponechanie v tele požiadavky POST ničomu neublíži (server ho ignoruje), ale jeho odstránenie jasne vyjadruje zámer a udržiava payload čistý. Voliteľne upravte name, aby sa klon dal odlíšiť od zdroja.
jq 'del(.meta) | .name = "Helpdesk Bot (clone)"' source-bot.json > clone-body.json
3. Odošlite očistené telo cez POST na vytvorenie klonu. Kompletnú štruktúru tela a pravidlá validácie nájdete vyššie v referenčnej príručke k POST /v1/management/bots.
curl -X POST https://api.chatlab.com/aichat/v1/management/bots \
-H "Authorization: Bearer mk_..." \
-H "Content-Type: application/json" \
-d @clone-body.json
Odpoveď obsahuje meta.id nového bota a novo vygenerovaný apiKey (kľúč Bot Talk pre daný klon). Reťazec apiKey sa v čitateľnej podobe vracia iba v tejto odpovedi na vytvorenie - skopírujte si ho pred zahodením tela odpovede; neskôr ho už nie je možné získať.
Dve upozornenia:
- Súbory sa neklonujú. Polia
appearance.avatarUrlawhiteLabel.whitelabelLogoUrlsú určené len na čítanie a odkazujú na súbory zdrojového bota. Ak na klone potrebujete rovnakého avatara alebo logo White Label, stiahnite si dáta zo zdrojových adries URL a nahrajte ich ako multipart častiavatar/whitelabel_logo- buď pri vytváraní cez POST (režim B), alebo v následnom volaní PATCH. - Kľúče Bot Talk sa neklonujú. Každý bot má vlastnú zásobu kľúčov Bot Talk. Jediný kľúč
apiKeyvrátený požiadavkou POST na vytvorenie je ten, ktorý sa vygeneruje automaticky; ďalšie kľúče môžete v prípade potreby vytvoriť na karte API bota.
PATCH /v1/management/bots/{bot_id}
Aktualizuje jedno alebo viac polí bota, ktorého vlastníte. Menia sa iba sekcie a polia prítomné v JSONe; všetko vynechané (alebo odoslané ako null) zostáva nezmenené. Logika čiastočnej aktualizácie sa uplatňuje na jednotlivé polia v rámci odoslanej sekcie.
Akceptujú sa dva ekvivalentné typy Content-Type (rovnako ako pri POST):
Režim A - čistý JSON (odporúča sa, ak aktualizujete iba nastavenia):
Content-Type: application/json- Telo požiadavky je priamo JSON s aktualizáciami (bez obalu
data)
Režim B - multipart/form-data (použite pri nahrávaní súborov):
- JSON časť
data(voliteľná) - zmeny nastavení. Odošlite, iba ak chcete zmeniť polia. Vynechajte úplne, ak chcete nahrať iba avatara alebo logo. - Súborová časť
avatar(voliteľná) - nahradenie avatara - Súborová časť
whitelabel_logo(voliteľná) - nahradenie loga White Label (platí iba v prípade, že váš účet zahŕňa whitelabeling)
Všetky tri časti sú pri PATCH voliteľné, ale aspoň jedna musí byť prítomná, aby volanie malo zmysel.
Úplné telo požiadavky (maximálny rozsah)
Akékoľvek pole akceptované požiadavkou POST /v1/management/bots možno odoslať aj tu. Nižšie uvedený príklad predstavuje kompletný rozsah; v praxi odosielate iba kľúče, ktoré chcete zmeniť (pozrite si časť "Minimálna čiastočná aktualizácia" nižšie) - každý vynechaný kľúč (alebo odoslaný ako null) ponechá uloženú hodnotu nezmenenú.
{
"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álna čiastočná aktualizácia
Aktualizujte jedno pole cez PATCH odoslaním presne tých kľúčov, ktoré chcete zmeniť - všetko ostatné zostane zachované.
{
"appearance": {
"launcherColor": "#abcdef"
}
}
Príklady curl
Režim A - čistý JSON (najjednoduchší):
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"}}'
Režim B - multipart (pri nahradení avatara / loga):
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'
Režim B - nahradenie iba avatara (bez zmien polí):
curl -X PATCH https://api.chatlab.com/aichat/v1/management/bots/4287 \
-H "Authorization: Bearer mk_..." \
-F 'avatar=@./new-avatar.png'
Telo odpovede (200)
Rovnaká štruktúra ako GET /v1/management/bots/{bot_id} - úplná konfigurácia bota po aplikovaní zmien vrátane bloku meta. Bez poľa apiKey. Vracia 404 not_found_error, ak bot neexistuje alebo nepatrí k vášmu účtu.
Nižšie uvedený príklad zobrazuje odpoveď po aplikovaní vyššie uvedenej aktualizácie Úplné telo požiadavky (maximálny rozsah) na bota z príkladu GET - zmenené polia odrážajú nové hodnoty, nedotknuté polia zostávajú zachované a časová značka meta.updatedAt sa aktualizuje.
{
"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
Načíta aktuálne využitie predplatného pre účet, ktorý vlastní kľúč Management.
Telo odpovede (200)
{
"subscriptionType": "standard",
"messages": {"used": 4123, "limit": 11000, "remaining": 6877},
"bots": {"used": 3, "limit": 5, "remaining": 2}
}
subscriptionTypeje identifikátor aktuálneho balíka účtu písaný malými písmenami (napr.standardv príklade). Balíky pochádzajú z dynamického katalógu, takže presná množina identifikátorov sa môže v čase meniť podľa toho, ako sa balíky premenovávajú alebo pridávajú - berte to ako ľubovoľný reťazec, nie ako fixný enum.messages.used/limit/remainingpredstavujú kredity na správy v aktuálnom zúčtovacom období.bots.used/limit/remainingvyjadrujú počet aktívnych botov v porovnaní s limitom botov vášho účtu.
Hlavičky obmedzenia frekvencie (rate limit)
Odpovede, ktoré dosiahnu fázu kontroly obmedzenia frekvencie (t. j. prešli autentifikáciou a povolenými IP adresami), obsahujú:
X-RateLimit-Limit: 10
X-RateLimit-Remaining: 7
X-RateLimit-Reset: 1715430000
X-RateLimit-Limit- limit na kľúč skutočne uplatnený na toto volanie (predvolene 10, alebo vami nakonfigurovanýrateLimitPerMinute, ak je nižší).X-RateLimit-Remaining- tokeny zostávajúce v zásobníku (bucket) bezprostredne po tomto volaní.X-RateLimit-Reset- čas v sekundách podľa Unix epochy, kedy bude k dispozícii ďalší token (nejde o úplné obnovenie zásobníka; tokeny do zásobníka pribúdajú priebežne). Keď je zásobník plný, je to aktuálny čas.
Pri odpovediach 429 rate_limit_exceeded je nastavená aj hlavička Retry-After, vyjadrená v celých sekundách, kým sa neuvoľní aspoň jeden token.
Chyby pred overením (401 missing_api_key, 401 invalid_api_key, 403 ip_blocked) a 403 ip_not_whitelisted neobsahujú hlavičky X-RateLimit-* - obmedzovač sa uplatňuje až po úspešnej autentifikácii a kontrole IP adries.
Formát chýb
Rovnaká obálka ako pri Bot Talk API:
{
"error": {
"type": "permission_error",
"code": "key_type_not_allowed",
"message": "This endpoint requires a MANAGEMENT API key.",
"param": null
}
}
Validačné chyby používajú code: "invalid_parameter" a pred správu vkladajú cestu k chybnému poľu, takže problematickú časť ľahko nájdete:
{
"error": {
"type": "invalid_request_error",
"code": "invalid_parameter",
"message": "humanSupport.email Human support email is required when humanSupport.enabled=true"
}
}
Neplatné hodnoty pre polia typu enum / s uzavretou množinou hodnôt (napr. chatMemory.clientSummaryPromptType = "BOGUS") obsahujú cestu k poľu, odmietnutú hodnotu a zoznam povolených hodnôt:
{
"error": {
"type": "invalid_request_error",
"code": "invalid_parameter",
"message": "chatMemory.clientSummaryPromptType 'BOGUS' is not a valid value. Allowed: CUSTOM, DEFAULT"
}
}
Súvisiace
Pre koncové body konverzácie a streamovanie cez SSE si pozrite Bot Talk API.