Skip to main content

Chatbots

List Chatbots

Returns a paginated list of all chatbots in the workspace.

GET /api/dev/v1/chatbots
Authorization: Bearer <api-key>

Query Parameters

ParameterTypeDefaultDescription
limitinteger29Number of results per page. Min 1, max 37.
cursorstring-Opaque pagination cursor from a previous response's next_cursor field.
curl -X GET "https://beta-api.sarufi.io/api/dev/v1/chatbots?limit=20" \
-H "Authorization: Bearer <your-api-key>"

Response - 200 OK

{
"items": [
{
"id": "01JMXYZ...",
"name": "Support Bot",
"description": "Handles customer support queries",
"is_active": true,
"created_at": "2026-01-10T12:00:00Z"
}
],
"next_cursor": "eyJpZCI6IjAxSk1YWVoifQ==",
"total": 5
}

Create Chatbot

Creates a new chatbot in the workspace.

POST /api/dev/v1/chatbots
Authorization: Bearer <api-key>
Content-Type: application/json

Request Body

FieldTypeRequiredDescription
namestringyesChatbot display name. Must be unique within the workspace.
descriptionstringnoOptional description of the chatbot's purpose.
categorystringnoOptional category label (e.g. support, sales, onboarding).
curl -X POST https://beta-api.sarufi.io/api/dev/v1/chatbots \
-H "Authorization: Bearer <your-api-key>" \
-H "Content-Type: application/json" \
-d '{
"name": "Support Bot",
"description": "Handles tier-1 customer support",
"category": "support"
}'
import requests

response = requests.post(
"https://beta-api.sarufi.io/api/dev/v1/chatbots",
headers={"Authorization": "Bearer <your-api-key>"},
json={
"name": "Support Bot",
"description": "Handles tier-1 customer support",
"category": "support",
},
)
print(response.json())

Response - 201 Created

{
"id": "01JMXYZ123ABC",
"workspace_id": "01JMWXY456DEF",
"name": "Support Bot",
"description": "Handles tier-1 customer support",
"category": "support",
"webhook_secret": "whsec_abc123...",
"is_active": true,
"created_at": "2026-02-01T10:30:00Z",
"updated_at": null
}

Get Chatbot

Retrieves a single chatbot by ID.

GET /api/dev/v1/chatbots/{chatbot_id}
Authorization: Bearer <api-key>
curl -X GET https://beta-api.sarufi.io/api/dev/v1/chatbots/<chatbot-id> \
-H "Authorization: Bearer <your-api-key>"

Response - 200 OK - returns a ChatbotResponse object (same shape as Create response above).


Get Chatbot With Stats

Returns the chatbot along with usage statistics.

GET /api/dev/v1/chatbots/{chatbot_id}/stats
Authorization: Bearer <api-key>
curl -X GET https://beta-api.sarufi.io/api/dev/v1/chatbots/<chatbot-id>/stats \
-H "Authorization: Bearer <your-api-key>"

Response - 200 OK

{
"id": "01JMXYZ123ABC",
"name": "Support Bot",
"is_active": true,
"stats": {
"total_conversations": 1240,
"total_messages": 8765,
"active_users_7d": 342
},
"created_at": "2026-02-01T10:30:00Z"
}

Update Chatbot

Updates a chatbot's name, description, or category. Only include fields you want to change.

PATCH /api/dev/v1/chatbots/{chatbot_id}
Authorization: Bearer <api-key>
Content-Type: application/json

Request Body (all fields optional)

FieldTypeDescription
namestringNew chatbot name.
descriptionstringNew description.
categorystringNew category label.
curl -X PATCH https://beta-api.sarufi.io/api/dev/v1/chatbots/<chatbot-id> \
-H "Authorization: Bearer <your-api-key>" \
-H "Content-Type: application/json" \
-d '{"name": "Renamed Support Bot"}'

Response - 200 OK - returns the updated ChatbotResponse.


Delete Chatbot

Permanently deletes a chatbot and all its associated flows, conversations, and integrations.

DELETE /api/dev/v1/chatbots/{chatbot_id}
Authorization: Bearer <api-key>
curl -X DELETE https://beta-api.sarufi.io/api/dev/v1/chatbots/<chatbot-id> \
-H "Authorization: Bearer <your-api-key>"

Response - 204 No Content

Irreversible action

Deleting a chatbot permanently removes all flows, conversations, integrations, and analytics data attached to it. This action cannot be undone.


Chatbot Object

FieldTypeDescription
idstringUnique chatbot ID (ULID).
workspace_idstringID of the owning workspace.
namestringChatbot display name.
descriptionstringOptional description.
categorystringOptional category tag.
webhook_secretstringSecret used to verify incoming webhook signatures.
is_activebooleanWhether the chatbot is currently active.
created_atstringCreation timestamp (ISO 8601).
updated_atstringLast update timestamp, or null if never updated.