Public documentation for connecting to the Sapport platform: chats with the AI seller, analytics, the article publisher, CRM and agents, the strategist, and dashboards. Language: English.
Important. This documentation describes both what already works (the widget, the loader, the tracker, CMS modules, the connector) and the server API authenticated by a secret key (reading is available, writing is partly in design). The status of each page is shown in the badge at the top of the page and in the tables below. The "Planned" status is not a commitment to a delivery date.
#Status legend
| Status | Meaning |
|---|
| Available | Works in the production cells. The contract can be used in production; changes follow the versioning policy |
| Beta | Works, but the contract may change without a notice period. Use deliberately |
| Planned | In design, not yet released. The description is the target behavior; field names and details may be refined. Do not use in production |
Server API: reading (/me, /wallet, conversations, analytics, dashboards, leads, articles, strategist) and webhooks v2 are "Available"; writing (replies in conversations, editing leads and articles, decisions on topics and actions), events and conversions, generation, and the sandbox are "Planned". The widget, the Chat API, the loader, the JS tracker, the CMS modules, and the connector are "Available". Pages with a mixed status say in their badge which part already works.
The single form of the badge at the top of every page: > **Status: …**.
#Modules and their status
| Module | What already works (Available) | Server API (Planned) | Pages |
|---|
| Chats and the AI seller | The widget, the Chat API (/api/widget/*) | Reading conversations and messages is Available; writing and AI replies in your own channel (api) are Planned | chat/ |
| Analytics | The loader, the JS tracker, the server beacon, the Bitrix and WordPress modules | Reading analytics and dashboards is Available; event and conversion ingestion is Planned | analytics/ |
| Article publisher | Publishing through the CMS module and the connector | Reading articles is Available; generation jobs, editing, approval, publishing are Planned | articles/ |
| CRM and agents | Lead scoring and statuses inside the platform | Reading leads is Available; lead writes, CRM modes, action requests, the status map are Planned | crm/ |
| Strategist | Reports and chat in the dashboard | Reports, topics, and actions (reading) are Available; decisions and conversation are Planned | strategist/ |
| Dashboards | The "Overview" and "Pulse" screens in the dashboard | Reading through the API is Available; embedding is stage 4, Planned | analytics/08-dashboards.md |
| Webhooks | Webhooks of the previous version (v1) | Webhooks v2: signature, retries, rotation, log: Available | 06-webhooks.md |
#Where to start
#Contents
#Cross-cutting sections
| File | What it covers | Status |
|---|
| 01-introduction.md | The platform for an integrator, modules, the two kinds of API, the relationship diagram | Available / Planned |
| 02-quickstart.md | Key, cell address, GET /me, first call, widget | Available (sandbox: Planned) |
| 03-authentication.md | Integrations, keys, scopes, permissions, IP, test keys, leaks | Available (test keys: Planned) |
| 04-cells-and-data.md | RU/EN/ID cells, addresses, wrong_cell, personal data, the disclosure log | Available |
| 05-conventions.md | Format, errors and the error code catalog, pagination, idempotency, asynchronous operations, limits, versions, paid operations | Planned |
| 06-webhooks.md | Webhooks v2: subscriptions, events, signing and verification, retries, rotation, delivery log | Available |
| 07-wallet.md | The tenant wallet: states, GET /wallet, halting exchange on a negative balance (402 wallet_suspended), webhooks, resuming | Available |
| 90-changelog.md | Changelog and deprecation policy | Available |
| 91-glossary.md | Glossary | Available |
#Chats and the AI seller — chat/
#Analytics — analytics/
#CRM and agents — crm/
#Article publisher — articles/
#Strategist — strategist/
#Server API map by scope
The full table of scopes and their mapping to endpoints is in 03-authentication.md.
#Open questions
Only the questions that have no decision yet remain here. Everything else is settled in the text of the pages. Complete lists per module are in the "Open questions" sections of the section pages.
#For the owner
- API address. The path
/api/public/v1 on the cell's domain is adopted; the api.<domain> subdomain option (DNS and nginx on all three cells) has not been finally rejected. - Test mode. Whether the sandbox and test keys will open together with the core of the server API or later. Until decided, they are described as "Planned".
- Limits by plan and
api_access. The starting limits are uniform (read 600, write 120, paid 30 per minute); the binding to plans and the list of plans with api_access are not defined. - CRM modes
external and both on all cells, including ID (the reseller partner's legal entity), and deletion of personal data at the customer's request. - Documentation languages. The scope and order of release of the English and Indonesian versions.
- The reference rules for page
type/id for the widget and modules (discrepancy no. 6 in chat/02-widget-embed.md). - Minor product decisions per module: editing a strategist topic before approval, the plan and accuracy of the article generation estimate, publishing the FastAPI and Nuxt modules, the consent text for EN and ID, the lookback window for analytics events, multi-currency offline conversions, a separate scope for conversions.
#Technical
- Permission.
integrations.manage is adopted; the permission registry and the production roles of the three databases have yet to be updated, otherwise a key without an owning role means "deny all". - Discrepancies between the widget and Chat API and the design (discrepancies 1–8, 12, 13, 22 from the facts file): the pre-chat form, file uploads, channel parameters, frame-ancestors, the page type and id regular expressions.
- Gaps in the server API contract that OpenAPI will close: the permission for
GET /disclosures; the visibility of GET /operations/{id} (by default, the operations of the caller's own integration); the error code for an expired cursor (422 validation_failed with the /cursor pointer is adopted); the code for an internal server error (it is not in the catalog); the contents of data in crm.mode_changed; the body format of PUT /crm/status-map. - Code changes when the service is extracted that the contract requires: storing the lead scoring
reason (score_reason, scored_at, score_source), the week in granularity, data_as_of in the strategist report DTOs, moving bing into the list of sources after verification, uniform article limits in the connector's PROTOCOL.md, rejecting a topic only from proposed in the dashboard as well. - Definitions of analytics metrics (
sessions, visitors, units) and binding the analytics session_id to the widget conversation.
#Feedback
If you find an inaccuracy or a description is missing, include the page and the X-Request-Id of the problematic request (if you have one) when contacting the support team of your cell.