PATCH
https://app.evoriqa.com/api/v1/chatbots/{chatbotId}Update a chatbot
Updates any subset of the chatbot's core configuration; omitted fields are left unchanged, nullable fields accept null to clear. Setting `status` to `active` is plan-cap-checked (402 over the cap).
Requires scope chatbots:write
Warning:
Access is gated — enable it before your first call
The API is off by default. A request succeeds only when all three switches are on: the platform master switch (off by default), your organisation’s API toggle, and your plan or client entitlement. Any one off returns 403 API access is not enabled for this workspace.
Parameters
| Name | In | Type | Required | Default | Description |
|---|---|---|---|---|---|
| chatbotId | path | string uuid | Required | — | The chatbot's id. |
Request body
Content type: application/json
| Field | Type | Required | Description |
|---|---|---|---|
| name | string 1–120 chars | Optional | Display name. |
| botName | string 1–120 chars | Optional | Name the bot introduces itself with. |
| description | string up to 2000 chars, or null | Optional | Internal description. |
| status | string one of active · inactive | Optional | Chatbot status. |
| tone | string one of helpful · friendly · professional · casual · concise | Optional | Reply tone preset. |
| language | string 2–10 chars | Optional | Reply language code. |
| greetingMessage | string up to 500 chars, or null | Optional | First message shown to a visitor. |
| fallbackMessage | string up to 500 chars, or null | Optional | Reply when the AI has no grounded answer. |
| systemPrompt | string up to 8000 chars, or null | Optional | Extra system-prompt instructions. |
| temperature | number 0–2 | Optional | Model temperature. |
| maxContextChunks | integer 1–20 | Optional | Retrieval chunk budget per answer. |
| maxReplySentences | integer 1–20, or null | Optional | Reply length cap in sentences. |
| similarityThreshold | number 0–1 | Optional | Minimum retrieval similarity. |
| allowedDomains | array up to 50 items | Optional | Domains the widget may run on. |
| humanHandoffEnabled | boolean | Optional | Whether visitors can request a human. |
| liveQaEnabled | boolean | Optional | Score every production AI answer with the Live AI QA judge (paid plans; enabling on a free plan is rejected). Scores are dashboard-only and never returned by v1 endpoints. |
Request
curl
curl -X PATCH "https://app.evoriqa.com/api/v1/chatbots/{chatbotId}" \
-H "x-api-key: $EVORIQA_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "name": "Support Assistant", "humanHandoffEnabled": true, "temperature": 0.3 }'Node.js
const res = await fetch("https://app.evoriqa.com/api/v1/chatbots/{chatbotId}", {
method: "PATCH",
headers: {
Authorization: `Bearer ${process.env.EVORIQA_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
"name": "Support Assistant",
"humanHandoffEnabled": true,
"temperature": 0.3
}),
});
const responseBody = await res.json();Python
import os
import requests
res = requests.patch(
"https://app.evoriqa.com/api/v1/chatbots/{chatbotId}",
headers={"Authorization": f"Bearer {os.environ['EVORIQA_API_KEY']}"},
json={
"name": "Support Assistant",
"humanHandoffEnabled": True,
"temperature": 0.3
},
)
body = res.json()Response
200 OK
{
"success": true,
"data": {
"id": "3f2504e0-4f89-41d3-9a0c-0305e82c3301",
"name": "Sales Assistant",
"publicId": "cb_9x2k7m4q",
"status": "active",
"botName": "Ava",
"description": null,
"greetingMessage": "Hi! How can I help?",
"fallbackMessage": null,
"systemPrompt": null,
"tone": "helpful",
"language": "en",
"temperature": 0.2,
"maxContextChunks": 6,
"similarityThreshold": 0.4,
"maxReplySentences": null,
"humanHandoffEnabled": true,
"createdAt": "2026-01-15T09:24:00.000Z",
"updatedAt": "2026-01-15T09:24:00.000Z"
}
}