Skip to main content

BESS AI API

The BESS AI REST API lets you build agents, place and analyze phone calls, run chat sessions, manage phone numbers and widgets, launch batch campaigns, and automate post-conversation workflows — everything the console does, programmatically.

Base URL: https://api.bess-ai.com

Authentication

Create an API key in the console under Settings → API Keys, and send it as a bearer token on every request:

curl https://api.bess-ai.com/v1/calls \
-H "Authorization: Bearer bess_sk_live_..."

The key is shown only once at creation — store it securely, never in client-side code. Keys are scoped (for example calls:read, calls:write, chat:write, agents:read): a request beyond the key's scopes returns 403.

Prefer a typed client? pip install bessai / npm install bessai — see the SDKs. Every endpoint page in this reference includes a Python (bessai) tab where the SDK covers it, alongside curl and raw HTTP samples.

Errors

Errors are standard HTTP status codes with a JSON body describing the problem:

StatusMeaning
401Missing, invalid, or expired API key.
403The key's scopes don't allow this operation.
404Resource doesn't exist (or belongs to another organization).
409Conflict with the resource's current state.
422Validation error — the body lists the offending fields.
429Rate limit hit — retry after the Retry-After header.
5xxServer-side error — safe to retry with backoff.

Rate limits

Limits apply per API key, per minute and per day, by plan tier. Successful responses include X-RateLimit-* headers; 429 responses include Retry-After. The official SDKs retry 429 and transient 5xx automatically with exponential backoff.

Webhooks

Subscribe to conversation lifecycle events (call started/ended, analysis ready) from the console. Webhook payloads are signed with HMAC — verify the signature header before trusting the body.