API reference
Bots API
Create, configure and embed assistants: generate one from a plain-language description or a scan of a website, rehearse it before it goes live, restore an earlier version, and fetch the snippet a site pastes in.
Endpoints
21 operations, each with its parameters, schemas and an example request on its own page.
- get/api/botsList bots
- post/api/botsCreate bot
- post/api/bots/generateGenerate bot — Builds a fully-configured bot from one plain-language description.
- get/api/bots/modelsAvailable models — Models this org's plan may select, with measured characteristics.
- post/api/bots/onboarding/rehearseRehearse blueprint — Shows what a candidate assistant would say, before anything is live.
- post/api/bots/onboarding/scanScan website — Reads a business's website, best pages first.
- post/api/bots/onboarding/variantsGenerate variants — Three configurations to choose between.
- get/api/bots/{bot_id}Get bot
- patch/api/bots/{bot_id}Update bot
- delete/api/bots/{bot_id}Delete bot — Soft delete: the bot goes offline immediately and is purged after the retention window, so an accidental…
- post/api/bots/{bot_id}/duplicateDuplicate bot
- get/api/bots/{bot_id}/embedGet embed — The snippet a customer pastes, in two forms.
- get/api/bots/{bot_id}/funnelGet funnel — Impressions, opens and abandonment - the funnel above the first message.
- post/api/bots/{bot_id}/rotate-keyRotate key — Issues a new embed key. Every existing embed of this bot stops working.
- post/api/bots/{bot_id}/suggest-improvementsSuggest improvements — Reviews the questions this bot answered badly and proposes fixes.
- post/api/bots/{bot_id}/testTest message — Sends one message through the same retrieval and generation path the widget uses, without creating a…
- post/api/bots/{bot_id}/theme/avatarUpload avatar — Uploads the assistant's avatar and points the theme at it.
- delete/api/bots/{bot_id}/theme/avatarDelete avatar — Removes the avatar and clears the theme field.
- post/api/bots/{bot_id}/theme/generateGenerate theme — A palette from a sentence, or from the customer's own website.
- get/api/bots/{bot_id}/versionsList versions
- post/api/bots/{bot_id}/versions/{version}/restoreRestore version
Authentication
Every call here needs Authorization: Bearer with a key from the dashboard — Authentication covers keys and scopes.
Objects returned
The models these endpoints send back, with every field. Open one to read it.
PaginatedResponse_BotRead_6 fields
itemsarray of BotReadrequired34 fields · BotRead
allowed_domainsarray of string | nullrequiredcontact_fields_configarray of anyrequiredcreated_atstring (date-time)requireddescriptionstring | nullrequireddirectory_configobject | nullrequiredfallback_messagestring | nullrequiredhandoff_enabledbooleanrequiredidstringrequiredindexed_chunk_countintegerrequiredis_publicbooleanrequiredlanguagestringrequiredlast_errorstring | nullrequiredlead_capture_configobject | nullrequiredllm_providerLLMProviderTyperequiredplatformuses the credentials this deployment is configured with;byok("bring your own key") uses the tenant's own Anthropic key;customposts to an owner-supplied OpenAI-compatible endpoint.One of: platform, byok, custom
max_tokensintegerrequiredmodelstring | nullrequiredmonthly_message_capinteger | nullrequirednamestringrequiredorg_idstringrequiredpublic_keystringrequiredrate_limit_per_minuteintegerrequiredstarter_questionsarray of stringrequiredstatusBotStatusrequiredOne of: draft, active, paused, archived
strict_kb_modebooleanrequiredsystem_promptstringrequiredtemperaturenumberrequiredthinking_enabledbooleanrequiredtotal_conversationsintegerrequiredtotal_messagesintegerrequiredupdated_atstring (date-time)requiredwelcome_messagestring | nullrequiredwidget_themeobjectrequiredcustom_endpoint_configobject | nullhas_api_keybooleanDefault: false
pageintegerrequiredpage_sizeintegerrequiredtotalintegerrequiredhas_morebooleanDefault: false
next_cursorstring | null
BotRead34 fields
allowed_domainsarray of string | nullrequiredcontact_fields_configarray of anyrequiredcreated_atstring (date-time)requireddescriptionstring | nullrequireddirectory_configobject | nullrequiredfallback_messagestring | nullrequiredhandoff_enabledbooleanrequiredidstringrequiredindexed_chunk_countintegerrequiredis_publicbooleanrequiredlanguagestringrequiredlast_errorstring | nullrequiredlead_capture_configobject | nullrequiredllm_providerLLMProviderTyperequiredplatformuses the credentials this deployment is configured with;byok("bring your own key") uses the tenant's own Anthropic key;customposts to an owner-supplied OpenAI-compatible endpoint.One of: platform, byok, custom
max_tokensintegerrequiredmodelstring | nullrequiredmonthly_message_capinteger | nullrequirednamestringrequiredorg_idstringrequiredpublic_keystringrequiredrate_limit_per_minuteintegerrequiredstarter_questionsarray of stringrequiredstatusBotStatusrequiredOne of: draft, active, paused, archived
strict_kb_modebooleanrequiredsystem_promptstringrequiredtemperaturenumberrequiredthinking_enabledbooleanrequiredtotal_conversationsintegerrequiredtotal_messagesintegerrequiredupdated_atstring (date-time)requiredwelcome_messagestring | nullrequiredwidget_themeobjectrequiredcustom_endpoint_configobject | nullhas_api_keybooleanDefault: false
BotGenerateResponse4 fields
blueprintBotBlueprintrequiredThe generated configuration, before it becomes a bot.
15 fields · BotBlueprint
contact_fields_configarray of anyrequireddescriptionstringrequireddirectory_configobject | nullrequiredfallback_messagestringrequiredindustrystringrequiredlanguagestringrequiredlead_capture_configobject | nullrequirednamestringrequiredstarter_questionsarray of stringrequiredstrict_kb_modebooleanrequiredsuggested_kb_topicsarray of stringrequiredsystem_promptstringrequiredtemperaturenumberrequiredwelcome_messagestringrequiredwidget_themeobjectrequired
botBotRead | null34 fields · BotRead
allowed_domainsarray of string | nullrequiredcontact_fields_configarray of anyrequiredcreated_atstring (date-time)requireddescriptionstring | nullrequireddirectory_configobject | nullrequiredfallback_messagestring | nullrequiredhandoff_enabledbooleanrequiredidstringrequiredindexed_chunk_countintegerrequiredis_publicbooleanrequiredlanguagestringrequiredlast_errorstring | nullrequiredlead_capture_configobject | nullrequiredllm_providerLLMProviderTyperequiredplatformuses the credentials this deployment is configured with;byok("bring your own key") uses the tenant's own Anthropic key;customposts to an owner-supplied OpenAI-compatible endpoint.One of: platform, byok, custom
max_tokensintegerrequiredmodelstring | nullrequiredmonthly_message_capinteger | nullrequirednamestringrequiredorg_idstringrequiredpublic_keystringrequiredrate_limit_per_minuteintegerrequiredstarter_questionsarray of stringrequiredstatusBotStatusrequiredOne of: draft, active, paused, archived
strict_kb_modebooleanrequiredsystem_promptstringrequiredtemperaturenumberrequiredthinking_enabledbooleanrequiredtotal_conversationsintegerrequiredtotal_messagesintegerrequiredupdated_atstring (date-time)requiredwelcome_messagestring | nullrequiredwidget_themeobjectrequiredcustom_endpoint_configobject | nullhas_api_keybooleanDefault: false
embed_snippetstring | nullimport_job_queuedbooleanDefault: false
Message2 fields
messagestringrequiredokbooleanDefault: true
TestMessageResponse7 fields
contentstringrequiredcost_usdnumberrequiredinput_tokensintegerrequiredlatency_msintegerrequiredmodelstringrequiredoutput_tokensintegerrequiredcitationsarray of object
BotVersionRead4 fields
created_atstring (date-time)requirednotestring | nullrequiredsnapshotobjectrequiredversionintegerrequired
Something here wrong or missing? Tell us — the documentation and the API are maintained by the same person, so a correction is a fix rather than a ticket.