HomeDocumentation

REST API

The ChatReact REST API v1 gives you programmatic access to everything you can do in the dashboard: chatbots, knowledge base and crawling, FAQs, chat review and the Improvement Agent, leads, contact forms, live chat, company and team, the Email Assistant, analytics and notifications. Only browser-bound actions (payments, mailbox OAuth, passkeys, account deletion and API key management) stay in the dashboard.

Prefer talking to an AI assistant? The same capabilities are available as MCP tools — see MCP Server Integration. The interactive API Explorer with request and response schemas lives at /api-reference, where you can also download the OpenAPI 3.0 specification.

Authentication

  1. Go to Dashboard → Company → API tab and click Create API Key
  2. Choose a name and the permission scopes the key needs (see below)
  3. Copy the key — it starts with cr_ and is shown only once

Send the key with every request:

curl https://www.chatreact.ai/api/v1/chatbots \
  -H "Authorization: Bearer cr_your_api_key"

An X-API-Key: cr_your_api_key header is accepted as well. API keys belong to one company and execute with the permissions of the company owner; plan limits and feature gates apply exactly as in the dashboard.

API access is available on paid plans — see the Pricing page. Keys can be revoked at any time from the dashboard.

Scopes

Each key carries one or more scopes. An endpoint returns 403 when the key lacks the required scope.

ScopeGrants
chatbots:read / chatbots:writeChatbot configuration: persona, languages, widget, behavior, restrictions, core instructions, embed code, learning phase, chatbot templates, FAQ widget settings
knowledge:read / knowledge:writeKnowledge base: documents, website crawling, crawled pages
faqs:read / faqs:writeFAQs, FAQ categories, suggestions, translations
chats:read / chats:writeChat history, chat ratings, confidence categories, live chat (agent actions need chats:write)
leads:read / leads:writeLeads, lead categories, lead capture settings, export
forms:read / forms:writeContact forms and submissions
analytics:readStatistics, activity series, funnels, confidence status
company:read / company:writeCompany profile and settings, team members, invitations
email:read / email:writeEmail Assistant connections, categories, contacts, activity
blog:read / blog:writePlatform blog content (ChatReact internal)
any valid key/v1/me, account usage, your notifications

Conventions

  • Base URL: https://www.chatreact.ai/api/v1, JSON in and out (Content-Type: application/json).
  • Responses: { "success": true, "data": … }; lists add "pagination": { "total", "page", "pageSize", "totalPages" }. Use page and pageSize (max 100) on list endpoints; some endpoints offer cursor pagination (cursor / nextCursor).
  • Errors: { "success": false, "error": "message", "code": "BAD_REQUEST" } with optional details for validation errors. Status codes: 400 invalid input, 401 missing or invalid key, 403 missing scope, plan feature not included or insufficient role, 404 resource not found (also for resources of other companies), 409 conflict, 429 rate limit exceeded.
  • Partial updates: PATCH endpoints change only the fields you send; unknown fields are rejected.
  • Rate limit: 30 requests per minute per IP address.
  • Long-running operations (crawls, AI generation, translations) return quickly with a job or result you can poll; they consume the token and crawl budget of your plan.

Endpoints

Chatbots

MethodPathDescriptionScope
GET/api/v1/chatbotsList chatbotschatbots:read
POST/api/v1/chatbotsCreate chatbotchatbots:write
GET/api/v1/chatbots/{id}Get chatbotchatbots:read
PATCH/api/v1/chatbots/{id}Update chatbotchatbots:write
DELETE/api/v1/chatbots/{id}Delete chatbotchatbots:write
GET/api/v1/chatbots/{id}/personalityGet chatbot personalitychatbots:read
PATCH/api/v1/chatbots/{id}/personalityUpdate chatbot personalitychatbots:write
GET/api/v1/chatbots/{id}/widgetGet widget settingschatbots:read
PATCH/api/v1/chatbots/{id}/widgetUpdate widget settingschatbots:write
GET/api/v1/chatbots/{id}/widget/translationsGet widget translationschatbots:read
PUT/api/v1/chatbots/{id}/widget/translationsReplace widget translationschatbots:write
GET/api/v1/chatbots/{id}/embedGet embed codechatbots:read
POST/api/v1/chatbots/{id}/embed/confirmConfirm embedchatbots:write
GET/api/v1/chatbots/{id}/learning-phaseGet learning-phase settingschatbots:read
PATCH/api/v1/chatbots/{id}/learning-phaseUpdate learning-phase settingschatbots:write
POST/api/v1/chatbots/{id}/learning-phase/endEnd learning phasechatbots:write
GET/api/v1/chatbots/{id}/instructionsList core instructionschatbots:read
POST/api/v1/chatbots/{id}/instructionsAdd core instructionchatbots:write
PUT/api/v1/chatbots/{id}/instructions/reorderReorder core instructionschatbots:write
POST/api/v1/chatbots/{id}/instructions/improveImprove instructions with AIchatbots:write
GET/api/v1/instructions/{id}Get core instructionchatbots:read
PATCH/api/v1/instructions/{id}Update core instructionchatbots:write
DELETE/api/v1/instructions/{id}Delete core instructionchatbots:write
GET/api/v1/chatbot-templatesList chatbot templateschatbots:read

