Base URL
All API requests use:https://platform.crescendo.ai
/api/v1
Authentication
Authenticate every/api/v1/* request with a tenant API key.
Authorization header (recommended)
Send the API key using the Bearer scheme:bearer_token query parameter (supported)
Some integrations may need to provide the token as a query parameter:
Prefer the
Authorization header whenever possible. Query parameters can be logged or stored in browser history.Tenant scoping
Most API routes includetenants/{tenantId} in the path. API keys are tenant-scoped:
- Requests for a different tenant will be rejected.
- Each key has a list of scopes that controls which APIs and operations it can access.
Authorization (scopes)
Scopes are evaluated using:- The API prefix (first segment after
/api/v1/), for exampleprovisioning,reporting,voc,mcp - The operation type:
readforGET/HEAD/OPTIONS, andwritefor everything else - The nested resource (the first segment after
tenants/{tenantId}/...) for fine-grained access
| API | Read scopes (examples) | Write scopes (examples) |
|---|---|---|
| Provisioning | provisioning:*, provisioning:read, provisioning:users.read | provisioning:*, provisioning:users.* |
| Reporting | reporting:*, reporting:read, reporting:botconv, reporting:vocconv | Reporting endpoints are read-only |
| VOC | voc:*, voc:read | voc:*, voc:recording.* |
| MCP | mcp:*, mcp:read, mcp:bots.read | mcp:*, mcp:bots.* |
Error responses
Errors use a consistent JSON shape:BadRequest(400)Unauthenticated(401)PermissionDenied(403)NotFound(404)Unavailable(503)
API conventions
Provisioning API
The Provisioning API is path-based and tenant-scoped under:/api/v1/provisioning/tenants/{tenantId}/...
- GET document path (ends with a document ID) returns a JSON object.
- GET collection path (ends with a collection name) returns an array of
{ id, data }. - POST = replace: creates a document if missing, otherwise replaces the document.
- PUT = merge update: merges fields into an existing document (404 if the document does not exist).
- Audit fields on writes:
updated(epoch millis) andupdatedByare stamped automatically.
versions.current object to represent the active version for that resource.
Reporting API
Reporting endpoints return a stable envelope:/api-reference/endpoint/reporting-botconv/api-reference/endpoint/reporting-vocconv

