Management API genel bakış
Management API, sohbet mesajı göndermeyi içermeyen arka ofis işlemleri içindir:
POST /v1/management/botsile programatik olarak bir bot oluşturmaGET /v1/management/bots/{bot_id}ile sahip olduğunuz belirli bir botu okumaPATCH /v1/management/bots/{bot_id}ile belirli bir botu güncellemeGET /v1/usageile abonelik kullanımını okuma
Yönetim anahtarları belirli bir bota değil, doğrudan hesabınıza bağlıdır. Güvenliği ihlal edilmiş bir sohbet anahtarının botlarınızı değiştirememesi veya faturalandırma verilerinizi okuyamaması için Bot Talk anahtarlarından kasten ayrı tutulurlar.
Base URL
https://api.chatlab.com/aichat
Bu makaledeki tüm uç noktalar bu temel URL'ye göredir.
Başlarken
- Yönetici uygulamasını açın ve Account Settings > Management API (Hesap Ayarları > Management API) bölümüne gidin.
- Create Management Key (Yönetim Anahtarı Oluştur) seçeneğine tıklayın, anahtara bir ad verin, isteğe bağlı olarak IP beyaz listesi ve istek sınırı (rate limit) belirleyin, ardından formu gönderin.
- Yalnızca entegrasyonunuzun ihtiyaç duyduğu izinleri seçin ve başarı modalından anahtarın tamamını kopyalayın. Düz metin yalnızca bir kez gösterilir.
- Anahtarı tarayıcı kodunda veya herkese açık bir depoda değil, sunucunuzda saklayın. Erişimi doğrulamak için
usageizniyleGET /v1/usagegibi salt okunur bir istek gönderin. - Kullanılmayan veya güvenliği ihlal edilmiş anahtarları Management API sayfasından iptal edin.
Anahtar mk_abcdefghijklmnopqrstuvwxyz012345 şeklinde görünür. mk_ öneki, onu Bot Talk anahtarlarından (ck_) ayırır.
Kimlik doğrulama
Authorization: Bearer mk_abcdefghijklmnopqrstuvwxyz012345
/v1/chat (veya başka bir Bot Talk uç noktasına) bir mk_ anahtarı göndermek 403 key_type_not_allowed hatası döndürür. /v1/management/* uç noktasına bir ck_ anahtarı göndermek de aynı hatayı verir.
Sınırlar
- Kullanıcı başına en fazla 5 aktif Management API anahtarı
- Anahtar başına dakikada en fazla 10 istek (belirteç kovası / token bucket, 10 kapasite, yaklaşık her 6 saniyede 1 belirteç şeklinde düzenli dolum). Oluşturma sırasında daha düşük bir değere ayarlanabilir - daha düşük bir
rateLimitPerMinutebelirlerseniz üst sınır düşer ve dolum hızı da buna göre ölçeklenir.
İzinler
Her Yönetim anahtarı aşağıdaki üç iznin herhangi bir alt kümesini taşır. Oluşturma sırasında en az bir izin seçilmelidir; aksi takdirde istek 400 invalid_request_error ile reddedilir. Gerekli izne sahip olmayan bir anahtarla bir uç noktayı çağırmak 403 insufficient_permissions hatası döndürür.
bot_read-GET /v1/management/bots/{bot_id}için gereklidirbot_management-POST /v1/management/botsvePATCH /v1/management/bots/{bot_id}için gereklidirusage-GET /v1/usageiçin gereklidir
Gövde yapısı: yönetici arayüzü sekmelerini yansıtan iç içe bölümler
POST ve PATCH, 13 bölüme ayrılmış bir JSON gövdesi kabul eder. Her bölüm, yönetici uygulamasının Bot Settings (Bot Ayarları) kenar çubuğundaki bir alt sekmeyle eşleşir, böylece JSON anahtarları ile görünür sekmeler birbiriyle örtüşür: consent.humanSupportRequirePolicyAccept değerini API üzerinden değiştirirseniz, yönetici uygulamasındaki Consent & Privacy (Onay ve Gizlilik) sekmesinde aynı düğmenin değiştiğini görürsünüz.
role- bot kimliği, ham prompt, yanıt uzunluğu, dil, web sitesi / şirket bağlamı (Role & Behavior sekmesi)conversation- karşılama mesajı, sorgu iyileştirme, konuşma sürekliliği, puanlama düğmesi + ipuçları, önerilen soru içerikleri + dinamik devam soruları (Chat Conversation sekmesi)chatMemory- sohbet hafızası düğmesi, özet prompt'ları, bağlam dağılımı (Summaries & Memory sekmesi)appearance- renkler, metinler, boyutlar, özel CSS, karşılama ekranı, önerilen soru stilleri, otomatik açılma davranışı, insan yazıyor simülasyonu, altbilgi markdown'ı (Appearance sekmesi)humanSupport- insanla iletişim formu (Human Contact Form sekmesi)leadCollection- potansiyel müşteri yakalama formu (Lead Collection sekmesi)liveChat- canlı sohbete aktarma (Live Chat sekmesi)consent- dört gizlilik politikası onay düğmesinin tümü ve onay ekranı metni (Consent & Privacy sekmesi)whiteLabel- logo gizleme, özel logo bağlantısı, özel alan adı barındırma (Whitelabel sekmesi)security- izin verilen alan adları, spam filtresi, konuşma hızı sınırları (Security sekmesi)voice- sesli giriş ve sesli konuşmalar: model, ses, diller, prompt, süre sınırı (Voice Conversation sekmesi)multilingual- çok dilli mod, temel dil, sunulan diller, bilgi tabanı dili yönetimi (Languages sekmesi)advanced- LLM modeli, sıcaklık (temperature), bağlam boyutu, bot mesaj sınırı, dahili yerel ayar (locale), Offer Cards (Model & Advanced sekmesi)
Yazılabilir ayarlar arasında yalnızca name en üst düzeyde yer alır, çünkü belirli bir sekmeye ait olmak yerine botu tanımlar.
Bot Settings kenar çubuğunda şu anda 16 alt sekme bulunmaktadır ve bunlardan 13'ü yukarıdaki bölümlerle eşleşir. Karşılık gelen bir bölümü olmayan üç alt sekme Flow, Actions ve Forms sekmeleridir; bunların üçü de aşağıda "API kapsamı dışındakiler" başlığı altında ele alınmıştır. Eşleşen 13 sekme şunlardır: Appearance, Chat Conversation, Role & Behavior, Human Contact Form, Lead Collection, Live Chat, Whitelabel, Consent & Privacy, Security, Model & Advanced, Summaries & Memory, Voice Conversation ve Languages.
İstek gövdesi ve yanıt gövdesi aynı yapıyı paylaşır. Yanıt iki ek alan içerir:
meta- salt okunur: bot kimliği ve zaman damgaları. Bir GET yanıtını geçerli bir POST gövdesine dönüştürmek için bu alanı çıkarın.apiKey- yalnızca oluşturma sırasında bulunur - yeni bot için yeni üretilmiş Bot Talk API anahtarı.
Paylaşılan yapı içindeki iki alan salt okunurdur - yanıtta döndürülür, POST/PATCH isteklerinde gönderirseniz yok sayılır:
appearance.avatarUrl- bot avatar görselinin tam nitelikli herkese açık URL'si (örneğinhttps://api.chatlab.com/aichat/content/avatar_xyz.png). Baytları indirmek için doğrudan bu adrese GET isteği yapın. Değiştirmek için çok parçalı (multipart)avatarparçası üzerinden yeni bir dosya yükleyin (bkz. PATCH).whiteLabel.whitelabelLogoUrl- White Label başlık logosunun tam nitelikli herkese açık URL'si.avatarUrlile aynı mantıkta çalışır. Değiştirmek için çok parçalı (multipart)whitelabel_logoparçası üzerinden yeni bir dosya yükleyin (bkz. PATCH).
Her iki URL de geçerli isteğin şema + ana makine (host) + bağlam yolunu kullanır; bu nedenle White Label özel alan adlarında bu alan adını temel alarak dönerler (örneğin https://api.acme.com/aichat/content/...).
PATCH isteğinde bir bölümü atlamak için o bölüme null gönderin; bir bölüm içindeki tek bir alanı atlamak için ilgili alana null gönderin. Alan düzeyindeki null değeri saklanan bir değeri asla temizlemez - yalnızca "dokunma" anlamına gelir.
Rol ve prompt oluşturma
LLM'in gerçekte aldığı sistem prompt'u, role.role değerine bağlı olarak iki yoldan biriyle oluşturulur. Hangi kolda olduğunuzu bilmek, hangi alanların önemli olduğunu ve hangilerinin depolanıp yok sayıldığını anlamanızı sağlar.
Kol A - role.role değeri CUSTOMER_SUPPORT, SALES veya LEAD_COLLECTION_AGENT olduğunda (şablon güdümlü)
Arka uç, prompt'u yerleşik bir şablondan birleştirir ve role.rawPrompt değerini tamamen yok sayar (değer yine de bot üzerinde saklanır, sadece kullanılmaz). Şablon şunları içerir:
role.role- rol etiketi (örneğin "Customer Support") ve otomatik olarak eklenen role özgü talimatlarname- açılış cümlesine eklenen bot adırole.language-"Auto Detect", botu kullanıcının dilini takip edecek şekilde ayarlar; diğer herhangi bir değer (örneğin"English","Polish"), "Kullanıcı başka bir dil kullanmadığı sürece yanıtları {language} dilinde ver" şekline dönüşürrole.responseLength- hedeflenen bir kelime sayısıyla eşleştirilir:Concise≈ 50 kelime,Normal≈ 100,Detailed≈ 200role.websiteAddress- isteğe bağlı; boş olmadığında, "{url} web sitesi kullanıcıları için" şeklinde eklenirrole.companyDescription- isteğe bağlı; boş olmadığında, rol talimatlarından önce fazladan bir paragraf olarak başa eklenir
Çoğu bot için önerilen yol budur - role göre ayarlanmış davranışlara ve güvenlik sınırlarına doğrudan sahip olursunuz.
Kol B - role.role değeri CUSTOM olduğunda (çağıran tarafından sağlanan prompt)
Arka uç, role.rawPrompt değerini rol prompt'u olarak kullanır ve platformun sabit yanıt uzunluğu kılavuzunu sonuna ekler. Bu, role.responseLength alanından ayrıdır: isteğe bağlı Concise/Normal/Detailed ayarı CUSTOM bir rol için eklenmez. Benzer şekilde, language, websiteAddress ve companyDescription saklanır ancak bu rol prompt'una enjekte edilmez. İstenen herhangi bir dili, hedef yanıt uzunluğunu veya şirket bağlamını rawPrompt içine kendiniz dahil edin. Çalışma zamanında ek talimatlar ve bilgi tabanından getirilen bağlam da sağlanabilir, bu nedenle rawPrompt modele giden girdinin tamamı değildir. Önceden tanımlanmış rolün üslup talimatları eklenmez, ancak CUSTOM seçeneğini belirlemek tüm platform talimatlarını ortadan kaldırmaz.
CUSTOM seçeneğini yalnızca şablon güdümlü prompt kullanım durumunuza uymadığında kullanın (örneğin, çok sektöre özgü bir kimliğe, kendi güvenlik kısıtlamalarınıza veya standart dışı bir çıktı biçimine ihtiyacınız olduğunda).
Sabit listeli / kapalı küme alanları (Enum)
Enum ve kısıtlanmış alanlar, geçersiz değerleri 400 invalid_parameter ile reddeder. Diğer alanlar, kullanıcı arayüzü sabit bir liste sunsa bile düz dize (string) biçimindedir. Desteklenmeyen her dizenin reddedileceğini varsaymak yerine, belgelenen yazımı kullanın ve yükünüzü doğrulayın.
role.role-CUSTOMER_SUPPORT,SALES,LEAD_COLLECTION_AGENT,CUSTOMrole.responseLength-Concise,Normal,Detailedrole.language- yönetici açılır menüsündeki tam İngilizce dil adı; örneğinAuto Detect,English,Polish,Spanish,German,French,Italian,Portuguese,Dutch,Russian,Chinese (Simplified),Japanese,Arabic,Hindive yaklaşık 80 diğer dil. Değer aynen saklanır ve prompt şablonuna yerleştirilir; bu nedenle iki harfli ISO kodları (en,pl) ve liste dışı diğer değerler API tarafından reddedilmez ancak "Output in en, unless..." gibi hatalı bir talimat üretir. Oluşturma sırasında belirtilmediğinde varsayılan olarakAuto Detectolur.advanced.model- aşağıdaki "Yapay zeka metin modelleri" bölümüne bakın. Bu bir dizedir, istek şemasında doğrulanan bir sabit listeli değer (enum) değildir; rastgele bir model adı yerine desteklenen bir değer kullanın.advanced.chatContextSize- arayüzle eşleşecek şekilde8000,16000veya32000kullanın. Hesabın maksimum sınırının üzerindeki değerler sessizce sınırlandırılır; DTO bu üç değerli kümeyi zorunlu kılmaz.chatMemory.clientSummaryPromptType-DEFAULT,CUSTOMchatMemory.conversationSummaryPromptType-DEFAULT,CUSTOMappearance.chatAlignment-left,rightappearance.minimizedDisplayMode-icon,minified,pillappearance.chatMessageLinkTarget-_blank,_selfleadCollection.requireBeforeNewConversation- boole (boolean) düğmesi.true, kullanıcıyı sohbete başlamadan önce potansiyel müşteri formunu doldurmaya zorlar;false, formun ne zaman gösterileceğine yapay zekanın karar vermesine izin verir (varsayılan).
Yapılandırılmış alanlar ve aralıklar
Basit dizeler veya sayılar gibi görünen ancak bilmenizde fayda olan belirli yapılara, aralıklara veya yönetici arayüzü özelliklerine sahip alanlar.
-
advanced.temperature- kabul edilen aralık, yönetici arayüzündeki kaydırıcıyla eşleşecek şekilde0.0ile1.0arasıdır. Bu aralığın dışındaki değerler400 invalid_parameterile reddedilir. -
chatMemory.summariesToKnowledgeRatio- tam sayı yüzdesi,10-90; arayüz10'luk adımlar kullanır, ancak API aralıktaki tüm tam sayıları kabul eder. Varsayılan50'dir. Bellek etkinleştirildiğinde ve bağlam 8k'dan büyük olduğunda, model bağlamının tamamını değil, prompt/son konuşma için ayrılan payın ardından kalan bilgi ve bellek bütçesini böler. 8k bağlamda bu ayar ile herhangi bir özet bütçesi ayrılmaz. -
liveChat.schedule- iletim sırasında iç içe bir JSON nesnesi değil, dize olarak kodlanmış JSON (JSON encoded as a string) biçimindedir. Sunucu ham dizeyi aynen saklar; yönetici arayüzü çalışma planı düzenleyicisini oluştururken bunu istemci tarafında ayrıştırır. Ayrıştırıldıktan sonra dize, haftanın her günü için bir giriş ve birtimezoneanahtarı içerecek şekilde biçimlenir:- her gün anahtarı (
monday-sunday), 24 saatlik zaman diliminde{enabled: boolean, from: "H:MM", to: "H:MM"}yapısına eşlenir timezone, bir IANA bölge adıdır (örneğin"Europe/Warsaw","America/New_York")
Örnek değer (dıştaki tırnak işaretlerine ve kaçış karakterli iç tırnak işaretlerine dikkat edin - bu, iç içe bir nesne değil, tek bir dize alanıdır):
"{\"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\"}"Listelenen saatlerin dışında, ziyaretçiye
liveChat.outOfHoursMessagegösterilir ve canlı sohbete aktarma engellenir. İç yapı doğrulaması yalnızca yönetici arayüzünde istemci tarafında çalışır - bozuk JSON veya tanınmayan anahtarlar API tarafından yalnızca bir dize olarak kabul edilir ve daha sonra bir kullanıcı botu yönetici panelinde açtığında bir görselleştirme hatası olarak ortaya çıkar. Göndermeden önce kendi tarafınızda yapıyı doğrulayın. - her gün anahtarı (
-
conversation.positiveRatingTooltip/conversation.negativeRatingTooltip-conversation.conversationRatingEnabled=trueolduğunda 👍 / 👎 konuşma puanlama kontrollerinde gösterilen kısa etiketler. Varsayılan metin "I like the response" / "I don't like the response" şeklindedir. Son kullanıcılar tarafından görülebilir. -
whiteLabel.hideRoboAssistLogo- hesap limitlerinize tabi White Label özelliği. Altbilgideki "Powered by ChatLab" satırını gizler. Hesabınız White Label özelliğini içermiyorsa, değer saklanır ancak yok sayılır ve altbilgi her zaman gösterilir. -
whiteLabel.whitelabelLogoLink- hesap limitlerinize tabi White Label özelliği.hideRoboAssistLogo=trueolduğunda vewhitelabel_logoçok parçalı (multipart) alanı aracılığıyla özel bir logo dosyası yüklendiğinde özel logonun tıklama hedefi URL'si. -
appearance.simulateHumanTypingDelay- saniye (milisaniye değil),0-200arası tam sayı.simulateHumanTyping=trueolduğunda ardışık bot mesaj balonları arasındaki duraklama süresi. Varsayılan5. -
appearance.autoOpenChatDelaySeconds- saniye, tam sayı.autoOpenChat=trueveautoOpenChatDelay=trueolduğunda pencere bileşeninin otomatik olarak açılmasından önceki gecikme. -
advanced.internalLocale-ll_CCbiçiminde IETF yerel ayar bölge kodu (alt çizgi ile, kısa çizgilill-CCDEĞİL). Kabul edilen değerler yaklaşık 95 yerel ayardan oluşan sabit bir listeden gelir: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_ILve daha fazlası. Tek başına iki harfli bir kod ("en") veya BCP-47 ("en-US") göndermek izin verilenler listesinde yer almaz. Varsayılanen_US. Bu,role.language(botun konuşma çıktısı dili) alanından farklı olarak, pencere bileşeni arayüzündeki tarih/sayı biçimlendirmesi için kullanılan yerel ayardır. -
security.talkMessagesRateLimit/security.talkMessagesRateLimitDurationSeconds- tam sayılar (JSON sayısı olarak gönderin, örneğin"30"değil30). Oturum tabanlı bu sınırı devre dışı bırakmak için mesaj sınırını0olarak ayarlayın. Etkinleştirirken pozitif bir süre belirtin. Arka uç, ziyaretçiyesecurity.talkMessagesRateLimitHitMessagemesajını göstermeden önce saniye cinsinden süre başına oturum başına N mesaj sınırını uygular. -
advanced.botMessagesLimit- tam sayı (JSON sayısı, örneğin1000).0, hesap kredi bütçesi geçerli olmaya devam ederken bot başına ek bir sınır olmadığı anlamına gelir; aksi takdirde 1.000'in katı olmalıdır (1000,2000,10000, ...).100veya1500gibi değerler400 invalid_parameterile reddedilir. Bu, konuşma başına mesaj sayısı değil, aylık bot kredi sınırıdır. Eşleyici bu değeri hesap bütçesine göre sınırlandırmaz; hesabın bütçesi gerçek kullanımı kısıtlamaya devam eder.
Yapay zeka metin modelleri (advanced.model)
Settings > Model & Advanced (Ayarlar > Model ve Gelişmiş) bölümünde istediğiniz modelle yapılandırılmış bir botu okurken advanced.model içinde dönen tam model tanımlayıcısını kullanın. Geçerli oluşturma varsayılanı 5.6-LUNA modelidir. Tanımlayıcılar büyük/küçük harfe duyarlıdır ve görünen adlardan farklıdır; örneğin 5.6-LUNA, GPT 5.6-luna olarak gösterilir.
Model kataloğu zamanla değişir. İstek şeması bir dize kabul ediyor diye rastgele bir dizenin veya bir sağlayıcının herkese açık model kimliğinin desteklendiği sonucunu çıkarmayın. Chatbot'u yayına almadan önce kaydedilen yapılandırmayı tekrar okuyun ve ortaya çıkan botu test edin.
Alan referansı (tam istek şeması)
Desteklenen bölümler ve alanlar, türleri ve önemli kısıtlamalarıyla birlikte aşağıda listelenmiştir. PATCH semantiği: atlanan (veya null olarak gönderilen) herhangi bir alan, kayıtlı değeri değiştirmeden bırakır. Aynı yapı yanıt için de geçerlidir (multipart ikili içerik hariç; her yanıtta salt okunur meta bloğu ve yalnızca oluşturma yanıtında apiKey eklenir).
En üst düzey
| Alan | Tür | Kısıtlama | Açıklama |
|---|---|---|---|
name |
string | maks 150, oluşturmada zorunlu | Botun görünen adı |
role |
object | Bkz. § role | |
conversation |
object | Bkz. § conversation | |
chatMemory |
object | Bkz. § chatMemory | |
appearance |
object | Bkz. § appearance | |
humanSupport |
object | Bkz. § humanSupport | |
leadCollection |
object | Bkz. § leadCollection | |
liveChat |
object | Bkz. § liveChat | |
consent |
object | Bkz. § consent | |
whiteLabel |
object | Bkz. § whiteLabel | |
security |
object | Bkz. § security | |
advanced |
object | Bkz. § advanced |
Yalnızca yanıtta bulunan eklemeler:
meta: { id, createdAt, updatedAt }- salt okunur.apiKey- string, yalnızcaPOST /v1/management/botsyanıtında bulunur - yeni bot için yeni oluşturulmuş Bot Talk anahtarıdır, tam olarak bir kez döndürülür.
§ role
| Alan | Tür | Kısıtlama | Açıklama |
|---|---|---|---|
role |
string (enum) | CUSTOMER_SUPPORT, SALES, LEAD_COLLECTION_AGENT, CUSTOM |
Persona ön ayarı; prompt şablonunu seçer (bkz. "Rol ve prompt yapısı") |
language |
string | tam İngilizce dil adı (English, Polish, ...) veya Auto Detect |
Prompt şablonuna aktarılan birincil dil |
responseLength |
string | ∈ {Concise, Normal, Detailed} |
İstenen AI yanıt ayrıntı düzeyi |
websiteAddress |
string | Prompt bağlamı için kullanılan web sitesi | |
companyDescription |
string | Prompt bağlamı için kullanılan şirket açıklaması | |
rawPrompt |
string | Özel sistem promptu - yalnızca role=CUSTOM olduğunda harfi harfine kullanılır |
§ conversation
| Alan | Tür | Kısıtlama | Açıklama |
|---|---|---|---|
welcomeMessage |
string | Açılışta ziyaretçiye gösterilen ilk mesaj | |
queryRefinementEnabled |
boolean | Doğruysa, RAG getirme işleminden önce ziyaretçinin sorusunu netleştirir | |
conversationContinuityEnabled |
boolean | Doğruysa, geri dönen ziyaretçiler son görüşmelerine devam eder | |
conversationRatingEnabled |
boolean | Doğruysa, olumlu/olumsuz görüşme değerlendirme kontrollerini gösterir | |
positiveRatingTooltip |
string | Olumlu değerlendirme düğmesindeki araç ipucu | |
negativeRatingTooltip |
string | Olumsuz değerlendirme düğmesindeki araç ipucu | |
suggestedQuestions |
string | Satır sonuyla ayrılmış önerilen sorular / sohbet başlatıcılar | |
dynamicSuggestedFollowups |
boolean | Doğruysa, AI her yanıttan sonra takip önerileri sunar | |
positiveRatingMessage |
string | Olumlu geri bildirimden sonra gösterilen mesaj | |
negativeRatingMessage |
string | Olumsuz geri bildirimden sonra gösterilen mesaj | |
hideSuggestedQuestionsAfterFirstUse |
boolean | İlk kullanımdan sonra statik önerileri gizler | |
dynamicFollowupsAutoIcons |
boolean | Doğruysa, AI dinamik takip önerileri için otomatik olarak emoji simgeleri seçer |
§ chatMemory
| Alan | Tür | Kısıtlama | Açıklama |
|---|---|---|---|
enabled |
boolean | Sohbet hafızası özelliği için ana açma/kapatma anahtarı | |
summaryConversationsEnabled |
boolean | Görüşme başına özetleri kaydeder | |
conversationSummaryPrompt |
string | Her görüşmeyi özetlemek için kullanılan özel prompt | |
conversationSummaryPromptType |
string (enum) | ∈ {DEFAULT, CUSTOM} |
Varsayılan mı yoksa özel özet promptunun mu kullanılacağı |
clientSummaryPrompt |
string | Müşteriyi görüşmeler genelinde özetlemek için kullanılan özel prompt | |
clientSummaryPromptType |
string (enum) | ∈ {DEFAULT, CUSTOM} |
Varsayılan ile özel müşteri profili promptu karşılaştırması |
summariesToKnowledgeRatio |
int | 10-90 (Arayüz adımı 10) |
8k üzerindeki bağlamlarda özetlere ayrılan mevcut bilgi/hafıza bütçesinin yüzdesi (%) |
§ appearance
| Alan | Tür | Kısıtlama | Açıklama |
|---|---|---|---|
launcherLabelLine1 |
string | maks 60 | Başlatıcı metninin ilk satırı |
launcherLabelLine2 |
string | maks 60 | Başlatıcı metninin ikinci satırı |
launcherTextColor |
string | Başlatıcı metin rengi | |
launcherDismissEnabled |
boolean | Başlatıcının kapatılmasına izin verir | |
widgetFontFamily |
string | inter, system, nunito, lato, montserrat, poppins, source-serif, jetbrains-mono |
Widget yazı tipi ailesi |
chatDrawerEnabled |
boolean | Çekmece (drawer) görünümünü etkinleştirir | |
launcherColor |
string (hex) | Başlatıcı (sohbet simgesi) arka plan rengi | |
headerColor |
string (hex) | Sohbet başlığı arka plan rengi | |
titleColor |
string (hex) | Sohbet üst bilgisi başlık rengi | |
subtitleColor |
string (hex) | Sohbet üst bilgisi alt başlık rengi | |
clientMessageBubbleColor |
string (hex) | Ziyaretçi mesaj balonu rengi | |
clientMessageTextColor |
string (hex) | Ziyaretçi mesaj metni rengi | |
responseMessageBubbleColor |
string (hex) | Bot yanıt balonu rengi | |
responseMessageTextColor |
string (hex) | Bot yanıt metni rengi | |
chatSubheader |
string | Sohbet başlığının altında gösterilen slogan | |
senderPlaceholder |
string | Mesaj giriş alanındaki yer tutucu metin | |
resetConversationTooltip |
string | "Sohbeti sıfırla" düğmesindeki araç ipucu | |
chatAlignment |
string (enum) | ∈ {left, right} |
Sohbetin ekranın hangi tarafına sabitleneceği |
launcherBottomMargin |
int | 0-500 |
Başlatıcının alt kenardan uzaklığı (px) |
launcherSideMargin |
int | 0-500 |
Başlatıcının yan kenardan uzaklığı (px) |
displayShadow |
boolean | Widget altında alt gölge | |
customCss |
string | Widget iframe'ine eklenen ham CSS | |
chatMessageLinkTarget |
string (enum) | ∈ {_blank, _self} |
Bot mesajlarındaki bağlantıların nasıl açılacağı |
minimizedDisplayMode |
string (enum) | ∈ {icon, minified, pill} |
Simge durumuna küçültülmüş durum: başlatıcı simgesi, kompakt gönderici çubuğu veya hap (pill) |
chatDesktopWidthPx |
int | Masaüstü widget genişliği | |
chatDesktopHeightPx |
int | Masaüstü widget yüksekliği | |
chatMobileSizePercent |
int | Görünüm alanı yüzdesi (%) olarak mobil widget boyutu | |
messageFontSize |
int | Mesaj metni yazı tipi boyutu (px) | |
showChatbotBubblesDesktop |
boolean | Masaüstünde kayan ön izleme balonlarını gösterir | |
showChatbotBubblesMobile |
boolean | Mobilde kayan ön izleme balonlarını gösterir | |
chatbotBubblesDelaySeconds |
int | Ön izleme balonları görünmeden önceki gecikme (saniye) | |
launcherIconFullSize |
boolean | Özel başlatıcı simgesini içe gömülü yerine kenardan kenara işler | |
welcomeScreenEnabled |
boolean | Doğrudan sohbete geçmek yerine Welcome Screen (Karşılama Ekranı) gösterir | |
welcomeScreenQuestionsLabel |
string | Karşılama ekranında önerilen soruların üzerindeki etiket | |
welcomeScreenHideHumanContactForm |
boolean | Welcome Screen gösterilirken üst bilgideki insan iletişim formu eylemini gizler. Ziyaretçinin ilk mesajından sonra yeniden görünür. 2026-09-02 tarihinden önce oluşturulan botlar varsayılan olarak true değerini alır |
|
welcomeScreenHideLiveChat |
boolean | Welcome Screen gösterilirken üst bilgideki canlı sohbet eylemini gizler. Ziyaretçinin ilk mesajından sonra yeniden görünür. 2026-09-02 tarihinden önce oluşturulan botlar varsayılan olarak true değerini alır |
|
headerActionsLayout |
string | ICONS veya DROPDOWN |
Canlı sohbet ve insan iletişim formunun sohbet üst bilgisinde nasıl sunulacağı: ICONS (her biri için ayrı bir simge) veya DROPDOWN (üst bilgi menüsünde gruplandırılmış). 2026-09-02 tarihinden önce oluşturulan botlar varsayılan olarak ICONS değerini alır |
stackSuggestedQuestions |
boolean | Önerilen soruları dikey olarak sıralar (yan yana yerine) | |
suggestedQuestionsFontSize |
int | Önerilen soru butonlarının yazı tipi boyutu (px) | |
suggestedQuestionsTextColor |
string (hex) | Önerilen soru butonu metin rengi | |
suggestedQuestionsBackgroundColor |
string (hex) | Önerilen soru butonu arka plan rengi | |
autoOpenChat |
boolean | Sohbeti masaüstünde otomatik olarak açar | |
autoOpenChatOnMobiles |
boolean | Sohbeti mobilde otomatik olarak açar | |
autoOpenChatDelay |
boolean | Otomatik açılmadan önce gecikme kullanır | |
autoOpenChatDelaySeconds |
int | Otomatik açılma gecikmesi (saniye) | |
simulateHumanTyping |
boolean | Bot yanıtını yazma animasyonuyla balonlara böler | |
simulateHumanTypingDelay |
int | 0-200 |
Balon mesajları arasındaki gecikme (saniye) |
footerMarkdown |
string | maks 255 | Sohbetin altında gösterilen özel alt bilgi markdown'ı |
avatarUrl |
string | salt okunur | Avatarın tam nitelikli genel URL'si; değiştirmek için multipart avatar parçası üzerinden yükleyin |
POST/PATCH üzerinde multipart: avatar (dosya parçası). GET / yanıt gövdeleri dosya içeriğini atlar - aktarım sırasında yalnızca URL yer alır.
§ humanSupport
| Alan | Tür | Kısıtlama | Açıklama |
|---|---|---|---|
enabled |
boolean | Human Support (İnsan Desteği) akışı açma/kapatma anahtarı | |
email |
string | enabled=true olduğunda zorunlu (oluşturmada katı) |
İnsan desteği e-postalarını alan adres |
dialogMessage |
string | Formun üzerinde gösterilen teşvik mesajı | |
thankYouMessage |
string | Gönderimden sonra gösterilen onay mesajı | |
emailMessageSubjectTemplate |
string | Temsilciye gönderilen e-posta için konu şablonu | |
emailMessageContentTemplate |
string | Temsilciye gönderilen e-posta için gövde şablonu | |
emailPlaceholder |
string | E-posta giriş alanındaki yer tutucu | |
messagePlaceholder |
string | Mesaj metin alanındaki yer tutucu | |
emailWithConversationContent |
boolean | Doğruysa, e-posta gövdesine görüşme dökümünü dahil eder | |
customFormId |
long | mevcut bir özel formun kimliği | Yerleşik iletişim formunu özel bir formla değiştirir. Oluşturma sırasında atlanırsa yerleşik form kullanılır; PATCH işleminde null, mevcut seçimi değiştirmeden bırakır |
customFormMapping |
string | JSON kodlu dize | Özel form alanlarını insan desteği e-posta alanlarıyla eşler |
requirePolicyAccept burada değil, consent.humanSupportRequirePolicyAccept altındadır.
§ leadCollection
| Alan | Tür | Kısıtlama | Açıklama |
|---|---|---|---|
enabled |
boolean | Müşteri adayı (lead) formu açma/kapatma anahtarı | |
nameEnabled |
boolean | İsim toplar | |
nameLabel |
string | İsim giriş alanındaki etiket | |
emailEnabled |
boolean | E-posta toplar | |
emailLabel |
string | enabled=true VE emailEnabled=true olduğunda zorunlu (oluşturmada katı) |
E-posta giriş alanındaki etiket |
phoneEnabled |
boolean | Telefon toplar | |
phoneLabel |
string | enabled=true VE phoneEnabled=true olduğunda zorunlu (oluşturmada katı) |
Telefon giriş alanındaki etiket |
leaveDetailsMessage |
string | enabled=true olduğunda zorunlu (oluşturmada katı) |
Ziyaretçiyi iletişim bilgilerini bırakmaya teşvik eden mesaj |
thankYouMessage |
string | enabled=true olduğunda zorunlu (oluşturmada katı) |
Gönderimden sonra gösterilen onay mesajı |
requireBeforeNewConversation |
boolean | true ise sohbet başlamadan önce form gönderilmelidir; false ise formun ne zaman gösterileceğine AI karar verir |
|
emailNotificationEnabled |
boolean | Her müşteri adayı toplandığında hesap sahibine e-posta gönderir | |
emailNotificationAddress |
string | Bildirim alıcısı (varsayılan olarak hesap e-postasıdır) | |
emailWithConversationContent |
boolean | Doğruysa, bildirime görüşme dökümünü dahil eder |
| customFormId | long | mevcut bir özel formun kimliği | Yerleşik müşteri adayı formunu özel bir formla değiştirir. Oluşturma sırasında atlanırsa yerleşik form kullanılır; PATCH işleminde null, mevcut seçimi değiştirmeden bırakır |
| customFormMapping | string | JSON kodlu dize | Özel form alanlarını isim / e-posta / telefon ile eşler |
Alanlar arası oluşturmada katı kuralı: enabled=true olması durumunda emailEnabled veya phoneEnabled seçeneklerinden en az biri gereklidir. requirePolicyAccept burada değil, consent.leadCollectionRequirePolicyAccept altındadır.
§ liveChat
| Alan | Tür | Kısıtlama | Açıklama |
|---|---|---|---|
enabled |
boolean | Live Chat (Canlı Sohbet) özellik anahtarı | |
infoMessage |
string | Aktarım öncesi açıklama mesajı | |
startMessage |
string | Canlı oturum başladığında gösterilen mesaj | |
endMessage |
string | Canlı oturum sona erdiğinde gösterilen mesaj | |
nameLabel |
string | Canlı sohbet ön formundaki isim giriş alanı etiketi | |
emailLabel |
string | Canlı sohbet ön formundaki e-posta giriş alanı etiketi | |
schedule |
string | JSON kodlu dize (haftanın günü anahtarları + from/to + timezone) |
Canlı sohbet çalışma takvimi - tam yapı için bkz. "Yapılandırılmış alanlar ve aralıklar" |
outOfHoursMessage |
string | Çalışma saatleri dışında gösterilen mesaj | |
closeModalMessage |
string | "Canlı sohbet kapatılsın mı?" modalının başlığı | |
closeModalConfirmLabel |
string | Kapatma modalındaki onay düğmesi etiketi | |
closeModalCancelLabel |
string | Kapatma modalındaki iptal düğmesi etiketi | |
closeModalTooltipText |
string | Sohbeti kapatma ögesindeki araç ipucu | |
operatorHasJoinedLabel |
string | Bir temsilci katıldığında gösterilen etiket | |
operatorDidNotJoinInTimeLabel |
string | Zaman aşımı süresi içinde hiçbir temsilci katılmadığında gösterilen etiket | |
waitingForOperatorToJoinLabel |
string | Temsilci beklenirken gösterilen etiket | |
waitingForOperatorSeconds |
int | Bir temsilcinin yanıt vermesi için zaman aşımı süresi (saniye) | |
redirectToHumanSupportForm |
boolean | Doğruysa, hiçbir temsilci yanıt vermediğinde Human Support formuna yönlendirir | |
requireAdminOnline |
boolean | Durum ayarlarına göre uygun bir temsilci bulunmasını zorunlu kılar | |
presenceMode |
string | Durum modu; arayüzde yapılandırılmış bir bottan alınan değeri kullanın | |
hideHumanSupportWhenLiveChatAvailable |
boolean | Canlı sohbet kullanılabilir olduğunda iletişim formunu gizler | |
missedEmailEnabled |
boolean | varsayılan true |
Bir canlı sohbet isteği yanıtsız kaldığında bot sahibine e-posta gönderir. Eski botlarda ayarlanmamıştır, bu da etkin olarak yorumlanır |
requirePolicyAccept burada değil, consent.liveChatRequirePolicyAccept altındadır.
§ consent
| Alan | Tür | Kısıtlama | Açıklama |
|---|---|---|---|
newConversationRequirePolicyAccept |
boolean | Yeni bir sohbete başlamadan önce gizlilik politikası onayını zorunlu kılar | |
humanSupportRequirePolicyAccept |
boolean | İnsan desteği formunu göndermeden önce gizlilik politikası onayını zorunlu kılar | |
leadCollectionRequirePolicyAccept |
boolean | Müşteri adayı toplama formunu göndermeden önce gizlilik politikası onayını zorunlu kılar | |
liveChatRequirePolicyAccept |
boolean | Canlı sohbet oturumu başlatmadan önce gizlilik politikası onayını zorunlu kılar | |
newConversationConsentDescription |
string | Sohbet başlangıcındaki onay ekranı için giriş metni | |
privacyPolicyConsentCheckboxLabel |
string | Onay onay kutusunun yanındaki etiket (genellikle gizlilik politikasına bir bağlantı içerir) |
§ whiteLabel
| Alan | Tür | Kısıtlama | Açıklama |
|---|---|---|---|
hideRoboAssistLogo |
boolean | White Label özelliği; hesap limitlerine tabidir | Alt bilgideki varsayılan ChatLab logosunu gizler |
whitelabelLogoLink |
string | White Label özelliği; hesap limitlerine tabidir | Özel alt bilgi logosunun yönlendirdiği URL |
assignToCustomDomain |
boolean | CUSTOM_DOMAIN özelliğiyle sınırlıdır |
Sohbeti yapılandırılan özel etki alanında barındırır |
whitelabelLogoUrl |
string | salt okunur | White Label logosunun tam nitelikli genel URL'si; değiştirmek için multipart whitelabel_logo parçası üzerinden yükleyin |
POST/PATCH üzerinde multipart: whitelabel_logo (dosya parçası). GET / yanıt gövdeleri dosya içeriğini atlar - aktarım sırasında yalnızca URL yer alır.
§ security
| Alan | Tür | Kısıtlama | Açıklama |
|---|---|---|---|
allowedDomains |
string | Widget'ın yerleştirilmesine izin verilen etki alanlarının virgülle ayrılmış listesi (boş = beyaz liste yok) | |
spamFilterEnabled |
boolean | Gelen mesajlarda bot başına spam filtresini etkinleştirir | |
countryFilterMode |
string | BLACKLIST veya WHITELIST |
Ülke listelerinin nasıl yorumlanacağı. Listelerin kendisi yalnızca yöneticilere özeldir |
talkMessagesRateLimit |
int | >= 0; 0 devre dışı bırakır |
İstek sınırı penceresinde izin verilen maksimum kullanıcı mesajı sayısı |
talkMessagesRateLimitDurationSeconds |
int | >= 0 |
İstek sınırı penceresi süresi (saniye) |
talkMessagesRateLimitHitMessage |
string | İstek sınırına ulaşıldığında ziyaretçiye gösterilen mesaj |
§ voice
| Alan | Tür | Kısıtlama | Açıklama |
|---|---|---|---|
inputEnabled |
boolean | Ziyaretçinin mesajları dikte etmesine izin verir (sesten metne) | |
conversationEnabled |
boolean | planda ses özelliğinin bulunmasını gerektirir | Tam sesli görüşmeleri etkinleştirir |
voiceId |
string | sağlayıcıya özel ses kimliği (örn. alloy) |
Hangi sentetik sesin konuşacağı |
model |
string | örn. GPT-REALTIME-MINI, GEMINI-LIVE, ELEVENLABS-* |
Ses modeli. Dakika başına ücretlendirilir, ücretler modele göre değişir |
turnDetection |
string | sağlayıcıya özel | Karşılıklı konuşma (turn-taking) modu |
audioPrompt |
string | Yalnızca sesli bölümler için kullanılan ek sistem promptu | |
welcomeMessage |
string | Sesli açılış cümlesi | |
language |
string | dil kodu | Birincil ses dili |
additionalLanguages |
string | virgülle ayrılmış dil kodları | Sesli asistanın kabul ettiği ek diller |
maxDurationSeconds |
int | Tek bir sesli görüşme için kesin üst sınır | |
maxDurationMessage |
string | Üst sınıra ulaşıldığında gösterilen mesaj |
§ multilingual
| Alan | Tür | Kısıtlama | Açıklama |
|---|---|---|---|
enabled |
boolean | Çok dilli mod anahtarı | |
mode |
string | AUTODETECT veya FIXED_LIST |
Botun yanıt dilini nasıl seçeceği |
baseLanguage |
string | dil kodu | Botun kendi metinlerinin yazıldığı dil |
languages |
string | virgülle ayrılmış dil kodları | Ziyaretçiye sunulan diller |
knowledgeLanguageMode |
string | NONE, MAIN, veya DYNAMIC |
Diğer dillerdeki bilgi tabanı içeriğinin nasıl ele alınacağı |
knowledgeLanguageFallback |
string | dil kodu | Eşleşme bulunamadığında kullanılan dil |
§ advanced
| Alan | Tür | Kısıtlama | Açıklama |
|---|---|---|---|
model |
string | hesap limitlerine tabidir; yukarıdaki "AI metin modelleri" bölümüne bakın | LLM tanımlayıcısı (örn. 5.6-LUNA) |
temperature |
decimal | 0.0-1.0 |
Örnekleme sıcaklığı (arayüzdeki kaydırıcıyla eşleşir) |
chatContextSize |
int | ∈ {8000, 16000, 32000}; sessizce hesap limitinize kırpılır |
Talimatlar, geçmiş ve bilgi tabanı dahil yapılandırılmış bağlam bütçesi |
botMessagesLimit |
long | 0 veya 1000'in katı (örn. 1000, 2000, 10000) |
Aylık bot mesaj kredisi üst sınırı (0 = ek bot sınırı yok; hesap bütçesi geçerliliğini korur) |
internalLocale |
string | ll_CC biçiminde yerel ayar kodu |
Widget arayüz etiketleri için yerel ayar (role.language alanından farklıdır) |
productsViewEnabled |
boolean | Doğruysa, e-ticaret Offer Cards (Teklif Kartları) ögelerini sohbet içinde gösterir | |
includeProductsInKnowledgeBase |
boolean | Doğruysa, ürün kataloğunu bilgi tabanının bir parçası olarak dizine ekler |
API kapsamı dışındakiler
Yönetici kullanıcı arayüzü, Management API'nin bu sürümünde kasıtlı olarak kullanıma sunulmayan birkaç alanı barındırır:
- Eğitim ve silme - bu uç noktalar tüm botları listelemez, eğitim veri kümelerini yönetmez veya botları silmez. Bu iş akışları için uygulamayı kullanın.
- Flow sekmesi - görsel Conversation Flow (Görüşme Akışı) düzenleyicisi (aşamalar ve geçişler). Management API aracılığıyla sunulmaz.
- Actions sekmesi - yönetilen e-ticaret / rezervasyon entegrasyonları, AI Search ve özel API işlevleri. Araç çağırma hiçbir zaman Management API'nin bir parçası olmamıştır.
- Özel form oluşturucunun kendisi - özel formlar oluşturma ve düzenleme özelliği sunulmaz. Ancak mevcut bir formu
leadCollection.customFormIdvehumanSupport.customFormIdaracılığıyla bir bota bağlayabilirsiniz. - Özel sohbeti aç / kapat simgeleri -
customLauncherIconVisible,openChatIcon,closeChatIcon. API yalnızca anaavatarvewhitelabel_logomultipart parçalarını sunar. - IP ve ülke listeleri - kayıtların kendisi yalnızca yöneticilere özeldir. Yalnızca yorumlama modu
security.countryFilterModearacılığıyla kullanıma sunulur.
Uç noktalar
POST /v1/management/bots
Yeni bir bot oluşturun. Eşdeğer iki Content-Type kabul edilir; hangisi daha kolaysa onu seçin.
Mod A - düz JSON (aynı istek içinde avatar / logo yüklemeniz gerekmediğinde önerilir):
Content-Type: application/json- İstek gövdesi doğrudan bot yapılandırma JSON'ıdır (
datasarmalayıcısı yoktur) - Dosyalar (avatar / logo) daha sonra Mod B kullanılarak ikinci bir
PATCHile yüklenebilir
Mod B - multipart/form-data (aynı istek içinde dosya yüklerken kullanın):
Content-Type: multipart/form-data; boundary=...dataJSON parçası (zorunlu,Content-Type: application/json) - yukarıda açıklanan iç içe yapıda bot yapılandırmasıavatardosya parçası (isteğe bağlı) - bot avatar görseliwhitelabel_logodosya parçası (isteğe bağlı) - White Label logosu (yalnızca hesabınız White Label özelliğini içeriyorsa geçerlidir)
JSON içinde yalnızca name zorunludur; diğer tüm alanlar yönetici kullanıcı arayüzü sihirbazının ayarlayacağı varsayılan değerleri alır.
Örnek istek gövdesi
Bu, her bölümün doldurulduğu azami data JSON'ıdır. Yalnızca ilgilendiğiniz bölümleri gönderin; geri kalan her şey varsayılan değerleri alır.
{
"name": "Helpdesk Bot",
"role": {
"rawPrompt": "You are a friendly support assistant for Acme Inc.",
"role": "CUSTOMER_SUPPORT",
"language": "English",
"responseLength": "Normal",
"websiteAddress": "https://acme.com",
"companyDescription": "Acme sells industrial widgets."
},
"conversation": {
"welcomeMessage": "Hi! How can I help today?",
"queryRefinementEnabled": true,
"conversationContinuityEnabled": true,
"conversationRatingEnabled": true,
"positiveRatingTooltip": "Helpful",
"negativeRatingTooltip": "Not helpful",
"suggestedQuestions": "What are your hours?\nHow do I cancel?\nWhere is my order?",
"dynamicSuggestedFollowups": true,
"dynamicFollowupsAutoIcons": true
},
"chatMemory": {
"enabled": true,
"summaryConversationsEnabled": true,
"conversationSummaryPrompt": "Summarize this conversation in 3 sentences.",
"clientSummaryPrompt": "Summarize what we know about this customer.",
"clientSummaryPromptType": "DEFAULT",
"conversationSummaryPromptType": "DEFAULT",
"summariesToKnowledgeRatio": 50
},
"appearance": {
"launcherColor": "#1A73E8",
"headerColor": "#1A73E8",
"titleColor": "#FFFFFF",
"subtitleColor": "#FFFFFF",
"clientMessageBubbleColor": "#000000",
"clientMessageTextColor": "#FFFFFF",
"responseMessageBubbleColor": "#F4F4F4",
"responseMessageTextColor": "#000000",
"chatSubheader": "AI support assistant",
"senderPlaceholder": "Type a message...",
"resetConversationTooltip": "Restart conversation",
"chatAlignment": "right",
"launcherBottomMargin": 20,
"launcherSideMargin": 20,
"displayShadow": true,
"customCss": ".rcw-conversation-container { border-radius: 16px; }",
"chatMessageLinkTarget": "_blank",
"minimizedDisplayMode": "icon",
"chatDesktopWidthPx": 400,
"chatDesktopHeightPx": 600,
"chatMobileSizePercent": 100,
"messageFontSize": 14,
"showChatbotBubblesDesktop": true,
"showChatbotBubblesMobile": false,
"chatbotBubblesDelaySeconds": 5,
"welcomeScreenEnabled": false,
"welcomeScreenQuestionsLabel": "Quick start",
"welcomeScreenHideHumanContactForm": false,
"welcomeScreenHideLiveChat": false,
"headerActionsLayout": "DROPDOWN",
"stackSuggestedQuestions": false,
"suggestedQuestionsFontSize": 14,
"suggestedQuestionsTextColor": "#000000",
"suggestedQuestionsBackgroundColor": "#F4F4F4",
"autoOpenChat": false,
"autoOpenChatOnMobiles": false,
"autoOpenChatDelay": false,
"autoOpenChatDelaySeconds": 5,
"simulateHumanTyping": true,
"simulateHumanTypingDelay": 5,
"footerMarkdown": "Powered by Acme"
},
"humanSupport": {
"enabled": true,
"email": "support@acme.com",
"dialogMessage": "Leave us a message and we will get back to you.",
"thankYouMessage": "Thanks - we received your message.",
"emailMessageSubjectTemplate": "[Acme support] New message from {customerName}",
"emailMessageContentTemplate": "{message}\n\n - \n{conversationTranscript}",
"emailPlaceholder": "your@email.com",
"messagePlaceholder": "How can we help?",
"emailWithConversationContent": true
},
"leadCollection": {
"enabled": true,
"nameEnabled": true,
"nameLabel": "Your name",
"emailEnabled": true,
"emailLabel": "Email",
"phoneEnabled": false,
"phoneLabel": "Phone",
"leaveDetailsMessage": "Please leave your details and we will get in touch.",
"thankYouMessage": "Thanks - we will be in touch shortly.",
"requireBeforeNewConversation": false,
"emailNotificationEnabled": true,
"emailNotificationAddress": "leads@acme.com",
"emailWithConversationContent": true
},
"liveChat": {
"enabled": false,
"infoMessage": "Connecting you with a human agent...",
"startMessage": "You are now chatting with our team.",
"endMessage": "Live chat has ended.",
"nameLabel": "Your name",
"emailLabel": "Email",
"schedule": "{\"monday\":{\"enabled\":true,\"from\":\"9:00\",\"to\":\"17:00\"},\"tuesday\":{\"enabled\":true,\"from\":\"9:00\",\"to\":\"17:00\"},\"wednesday\":{\"enabled\":true,\"from\":\"9:00\",\"to\":\"17:00\"},\"thursday\":{\"enabled\":true,\"from\":\"9:00\",\"to\":\"17:00\"},\"friday\":{\"enabled\":true,\"from\":\"9:00\",\"to\":\"17:00\"},\"saturday\":{\"enabled\":false,\"from\":\"9:00\",\"to\":\"17:00\"},\"sunday\":{\"enabled\":false,\"from\":\"9:00\",\"to\":\"17:00\"},\"timezone\":\"Europe/Warsaw\"}",
"outOfHoursMessage": "We are currently offline.",
"closeModalMessage": "End the live chat session?",
"closeModalConfirmLabel": "Yes, end",
"closeModalCancelLabel": "Cancel",
"closeModalTooltipText": "End live chat",
"operatorHasJoinedLabel": "An agent has joined.",
"operatorDidNotJoinInTimeLabel": "No agent available right now.",
"waitingForOperatorToJoinLabel": "Waiting for an agent...",
"waitingForOperatorSeconds": 60,
"redirectToHumanSupportForm": true
},
"consent": {
"newConversationRequirePolicyAccept": false,
"humanSupportRequirePolicyAccept": false,
"leadCollectionRequirePolicyAccept": true,
"liveChatRequirePolicyAccept": false,
"newConversationConsentDescription": "By starting a conversation you agree to our terms.",
"privacyPolicyConsentCheckboxLabel": "I have read and accepted the privacy policy."
},
"whiteLabel": {
"hideRoboAssistLogo": false,
"whitelabelLogoLink": "https://acme.com",
"assignToCustomDomain": false
},
"security": {
"allowedDomains": "acme.com,support.acme.com",
"spamFilterEnabled": true,
"talkMessagesRateLimit": 30,
"talkMessagesRateLimitDurationSeconds": 60,
"talkMessagesRateLimitHitMessage": "Please slow down."
},
"advanced": {
"model": "5.6-LUNA",
"temperature": 0.4,
"chatContextSize": 16000,
"botMessagesLimit": 1000,
"internalLocale": "en_US",
"productsViewEnabled": false
}
}
Kendi hata mesajlarına sahip doğrulama kuralları:
name- zorunlu, en fazla 150 karakteradvanced.temperature-0.0ile1.0arasındachatMemory.summariesToKnowledgeRatio-10ile90arasında tam sayı (yüzde,10adımlı)appearance.launcherBottomMargin,appearance.launcherSideMargin-0ile500arasındaappearance.footerMarkdown- en fazla 255 karakterhumanSupport.enabled=trueiçinhumanSupport.emaildeğerinin tanımlanmış olması gerekirleadCollection.enabled=trueiçinleadCollection.emailEnabledveyaleadCollection.phoneEnableddeğerlerinden en az birinin true olması gerekir; hangi kanal açıksa etiketiyle birlikteleaveDetailsMessagevethankYouMessagealanları da zorunluduradvanced.chatContextSize, hesabın desteklediği maksimum bağlam boyutuna göre sınırlandırılır. Diğer sayısal alanların otomatik olarak sınırlandırıldığını varsaymayın.
Sunucuda değeri null olan alanlar JSON gövdesine dahil edilmez - ağ üzerinden yalnızca null olmayan değerlere sahip alanlar taşınır.
Örnek yanıt gövdesi (201)
İstekle aynı yapıya ek olarak, en üst düzeyde salt okunur meta bloğu ve tek seferlik apiKey bulunur. İlgili multipart parçaları yüklendiğinde salt okunur dosya URL'leri (appearance.avatarUrl, whiteLabel.whitelabelLogoUrl) sunucu tarafından doldurulur.
{
"name": "Helpdesk Bot",
"role": {
"rawPrompt": "You are a friendly support assistant for Acme Inc.",
"role": "CUSTOMER_SUPPORT",
"language": "English",
"responseLength": "Normal",
"websiteAddress": "https://acme.com",
"companyDescription": "Acme sells industrial widgets."
},
"conversation": {
"welcomeMessage": "Hi! How can I help today?",
"queryRefinementEnabled": true,
"conversationContinuityEnabled": true,
"conversationRatingEnabled": true,
"positiveRatingTooltip": "Helpful",
"negativeRatingTooltip": "Not helpful",
"suggestedQuestions": "What are your hours?\nHow do I cancel?\nWhere is my order?",
"dynamicSuggestedFollowups": true,
"dynamicFollowupsAutoIcons": true
},
"chatMemory": {
"enabled": true,
"summaryConversationsEnabled": true,
"conversationSummaryPrompt": "Summarize this conversation in 3 sentences.",
"clientSummaryPrompt": "Summarize what we know about this customer.",
"clientSummaryPromptType": "DEFAULT",
"conversationSummaryPromptType": "DEFAULT",
"summariesToKnowledgeRatio": 50
},
"appearance": {
"launcherColor": "#1A73E8",
"headerColor": "#1A73E8",
"titleColor": "#FFFFFF",
"subtitleColor": "#FFFFFF",
"clientMessageBubbleColor": "#000000",
"clientMessageTextColor": "#FFFFFF",
"responseMessageBubbleColor": "#F4F4F4",
"responseMessageTextColor": "#000000",
"chatSubheader": "AI support assistant",
"senderPlaceholder": "Type a message...",
"resetConversationTooltip": "Restart conversation",
"chatAlignment": "right",
"launcherBottomMargin": 20,
"launcherSideMargin": 20,
"displayShadow": true,
"customCss": ".rcw-conversation-container { border-radius: 16px; }",
"chatMessageLinkTarget": "_blank",
"minimizedDisplayMode": "icon",
"chatDesktopWidthPx": 400,
"chatDesktopHeightPx": 600,
"chatMobileSizePercent": 100,
"messageFontSize": 14,
"showChatbotBubblesDesktop": true,
"showChatbotBubblesMobile": false,
"chatbotBubblesDelaySeconds": 5,
"welcomeScreenEnabled": false,
"welcomeScreenQuestionsLabel": "Quick start",
"welcomeScreenHideHumanContactForm": false,
"welcomeScreenHideLiveChat": false,
"headerActionsLayout": "DROPDOWN",
"stackSuggestedQuestions": false,
"suggestedQuestionsFontSize": 14,
"suggestedQuestionsTextColor": "#000000",
"suggestedQuestionsBackgroundColor": "#F4F4F4",
"autoOpenChat": false,
"autoOpenChatOnMobiles": false,
"autoOpenChatDelay": false,
"autoOpenChatDelaySeconds": 5,
"simulateHumanTyping": true,
"simulateHumanTypingDelay": 5,
"footerMarkdown": "Powered by Acme",
"avatarUrl": "https://api.chatlab.com/aichat/content/avatar_a8f3b2c1_2026060110.png"
},
"humanSupport": {
"enabled": true,
"email": "support@acme.com",
"dialogMessage": "Leave us a message and we will get back to you.",
"thankYouMessage": "Thanks - we received your message.",
"emailMessageSubjectTemplate": "[Acme support] New message from {customerName}",
"emailMessageContentTemplate": "{message}\n\n - \n{conversationTranscript}",
"emailPlaceholder": "your@email.com",
"messagePlaceholder": "How can we help?",
"emailWithConversationContent": true
},
"leadCollection": {
"enabled": true,
"nameEnabled": true,
"nameLabel": "Your name",
"emailEnabled": true,
"emailLabel": "Email",
"phoneEnabled": false,
"phoneLabel": "Phone",
"leaveDetailsMessage": "Please leave your details and we will get in touch.",
"thankYouMessage": "Thanks - we will be in touch shortly.",
"requireBeforeNewConversation": false,
"emailNotificationEnabled": true,
"emailNotificationAddress": "leads@acme.com",
"emailWithConversationContent": true
},
"liveChat": {
"enabled": false,
"infoMessage": "Connecting you with a human agent...",
"startMessage": "You are now chatting with our team.",
"endMessage": "Live chat has ended.",
"nameLabel": "Your name",
"emailLabel": "Email",
"schedule": "{\"monday\":{\"enabled\":true,\"from\":\"9:00\",\"to\":\"17:00\"},\"tuesday\":{\"enabled\":true,\"from\":\"9:00\",\"to\":\"17:00\"},\"wednesday\":{\"enabled\":true,\"from\":\"9:00\",\"to\":\"17:00\"},\"thursday\":{\"enabled\":true,\"from\":\"9:00\",\"to\":\"17:00\"},\"friday\":{\"enabled\":true,\"from\":\"9:00\",\"to\":\"17:00\"},\"saturday\":{\"enabled\":false,\"from\":\"9:00\",\"to\":\"17:00\"},\"sunday\":{\"enabled\":false,\"from\":\"9:00\",\"to\":\"17:00\"},\"timezone\":\"Europe/Warsaw\"}",
"outOfHoursMessage": "We are currently offline.",
"closeModalMessage": "End the live chat session?",
"closeModalConfirmLabel": "Yes, end",
"closeModalCancelLabel": "Cancel",
"closeModalTooltipText": "End live chat",
"operatorHasJoinedLabel": "An agent has joined.",
"operatorDidNotJoinInTimeLabel": "No agent available right now.",
"waitingForOperatorToJoinLabel": "Waiting for an agent...",
"waitingForOperatorSeconds": 60,
"redirectToHumanSupportForm": true
},
"consent": {
"newConversationRequirePolicyAccept": false,
"humanSupportRequirePolicyAccept": false,
"leadCollectionRequirePolicyAccept": true,
"liveChatRequirePolicyAccept": false,
"newConversationConsentDescription": "By starting a conversation you agree to our terms.",
"privacyPolicyConsentCheckboxLabel": "I have read and accepted the privacy policy."
},
"whiteLabel": {
"hideRoboAssistLogo": false,
"whitelabelLogoLink": "https://acme.com",
"assignToCustomDomain": false,
"whitelabelLogoUrl": "https://api.chatlab.com/aichat/content/custom_logo_4287_2026060110.png"
},
"security": {
"allowedDomains": "acme.com,support.acme.com",
"spamFilterEnabled": true,
"talkMessagesRateLimit": 30,
"talkMessagesRateLimitDurationSeconds": 60,
"talkMessagesRateLimitHitMessage": "Please slow down."
},
"advanced": {
"model": "5.6-LUNA",
"temperature": 0.4,
"chatContextSize": 16000,
"botMessagesLimit": 1000,
"internalLocale": "en_US",
"productsViewEnabled": false
},
"meta": {
"id": 4287,
"createdAt": "2026-06-01T10:11:02Z",
"updatedAt": "2026-06-01T10:11:02Z"
},
"apiKey": "ck_freshly_minted_bot_talk_key_here"
}
apiKey alanı yalnızca oluşturma sırasında görünür; bu alan yeni bota bağlı, yeni oluşturulmuş Bot Talk anahtarıdır. Düz metin bir kez gösterilir ve daha sonra API'den tekrar alınamaz; bu anahtarı kendi tarafınızda hemen saklayın.
Location yanıt başlığı, yeni botun URL'sini taşır (/v1/management/bots/{id}).
Curl örnekleri
Mod A - düz JSON (en basiti):
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!"}}'
Mod B - avatar içeren multipart:
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}
Sahip olduğunuz bir botun mevcut yapılandırmasını döndürün.
Curl örneği
curl https://api.chatlab.com/aichat/v1/management/bots/4287 \
-H "Authorization: Bearer mk_..."
Örnek yanıt gövdesi (200)
Tek seferlik apiKey hariç, POST yanıtıyla aynı yapıdadır. meta bloğu dahildir. Bot mevcut değilse veya hesabınıza ait değilse 404 not_found_error döndürür.
Mevcut avatar ve White Label logosu, bu isteğe yanıt veren şema + ana makine + bağlam yolu kökünde tam nitelikli salt okunur URL'ler (appearance.avatarUrl, whiteLabel.whitelabelLogoUrl) olarak sunulur. Doğrudan bu URL'lere GET isteği atarak baytları alın; her iki dosyayı da değiştirmek için PATCH işleminde multipart avatar / whitelabel_logo parçası aracılığıyla yeni bir dosya yükleyin. Bu URL alanları bir istek gövdesinde gönderilirse yok sayılır.
{
"name": "Helpdesk Bot",
"role": {
"rawPrompt": "You are a friendly support assistant for Acme Inc.",
"role": "CUSTOMER_SUPPORT",
"language": "English",
"responseLength": "Normal",
"websiteAddress": "https://acme.com",
"companyDescription": "Acme sells industrial widgets."
},
"conversation": {
"welcomeMessage": "Hi! How can I help today?",
"queryRefinementEnabled": true,
"conversationContinuityEnabled": true,
"conversationRatingEnabled": true,
"positiveRatingTooltip": "Helpful",
"negativeRatingTooltip": "Not helpful",
"suggestedQuestions": "What are your hours?\nHow do I cancel?\nWhere is my order?",
"dynamicSuggestedFollowups": true,
"dynamicFollowupsAutoIcons": true
},
"chatMemory": {
"enabled": true,
"summaryConversationsEnabled": true,
"conversationSummaryPrompt": "Summarize this conversation in 3 sentences.",
"clientSummaryPrompt": "Summarize what we know about this customer.",
"clientSummaryPromptType": "DEFAULT",
"conversationSummaryPromptType": "DEFAULT",
"summariesToKnowledgeRatio": 50
},
"appearance": {
"launcherColor": "#1A73E8",
"headerColor": "#1A73E8",
"titleColor": "#FFFFFF",
"subtitleColor": "#FFFFFF",
"clientMessageBubbleColor": "#000000",
"clientMessageTextColor": "#FFFFFF",
"responseMessageBubbleColor": "#F4F4F4",
"responseMessageTextColor": "#000000",
"chatSubheader": "AI support assistant",
"senderPlaceholder": "Type a message...",
"resetConversationTooltip": "Restart conversation",
"chatAlignment": "right",
"launcherBottomMargin": 20,
"launcherSideMargin": 20,
"displayShadow": true,
"customCss": ".rcw-conversation-container { border-radius: 16px; }",
"chatMessageLinkTarget": "_blank",
"minimizedDisplayMode": "icon",
"chatDesktopWidthPx": 400,
"chatDesktopHeightPx": 600,
"chatMobileSizePercent": 100,
"messageFontSize": 14,
"showChatbotBubblesDesktop": true,
"showChatbotBubblesMobile": false,
"chatbotBubblesDelaySeconds": 5,
"welcomeScreenEnabled": false,
"welcomeScreenQuestionsLabel": "Quick start",
"welcomeScreenHideHumanContactForm": false,
"welcomeScreenHideLiveChat": false,
"headerActionsLayout": "DROPDOWN",
"stackSuggestedQuestions": false,
"suggestedQuestionsFontSize": 14,
"suggestedQuestionsTextColor": "#000000",
"suggestedQuestionsBackgroundColor": "#F4F4F4",
"autoOpenChat": false,
"autoOpenChatOnMobiles": false,
"autoOpenChatDelay": false,
"autoOpenChatDelaySeconds": 5,
"simulateHumanTyping": true,
"simulateHumanTypingDelay": 5,
"footerMarkdown": "Powered by Acme",
"avatarUrl": "https://api.chatlab.com/aichat/content/avatar_a8f3b2c1_2026060110.png"
},
"humanSupport": {
"enabled": true,
"email": "support@acme.com",
"dialogMessage": "Leave us a message and we will get back to you.",
"thankYouMessage": "Thanks - we received your message.",
"emailMessageSubjectTemplate": "[Acme support] New message from {customerName}",
"emailMessageContentTemplate": "{message}\n\n - \n{conversationTranscript}",
"emailPlaceholder": "your@email.com",
"messagePlaceholder": "How can we help?",
"emailWithConversationContent": true
},
"leadCollection": {
"enabled": true,
"nameEnabled": true,
"nameLabel": "Your name",
"emailEnabled": true,
"emailLabel": "Email",
"phoneEnabled": false,
"phoneLabel": "Phone",
"leaveDetailsMessage": "Please leave your details and we will get in touch.",
"thankYouMessage": "Thanks - we will be in touch shortly.",
"requireBeforeNewConversation": false,
"emailNotificationEnabled": true,
"emailNotificationAddress": "leads@acme.com",
"emailWithConversationContent": true
},
"liveChat": {
"enabled": false,
"infoMessage": "Connecting you with a human agent...",
"startMessage": "You are now chatting with our team.",
"endMessage": "Live chat has ended.",
"nameLabel": "Your name",
"emailLabel": "Email",
"schedule": "{\"monday\":{\"enabled\":true,\"from\":\"9:00\",\"to\":\"17:00\"},\"tuesday\":{\"enabled\":true,\"from\":\"9:00\",\"to\":\"17:00\"},\"wednesday\":{\"enabled\":true,\"from\":\"9:00\",\"to\":\"17:00\"},\"thursday\":{\"enabled\":true,\"from\":\"9:00\",\"to\":\"17:00\"},\"friday\":{\"enabled\":true,\"from\":\"9:00\",\"to\":\"17:00\"},\"saturday\":{\"enabled\":false,\"from\":\"9:00\",\"to\":\"17:00\"},\"sunday\":{\"enabled\":false,\"from\":\"9:00\",\"to\":\"17:00\"},\"timezone\":\"Europe/Warsaw\"}",
"outOfHoursMessage": "We are currently offline.",
"closeModalMessage": "End the live chat session?",
"closeModalConfirmLabel": "Yes, end",
"closeModalCancelLabel": "Cancel",
"closeModalTooltipText": "End live chat",
"operatorHasJoinedLabel": "An agent has joined.",
"operatorDidNotJoinInTimeLabel": "No agent available right now.",
"waitingForOperatorToJoinLabel": "Waiting for an agent...",
"waitingForOperatorSeconds": 60,
"redirectToHumanSupportForm": true
},
"consent": {
"newConversationRequirePolicyAccept": false,
"humanSupportRequirePolicyAccept": false,
"leadCollectionRequirePolicyAccept": true,
"liveChatRequirePolicyAccept": false,
"newConversationConsentDescription": "By starting a conversation you agree to our terms.",
"privacyPolicyConsentCheckboxLabel": "I have read and accepted the privacy policy."
},
"whiteLabel": {
"hideRoboAssistLogo": false,
"whitelabelLogoLink": "https://acme.com",
"assignToCustomDomain": false,
"whitelabelLogoUrl": "https://api.chatlab.com/aichat/content/custom_logo_4287_2026060110.png"
},
"security": {
"allowedDomains": "acme.com,support.acme.com",
"spamFilterEnabled": true,
"talkMessagesRateLimit": 30,
"talkMessagesRateLimitDurationSeconds": 60,
"talkMessagesRateLimitHitMessage": "Please slow down."
},
"advanced": {
"model": "5.6-LUNA",
"temperature": 0.4,
"chatContextSize": 16000,
"botMessagesLimit": 1000,
"internalLocale": "en_US",
"productsViewEnabled": false
},
"meta": {
"id": 4287,
"createdAt": "2026-06-01T10:11:02Z",
"updatedAt": "2026-06-01T11:02:19Z"
}
}
Bir botu klonlama
POST /v1/management/bots istek gövdesi ile GET /v1/management/bots/{bot_id} yanıt gövdesi aynı yapıya sahiptir; bu nedenle klonlama üç adımlı bir işlem hattıdır: kaynak botu GET ile alın, sunucu tarafından yönetilen kimlik alanlarını temizleyin, sonucu POST ile gönderin.
1. Kaynak botu GET ile alın.
curl https://api.chatlab.com/aichat/v1/management/bots/4287 \
-H "Authorization: Bearer mk_..." \
-o source-bot.json
2. En üst düzeydeki meta bloğunu temizleyin. meta nesnesi (id, createdAt, updatedAt) sunucu tarafından yönetilir ve salt okunurdur - bunu POST gövdesinde bırakmak bir zarara yol açmaz (sunucu bunu yok sayar), ancak kaldırmak amacınızı netleştirir ve veri yükünü temiz tutar. İsteğe bağlı olarak, klonun kaynaktan ayırt edilebilmesi için name değerini düzenleyin.
jq 'del(.meta) | .name = "Helpdesk Bot (clone)"' source-bot.json > clone-body.json
3. Klonu oluşturmak için temizlenmiş gövdeyi POST ile gönderin. Tüm gövde yapısı ve doğrulama kuralları için yukarıdaki POST /v1/management/bots referansına bakın.
curl -X POST https://api.chatlab.com/aichat/v1/management/bots \
-H "Authorization: Bearer mk_..." \
-H "Content-Type: application/json" \
-d @clone-body.json
Yanıt, yeni botun meta.id değerinin yanı sıra yeni oluşturulmuş bir apiKey (klon için Bot Talk anahtarı) içerir. Düz metin halindeki apiKey yalnızca bu oluşturma yanıtında döndürülür - yanıt gövdesini silmeden önce bunu kopyalayın; daha sonra tekrar alınamaz.
Bu işlem desteklenen ayarları kopyalar, tamamen eğitilmiş bir chatbotu değil. Eğitim içeriği, sohbet geçmişi, entegrasyonlar/eylemler, Flow ve form tanımları bu uç noktalar tarafından klonlanmaz. Bunları uygulamada ayrı olarak yapılandırın.
Ek uyarılar:
- Dosyalar klonlanmaz.
appearance.avatarUrlvewhiteLabel.whitelabelLogoUrlalanları salt okunurdur ve kaynak botun dosyalarını işaret eder. Klonda aynı avatara veya white-label logosuna ihtiyacınız varsa, kaynak URL'lerden baytları indirin ve bunları multipartavatar/whitelabel_logoparçaları olarak yükleyin - bunu oluşturma POST işleminde (Mod B) ya da ardından gelen bir PATCH çağrısında yapabilirsiniz. - Bot Talk anahtarları klonlanmaz. Her botun kendine ait bir Bot Talk anahtar havuzu vardır. Oluşturma POST işlemi tarafından döndürülen tek
apiKey, otomatik olarak oluşturulan tek anahtardır; gerekirse botun API sekmesinden ek anahtarlar oluşturun.
PATCH /v1/management/bots/{bot_id}
Sahip olduğunuz bir botun bir veya daha fazla alanını güncelleyin. Yalnızca JSON içinde bulunan bölümler / alanlar değiştirilir; atlanan (veya null olarak gönderilen) her şey olduğu gibi bırakılır. Gönderilen bir bölüm içindeki her alan için kısmi güncelleme mantığı geçerlidir.
İki eşdeğer Content-Type kabul edilir (POST ile aynıdır):
Mod A - düz JSON (yalnızca ayarları güncellerken önerilir):
Content-Type: application/json- İstek gövdesi, yama JSON'ının kendisidir (
datasarmalayıcısı yoktur)
Mod B - multipart/form-data (dosya yüklerken kullanın):
dataJSON parçası (isteğe bağlı) - yama verisi. Yalnızca alanları değiştirmek istiyorsanız gönderin. Yalnızca bir avatar veya logo yüklemek istiyorsanız tamamen atlayın.avatardosya parçası (isteğe bağlı) - avatarı değiştirirwhitelabel_logodosya parçası (isteğe bağlı) - white-label logosunu değiştirir (yalnızca hesabınız white-label özelliğini içeriyorsa geçerlidir)
PATCH çağrısında üç parçanın tümü de isteğe bağlıdır, ancak çağrının anlamlı olması için en az birinin bulunması gerekir.
Örnek istek gövdesi (birden fazla bölüm)
POST /v1/management/bots tarafından kabul edilen herhangi bir alan burada da gönderilebilir. Aşağıdaki örnek desteklenen tüm alanları değil, birkaç bölümü göstermektedir; pratikte yalnızca değiştirmek istediğiniz anahtarları gönderirsiniz (aşağıdaki "En küçük kısmi güncelleme" bölümüne bakın) - atlanan (veya null olarak gönderilen) her anahtar, kayıtlı değerine dokunulmadan bırakılır.
{
"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
}
}
En küçük kısmi güncelleme
Tam olarak değiştirilmesini istediğiniz anahtarları göndererek tek bir alanı PATCH ile güncelleyin - diğer her şey korunur.
{
"appearance": {
"launcherColor": "#abcdef"
}
}
Curl örnekleri
Mod A - düz JSON (en basiti):
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"}}'
Mod B - multipart (avatar / logo değiştirilirken):
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'
Mod B - yalnızca avatarı değiştirme (alan değişikliği yok):
curl -X PATCH https://api.chatlab.com/aichat/v1/management/bots/4287 \
-H "Authorization: Bearer mk_..." \
-F 'avatar=@./new-avatar.png'
Yanıt gövdesi (200)
GET /v1/management/bots/{bot_id} ile aynı yapıdadır - yama uygulandıktan sonra botun meta bloğu dahil tüm yapılandırmasını içerir. apiKey alanı bulunmaz. Bot mevcut değilse veya hesabınıza ait değilse 404 not_found_error döndürür.
Aşağıdaki örnek, GET örneğindeki bota yukarıdaki Tam istek gövdesi (birden fazla bölüm) yaması uygulandıktan sonraki yanıtı göstermektedir - değiştirilen alanlar yeni değerleri yansıtır, dokunulmayan alanlar korunur ve meta.updatedAt ilerler.
{
"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
Management anahtarına sahip olan hesabın mevcut abonelik kullanımını okuyun.
Yanıt gövdesi (200)
{
"subscriptionType": "your-plan-id",
"messages": {"used": 4123, "limit": 11000, "remaining": 6877},
"bots": {"used": 3, "limit": 5, "remaining": 2}
}
subscriptionType, hesabın geçerli planının küçük harfli tanımlayıcısıdır (your-plan-idaçıklama amaçlı bir yer tutucudur). Planlar dinamik bir katalogdan gelir, bu nedenle planlar yeniden adlandırıldıkça veya eklendikçe tam tanımlayıcı kümesi zaman içinde değişebilir - bunu sabit bir enum olarak değil, opak bir dize olarak değerlendirin.messages.used/limit/remaining, mevcut takvim ayının mesaj kredileridir; abonelik yenileme gününde değil, ayın ilk gününde sıfırlanır. Bunlar ham yanıt sayıları değil, kredi ağırlıklıdır.bots.used/limit/remaining, duraklatılmış botlar dahil olmak üzere sahip olunan botları hesabınızın toplam bot sınırına göre sayar.
İstek sınırı üstbilgileri
İstek sınırı aşamasına ulaşan yanıtlar (yani kimlik doğrulama ve IP beyaz listesi kontrolleri başarılı olanlar) şunları içerir:
X-RateLimit-Limit: 10
X-RateLimit-Remaining: 7
X-RateLimit-Reset: 1715430000
X-RateLimit-Limit- bu çağrıya fiilen uygulanan anahtar başına üst sınır (varsayılan olarak 10 veya daha düşükse yapılandırdığınızrateLimitPerMinute).X-RateLimit-Remaining- bu çağrıdan hemen sonra kovada kalan belirteçler.X-RateLimit-Reset- bir sonraki belirtecin kullanılabilir hale geleceği Unix epoch saniyesi (kovanın tamamen sıfırlanması değil; kova sürekli olarak dolar). Kova dolduğunda bu değer geçerli zamandır.
429 rate_limit_exceeded yanıtlarında, en az bir belirteç açılana kadar tam saniye cinsinden ifade edilen Retry-After da ayarlanır.
Kimlik doğrulama öncesi hatalar (401 missing_api_key, 401 invalid_api_key, 403 ip_blocked) ve 403 ip_not_whitelisted, X-RateLimit-* üstbilgilerini taşımaz - sınırlayıcıya yalnızca kimlik doğrulama ve IP kontrolleri başarılı olduktan sonra başvurulur.
Hata formatı
Bot Talk API ile aynı zarf yapısı:
{
"error": {
"type": "permission_error",
"code": "key_type_not_allowed",
"message": "This endpoint requires a MANAGEMENT API key.",
"param": null
}
}
Doğrulama hataları code: "invalid_parameter" kullanır ve başarısız bölümün kolayca fark edilebilmesi için mesajın başına başarısız alan yolunu ekler:
{
"error": {
"type": "invalid_request_error",
"code": "invalid_parameter",
"message": "humanSupport.email Human support email is required when humanSupport.enabled=true"
}
}
Enum / kapalı küme alanları için hatalı değerler (örneğin chatMemory.clientSummaryPromptType = "BOGUS"), alan yolunu, reddedilen değeri ve izin verilen değerlerin listesini içerir:
{
"error": {
"type": "invalid_request_error",
"code": "invalid_parameter",
"message": "chatMemory.clientSummaryPromptType 'BOGUS' is not a valid value. Allowed: CUSTOM, DEFAULT"
}
}
İlgili konular
Görüşme uç noktaları ve SSE akışı için Bot Talk API sayfasına bakın.