Knowledge base

MethodPathDescriptionScope
GET/api/v1/chatbots/{id}/knowledgeKnowledge base overviewknowledge:read
GET/api/v1/chatbots/{id}/documentsList documents for chatbotknowledge:read
POST/api/v1/chatbots/{id}/documentsUpload documentknowledge:write
POST/api/v1/chatbots/{id}/documents/presignPresign document uploadknowledge:write
GET/api/v1/documents/{id}Get documentknowledge:read
DELETE/api/v1/documents/{id}Delete documentknowledge:write
POST/api/v1/documents/{id}/confirmConfirm presigned uploadknowledge:write
GET/api/v1/chatbots/{id}/crawl/limitsCrawl limitsknowledge:read
POST/api/v1/chatbots/{id}/crawl/previewPreview scan websiteknowledge:write
GET/api/v1/chatbots/{id}/crawlList crawl jobsknowledge:read
POST/api/v1/chatbots/{id}/crawlStart crawlknowledge:write
GET/api/v1/crawl-jobs/{jobId}Get crawl jobknowledge:read
POST/api/v1/crawl-jobs/{jobId}/cancelCancel crawl jobknowledge:write
GET/api/v1/chatbots/{id}/pagesList crawled pagesknowledge:read
POST/api/v1/chatbots/{id}/pagesAdd single URLknowledge:write
POST/api/v1/chatbots/{id}/pages/bulk-deleteBulk-delete crawled pagesknowledge:write
GET/api/v1/pages/{id}Get crawled pageknowledge:read
DELETE/api/v1/pages/{id}Delete crawled pageknowledge:write
POST/api/v1/pages/{id}/recrawlRe-crawl pageknowledge:write
GET/api/v1/chatbots/{id}/websitesList crawled websitesknowledge:read
DELETE/api/v1/chatbots/{id}/websites/{domain}Delete websiteknowledge:write
POST/api/v1/chatbots/{id}/websites/{domain}/recrawlRe-crawl websiteknowledge:write
POST/api/v1/chatbots/{id}/websites/{domain}/recrawl/cancelCancel website re-crawlknowledge:write

FAQs

MethodPathDescriptionScope
GET/api/v1/chatbots/{id}/faqsList FAQs for chatbotfaqs:read
POST/api/v1/chatbots/{id}/faqsCreate FAQfaqs:write
POST/api/v1/chatbots/{id}/faqs/bulkBulk import FAQsfaqs:write
POST/api/v1/chatbots/{id}/faqs/reorderReorder FAQsfaqs:write
GET/api/v1/chatbots/{id}/faqs/embedGet FAQ widget embed codechatbots:read
POST/api/v1/chatbots/{id}/faqs/purge-cachePurge remote FAQ cachesfaqs:write
GET/api/v1/faqs/{id}Get FAQfaqs:read
PATCH/api/v1/faqs/{id}Update FAQfaqs:write
DELETE/api/v1/faqs/{id}Delete FAQfaqs:write
PUT/api/v1/faqs/{id}/translationsUpdate FAQ translationsfaqs:write
POST/api/v1/faqs/{id}/translateAI-translate FAQfaqs:write
GET/api/v1/chatbots/{id}/faq-suggestionsList FAQ suggestionsfaqs:read
POST/api/v1/chatbots/{id}/faq-suggestions/generateGenerate FAQ suggestions from knowledge basefaqs:write
GET/api/v1/faq-suggestions/{id}Get FAQ suggestionfaqs:read
POST/api/v1/faq-suggestions/{id}/approveApprove FAQ suggestionfaqs:write
POST/api/v1/faq-suggestions/{id}/rejectReject FAQ suggestionfaqs:write
GET/api/v1/chatbots/{id}/faq-categoriesList FAQ categoriesfaqs:read
POST/api/v1/chatbots/{id}/faq-categoriesCreate FAQ categoryfaqs:write
POST/api/v1/chatbots/{id}/faq-categories/reorderReorder FAQ categoriesfaqs:write
GET/api/v1/faq-categories/{id}Get FAQ categoryfaqs:read
PATCH/api/v1/faq-categories/{id}Update FAQ categoryfaqs:write
DELETE/api/v1/faq-categories/{id}Delete FAQ categoryfaqs:write
PUT/api/v1/faq-categories/{id}/translationsUpdate FAQ category translationsfaqs:write
GET/api/v1/chatbots/{id}/faq-widget-settingsGet FAQ widget settingschatbots:read
PATCH/api/v1/chatbots/{id}/faq-widget-settingsUpdate FAQ widget settingschatbots:write

