API Reference
The Conferbot API is organized around REST. Our API accepts JSON request bodies, returns JSON responses, and uses standard HTTP response codes and authentication.
Base URL
https://api-v2.conferbot.com/api/v1Client Libraries
The API docs use curl examples. See SDKs & Code Examples for Node.js and Python wrappers.
Authentication
The Conferbot API uses API keys to authenticate requests. You can generate and manage API keys from your workspace settings.
Include your API key in the x-api-key header with every request. Do not share your API key or expose it in client-side code.
Keep your API key secret. Do not embed it in frontend code, public repositories, or client-side applications.
Authenticated Request
curl https://api-v2.conferbot.com/api/v1/external/v1/chatbots \
-H "x-api-key: YOUR_API_KEY"Your API Key
Generate an API key from Dashboard → Workspace → API Keys
Base URL
All API requests should be made to the base URL below. All endpoints in this documentation are relative to this base.
https://api-v2.conferbot.com/api/v1Rate Limits
The API is rate limited to 60 requests per minute per API key (shared across our cluster). Monthly call quotas, chatbot caps, and webhook caps are determined by your plan. Burst 429 responses do not consume your monthly quota; only successful (2xx) and server-error (5xx) calls are billed.
| Plan | Monthly Calls | Chatbots | Webhooks | Burst |
|---|---|---|---|---|
| Free | No API access | — | — | — |
| Starter | 10,000 | 5 | 5 | 60/min |
| Pro | 50,000 | 15 | 15 | 60/min |
| Business | 200,000 | 25 | 50 | 60/min |
| Enterprise | Custom | Custom | Custom | Custom |
Headers on every response
# Per-minute burst (IETF draft headers)
RateLimit-Policy: 60;w=60
RateLimit-Limit: 60
RateLimit-Remaining: 47
RateLimit-Reset: 32 # seconds until window resets
# Monthly quota
X-Quota-Limit: 200000
X-Quota-Remaining: 198650
X-Quota-Reset: 1782864000 # Unix epoch of next month start
X-Quota-Period: month429 response
HTTP/1.1 429 Too Many Requests
Retry-After: 60
{
"error": "External API rate limit exceeded. Max 60 requests per minute.",
"code": "RATE_LIMIT_ERROR"
}Errors
The API uses conventional HTTP response codes to indicate success or failure.
200OK — Request succeeded201Created — Resource created400Bad Request — Invalid parameters or body401Unauthorized — Missing or invalid API key403Forbidden — Plan limit reached or no API access404Not Found — Resource doesn't exist or doesn't belong to your workspace409Conflict — Duplicate (e.g. webhook with same chatbot + URL)413Payload Too Large — Request body exceeded 15 MB429Too Many Requests — Burst or monthly quota exceeded500Server Error — Something went wrongError Response
# Every error response uses the same envelope.
# A machine-readable "code" is set on specific error classes
# (e.g. RATE_LIMIT_ERROR on 429).
{
"error": "Invalid API key"
}
{
"error": "Unknown event(s): user.signup. Valid events: response.created, response.updated, conversation.started, conversation.completed"
}
{
"error": "External API rate limit exceeded. Max 60 requests per minute.",
"code": "RATE_LIMIT_ERROR"
}Chatbots
Manage chatbots in your workspace — list, create, update, duplicate, and delete.
/external/v1/chatbotsList chatbots
Returns all chatbots in the workspace associated with the API key.
curl https://api-v2.conferbot.com/api/v1/external/v1/chatbots \
-H "x-api-key: YOUR_API_KEY"{
"data": [
{
"id": "64f8a2b3c1d4e5f6a7b8c9d0",
"name": "Customer Support Bot",
"disabled": false,
"responseCount": 12847,
"createdAt": "2024-09-01T10:30:00Z",
"updatedAt": "2024-12-15T14:22:00Z"
}
]
}/external/v1/chatbots/{id}Get a chatbot
Returns detailed information for a single chatbot.
Parameters
idpathstringrequiredChatbot ID
curl https://api-v2.conferbot.com/api/v1/external/v1/chatbots/64f8a2b3c1d4e5f6a7b8c9d0 \
-H "x-api-key: YOUR_API_KEY"{
"data": {
"id": "64f8a2b3c1d4e5f6a7b8c9d0",
"name": "Customer Support Bot",
"disabled": false,
"description": "Handles customer inquiries 24/7",
"responseCount": 12847,
"createdAt": "2024-09-01T10:30:00Z",
"updatedAt": "2024-12-15T14:22:00Z"
}
}/external/v1/chatbotsCreate a chatbot
Creates a new chatbot in the workspace. Subject to plan chatbot limits.
Request Body
namestringrequiredChatbot name (max 100 characters)
descriptionstringOptional chatbot description
curl -X POST https://api-v2.conferbot.com/api/v1/external/v1/chatbots \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"name": "Lead Gen Bot", "description": "Captures visitor leads"}'{
"data": {
"id": "64f8a2b3c1d4e5f6a7b8c9d0",
"name": "Lead Gen Bot",
"description": "Captures visitor leads",
"createdAt": "2024-12-15T14:22:00Z"
}
}/external/v1/chatbots/{id}Update a chatbot
Updates a chatbot's name, description, or disabled status. Only provided fields are changed.
Parameters
idpathstringrequiredChatbot ID
Request Body
namestringNew name (max 100 characters)
descriptionstringNew description
disabledbooleanSet true to disable the chatbot
curl -X PUT https://api-v2.conferbot.com/api/v1/external/v1/chatbots/{id} \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"name": "Updated Bot Name", "disabled": false}'{
"data": {
"id": "64f8a2b3c1d4e5f6a7b8c9d0",
"name": "Updated Bot Name",
"description": "Captures visitor leads",
"disabled": false,
"updatedAt": "2024-12-16T10:00:00Z"
}
}/external/v1/chatbots/{id}Delete a chatbot
Permanently deletes a chatbot and removes it from the workspace. This action cannot be undone.
Parameters
idpathstringrequiredChatbot ID
curl -X DELETE https://api-v2.conferbot.com/api/v1/external/v1/chatbots/{id} \
-H "x-api-key: YOUR_API_KEY"{
"message": "Chatbot deleted"
}/external/v1/chatbots/{id}/duplicateDuplicate a chatbot
Creates a copy of a chatbot with all its configuration. The copy is named with a " (copy)" suffix. Subject to plan chatbot limits.
Parameters
idpathstringrequiredChatbot ID to duplicate
curl -X POST https://api-v2.conferbot.com/api/v1/external/v1/chatbots/{id}/duplicate \
-H "x-api-key: YOUR_API_KEY"{
"data": {
"id": "65b2c3d4e5f6a7b8c9d0e1f2",
"name": "Lead Gen Bot (copy)",
"description": "Captures visitor leads",
"createdAt": "2024-12-15T14:30:00Z"
}
}Responses
Access chatbot conversation responses and visitor data.
/external/v1/chatbots/{id}/responsesList responses
Returns paginated responses for a chatbot with optional date filtering.
Parameters
idpathstringrequiredChatbot ID
pagequeryintegerPage number (default: 1)
limitqueryintegerItems per page (default: 20, max: 100)
startDatequerystringFilter from date (YYYY-MM-DD)
endDatequerystringFilter to date (YYYY-MM-DD)
curl https://api-v2.conferbot.com/api/v1/external/v1/chatbots/{id}/responses?page=1&limit=20 \
-H "x-api-key: YOUR_API_KEY"{
"data": [
{
"_id": "65a1b2c3d4e5f6a7b8c9d0e1",
"chatSessionId": "sess_abc123",
"visitorId": "visitor_xyz789",
"chatDate": "2024-12-15T09:30:00Z",
"record": [...],
"answerVariables": { "email": "[email protected]" }
}
],
"total": 1284,
"page": 1,
"totalPages": 65
}/external/v1/chatbots/{id}/responses/{responseId}Get a response
Returns a single response with full conversation data.
Parameters
idpathstringrequiredChatbot ID
responseIdpathstringrequiredResponse ID
curl https://api-v2.conferbot.com/api/v1/external/v1/chatbots/{id}/responses/{responseId} \
-H "x-api-key: YOUR_API_KEY"{
"data": {
"_id": "65a1b2c3d4e5f6a7b8c9d0e1",
"chatSessionId": "sess_abc123",
"visitorId": "visitor_xyz789",
"record": [
{ "type": "bot", "message": "Hello! How can I help?" },
{ "type": "user", "message": "I need help with billing" }
],
"answerVariables": {
"email": "[email protected]",
"name": "John"
}
}
}Analytics
Get engagement metrics and trends for your chatbots.
/external/v1/chatbots/{id}/analyticsGet chatbot analytics
Returns total response count and daily breakdowns for a given period.
Parameters
idpathstringrequiredChatbot ID
daysqueryintegerPeriod in days (default: 30)
curl https://api-v2.conferbot.com/api/v1/external/v1/chatbots/{id}/analytics?days=30 \
-H "x-api-key: YOUR_API_KEY"{
"data": {
"totalResponses": 12847,
"recentResponses": 432,
"period": "30d",
"dailyCounts": [
{ "date": "2024-12-01", "count": 15 },
{ "date": "2024-12-02", "count": 22 },
{ "date": "2024-12-03", "count": 18 }
]
}
}Webhooks
Manage webhook subscriptions via the API. For event payloads and signature verification, see the Webhooks Guide.
/external/v1/webhooksList webhooks
Returns all webhook subscriptions for the workspace.
curl https://api-v2.conferbot.com/api/v1/external/v1/webhooks \
-H "x-api-key: YOUR_API_KEY"{
"data": [
{
"id": "65b2c3d4e5f6a7b8c9d0e1f2",
"chatbot": {
"id": "64f8a2b3c1d4e5f6a7b8c9d0",
"name": "Support Bot"
},
"url": "https://your-server.com/webhook",
"events": ["response.created", "response.updated"],
"description": "Production webhook",
"status": "active",
"failureCount": 0,
"lastDeliveryAt": "2024-12-15T10:42:00Z",
"lastFailureAt": null,
"createdAt": "2024-12-01T10:00:00Z",
"updatedAt": "2024-12-01T10:00:00Z"
}
]
}/external/v1/webhooksCreate a webhook
Creates a new webhook subscription. Returns the webhook with a signing secret (shown only once).
Request Body
chatbotIdstringrequiredChatbot to subscribe to
urlstringrequiredEndpoint URL for webhook POSTs
eventsstring[]requiredEvent types to subscribe to
descriptionstringOptional description
curl -X POST https://api-v2.conferbot.com/api/v1/external/v1/webhooks \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"chatbotId": "64f8a2b3c1d4e5f6a7b8c9d0",
"url": "https://your-server.com/webhook",
"events": ["response.created"],
"description": "Production webhook"
}'{
"data": {
"id": "65b2c3d4e5f6a7b8c9d0e1f2",
"chatbot": { "id": "64f8a2b3c1d4e5f6a7b8c9d0", "name": null },
"url": "https://your-server.com/webhook",
"events": ["response.created"],
"description": "Production webhook",
"status": "active",
"failureCount": 0,
"lastDeliveryAt": null,
"lastFailureAt": null,
"createdAt": "2025-01-15T10:30:00Z",
"updatedAt": "2025-01-15T10:30:00Z",
"secret": "a1b2c3d4e5f6...64_char_hex_string"
},
"message": "Save the secret — it won't be shown again."
}/external/v1/webhooks/{id}Update a webhook
Partial update. The signing secret is preserved across updates. Only the fields you include are changed.
Parameters
idpathstringrequiredWebhook ID
Request Body
urlstringNew target URL (https only, no localhost/private IPs)
eventsstring[]Replacement event list. At least one required.
descriptionstringUpdated description
statusstringactive or paused (failed is machine-set and cannot be requested)
curl -X PATCH https://api-v2.conferbot.com/api/v1/external/v1/webhooks/{id} \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"status":"paused"}'{
"data": {
"id": "64f8a2b3c1d4e5f6a7b8c9d0",
"chatbot": { "id": "5fb...", "name": "Support Bot" },
"url": "https://api.acme.com/conferbot-webhook",
"events": ["response.created"],
"description": "Production webhook",
"status": "paused",
"failureCount": 0,
"lastDeliveryAt": null,
"lastFailureAt": null,
"createdAt": "2025-01-15T10:30:00Z",
"updatedAt": "2025-01-15T11:42:00Z"
}
}/external/v1/webhooks/{id}Delete a webhook
Permanently deletes a webhook and all its delivery logs. Deleting the parent chatbot also cascades and removes all of its webhooks.
Parameters
idpathstringrequiredWebhook ID
curl -X DELETE https://api-v2.conferbot.com/api/v1/external/v1/webhooks/{id} \
-H "x-api-key: YOUR_API_KEY"{
"message": "Webhook deleted"
}Account
Read and update the workspace owner's profile, and rotate the account email via OTP. All endpoints accept the same workspace x-api-key as the rest of the External API.
/external/v1/accountGet account profile
Returns the workspace owner's name, email, phone, date of birth, address, and IANA timezone.
curl https://api-v2.conferbot.com/api/v1/external/v1/account \
-H "x-api-key: YOUR_API_KEY"{
"data": {
"name": "Ada Lovelace",
"email": "[email protected]",
"phone": null,
"dateOfBirth": null,
"address": null,
"timezone": "Asia/Dubai"
}
}/external/v1/accountUpdate account profile
Partial update. Validates phone format (digits/+/spaces/dashes/parens, 6–20 digits), date as ISO-8601, and timezone as a real IANA zone. Strips HTML tags from name/address.
Request Body
namestringDisplay name (max 200 chars)
phonestringPhone in permissive E.164-ish format
dateOfBirthstringYYYY-MM-DD
addressstringMailing address (max 500 chars)
timezonestringIANA timezone, e.g. America/New_York
curl -X PATCH https://api-v2.conferbot.com/api/v1/external/v1/account \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"phone":"+971501234567","timezone":"Asia/Dubai"}'{
"data": {
"name": "Ada Lovelace",
"email": "[email protected]",
"phone": "+971501234567",
"dateOfBirth": null,
"address": null,
"timezone": "Asia/Dubai"
}
}/external/v1/account/email/request-changeRequest email change
Sends a 6-digit OTP to the new email address. The OTP expires in 10 minutes. The old email is notified once the change is confirmed.
Request Body
newEmailstringrequiredThe new email address
curl -X POST https://api-v2.conferbot.com/api/v1/external/v1/account/email/request-change \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"newEmail":"[email protected]"}'{
"data": {
"success": true,
"message": "Verification code sent to your new email address"
}
}/external/v1/account/email/confirm-changeConfirm email change
Verifies the OTP and updates the account email.
Request Body
newEmailstringrequiredMust match the email from the request step
otpstringrequired6-digit verification code from email
curl -X POST https://api-v2.conferbot.com/api/v1/external/v1/account/email/confirm-change \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"newEmail":"[email protected]","otp":"123456"}'{
"data": { "success": true }
}Usage
Monitor your API consumption and plan limits.
/external/v1/usageGet API usage
Returns current month's API call count, plan limit, and remaining quota.
curl https://api-v2.conferbot.com/api/v1/external/v1/usage \
-H "x-api-key: YOUR_API_KEY"{
"data": {
"month": "2025-01",
"plan": "Starter",
"used": 1423,
"limit": 10000,
"remaining": 8577
}
}Need help? Check the Getting Started guide or try the API Playground.