Επισκόπηση του Management API
Το Management API προορίζεται για εργασίες διαχείρισης (back-office) που δεν περιλαμβάνουν την αποστολή μηνυμάτων συνομιλίας:
- δημιουργία bot μέσω προγραμματισμού με
POST /v1/management/bots - ανάγνωση συγκεκριμένου bot που σας ανήκει με
GET /v1/management/bots/{bot_id} - ενημέρωση συγκεκριμένου bot με
PATCH /v1/management/bots/{bot_id} - ανάγνωση χρήσης συνδρομής με
GET /v1/usage
Τα κλειδιά Management συνδέονται με τον λογαριασμό σας και όχι με κάποιο συγκεκριμένο bot. Διατηρούνται σκόπιμα ξεχωριστά από τα κλειδιά Bot Talk, ώστε ένα παραβιασμένο κλειδί συνομιλίας να μην μπορεί να τροποποιήσει τα bot σας ή να διαβάσει τα δεδομένα χρέωσής σας.
Base URL
https://api.chatlab.com/aichat
Όλα τα endpoints σε αυτό το άρθρο είναι σχετικά με αυτό το base URL.
Ξεκινώντας
- Ανοίξτε την εφαρμογή διαχείρισης και μεταβείτε στο Account Settings > Management API (Ρυθμίσεις λογαριασμού > Management API).
- Κάντε κλικ στο Create Management Key (Δημιουργία κλειδιού Management), δώστε του ένα όνομα, προαιρετικά ορίστε IP whitelist και όριο ρυθμού (rate limit) και υποβάλετε τη φόρμα.
- Αντιγράψτε ολόκληρο το κλειδί από το παράθυρο επιτυχίας. Το κείμενο εμφανίζεται μόνο μία φορά.
Ένα κλειδί έχει τη μορφή mk_abcdefghijklmnopqrstuvwxyz012345. Το πρόθεμα mk_ το διακρίνει από τα κλειδιά Bot Talk (ck_).
Έλεγχος ταυτότητας (Authentication)
Authorization: Bearer mk_abcdefghijklmnopqrstuvwxyz012345
Η αποστολή ενός κλειδιού mk_ στο /v1/chat (ή σε οποιοδήποτε άλλο endpoint του Bot Talk) επιστρέφει 403 key_type_not_allowed. Η αποστολή ενός κλειδιού ck_ στο /v1/management/* επιστρέφει το ίδιο σφάλμα.
Όρια
- Έως 5 ενεργά κλειδιά Management API ανά χρήστη
- Έως 10 αιτήματα ανά λεπτό ανά κλειδί (token bucket, χωρητικότητα 10, ομαλή αναπλήρωση με ρυθμό ~1 token κάθε 6 δευτερόλεπτα). Δυνατότητα διαμόρφωσης προς τα κάτω κατά τη δημιουργία - ορίστε ένα χαμηλότερο
rateLimitPerMinuteκαι το ανώτατο όριο μειώνεται, ενώ ο ρυθμός αναπλήρωσης προσαρμόζεται ανάλογα.
Δικαιώματα (Permissions)
Κάθε κλειδί Management φέρει οποιοδήποτε υποσύνολο από τα τρία παρακάτω δικαιώματα. Τουλάχιστον ένα πρέπει να επιλεγεί κατά τη δημιουργία, διαφορετικά το αίτημα απορρίπτεται με 400 invalid_request_error. Η κλήση ενός endpoint με κλειδί που δεν διαθέτει το απαιτούμενο δικαίωμα επιστρέφει 403 insufficient_permissions.
bot_read- απαιτείται για τοGET /v1/management/bots/{bot_id}bot_management- απαιτείται για ταPOST /v1/management/botsκαιPATCH /v1/management/bots/{bot_id}usage- απαιτείται για τοGET /v1/usage
Δομή σώματος αιτήματος: ένθετες ενότητες που αντιστοιχούν στις καρτέλες του περιβάλλοντος διαχείρισης
Τα POST και PATCH δέχονται ένα JSON σώμα ομαδοποιημένο σε 13 ενότητες. Κάθε ενότητα αντιστοιχεί σε μια υποκαρτέλα στην πλαϊνή γραμμή Bot Settings της εφαρμογής διαχείρισης, ώστε τα κλειδιά JSON και οι ορατές καρτέλες να ευθυγραμμίζονται: αν αλλάξετε το consent.humanSupportRequirePolicyAccept μέσω του API, θα δείτε τον αντίστοιχο διακόπτη να αλλάζει στην καρτέλα Consent & Privacy (Συγκατάθεση & Απόρρητο) στην εφαρμογή διαχείρισης.
role- persona του bot, ανεπεξέργαστο prompt, μήκος απάντησης, γλώσσα, περιβάλλον ιστότοπου / εταιρείας (καρτέλα Role & Behavior)conversation- μήνυμα καλωσορίσματος, βελτιστοποίηση ερωτήματος, συνέχεια συνομιλίας, διακόπτης αξιολόγησης + επεξηγήσεις εργαλείων (tooltips), περιεχόμενο προτεινόμενων ερωτήσεων + δυναμικές συμπληρωματικές ερωτήσεις (καρτέλα Chat Conversation)chatMemory- διακόπτης μνήμης συνομιλίας, prompt σύνοψης, κατανομή context (καρτέλα Summaries & Memory)appearance- χρώματα, κείμενα, διαστάσεις, προσαρμοσμένο CSS, οθόνη καλωσορίσματος, στυλ προτεινόμενων ερωτήσεων, συμπεριφορά αυτόματου ανοίγματος, προσομοίωση πληκτρολόγησης ανθρώπου, markdown υποσέλιδου (καρτέλα Appearance)humanSupport- φόρμα επικοινωνίας με εκπρόσωπο (καρτέλα Human Contact Form)leadCollection- φόρμα συλλογής δυνητικών πελατών (καρτέλα Lead Collection)liveChat- μεταβίβαση σε ζωντανή συνομιλία (καρτέλα Live Chat)consent- και οι τέσσερις διακόπτες συγκατάθεσης πολιτικής απορρήτου καθώς και το κείμενο της οθόνης συγκατάθεσης (καρτέλα Consent & Privacy)whiteLabel- απόκρυψη λογότυπου, προσαρμοσμένος σύνδεσμος λογότυπου, φιλοξενία σε προσαρμοσμένο τομέα (καρτέλα Whitelabel)security- επιτρεπόμενοι τομείς, φίλτρο ανεπιθύμητων μηνυμάτων (spam), όρια ρυθμού συνομιλίας (καρτέλα Security)voice- φωνητική εισαγωγή και φωνητικές συνομιλίες: μοντέλο, φωνή, γλώσσες, prompt, όριο διάρκειας (καρτέλα Voice Conversation)multilingual- πολυγλωσσική λειτουργία, βασική γλώσσα, προσφερόμενες γλώσσες, διαχείριση γλώσσας γνωσιακής βάσης (καρτέλα Languages)advanced- μοντέλο LLM, temperature, μέγεθος context, όριο μηνυμάτων bot, εσωτερικό locale, Offer Cards (καρτέλα Model & Advanced)
Μόνο το name βρίσκεται στο ανώτατο επίπεδο, επειδή προσδιορίζει το bot αντί να ανήκει σε κάποια συγκεκριμένη καρτέλα.
Η πλαϊνή γραμμή Bot Settings διαθέτει επί του παρόντος 15 υποκαρτέλες και οι 13 από αυτές αντιστοιχούν στις παραπάνω ενότητες. Οι δύο υποκαρτέλες χωρίς αντίστοιχη ενότητα είναι οι Flow και Actions - οι οποίες καλύπτονται παρακάτω στην ενότητα "Εκτός πεδίου εφαρμογής API". Οι 13 που αντιστοιχούν είναι οι Appearance, Chat Conversation, Role & Behavior, Human Contact Form, Lead Collection, Live Chat, Whitelabel, Consent & Privacy, Security, Model & Advanced, Summaries & Memory, Voice Conversation και Languages.
Το σώμα αιτήματος και το σώμα απόκρισης μοιράζονται την ίδια δομή. Η απόκριση προσθέτει δύο επιπλέον στοιχεία:
meta- μόνο για ανάγνωση: αναγνωριστικό bot και χρονοσημάνσεις. Αφαιρέστε το για να μετατρέψετε μια απόκριση GET σε έγκυρο σώμα POST.apiKey- υπάρχει μόνο κατά τη δημιουργία - το νέο κλειδί Bot Talk API για το καινούργιο bot.
Δύο πεδία μέσα στην κοινή δομή είναι μόνο για ανάγνωση - επιστρέφονται στην απόκριση, αγνοούνται εάν προσπαθήσετε να τα στείλετε σε POST/PATCH:
appearance.avatarUrl- πλήρως προσδιορισμένο δημόσιο URL της εικόνας avatar του bot (π.χ.https://api.chatlab.com/aichat/content/avatar_xyz.png). Κάντε απευθείας GET για να κατεβάσετε τα bytes. Για να το αλλάξετε, ανεβάστε ένα νέο αρχείο μέσω του multipart μέρουςavatar(βλ. PATCH).whiteLabel.whitelabelLogoUrl- πλήρως προσδιορισμένο δημόσιο URL του λογότυπου κεφαλίδας white-label. Ίδια διαδικασία όπως με τοavatarUrl. Για να το αλλάξετε, ανεβάστε ένα νέο αρχείο μέσω του multipart μέρουςwhitelabel_logo(βλ. PATCH).
Και τα δύο URL χρησιμοποιούν το σχήμα + host + διαδρομή περιβάλλοντος του τρέχοντος αιτήματος, επομένως σε έναν προσαρμοσμένο τομέα white-label επιστρέφονται με ρίζα αυτόν τον τομέα (π.χ. https://api.acme.com/aichat/content/...).
Στείλτε null για μια ενότητα για να την παραλείψετε στο PATCH. Στείλτε null για ένα πεδίο εντός μιας ενότητας για να παραλείψετε αυτό το μεμονωμένο πεδίο. Το null σε επίπεδο πεδίου δεν διαγράφει ποτέ μια αποθηκευμένη τιμή - σημαίνει απλώς "μην τροποποιείς".
Ρόλος και σύνταξη prompt
Το prompt συστήματος που λαμβάνει στην πραγματικότητα το LLM δημιουργείται με έναν από δύο τρόπους ανάλογα με το role.role. Γνωρίζοντας σε ποιον κλάδο βρίσκεστε, κατανοείτε ποια πεδία έχουν σημασία και ποια αποθηκεύονται αλλά αγνοούνται.
Κλάδος A - το role.role είναι CUSTOMER_SUPPORT, SALES ή LEAD_COLLECTION_AGENT (βάσει προτύπου)
Το backend συνθέτει το prompt από ένα ενσωματωμένο πρότυπο και αγνοεί εντελώς το role.rawPrompt (η τιμή εξακολουθεί να αποθηκεύεται στο bot, απλώς δεν χρησιμοποιείται). Το πρότυπο ενσωματώνει:
role.role- ετικέτα ρόλου (π.χ. "Customer Support") και οδηγίες ειδικές για τον ρόλο που προσαρτώνται αυτόματαname- όνομα bot, το οποίο εισάγεται στην εισαγωγική πρότασηrole.language- το"Auto Detect"ρυθμίζει το bot να ακολουθεί τη γλώσσα του χρήστη. Οποιαδήποτε άλλη τιμή (π.χ."English","Polish") μετατρέπεται σε "Output in {language}, unless user uses another language"role.responseLength- αντιστοιχίζεται σε έναν επιθυμητό αριθμό λέξεων:Concise≈ 50 λέξεις,Normal≈ 100,Detailed≈ 200role.websiteAddress- προαιρετικό. Όταν δεν είναι κενό, προσαρτάται ως "for the users of the website {url}"role.companyDescription- προαιρετικό. Όταν δεν είναι κενό, προστίθεται ως επιπλέον παράγραφος πριν από τις οδηγίες ρόλου
Αυτός είναι ο συνιστώμενος κλάδος για τα περισσότερα bot - αποκτάτε συμπεριφορά προσαρμοσμένη στον ρόλο και προστατευτικές δικλείδες ασφαλείας αυτόματα.
Κλάδος B - το role.role είναι CUSTOM (prompt που παρέχεται από τον χρήστη)
Το backend χρησιμοποιεί το role.rawPrompt κατά λέξη ως ολόκληρο το prompt συστήματος. Τα πεδία responseLength, language, websiteAddress, companyDescription αποθηκεύονται αλλά δεν εισάγονται στο prompt - αν θέλετε κάποιο από αυτά να αντικατοπτρίζεται στη συμπεριφορά του bot, πρέπει να το συμπεριλάβετε εσείς οι ίδιοι στο κείμενο του rawPrompt. Οι ειδικές οδηγίες ρόλου, ασφάλειας και ύφους επίσης δεν προστίθενται. Είστε υπεύθυνοι για ολόκληρο το prompt.
Χρησιμοποιήστε το CUSTOM μόνο όταν το prompt που βασίζεται σε πρότυπο δεν ταιριάζει στην περίπτωσή σας (π.χ. χρειάζεστε μια πολύ εξειδικευμένη persona για τον τομέα σας, δικούς σας περιορισμούς ασφαλείας, μια μη τυπική μορφή εξόδου).
Πεδία τύπου Enum / κλειστού συνόλου τιμών
Αρκετά πεδία δέχονται μόνο ένα σταθερό σύνολο τιμών συμβολοσειράς (string). Η αποστολή οτιδήποτε εκτός της λίστας απορρίπτεται με 400 validation_failed και τη διαδρομή του πεδίου στο error.param. Οι τιμές διακρίνουν πεζά από κεφαλαία (case-sensitive).
role.role-CUSTOMER_SUPPORT,SALES,LEAD_COLLECTION_AGENT,CUSTOMrole.responseLength-Concise,Normal,Detailedrole.language- πλήρες όνομα της γλώσσας στα αγγλικά από το αναπτυσσόμενο μενού διαχείρισης, π.χ.Auto Detect,English,Polish,Spanish,German,French,Italian,Portuguese,Dutch,Russian,Chinese (Simplified),Japanese,Arabic,Hindi, και περίπου 80 άλλες. Η τιμή αποθηκεύεται αυτολεξεί και αντικαθίσταται στο πρότυπο prompt, επομένως οι διγράμματοι κωδικοί ISO (en,pl) και άλλες τιμές εκτός λίστας δεν απορρίπτονται από το API, αλλά παράγουν μια παραμορφωμένη οδηγία όπως "Output in en, unless...". Η προεπιλογή είναιAuto Detectόταν παραλείπεται κατά τη δημιουργία.advanced.model- δείτε την ενότητα "Μοντέλα κειμένου AI" παρακάτω. Το διαθέσιμο σύνολο υπόκειται στα όρια του λογαριασμού σας και οποιαδήποτε τιμή δεν μπορεί να χρησιμοποιήσει ο λογαριασμός σας επιστρέφει400 invalid_parameteradvanced.chatContextSize-8000,16000,32000. Υπόκειται στα όρια του λογαριασμού σας. Οι υψηλότερες τιμές περικόπτονται σιωπηρά στο μέγιστο επιτρεπτό όριοchatMemory.clientSummaryPromptType-DEFAULT,CUSTOMchatMemory.conversationSummaryPromptType-DEFAULT,CUSTOMappearance.chatAlignment-left,rightappearance.minimizedDisplayMode-icon,minifiedappearance.chatMessageLinkTarget-_blank,_selfleadCollection.requireBeforeNewConversation- διακόπτης boolean. Τοtrueυποχρεώνει τον χρήστη να συμπληρώσει τη φόρμα lead πριν ξεκινήσει μια συνομιλία. Τοfalseεπιτρέπει στο AI να αποφασίσει πότε θα εμφανίσει τη φόρμα (προεπιλογή).
Δομημένα πεδία και εύρη τιμών
Πεδία που μοιάζουν με απλές συμβολοσειρές ή αριθμούς, αλλά στην πραγματικότητα έχουν συγκεκριμένες δομές, εύρη τιμών ή ιδιαιτερότητες στο περιβάλλον διαχείρισης που αξίζει να γνωρίζετε.
-
advanced.temperature- το αποδεκτό εύρος είναι από0.0έως1.0, που αντιστοιχεί στο ρυθμιστικό της διεπαφής διαχείρισης. Τιμές εκτός αυτού του εύρους απορρίπτονται με400 validation_failed. -
chatMemory.summariesToKnowledgeRatio- ακέραιο ποσοστό,10-90με βήμα10. Ελέγχει πόσο μέρος του context συνομιλίας δεσμεύεται για ιστορικές συνόψεις πελάτη έναντι των υπολοίπων (γνωσιακή βάση, τρέχουσα συνομιλία, οδηγίες). Προεπιλογή50. Τιμές εκτός του10-90απορρίπτονται με400 validation_failed. Ισχύει μόνο ότανchatMemory.enabled=trueΚΑΙchatMemory.summaryConversationsEnabled=true. -
liveChat.schedule- JSON κωδικοποιημένο ως συμβολοσειρά (string), όχι ένθετο αντικείμενο JSON κατά τη μετάδοση. Ο διακομιστής αποθηκεύει την ανεπεξέργαστη συμβολοσειρά αυτούσια. Η διεπαφή διαχείρισης την αναλύει στην πλευρά του πελάτη κατά την εμφάνιση του προγράμματος επεξεργασίας ωραρίου. Μετά την ανάλυση, η συμβολοσειρά διαμορφώνεται ως μία καταχώριση ανά ημέρα της εβδομάδας συν ένα κλειδίtimezone:- κάθε κλειδί ημέρας (
monday-sunday) αντιστοιχεί σε{enabled: boolean, from: "H:MM", to: "H:MM"}σε 24ωρη μορφή - το
timezoneείναι ένα όνομα ζώνης IANA (π.χ."Europe/Warsaw","America/New_York")
Παράδειγμα τιμής (προσέξτε τα εξωτερικά εισαγωγικά και τα διαφυγόντα εσωτερικά εισαγωγικά - πρόκειται για ένα ενιαίο πεδίο συμβολοσειράς, όχι για ένθετο αντικείμενο):
"{\"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\"}"Εκτός των αναγραφόμενων ωρών, το
liveChat.outOfHoursMessageεμφανίζεται στον επισκέπτη και η μεταβίβαση σε ζωντανή συνομιλία αναστέλλεται. Η επικύρωση της εσωτερικής δομής εκτελείται μόνο στην πλευρά του πελάτη στη διεπαφή διαχείρισης - τυχόν κακοσχηματισμένο JSON ή μη αναγνωρισμένα κλειδιά γίνονται δεκτά από το API ως απλή συμβολοσειρά και θα εμφανιστούν ως σφάλμα απόδοσης όταν κάποιος ανοίξει αργότερα το bot στη διαχείριση. Επικυρώστε τη δομή από την πλευρά σας πριν από την αποστολή. - κάθε κλειδί ημέρας (
-
conversation.positiveRatingTooltip/conversation.negativeRatingTooltip- σύντομες ετικέτες που εμφανίζονται στα κουμπιά 👍 / 👎 δίπλα σε κάθε απάντηση AI ότανconversation.conversationRatingEnabled=true. Το προεπιλεγμένο κείμενο είναι "I like the response" / "I don't like the response". Ορατό στους τελικούς χρήστες. -
whiteLabel.hideRoboAssistLogo- δυνατότητα white-label, υπόκειται στα όρια του λογαριασμού σας. Αποκρύπτει τη γραμμή υποσέλιδου "Powered by ChatLab". Εάν ο λογαριασμός σας δεν περιλαμβάνει δυνατότητα white-label, η τιμή αποθηκεύεται αλλά αγνοείται και το υποσέλιδο εμφανίζεται πάντα. -
whiteLabel.whitelabelLogoLink- δυνατότητα white-label, υπόκειται στα όρια του λογαριασμού σας. URL προορισμού κλικ για το προσαρμοσμένο λογότυπο ότανhideRoboAssistLogo=trueκαι έχει μεταφορτωθεί ένα προσαρμοσμένο αρχείο λογότυπου μέσω του multipart μέρουςwhitelabel_logo. -
appearance.simulateHumanTypingDelay- δευτερόλεπτα (όχι χιλιοστά του δευτερολέπτου), ακέραιος αριθμός0-200. Παύση μεταξύ διαδοχικών μηνυμάτων του bot ότανsimulateHumanTyping=true. Προεπιλογή5. -
appearance.autoOpenChatDelaySeconds- δευτερόλεπτα, ακέραιος αριθμός. Καθυστέρηση πριν το widget ανοίξει αυτόματα ότανautoOpenChat=trueκαιautoOpenChatDelay=true. -
advanced.internalLocale- κωδικός τοπικής ρύθμισης-περιοχής IETF σε μορφήll_CC(με κάτω παύλα, ΟΧΙll-CCμε ενωτικό). Οι αποδεκτές τιμές προέρχονται από μια σταθερή λίστα περίπου 95 τοπικών ρυθμίσεων:en_US,pl_PL,de_DE,fr_FR,es_ES,it_IT,pt_PT,nl_NL,ru_RU,zh_CN,zh_TW,ja_JP,ko_KR,ar_SA,hi_IN,tr_TR,cs_CZ,da_DK,fi_FI,sv_SE,no_NO,el_GR,he_IL, και πολλές άλλες. Η αποστολή μόνο ενός διγράμματου κωδικού ("en") ή BCP-47 ("en-US") δεν περιλαμβάνεται στην επιτρεπόμενη λίστα. Προεπιλογήen_US. Αυτό είναι το locale που χρησιμοποιείται για τη μορφοποίηση ημερομηνιών/αριθμών στα στοιχεία πλαισίου του widget, σε αντίθεση με τοrole.language(τη γλώσσα παραγωγής συνομιλίας του bot). -
security.talkMessagesRateLimit/security.talkMessagesRateLimitDurationSeconds- ακέραιοι αριθμοί (αποστολή ως αριθμοί JSON, π.χ.30, όχι"30"). Το0απενεργοποιεί το όριο ρυθμού ανά IP. Όταν είναι διάφορο του μηδενός, το widget επιβάλλει N μηνύματα ανά διάρκεια σε δευτερόλεπτα προτού εμφανίσει τοsecurity.talkMessagesRateLimitHitMessageστον επισκέπτη. -
advanced.botMessagesLimit- ακέραιος αριθμός (αριθμός JSON, π.χ.1000). Το0σημαίνει "χωρίς όριο", διαφορετικά πρέπει να είναι πολλαπλάσιο του 1000 (1000,2000,10000, ...). Τιμές όπως100ή1500απορρίπτονται με400 validation_failed. Στη συνέχεια, περιορίζεται σιωπηρά στο ανώτατο όριο του λογαριασμού σας.
Μοντέλα κειμένου AI (advanced.model)
Στείλτε την ακριβή τιμή του API (αριστερή στήλη εντός κωδικού). Το όνομα εμφάνισης στη διεπαφή διαχείρισης βρίσκεται σε παρένθεση. Τα όρια του λογαριασμού σας καθορίζουν ποιο υποσύνολο είναι επιλέξιμο. Η αποστολή ενός μοντέλου που ο λογαριασμός σας δεν μπορεί να χρησιμοποιήσει επιστρέφει 400 invalid_parameter. Η προεπιλογή για νέα bot είναι 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)
Αναφορά πεδίων (πλήρες σχήμα αιτήματος)
Κάθε πεδίο στο wire, με τον τύπο του, τον περιορισμό του και μια μονολεκτική ή σύντομη περιγραφή. Σημασιολογία PATCH: οποιοδήποτε πεδίο παραληφθεί (ή σταλεί ως null) αφήνει την αποθηκευμένη τιμή ανέπαφη. Η ίδια μορφή χρησιμοποιείται και για την απόκριση (μείον το δυαδικό περιεχόμενο multipart, συν το μπλοκ μόνο για ανάγνωση meta σε κάθε απόκριση και το apiKey μόνο στην απόκριση δημιουργίας).
Ανώτατο επίπεδο
| Πεδίο | Τύπος | Περιορισμός | Περιγραφή |
|---|---|---|---|
name |
string | μέγιστο 150, απαιτείται κατά τη δημιουργία | Όνομα εμφάνισης του bot |
role |
object | Δείτε § role | |
conversation |
object | Δείτε § conversation | |
chatMemory |
object | Δείτε § chatMemory | |
appearance |
object | Δείτε § appearance | |
humanSupport |
object | Δείτε § humanSupport | |
leadCollection |
object | Δείτε § leadCollection | |
liveChat |
object | Δείτε § liveChat | |
consent |
object | Δείτε § consent | |
whiteLabel |
object | Δείτε § whiteLabel | |
security |
object | Δείτε § security | |
advanced |
object | Δείτε § advanced |
Προσθήκες μόνο στην απόκριση:
meta: { id, createdAt, updatedAt }- μόνο για ανάγνωση.apiKey- string, υπάρχει μόνο στην απόκριση τουPOST /v1/management/bots- το νέο κλειδί Bot Talk για το νέο bot, το οποίο επιστρέφεται ακριβώς μία φορά.
§ role
| Πεδίο | Τύπος | Περιορισμός | Περιγραφή |
|---|---|---|---|
role |
string (enum) | CUSTOMER_SUPPORT, SALES, LEAD_COLLECTION_AGENT, CUSTOM |
Προκαθορισμένη περσόνα - επιλέγει το πρότυπο prompt (δείτε "Ρόλος και κατασκευή prompt") |
language |
string | πλήρες αγγλικό όνομα γλώσσας (English, Polish, ...) ή Auto Detect |
Κύρια γλώσσα που τροφοδοτείται στο πρότυπο prompt |
responseLength |
string | ∈ {Concise, Normal, Detailed} |
Επιθυμητή λεπτομέρεια απαντήσεων του AI |
websiteAddress |
string | Ιστότοπος που χρησιμοποιείται για το πλαίσιο (context) του prompt | |
companyDescription |
string | Περιγραφή της εταιρείας που χρησιμοποιείται για το πλαίσιο του prompt | |
rawPrompt |
string | Προσαρμοσμένο system prompt - χρησιμοποιείται αυτολεξεί μόνο όταν role=CUSTOM |
§ conversation
| Πεδίο | Τύπος | Περιορισμός | Περιγραφή |
|---|---|---|---|
welcomeMessage |
string | Πρώτο μήνυμα που εμφανίζεται στον επισκέπτη κατά το άνοιγμα | |
queryRefinementEnabled |
boolean | Εάν είναι true, βελτιώνει την ερώτηση του επισκέπτη πριν από την ανάκτηση RAG | |
conversationContinuityEnabled |
boolean | Εάν είναι true, οι επαναλαμβανόμενοι επισκέπτες συνεχίζουν την τελευταία τους συνομιλία | |
conversationRatingEnabled |
boolean | Εάν είναι true, εμφανίζει αξιολόγηση με θετική/αρνητική ψήφο (thumbs up/down) στα μηνύματα του bot | |
positiveRatingTooltip |
string | Επεξήγηση εργαλείου (tooltip) στο κουμπί θετικής αξιολόγησης | |
negativeRatingTooltip |
string | Επεξήγηση εργαλείου στο κουμπί αρνητικής αξιολόγησης | |
suggestedQuestions |
string | Προτεινόμενες ερωτήσεις διαχωρισμένες με νέα γραμμή / ενάρξεις συνομιλίας | |
dynamicSuggestedFollowups |
boolean | Εάν είναι true, το AI προτείνει συμπληρωματικές ερωτήσεις μετά από κάθε απάντηση | |
dynamicFollowupsAutoIcons |
boolean | Εάν είναι true, το AI επιλέγει αυτόματα εικονίδια emoji για τις δυναμικές συμπληρωματικές προτάσεις |
§ chatMemory
| Πεδίο | Τύπος | Περιορισμός | Περιγραφή |
|---|---|---|---|
enabled |
boolean | Γενικός διακόπτης για τη λειτουργία μνήμης συνομιλίας | |
summaryConversationsEnabled |
boolean | Διατήρηση περιλήψεων ανά συνομιλία | |
conversationSummaryPrompt |
string | Προσαρμοσμένο prompt που χρησιμοποιείται για τη σύνοψη κάθε συνομιλίας | |
conversationSummaryPromptType |
string (enum) | ∈ {DEFAULT, CUSTOM} |
Καθορίζει αν θα χρησιμοποιηθεί το προεπιλεγμένο ή το προσαρμοσμένο prompt σύνοψης |
clientSummaryPrompt |
string | Προσαρμοσμένο prompt που χρησιμοποιείται για τη σύνοψη του πελάτη σε όλες τις συνομιλίες | |
clientSummaryPromptType |
string (enum) | ∈ {DEFAULT, CUSTOM} |
Προεπιλεγμένο έναντι προσαρμοσμένου prompt προφίλ πελάτη |
summariesToKnowledgeRatio |
int | 10-90, βήμα 10 |
% του παραθύρου πλαισίου (context window) της συνομιλίας που διατίθεται για περιλήψεις έναντι των γνώσεων RAG |
§ appearance
| Πεδίο | Τύπος | Περιορισμός | Περιγραφή |
|---|---|---|---|
launcherColor |
string (hex) | Χρώμα φόντου του launcher (εικονίδιο συνομιλίας) | |
headerColor |
string (hex) | Χρώμα φόντου κεφαλίδας της συνομιλίας | |
titleColor |
string (hex) | Χρώμα τίτλου κεφαλίδας της συνομιλίας | |
subtitleColor |
string (hex) | Χρώμα υπότιτλου κεφαλίδας της συνομιλίας | |
clientMessageBubbleColor |
string (hex) | Χρώμα συννεφάκου μηνύματος επισκέπτη | |
clientMessageTextColor |
string (hex) | Χρώμα κειμένου μηνύματος επισκέπτη | |
responseMessageBubbleColor |
string (hex) | Χρώμα συννεφάκου απάντησης του bot | |
responseMessageTextColor |
string (hex) | Χρώμα κειμένου απάντησης του bot | |
chatSubheader |
string | Σύντομο κείμενο (tagline) που εμφανίζεται κάτω από τον τίτλο της συνομιλίας | |
senderPlaceholder |
string | Κείμενο placeholder στο πεδίο εισαγωγής μηνύματος | |
resetConversationTooltip |
string | Επεξήγηση εργαλείου στο κουμπί "επαναφορά συνομιλίας" | |
chatAlignment |
string (enum) | ∈ {left, right} |
Σε ποια πλευρά της οθόνης αγκιστρώνεται η συνομιλία |
launcherBottomMargin |
int | 0-500 |
Απόσταση του launcher από το κάτω άκρο (px) |
launcherSideMargin |
int | 0-500 |
Απόσταση του launcher από το πλευρικό άκρο (px) |
displayShadow |
boolean | Σκιά (drop-shadow) κάτω από το widget | |
customCss |
string | Ακατέργαστο CSS που εισάγεται στο iframe του widget | |
chatMessageLinkTarget |
string (enum) | ∈ {_blank, _self} |
Πώς ανοίγουν οι σύνδεσμοι μέσα στα μηνύματα του bot |
minimizedDisplayMode |
string (enum) | ∈ {icon, minified} |
Κατάσταση ελαχιστοποίησης: εικονίδιο launcher ή συμπαγής γραμμή αποστολέα |
chatDesktopWidthPx |
int | Πλάτος του widget σε υπολογιστή | |
chatDesktopHeightPx |
int | Ύψος του widget σε υπολογιστή | |
chatMobileSizePercent |
int | Μέγεθος του widget σε κινητά ως % του viewport | |
messageFontSize |
int | Μέγεθος γραμματοσειράς κειμένου μηνύματος (px) | |
showChatbotBubblesDesktop |
boolean | Εμφάνιση αιωρούμενων συννεφάκων προεπισκόπησης σε υπολογιστή | |
showChatbotBubblesMobile |
boolean | Εμφάνιση αιωρούμενων συννεφάκων προεπισκόπησης σε κινητά | |
chatbotBubblesDelaySeconds |
int | Καθυστέρηση πριν εμφανιστούν τα συννεφάκια προεπισκόπησης (δευτερόλεπτα) | |
launcherIconFullSize |
boolean | Απόδοση του προσαρμοσμένου εικονιδίου launcher από άκρη σε άκρη αντί με εσοχή | |
welcomeScreenEnabled |
boolean | Εμφάνιση της Οθόνης Καλωσορίσματος αντί για απευθείας μετάβαση στη συνομιλία | |
welcomeScreenQuestionsLabel |
string | Ετικέτα πάνω από τις προτεινόμενες ερωτήσεις στην οθόνη καλωσορίσματος | |
welcomeScreenHideHumanContactForm |
boolean | Απόκρυψη της ενέργειας φόρμας επικοινωνίας με εκπρόσωπο στην κεφαλίδα κατά την εμφάνιση της Οθόνης Καλωσορίσματος. Επανεμφανίζεται μετά το πρώτο μήνυμα του επισκέπτη. Τα bot που δημιουργήθηκαν πριν από τις 02-09-2026 έχουν από προεπιλογή την τιμή true |
|
welcomeScreenHideLiveChat |
boolean | Απόκρυψη της ενέργειας Live Chat στην κεφαλίδα κατά την εμφάνιση της Οθόνης Καλωσορίσματος. Επανεμφανίζεται μετά το πρώτο μήνυμα του επισκέπτη. Τα bot που δημιουργήθηκαν πριν από τις 02-09-2026 έχουν από προεπιλογή την τιμή true |
|
headerActionsLayout |
string | DROPDOWN |
Πώς προσφέρονται το Live Chat και η φόρμα επικοινωνίας με εκπρόσωπο στην κεφαλίδα της συνομιλίας: ICONS (ξεχωριστό εικονίδιο για το καθένα) ή DROPDOWN (ομαδοποιημένα στο μενού κεφαλίδας). Τα bot που δημιουργήθηκαν πριν από τις 02-09-2026 έχουν από προεπιλογή την τιμή ICONS |
stackSuggestedQuestions |
boolean | Κατακόρυφη στοίβαξη των προτεινόμενων ερωτήσεων (αντί για δίπλα-δίπλα) | |
suggestedQuestionsFontSize |
int | Μέγεθος γραμματοσειράς των κουμπιών προτεινόμενων ερωτήσεων (px) | |
suggestedQuestionsTextColor |
string (hex) | Χρώμα κειμένου των κουμπιών προτεινόμενων ερωτήσεων | |
suggestedQuestionsBackgroundColor |
string (hex) | Χρώμα φόντου των κουμπιών προτεινόμενων ερωτήσεων | |
autoOpenChat |
boolean | Αυτόματο άνοιγμα της συνομιλίας σε υπολογιστή | |
autoOpenChatOnMobiles |
boolean | Αυτόματο άνοιγμα της συνομιλίας σε κινητά | |
autoOpenChatDelay |
boolean | Χρήση καθυστέρησης πριν από το αυτόματο άνοιγμα | |
autoOpenChatDelaySeconds |
int | Καθυστέρηση αυτόματου ανοίγματος (δευτερόλεπτα) | |
simulateHumanTyping |
boolean | Διαχωρισμός της απάντησης του bot σε συννεφάκια με εφέ πληκτρολόγησης | |
simulateHumanTypingDelay |
int | 0-200 |
Καθυστέρηση μεταξύ των διαδοχικών μηνυμάτων (δευτερόλεπτα) |
footerMarkdown |
string | μέγιστο 255 | Προσαρμοσμένο markdown υποσέλιδου που εμφανίζεται κάτω από τη συνομιλία |
avatarUrl |
string | μόνο για ανάγνωση | Πλήρες δημόσιο URL του avatar. Για να το αλλάξετε, ανεβάστε το μέσω του τμήματος αρχείου avatar στο multipart |
Multipart σε POST/PATCH: avatar (τμήμα αρχείου). Τα σώματα GET / απόκρισης παραλείπουν το περιεχόμενο του αρχείου - μόνο το URL μεταδίδεται.
§ humanSupport
| Πεδίο | Τύπος | Περιορισμός | Περιγραφή |
|---|---|---|---|
enabled |
boolean | Διακόπτης ροής υποστήριξης από εκπρόσωπο | |
email |
string | απαιτείται (αυστηρός έλεγχος δημιουργίας) όταν enabled=true |
Διεύθυνση που λαμβάνει τα email υποστήριξης από εκπρόσωπο |
dialogMessage |
string | Μήνυμα παρότρυνσης που εμφανίζεται πάνω από τη φόρμα | |
thankYouMessage |
string | Επιβεβαίωση που εμφανίζεται μετά την υποβολή | |
emailMessageSubjectTemplate |
string | Πρότυπο θέματος για το email που αποστέλλεται στον εκπρόσωπο | |
emailMessageContentTemplate |
string | Πρότυπο κύριου μέρους για το email που αποστέλλεται στον εκπρόσωπο | |
emailPlaceholder |
string | Placeholder στο πεδίο εισαγωγής email | |
messagePlaceholder |
string | Placeholder στην περιοχή κειμένου μηνύματος | |
emailWithConversationContent |
boolean | Εάν είναι true, περιλαμβάνει το αντίγραφο της συνομιλίας στο σώμα του email | |
customFormId |
long | αναγνωριστικό (id) υπάρχουσας προσαρμοσμένης φόρμας | Αντικατάσταση της ενσωματωμένης φόρμας επικοινωνίας με προσαρμοσμένη φόρμα. Η τιμή null διατηρεί την ενσωματωμένη φόρμα |
customFormMapping |
string | συμβολοσειρά κωδικοποιημένη σε JSON | Αντιστοιχίζει τα πεδία της προσαρμοσμένης φόρμας στα πεδία email της υποστήριξης από εκπρόσωπο |
Το requirePolicyAccept βρίσκεται στο consent.humanSupportRequirePolicyAccept, όχι εδώ.
§ leadCollection
| Πεδίο | Τύπος | Περιορισμός | Περιγραφή |
|---|---|---|---|
enabled |
boolean | Διακόπτης φόρμας δυνητικών πελατών (lead form) | |
nameEnabled |
boolean | Συλλογή ονόματος | |
nameLabel |
string | Ετικέτα στο πεδίο εισαγωγής ονόματος | |
emailEnabled |
boolean | Συλλογή email | |
emailLabel |
string | απαιτείται (αυστηρός έλεγχος δημιουργίας) όταν enabled=true ΚΑΙ emailEnabled=true |
Ετικέτα στο πεδίο εισαγωγής email |
phoneEnabled |
boolean | Συλλογή τηλεφώνου | |
phoneLabel |
string | απαιτείται (αυστηρός έλεγχος δημιουργίας) όταν enabled=true ΚΑΙ phoneEnabled=true |
Ετικέτα στο πεδίο εισαγωγής τηλεφώνου |
leaveDetailsMessage |
string | απαιτείται (αυστηρός έλεγχος δημιουργίας) όταν enabled=true |
Μήνυμα που ενθαρρύνει τον επισκέπτη να αφήσει τα στοιχεία του |
thankYouMessage |
string | απαιτείται (αυστηρός έλεγχος δημιουργίας) όταν enabled=true |
Επιβεβαίωση που εμφανίζεται μετά την υποβολή |
requireBeforeNewConversation |
boolean | Εάν είναι true, η φόρμα πρέπει να υποβληθεί πριν ξεκινήσει η συνομιλία. Εάν είναι false, το AI αποφασίζει πότε θα εμφανίσει τη φόρμα |
|
emailNotificationEnabled |
boolean | Αποστολή email στον κάτοχο κάθε φορά που συλλέγεται ένα lead | |
emailNotificationAddress |
string | Παραλήπτης ειδοποίησης (από προεπιλογή το email του λογαριασμού) | |
emailWithConversationContent |
boolean | Εάν είναι true, περιλαμβάνει το αντίγραφο της συνομιλίας στην ειδοποίηση |
Κανόνας αυστηρού ελέγχου δημιουργίας μεταξύ πεδίων: το enabled=true απαιτεί τουλάχιστον ένα από τα emailEnabled ή phoneEnabled. Το requirePolicyAccept βρίσκεται στο consent.leadCollectionRequirePolicyAccept, όχι εδώ.
| customFormId | long | αναγνωριστικό υπάρχουσας προσαρμοσμένης φόρμας | Αντικατάσταση της ενσωματωμένης φόρμας υποψηφίων πελατών με προσαρμοσμένη φόρμα. Η τιμή null διατηρεί την ενσωματωμένη φόρμα |
| customFormMapping | string | συμβολοσειρά κωδικοποιημένη σε JSON | Αντιστοιχίζει τα πεδία της προσαρμοσμένης φόρμας σε όνομα / email / τηλέφωνο |
§ liveChat
| Πεδίο | Τύπος | Περιορισμός | Περιγραφή |
|---|---|---|---|
enabled |
boolean | Διακόπτης λειτουργίας Live Chat | |
infoMessage |
string | Επεξηγηματικό μήνυμα πριν από την παράδοση σε εκπρόσωπο | |
startMessage |
string | Μήνυμα που εμφανίζεται κατά την έναρξη της ζωντανής συνεδρίας | |
endMessage |
string | Μήνυμα που εμφανίζεται κατά τη λήξη της ζωντανής συνεδρίας | |
nameLabel |
string | Ετικέτα στο πεδίο εισαγωγής ονόματος στην προκαταρκτική φόρμα του live chat | |
emailLabel |
string | Ετικέτα στο πεδίο εισαγωγής email στην προκαταρκτική φόρμα του live chat | |
schedule |
string | συμβολοσειρά κωδικοποιημένη σε JSON (διακόπτες ημερών + from/to + timezone) |
Πρόγραμμα λειτουργίας live chat - δείτε "Δομημένα πεδία και εύρη" για την ακριβή μορφή |
outOfHoursMessage |
string | Μήνυμα που εμφανίζεται όταν το πρόγραμμα δείχνει ότι είστε εκτός ωραρίου | |
closeModalMessage |
string | Τίτλος του παραθύρου διαλόγου "κλείσιμο live chat;" | |
closeModalConfirmLabel |
string | Ετικέτα κουμπιού επιβεβαίωσης στο παράθυρο κλεισίματος | |
closeModalCancelLabel |
string | Ετικέτα κουμπιού ακύρωσης στο παράθυρο κλεισίματος | |
closeModalTooltipText |
string | Επεξήγηση εργαλείου στο στοιχείο τερματισμού συνομιλίας | |
operatorHasJoinedLabel |
string | Ετικέτα που εμφανίζεται όταν συνδέεται ένας εκπρόσωπος | |
operatorDidNotJoinInTimeLabel |
string | Ετικέτα που εμφανίζεται όταν κανένας εκπρόσωπος δεν συνδέεται εντός του χρονικού ορίου | |
waitingForOperatorToJoinLabel |
string | Ετικέτα που εμφανίζεται κατά την αναμονή για σύνδεση εκπροσώπου | |
waitingForOperatorSeconds |
int | Χρονικό όριο αναμονής ανάληψης από εκπρόσωπο (δευτερόλεπτα) | |
redirectToHumanSupportForm |
boolean | Εάν είναι true, γίνεται ανακατεύθυνση στη φόρμα υποστήριξης από εκπρόσωπο όταν δεν απαντήσει κανένας εκπρόσωπος | |
missedEmailEnabled |
boolean | προεπιλογή true |
Αποστολή email στον κάτοχο του bot όταν ένα αίτημα live chat έμεινε αναπάντητο. Σε παλαιότερα bots παραμένει μη ορισμένο, κάτι που ερμηνεύεται ως ενεργοποιημένο |
Το requirePolicyAccept βρίσκεται στο consent.liveChatRequirePolicyAccept, όχι εδώ.
§ consent
| Πεδίο | Τύπος | Περιορισμός | Περιγραφή |
|---|---|---|---|
newConversationRequirePolicyAccept |
boolean | Απαίτηση αποδοχής της πολιτικής απορρήτου πριν από την έναρξη νέας συνομιλίας | |
humanSupportRequirePolicyAccept |
boolean | Απαίτηση αποδοχής της πολιτικής απορρήτου πριν από την υποβολή της φόρμας υποστήριξης από εκπρόσωπο | |
leadCollectionRequirePolicyAccept |
boolean | Απαίτηση αποδοχής της πολιτικής απορρήτου πριν από την υποβολή της φόρμας συλλογής lead | |
liveChatRequirePolicyAccept |
boolean | Απαίτηση αποδοχής της πολιτικής απορρήτου πριν από την έναρξη συνεδρίας live chat | |
newConversationConsentDescription |
string | Εισαγωγικό κείμενο για την οθόνη συγκατάθεσης στην έναρξη της συνομιλίας | |
privacyPolicyConsentCheckboxLabel |
string | Ετικέτα δίπλα στο πλαίσιο επιλογής συγκατάθεσης (συνήθως περιέχει σύνδεσμο προς την πολιτική απορρήτου) |
§ whiteLabel
| Πεδίο | Τύπος | Περιορισμός | Περιγραφή |
|---|---|---|---|
hideRoboAssistLogo |
boolean | δυνατότητα White Label, υπόκειται στα όρια του λογαριασμού | Απόκρυψη του προεπιλεγμένου λογότυπου ChatLab στο υποσέλιδο |
whitelabelLogoLink |
string | δυνατότητα White Label, υπόκειται στα όρια του λογαριασμού | URL στο οποίο οδηγεί το προσαρμοσμένο λογότυπο του υποσέλιδου |
assignToCustomDomain |
boolean | ελέγχεται από τη λειτουργία CUSTOM_DOMAIN |
Φιλοξενία της συνομιλίας στον διαμορφωμένο προσαρμοσμένο τομέα (custom domain) |
whitelabelLogoUrl |
string | μόνο για ανάγνωση | Πλήρες δημόσιο URL του λογότυπου white-label. Για να το αλλάξετε, ανεβάστε το μέσω του τμήματος αρχείου whitelabel_logo στο multipart |
Multipart σε POST/PATCH: whitelabel_logo (τμήμα αρχείου). Τα σώματα GET / απόκρισης παραλείπουν το περιεχόμενο του αρχείου - μόνο το URL μεταδίδεται.
§ security
| Πεδίο | Τύπος | Περιορισμός | Περιγραφή |
|---|---|---|---|
allowedDomains |
string | Λίστα διαχωρισμένη με κόμματα τομέων στους οποίους επιτρέπεται η ενσωμάτωση του widget (κενό = καμία λίστα επιτρεπόμενων) | |
spamFilterEnabled |
boolean | Ενεργοποίηση του φίλτρου ανεπιθύμητων μηνυμάτων (spam) ανά bot για τα εισερχόμενα μηνύματα | |
countryFilterMode |
string | BLACKLIST ή WHITELIST |
Ο τρόπος ερμηνείας των λιστών χωρών. Οι ίδιες οι λίστες παραμένουν προσβάσιμες μόνο από διαχειριστές |
talkMessagesRateLimit |
int | >= 0, το 0 απενεργοποιεί |
Μέγιστος αριθμός μηνυμάτων χρήστη που επιτρέπονται στο παράθυρο ορίου ρυθμού |
talkMessagesRateLimitDurationSeconds |
int | >= 0 |
Διάρκεια παραθύρου ορίου ρυθμού (δευτερόλεπτα) |
talkMessagesRateLimitHitMessage |
string | Μήνυμα που εμφανίζεται στον επισκέπτη όταν συμπληρωθεί το όριο ρυθμού |
§ voice
| Πεδίο | Τύπος | Περιορισμός | Περιγραφή |
|---|---|---|---|
inputEnabled |
boolean | Δυνατότητα υπαγόρευσης μηνυμάτων από τον επισκέπτη (ομιλία σε κείμενο) | |
conversationEnabled |
boolean | απαιτεί τη λειτουργία φωνής στο πρόγραμμα | Ενεργοποίηση πλήρων φωνητικών συνομιλιών |
voiceId |
string | αναγνωριστικό φωνής ειδικό για τον πάροχο (π.χ. alloy) |
Ποια συνθετική φωνή ομιλεί |
model |
string | π.χ. GPT-REALTIME-MINI, GEMINI-LIVE, ELEVENLABS-* |
Φωνητικό μοντέλο. Χρεώνεται ανά λεπτό, οι τιμές διαφέρουν ανά μοντέλο |
turnDetection |
string | ειδικό για τον πάροχο | Λειτουργία εναλλαγής ομιλητή |
audioPrompt |
string | Πρόσθετο system prompt που χρησιμοποιείται μόνο για φωνητικές αποκρίσεις | |
welcomeMessage |
string | Εκφωνούμενη αρχική ατάκα | |
language |
string | κωδικός γλώσσας | Κύρια γλώσσα φωνής |
additionalLanguages |
string | κωδικοί γλωσσών διαχωρισμένοι με κόμμα | Πρόσθετες γλώσσες που δέχεται ο φωνητικός πράκτορας |
maxDurationSeconds |
int | Αυστηρό ανώτατο όριο διάρκειας για μία μεμονωμένη φωνητική συνομιλία | |
maxDurationMessage |
string | Μήνυμα που εμφανίζεται κατά την επίτευξη του ανώτατου ορίου |
§ multilingual
| Πεδίο | Τύπος | Περιορισμός | Περιγραφή |
|---|---|---|---|
enabled |
boolean | Διακόπτης πολύγλωσσης λειτουργίας | |
mode |
string | AUTODETECT ή λειτουργία σταθερής λίστας |
Πώς επιλέγει το bot τη γλώσσα απάντησης |
baseLanguage |
string | κωδικός γλώσσας | Γλώσσα στην οποία έχουν συνταχθεί τα κείμενα του ίδιου του bot |
languages |
string | κωδικοί γλωσσών διαχωρισμένοι με κόμμα | Γλώσσες που προσφέρονται στον επισκέπτη |
knowledgeLanguageMode |
string | Πώς αντιμετωπίζονται οι γνώσεις σε άλλες γλώσσες | |
knowledgeLanguageFallback |
string | κωδικός γλώσσας | Γλώσσα που χρησιμοποιείται όταν δεν βρίσκεται αντιστοιχία |
§ advanced
| Πεδίο | Τύπος | Περιορισμός | Περιγραφή |
|---|---|---|---|
model |
string | υπόκειται στα όρια του λογαριασμού, δείτε "Μοντέλα κειμένου AI" παραπάνω | Αναγνωριστικό LLM (π.χ. 5-MINI) |
temperature |
decimal | 0.0-1.0 |
Θερμοκρασία δειγματοληψίας (αντιστοιχεί στο ρυθμιστικό του περιβάλλοντος χρήστη) |
chatContextSize |
int | ∈ {8000, 16000, 32000}, προσαρμόζεται σιωπηρά στο όριο του λογαριασμού σας |
Παράθυρο διακριτικών (tokens) για το ιστορικό συνομιλίας |
botMessagesLimit |
long | 0 ή πολλαπλάσιο του 1000 (π.χ. 1000, 2000, 10000) |
Μέγιστος αριθμός απαντήσεων bot ανά συνομιλία (0 = χωρίς όριο) |
internalLocale |
string | κωδικός τοπικών ρυθμίσεων στη μορφή ll_CC |
Τοπικές ρυθμίσεις για τις ετικέτες πλαισίου του widget (ξεχωριστό από το role.language) |
productsViewEnabled |
boolean | Εάν είναι true, προβάλλει τις Offer Cards του ηλεκτρονικού εμπορίου μέσα στη συνομιλία | |
includeProductsInKnowledgeBase |
boolean | Εάν είναι true, ευρετηριάζει τον κατάλογο προϊόντων ως μέρος της βάσης γνώσεων |
Εκτός εμβέλειας του API
Η διεπαφή διαχειριστή περιλαμβάνει ορισμένες περιοχές που σκόπιμα δεν εκτίθενται σε αυτήν την έκδοση του Management API:
- Καρτέλα Flow (Ροή) - ο οπτικός επεξεργαστής Flow Editor (στάδια και μεταβάσεις). Δεν εκτίθεται μέσω του Management API.
- Καρτέλα Actions (Ενέργειες) - διαχειριζόμενες ενσωματώσεις ηλεκτρονικού εμπορίου / κρατήσεων, AI Search και προσαρμοσμένες συναρτήσεις API. Η κλήση εργαλείων δεν αποτέλεσε ποτέ μέρος του Management API.
- Το ίδιο το εργαλείο δημιουργίας προσαρμοσμένων φορμών - η δημιουργία και η επεξεργασία προσαρμοσμένων φορμών δεν εκτίθενται. Μπορείτε, ωστόσο, να συνδέσετε μια υπάρχουσα φόρμα σε ένα bot μέσω των
leadCollection.customFormIdκαιhumanSupport.customFormId. - Προσαρμοσμένα εικονίδια ανοίγματος / κλεισίματος συνομιλίας -
customLauncherIconVisible,openChatIcon,closeChatIcon. Το API εκθέτει μόνο τα κύρια τμήματα multipartavatarκαιwhitelabel_logo. - Λίστες IP και χωρών - οι ίδιες οι εγγραφές είναι προσβάσιμες μόνο από διαχειριστές. Εκτίθεται μόνο η λειτουργία ερμηνείας, μέσω του
security.countryFilterMode.
Endpoints
POST /v1/management/bots
Δημιουργήστε ένα νέο bot. Γίνονται δεκτοί δύο ισοδύναμοι τύποι Content-Type. Επιλέξτε όποιον σας εξυπηρετεί καλύτερα.
Λειτουργία A - απλό JSON (συνιστάται όταν δεν χρειάζεται να ανεβάσετε avatar / λογότυπο στο ίδιο αίτημα):
Content-Type: application/json- Το σώμα του αιτήματος είναι το JSON των ρυθμίσεων του bot (χωρίς περίβλημα
data) - Τα αρχεία (avatar / λογότυπο) μπορούν να μεταφορτωθούν αργότερα μέσω ενός δεύτερου αιτήματος
PATCHχρησιμοποιώντας τη λειτουργία B
Λειτουργία B - multipart/form-data (χρησιμοποιήστε τη για μεταφόρτωση αρχείων στο ίδιο αίτημα):
Content-Type: multipart/form-data; boundary=...- Μέρος JSON
data(υποχρεωτικό,Content-Type: application/json) - ρυθμίσεις παραμέτρων του bot στην ένθετη μορφή που περιγράφεται παραπάνω - Μέρος αρχείου
avatar(προαιρετικό) - εικόνα avatar του bot - Μέρος αρχείου
whitelabel_logo(προαιρετικό) - λογότυπο White Label (ισχύει μόνο εάν ο λογαριασμός σας περιλαμβάνει white-labelling)
Μόνο το πεδίο name είναι υποχρεωτικό στο JSON. Όλα τα υπόλοιπα πεδία λαμβάνουν την ίδια προεπιλεγμένη τιμή που θα όριζε ο οδηγός του περιβάλλοντος διαχείρισης.
Πλήρες σώμα αιτήματος
Αυτό είναι το μέγιστο JSON data - με συμπληρωμένη κάθε ενότητα. Στείλτε μόνο τις ενότητες που σας ενδιαφέρουν. Όλα τα υπόλοιπα στοιχεία λαμβάνουν προεπιλεγμένες τιμές.
{
"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
}
}
Κανόνες επικύρωσης με τα αντίστοιχα μηνύματα σφάλματος:
name- υποχρεωτικό, έως 150 χαρακτήρεςadvanced.temperature- μεταξύ0.0και1.0chatMemory.summariesToKnowledgeRatio- ακέραιος μεταξύ10και90(ποσοστό, βήμα10)appearance.launcherBottomMargin,appearance.launcherSideMargin- μεταξύ0και500appearance.footerMarkdown- έως 255 χαρακτήρες- Εάν
humanSupport.enabled=true, απαιτείται να έχει οριστεί τοhumanSupport.email - Εάν
leadCollection.enabled=true, απαιτείται τουλάχιστον ένα από ταleadCollection.emailEnabledήleadCollection.phoneEnabledνα είναι true. Όποιο κανάλι είναι ενεργό απαιτεί επίσης την ετικέτα του, καθώς και ταleaveDetailsMessageκαιthankYouMessage - Τα πεδία με ανώτατο όριο (
advanced.chatContextSize,advanced.botMessagesLimitκ.λπ.) περιορίζονται αυτόματα στα όρια του λογαριασμού σας
Τα πεδία των οποίων η τιμή είναι null στον διακομιστή παραλείπονται από το σώμα JSON - διαβιβάζονται μόνο πεδία με μη μηδενικές (non-null) τιμές.
Πλήρες σώμα απόκρισης (201)
Ίδια μορφή με το αίτημα, συν το μπλοκ μόνο για ανάγνωση meta και το μοναδικό κλειδί apiKey στο ανώτατο επίπεδο. Οι διευθύνσεις URL αρχείων μόνο για ανάγνωση (appearance.avatarUrl, whiteLabel.whitelabelLogoUrl) συμπληρώνονται από τον διακομιστή όταν έχουν μεταφορτωθεί τα αντίστοιχα τμήματα 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"
}
Το πεδίο apiKey εμφανίζεται μόνο κατά τη δημιουργία - είναι το νεοδημιουργηθέν κλειδί Bot Talk API που συνδέεται με το νέο bot. Το κείμενο εμφανίζεται μία φορά και δεν μπορεί να ανακτηθεί αργότερα από το API. Αποθηκεύστε το αμέσως στην πλευρά σας.
Η κεφαλίδα απόκρισης Location περιέχει τη διεύθυνση URL του νέου bot (/v1/management/bots/{id}).
Παραδείγματα curl
Λειτουργία A - απλό JSON (η απλούστερη):
curl -X POST https://api.chatlab.com/aichat/v1/management/bots \
-H "Authorization: Bearer mk_..." \
-H "Content-Type: application/json" \
-d '{"name":"Helpdesk Bot","conversation":{"welcomeMessage":"Hi!"}}'
Λειτουργία B - multipart με avatar:
curl -X POST https://api.chatlab.com/aichat/v1/management/bots \
-H "Authorization: Bearer mk_..." \
-F 'data={"name":"Helpdesk Bot","conversation":{"welcomeMessage":"Hi!"}};type=application/json' \
-F 'avatar=@./avatar.png'
GET /v1/management/bots/{bot_id}
Επιστρέφει τις τρέχουσες ρυθμίσεις παραμέτρων ενός bot που σας ανήκει.
Παράδειγμα curl
curl https://api.chatlab.com/aichat/v1/management/bots/4287 \
-H "Authorization: Bearer mk_..."
Πλήρες σώμα απόκρισης (200)
Ίδια μορφή με την απόκριση POST, χωρίς το εφάπαξ apiKey. Περιλαμβάνεται το μπλοκ meta. Επιστρέφει 404 not_found_error εάν το bot δεν υπάρχει ή δεν ανήκει στον λογαριασμό σας.
Το τρέχον avatar και το λογότυπο White Label εμφανίζονται ως πλήρεις διευθύνσεις URL μόνο για ανάγνωση (appearance.avatarUrl, whiteLabel.whitelabelLogoUrl) - με βάση τον ίδιο συνδυασμό πρωτοκόλλου, διακομιστή και διαδρομής (scheme + host + context path) που εξυπηρέτησε αυτό το αίτημα. Λάβετε τα byte εκτελώντας απευθείας αίτημα GET σε αυτές τις διευθύνσεις URL. Για να αντικαταστήσετε οποιοδήποτε από τα δύο αρχεία, ανεβάστε ένα νέο μέσω του μέρους multipart avatar / whitelabel_logo στο PATCH. Αυτά τα πεδία URL αγνοούνται εάν σταλούν στο σώμα ενός αιτήματος.
{
"name": "Helpdesk Bot",
"role": {
"rawPrompt": "You are a friendly support assistant for Acme Inc.",
"role": "CUSTOMER_SUPPORT",
"language": "English",
"responseLength": "Normal",
"websiteAddress": "https://acme.com",
"companyDescription": "Acme sells industrial widgets."
},
"conversation": {
"welcomeMessage": "Hi! How can I help today?",
"queryRefinementEnabled": true,
"conversationContinuityEnabled": true,
"conversationRatingEnabled": true,
"positiveRatingTooltip": "Helpful",
"negativeRatingTooltip": "Not helpful",
"suggestedQuestions": "What are your hours?\nHow do I cancel?\nWhere is my order?",
"dynamicSuggestedFollowups": true,
"dynamicFollowupsAutoIcons": true
},
"chatMemory": {
"enabled": true,
"summaryConversationsEnabled": true,
"conversationSummaryPrompt": "Summarize this conversation in 3 sentences.",
"clientSummaryPrompt": "Summarize what we know about this customer.",
"clientSummaryPromptType": "DEFAULT",
"conversationSummaryPromptType": "DEFAULT",
"summariesToKnowledgeRatio": 50
},
"appearance": {
"launcherColor": "#1A73E8",
"headerColor": "#1A73E8",
"titleColor": "#FFFFFF",
"subtitleColor": "#FFFFFF",
"clientMessageBubbleColor": "#000000",
"clientMessageTextColor": "#FFFFFF",
"responseMessageBubbleColor": "#F4F4F4",
"responseMessageTextColor": "#000000",
"chatSubheader": "AI support assistant",
"senderPlaceholder": "Type a message...",
"resetConversationTooltip": "Restart conversation",
"chatAlignment": "right",
"launcherBottomMargin": 20,
"launcherSideMargin": 20,
"displayShadow": true,
"customCss": ".rcw-conversation-container { border-radius: 16px; }",
"chatMessageLinkTarget": "_blank",
"minimizedDisplayMode": "icon",
"chatDesktopWidthPx": 400,
"chatDesktopHeightPx": 600,
"chatMobileSizePercent": 100,
"messageFontSize": 14,
"showChatbotBubblesDesktop": true,
"showChatbotBubblesMobile": false,
"chatbotBubblesDelaySeconds": 5,
"welcomeScreenEnabled": false,
"welcomeScreenQuestionsLabel": "Quick start",
"welcomeScreenHideHumanContactForm": false,
"welcomeScreenHideLiveChat": false,
"headerActionsLayout": "DROPDOWN",
"stackSuggestedQuestions": false,
"suggestedQuestionsFontSize": 14,
"suggestedQuestionsTextColor": "#000000",
"suggestedQuestionsBackgroundColor": "#F4F4F4",
"autoOpenChat": false,
"autoOpenChatOnMobiles": false,
"autoOpenChatDelay": false,
"autoOpenChatDelaySeconds": 5,
"simulateHumanTyping": true,
"simulateHumanTypingDelay": 5,
"footerMarkdown": "Powered by Acme",
"avatarUrl": "https://api.chatlab.com/aichat/content/avatar_a8f3b2c1_2026060110.png"
},
"humanSupport": {
"enabled": true,
"email": "support@acme.com",
"dialogMessage": "Leave us a message and we will get back to you.",
"thankYouMessage": "Thanks - we received your message.",
"emailMessageSubjectTemplate": "[Acme support] New message from {customerName}",
"emailMessageContentTemplate": "{message}\n\n - \n{conversationTranscript}",
"emailPlaceholder": "your@email.com",
"messagePlaceholder": "How can we help?",
"emailWithConversationContent": true
},
"leadCollection": {
"enabled": true,
"nameEnabled": true,
"nameLabel": "Your name",
"emailEnabled": true,
"emailLabel": "Email",
"phoneEnabled": false,
"phoneLabel": "Phone",
"leaveDetailsMessage": "Please leave your details and we will get in touch.",
"thankYouMessage": "Thanks - we will be in touch shortly.",
"requireBeforeNewConversation": false,
"emailNotificationEnabled": true,
"emailNotificationAddress": "leads@acme.com",
"emailWithConversationContent": true
},
"liveChat": {
"enabled": false,
"infoMessage": "Connecting you with a human agent...",
"startMessage": "You are now chatting with our team.",
"endMessage": "Live chat has ended.",
"nameLabel": "Your name",
"emailLabel": "Email",
"schedule": "{\"monday\":{\"enabled\":true,\"from\":\"9:00\",\"to\":\"17:00\"},\"tuesday\":{\"enabled\":true,\"from\":\"9:00\",\"to\":\"17:00\"},\"wednesday\":{\"enabled\":true,\"from\":\"9:00\",\"to\":\"17:00\"},\"thursday\":{\"enabled\":true,\"from\":\"9:00\",\"to\":\"17:00\"},\"friday\":{\"enabled\":true,\"from\":\"9:00\",\"to\":\"17:00\"},\"saturday\":{\"enabled\":false,\"from\":\"9:00\",\"to\":\"17:00\"},\"sunday\":{\"enabled\":false,\"from\":\"9:00\",\"to\":\"17:00\"},\"timezone\":\"Europe/Warsaw\"}",
"outOfHoursMessage": "We are currently offline.",
"closeModalMessage": "End the live chat session?",
"closeModalConfirmLabel": "Yes, end",
"closeModalCancelLabel": "Cancel",
"closeModalTooltipText": "End live chat",
"operatorHasJoinedLabel": "An agent has joined.",
"operatorDidNotJoinInTimeLabel": "No agent available right now.",
"waitingForOperatorToJoinLabel": "Waiting for an agent...",
"waitingForOperatorSeconds": 60,
"redirectToHumanSupportForm": true
},
"consent": {
"newConversationRequirePolicyAccept": false,
"humanSupportRequirePolicyAccept": false,
"leadCollectionRequirePolicyAccept": true,
"liveChatRequirePolicyAccept": false,
"newConversationConsentDescription": "By starting a conversation you agree to our terms.",
"privacyPolicyConsentCheckboxLabel": "I have read and accepted the privacy policy."
},
"whiteLabel": {
"hideRoboAssistLogo": false,
"whitelabelLogoLink": "https://acme.com",
"assignToCustomDomain": false,
"whitelabelLogoUrl": "https://api.chatlab.com/aichat/content/custom_logo_4287_2026060110.png"
},
"security": {
"allowedDomains": "acme.com,support.acme.com",
"spamFilterEnabled": true,
"talkMessagesRateLimit": 30,
"talkMessagesRateLimitDurationSeconds": 60,
"talkMessagesRateLimitHitMessage": "Please slow down."
},
"advanced": {
"model": "5-MINI",
"temperature": 0.4,
"chatContextSize": 16000,
"botMessagesLimit": 1000,
"internalLocale": "en_US",
"productsViewEnabled": false
},
"meta": {
"id": 4287,
"createdAt": "2026-06-01T10:11:02Z",
"updatedAt": "2026-06-01T11:02:19Z"
}
}
Κλωνοποίηση ενός bot
Το σώμα αιτήματος του POST /v1/management/bots και το σώμα απόκρισης του GET /v1/management/bots/{bot_id} μοιράζονται την ίδια δομή, επομένως η κλωνοποίηση είναι μια διαδικασία τριών βημάτων: εκτελέστε GET στο bot προέλευσης, αφαιρέστε τα πεδία ταυτότητας που διαχειρίζεται ο διακομιστής, εκτελέστε POST στο αποτέλεσμα.
1. Εκτελέστε GET στο bot προέλευσης.
curl https://api.chatlab.com/aichat/v1/management/bots/4287 \
-H "Authorization: Bearer mk_..." \
-o source-bot.json
2. Αφαιρέστε το ανώτατου επιπέδου block meta. Το αντικείμενο meta (id, createdAt, updatedAt) διαχειρίζεται από τον διακομιστή και είναι μόνο για ανάγνωση - αν το αφήσετε στο σώμα του POST δεν προκαλείται πρόβλημα (ο διακομιστής το αγνοεί), αλλά η κατάργησή του καθιστά την πρόθεση σαφή και διατηρεί το payload καθαρό. Προαιρετικά, επεξεργαστείτε το name ώστε ο κλώνος να ξεχωρίζει από το αρχικό bot.
jq 'del(.meta) | .name = "Helpdesk Bot (clone)"' source-bot.json > clone-body.json
3. Κάντε POST το εκκαθαρισμένο σώμα για να δημιουργήσετε τον κλώνο. Ανατρέξτε στην τεκμηρίωση του 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
Η απόκριση περιέχει το meta.id του νέου bot καθώς και ένα πρόσφατα παραγόμενο apiKey (το κλειδί Bot Talk για τον κλώνο). Το απλό κείμενο του apiKey επιστρέφεται μόνο σε αυτήν την απόκριση δημιουργίας - αντιγράψτε το πριν απορρίψετε το σώμα της απόκρισης, καθώς δεν μπορεί να ανακτηθεί αργότερα.
Δύο επισημάνσεις:
- Τα αρχεία δεν κλωνοποιούνται. Τα πεδία
appearance.avatarUrlκαιwhiteLabel.whitelabelLogoUrlείναι μόνο για ανάγνωση και οδηγούν στα αρχεία του bot προέλευσης. Αν χρειάζεστε το ίδιο avatar ή white-label λογότυπο στον κλώνο, κατεβάστε τα δεδομένα από τα αρχικά URL και μεταφορτώστε τα ως multipart μέρηavatar/whitelabel_logo- είτε κατά τη δημιουργία με POST (Mode B) είτε με ένα επακόλουθο PATCH. - Τα κλειδιά Bot Talk δεν κλωνοποιούνται. Κάθε bot έχει τη δική του ομάδα κλειδιών Bot Talk. Το μοναδικό
apiKeyπου επιστρέφεται από το αίτημα POST δημιουργίας είναι το μόνο που παράγεται αυτόματα. Δημιουργήστε πρόσθετα κλειδιά από την καρτέλα API (API tab) του bot, εάν χρειάζεται.
PATCH /v1/management/bots/{bot_id}
Ενημερώστε ένα ή περισσότερα πεδία σε ένα bot που σας ανήκει. Μόνο οι ενότητες / πεδία που υπάρχουν στο JSON τροποποιούνται. Οτιδήποτε παραλείπεται (ή αποστέλλεται ως null) παραμένει ανέπαφο. Ισχύουν σημασιολογικοί κανόνες μερικής ενημέρωσης ανά πεδίο εντός μιας απεσταλμένης ενότητας.
Γίνονται δεκτοί δύο ισοδύναμοι τύποι περιεχομένου Content-Type (ίδιοι με το POST):
Mode A - απλό JSON (συνιστάται όταν ενημερώνονται μόνο ρυθμίσεις):
Content-Type: application/json- Το σώμα του αιτήματος είναι το JSON του patch (χωρίς περίβλημα
data)
Mode B - multipart/form-data (χρησιμοποιήστε το κατά τη μεταφόρτωση αρχείων):
- Μέρος JSON
data(προαιρετικό) - το patch. Στείλτε το μόνο εάν θέλετε να αλλάξετε πεδία. Παραλείψτε το εντελώς εάν θέλετε μόνο να ανεβάσετε avatar ή λογότυπο. - Μέρος αρχείου
avatar(προαιρετικό) - αντικαθιστά το avatar - Μέρος αρχείου
whitelabel_logo(προαιρετικό) - αντικαθιστά το white-label λογότυπο (ισχύει μόνο εάν ο λογαριασμός σας περιλαμβάνει white-labelling)
Και τα τρία μέρη είναι προαιρετικά στο PATCH, αλλά τουλάχιστον ένα πρέπει να υπάρχει για να έχει νόημα η κλήση.
Πλήρες σώμα αιτήματος (μέγιστη επιφάνεια)
Οποιοδήποτε πεδίο γίνεται δεκτό από το POST /v1/management/bots μπορεί επίσης να σταλεί εδώ. Το παρακάτω παράδειγμα περιλαμβάνει την πλήρη επιφάνεια. Στην πράξη στέλνετε μόνο τα κλειδιά που θέλετε να αλλάξετε (δείτε το "Ελάχιστη μερική ενημέρωση" παρακάτω) - κάθε κλειδί που παραλείπεται (ή αποστέλλεται ως null) αφήνει την αποθηκευμένη τιμή ανέπαφη.
{
"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
}
}
Ελάχιστη μερική ενημέρωση
Εκτελέστε PATCH σε ένα μόνο πεδίο στέλνοντας ακριβώς τα κλειδιά που θέλετε να αλλάξετε - όλα τα υπόλοιπα διατηρούνται.
{
"appearance": {
"launcherColor": "#abcdef"
}
}
Παραδείγματα Curl
Mode A - απλό JSON (το απλούστερο):
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"}}'
Mode B - multipart (κατά την αντικατάσταση avatar / λογοτύπου):
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'
Mode B - αντικατάσταση μόνο του avatar (χωρίς αλλαγές πεδίων):
curl -X PATCH https://api.chatlab.com/aichat/v1/management/bots/4287 \
-H "Authorization: Bearer mk_..." \
-F 'avatar=@./new-avatar.png'
Σώμα απόκρισης (200)
Ίδια δομή με το GET /v1/management/bots/{bot_id} - η πλήρης διαμόρφωση του bot μετά την εφαρμογή του patch, συμπεριλαμβανομένου του block meta. Δεν υπάρχει πεδίο apiKey. Επιστρέφει 404 not_found_error εάν το bot δεν υπάρχει ή δεν ανήκει στον λογαριασμό σας.
Το παρακάτω παράδειγμα δείχνει την απόκριση μετά την εφαρμογή του παραπάνω patch Πλήρες σώμα αιτήματος (μέγιστη επιφάνεια) στο bot από το παράδειγμα GET - τα τροποποιημένα πεδία αντικατοπτρίζουν τις νέες τιμές, τα ανέπαφα πεδία διατηρούνται και το meta.updatedAt ενημερώνεται.
{
"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.
Σώμα απόκρισης (200)
{
"subscriptionType": "standard",
"messages": {"used": 4123, "limit": 11000, "remaining": 6877},
"bots": {"used": 3, "limit": 5, "remaining": 2}
}
- Το
subscriptionTypeείναι ένα αναγνωριστικό με πεζά γράμματα του τρέχοντος πλάνου του λογαριασμού (π.χ.standardστο παράδειγμα). Τα πλάνα προέρχονται από έναν δυναμικό κατάλογο, επομένως το ακριβές σύνολο αναγνωριστικών μπορεί να αλλάξει με την πάροδο του χρόνου καθώς τα πλάνα μετονομάζονται ή προστίθενται νέα - αντιμετωπίστε το ως μια αδιαφανή συμβολοσειρά (opaque string) και όχι ως σταθερό enum. - Τα πεδία
messages.used/limit/remainingαντιπροσωπεύουν τα credits μηνυμάτων της τρέχουσας περιόδου χρέωσης. - Τα πεδία
bots.used/limit/remainingμετρούν τα ενεργά bot σε σχέση με το όριο bot του λογαριασμού σας.
Επικεφαλίδες ορίων ρυθμού (rate limit headers)
Οι αποκρίσεις που φτάνουν στο στάδιο του ορίου ρυθμού (δηλ. πέρασαν επιτυχώς ο έλεγχος ταυτότητας και η λίστα επιτρεπόμενων IP) περιλαμβάνουν:
X-RateLimit-Limit: 10
X-RateLimit-Remaining: 7
X-RateLimit-Reset: 1715430000
X-RateLimit-Limit- το ανώτατο όριο ανά κλειδί που εφαρμόστηκε πραγματικά σε αυτήν την κλήση (10 από προεπιλογή, ή το ρυθμισμένο σαςrateLimitPerMinuteεάν είναι χαμηλότερο).X-RateLimit-Remaining- τα διακριτικά (tokens) που απομένουν στον κάδο αμέσως μετά από αυτήν την κλήση.X-RateLimit-Reset- δευτερόλεπτα εποχής Unix (Unix epoch seconds) κατά τα οποία γίνεται διαθέσιμο το επόμενο διακριτικό (όχι πλήρης επαναφορά του κάδου - ο κάδος γεμίζει συνεχώς). Όταν ο κάδος είναι γεμάτος, αυτή είναι η τρέχουσα ώρα.
Στις αποκρίσεις 429 rate_limit_exceeded, ορίζεται επίσης η επικεφαλίδα Retry-After, εκφρασμένη σε ακέραια δευτερόλεπτα μέχρι να απελευθερωθεί τουλάχιστον ένα διακριτικό.
Τα σφάλματα πριν από τον έλεγχο ταυτότητας (401 missing_api_key, 401 invalid_api_key, 403 ip_blocked) και το 403 ip_not_whitelisted δεν φέρουν τις επικεφαλίδες X-RateLimit-* - ο περιοριστής ρυθμού ελέγχεται μόνο αφού επιτύχουν ο έλεγχος ταυτότητας και οι έλεγχοι IP.
Μορφή σφαλμάτων
Το ίδιο περίβλημα (envelope) με το Bot Talk API:
{
"error": {
"type": "permission_error",
"code": "key_type_not_allowed",
"message": "This endpoint requires a MANAGEMENT API key.",
"param": null
}
}
Τα σφάλματα επικύρωσης χρησιμοποιούν το code: "invalid_parameter" και προσθέτουν τη διαδρομή του πεδίου που απέτυχε στην αρχή του μηνύματος, ώστε να είναι εύκολος ο εντοπισμός του προβληματικού τμήματος:
{
"error": {
"type": "invalid_request_error",
"code": "invalid_parameter",
"message": "humanSupport.email Human support email is required when humanSupport.enabled=true"
}
}
Οι μη έγκυρες τιμές για πεδία τύπου enum / κλειστού συνόλου (π.χ. chatMemory.clientSummaryPromptType = "BOGUS") περιλαμβάνουν τη διαδρομή του πεδίου, την τιμή που απορρίφθηκε και τη λίστα των επιτρεπόμενων τιμών:
{
"error": {
"type": "invalid_request_error",
"code": "invalid_parameter",
"message": "chatMemory.clientSummaryPromptType 'BOGUS' is not a valid value. Allowed: CUSTOM, DEFAULT"
}
}
Σχετικά
Για τελικά σημεία συνομιλιών και ροή SSE, δείτε το Bot Talk API.