Chats, feedback & Improvement Agent

MethodPathDescriptionScope
GET/api/v1/chatsList chat sessionschats:read
GET/api/v1/chats/{sessionId}Get chat sessionchats:read
PATCH/api/v1/chats/{sessionId}Set chat confidence categorychats:write
POST/api/v1/chats/{sessionId}/feedbackRate chat (Good / Needs Work)chats:write
POST/api/v1/chats/{sessionId}/feedback/dismissDismiss chat reviewchats:write
POST/api/v1/chats/{sessionId}/improveStart Improvement Agent for chatchatbots:write
GET/api/v1/chatbots/{id}/feedbackList chat reviews of a chatbotchats:read
GET/api/v1/chatbots/{id}/feedback/statsChat review stat cardschats:read
GET/api/v1/feedback/{id}Get chat reviewchats:read
PATCH/api/v1/feedback/{id}Override review severitychats:write
POST/api/v1/feedback/{id}/improvement-sessionStart Improvement Agent for reviewchatbots:write
GET/api/v1/chatbots/{id}/confidenceGet confidence statusanalytics:read
GET/api/v1/chatbots/{id}/confidence-categoriesList confidence categorieschats:read
POST/api/v1/chatbots/{id}/confidence-categoriesCreate confidence categorychatbots:write
PATCH/api/v1/confidence-categories/{id}Update confidence categorychatbots:write
DELETE/api/v1/confidence-categories/{id}Delete confidence categorychatbots:write
POST/api/v1/confidence-categories/{id}/mergeMerge confidence categorieschatbots:write
GET/api/v1/chatbots/{id}/improvement-sessionsList improvement sessionschatbots:read
GET/api/v1/improvement-sessions/{id}Get improvement sessionchatbots:read
POST/api/v1/improvement-sessions/{id}/messagesSend message to Improvement Agentchatbots:write
POST/api/v1/improvement-sessions/{id}/completeComplete improvement sessionchatbots:write
POST/api/v1/improvement-sessions/{id}/resetReset improvement sessionchatbots:write
POST/api/v1/improvement-proposals/{id}/applyApply improvement proposalchatbots:write
POST/api/v1/improvement-proposals/{id}/rejectReject improvement proposalchatbots:write
POST/api/v1/improvement-proposals/{id}/simulationsSimulate improvement proposalchatbots:write
POST/api/v1/improvement-simulations/{id}/assessmentRate simulation resultchatbots:write

Leads

MethodPathDescriptionScope
GET/api/v1/leadsList leadsleads:read
POST/api/v1/leadsCreate leadleads:write
GET/api/v1/leads/{id}Get leadleads:read
PATCH/api/v1/leads/{id}Update leadleads:write
DELETE/api/v1/leads/{id}Delete leadleads:write
POST/api/v1/leads/{id}/assignAssign leadleads:write
POST/api/v1/leads/bulk-statusBulk update lead statusleads:write
GET/api/v1/leads/statsLead statisticsleads:read
GET/api/v1/leads/exportExport leadsleads:read
GET/api/v1/chatbots/{id}/lead-configGet lead capture configurationleads:read
PUT/api/v1/chatbots/{id}/lead-configUpdate lead capture configurationleads:write
GET/api/v1/chatbots/{id}/lead-categoriesList lead categoriesleads:read
POST/api/v1/chatbots/{id}/lead-categoriesCreate lead categoryleads:write
GET/api/v1/lead-categories/{id}Get lead categoryleads:read
PATCH/api/v1/lead-categories/{id}Update lead categoryleads:write
DELETE/api/v1/lead-categories/{id}Delete lead categoryleads:write
PUT/api/v1/lead-categories/{id}/users/{userId}Assign member to lead categoryleads:write
DELETE/api/v1/lead-categories/{id}/users/{userId}Remove member from lead categoryleads:write

Contact forms

MethodPathDescriptionScope
GET/api/v1/chatbots/{id}/formsList contact formsforms:read
POST/api/v1/chatbots/{id}/formsCreate contact formforms:write
GET/api/v1/forms/{id}Get contact formforms:read
PATCH/api/v1/forms/{id}Update contact formforms:write
DELETE/api/v1/forms/{id}Delete contact formforms:write
GET/api/v1/forms/{id}/submissionsList form submissionsforms:read
GET/api/v1/forms/{id}/statsForm submission statisticsforms:read
GET/api/v1/submissions/{id}Get form submissionforms:read
PATCH/api/v1/submissions/{id}Review form submissionforms:write
DELETE/api/v1/submissions/{id}Delete form submissionforms:write

Live chat

MethodPathDescriptionScope
GET/api/v1/live-chat/availabilityGet own live chat availabilitychats:read
PUT/api/v1/live-chat/availabilitySet own live chat availabilitychats:write
POST/api/v1/live-chat/heartbeatSend presence heartbeatchats:write
GET/api/v1/live-chat/agentsList available live chat agentschats:read
GET/api/v1/live-chat/sessionsList live chat sessionschats:read
GET/api/v1/live-chat/sessions/{sessionId}Get live chat sessionchats:read
POST/api/v1/live-chat/sessions/{sessionId}/assignTake live chat (assign to key owner)chats:write
POST/api/v1/live-chat/sessions/{sessionId}/messagesSend message as agentchats:write
POST/api/v1/live-chat/sessions/{sessionId}/closeEnd live chatchats:write

Analytics

MethodPathDescriptionScope
GET/api/v1/analyticsGet analytics overviewanalytics:read
GET/api/v1/analytics/activityGet chat activity seriesanalytics:read
GET/api/v1/analytics/chatbotsList per-chatbot performance statsanalytics:read
GET/api/v1/analytics/chatbots/{id}Get chatbot analyticsanalytics:read
GET/api/v1/analytics/leadsGet lead funnelanalytics:read
GET/api/v1/analytics/formsGet form submission statsanalytics:read
GET/api/v1/activityGet attention summaryanalytics:read

Company & team

MethodPathDescriptionScope
GET/api/v1/companyGet companyany key
PATCH/api/v1/companyUpdate companycompany:write
GET/api/v1/company/settingsGet company settingscompany:read
PATCH/api/v1/company/settingsUpdate company settingscompany:write
DELETE/api/v1/company/logoRemove company logocompany:write
GET/api/v1/company/membersList team memberscompany:read
PATCH/api/v1/company/members/{userId}Change member rolecompany:write
DELETE/api/v1/company/members/{userId}Remove team membercompany:write
GET/api/v1/company/invitesList invitationscompany:read
POST/api/v1/company/invitesInvite team membercompany:write
DELETE/api/v1/company/invites/{id}Cancel invitationcompany:write
POST/api/v1/company/invites/{id}/resendResend invitationcompany:write

Email Assistant

MethodPathDescriptionScope
GET/api/v1/email/connectionsList mailbox connectionsemail:read
GET/api/v1/email/connections/{id}Get mailbox connectionemail:read
PATCH/api/v1/email/connections/{id}Update mailbox connectionemail:write
DELETE/api/v1/email/connections/{id}Disconnect mailboxemail:write
GET/api/v1/email/connections/{id}/categoriesList email categoriesemail:read
POST/api/v1/email/connections/{id}/categoriesCreate email categoryemail:write
GET/api/v1/email/connections/{id}/activityList email activity logemail:read
GET/api/v1/email/categories/{id}Get email categoryemail:read
PATCH/api/v1/email/categories/{id}Update email categoryemail:write
DELETE/api/v1/email/categories/{id}Delete email categoryemail:write
GET/api/v1/email/contactsList email contactsemail:read
GET/api/v1/email/contacts/{id}Get email contactemail:read
PATCH/api/v1/email/contacts/{id}Update email contactemail:write
DELETE/api/v1/email/contacts/{id}Delete email contactemail:write

Account & notifications

MethodPathDescriptionScope
GET/api/v1/meGet key context (whoami)any key
GET/api/v1/account/usageGet plan and usageany key
GET/api/v1/notificationsList notificationsany key
DELETE/api/v1/notificationsDelete old read notificationsany key
GET/api/v1/notifications/unread-countGet unread notification countany key
POST/api/v1/notifications/mark-all-readMark all notifications as readany key
GET/api/v1/notifications/{id}Get notificationany key
PATCH/api/v1/notifications/{id}Mark notification as readany key

Blog (platform)

MethodPathDescriptionScope
GET/api/v1/blogList blog postsany key
POST/api/v1/blogCreate blog postany key
POST/api/v1/blog/assetsUpload blog assetany key
GET/api/v1/blog/{id}Get blog postany key
PATCH/api/v1/blog/{id}Update blog postany key
DELETE/api/v1/blog/{id}Delete blog postany key
POST/api/v1/blog/{id}/translationsQueue blog translationsany key

Need help? Contact our support team →