Skip to main content
Building a dashboard, portal, or internal tool on the Telzino API with an AI coding agent (Claude Code, Cursor, Windsurf, …)? Give your agent this one instruction:
Before writing any code, read https://docs.telzino.com/agent-runbook.md and follow its ground rules. Fetch https://api.telzino.com/api-doc/openapi for exact request and response schemas.
Everything below is written for the agent.

Ground rules

  1. The OpenAPI spec is the source of truth. Fetch https://api.telzino.com/api-doc/openapi (OpenAPI 3.0 JSON) and use its schemas for every request body and response. A Postman collection generated from the same spec is at https://api.telzino.com/api-doc/postman. Never invent an endpoint, parameter, or field that is not in the spec or in the catalog below.
  2. All calls go through your backend — never from the browser. The API does not send CORS headers, and the OAuth client_secret must never ship in client-side code. Build a thin server proxy (pattern below) and have the UI call that.
  3. Handle auth failures. Tokens last 24 hours (expires_in: 86400). On a 401, refresh the token once and retry; if it still fails, surface the error.
  4. Respect pagination. List endpoints take page and limit (max 100) and return { "data": [...], "pagination": { "page", "limit", "total", "totalPages" } }. Build paging into every list view.
  5. Surface API errors. Error responses are { "error": "<message>" } (often with an error_description) and a 4xx/5xx status. Show the message; don’t swallow it.

Authentication

OAuth 2.0 Client Credentials against Auth0. Exchange your client_id + client_secret (from the Telzino dashboard) for a bearer token:
Send the resulting token on every request: Authorization: Bearer <access_token>. Then call GET /v1/me to discover the account ID tied to your credentials.

Required server-side proxy pattern

Expose only the routes your UI needs from your own backend; forward to telzino().

Resource model

Voices, custom voices, STT providers, LLM models, and email servers are catalogs you read when building agent-configuration UIs. Metrics and reports aggregate usage.

Endpoint catalog

Exact schemas: fetch the OpenAPI spec. Human-readable detail: each row links to the reference page.

UI recipes

Endpoint sequences for common screens. All calls via your server proxy. Agent manager — list, create, edit, enable/disable:
  1. GET /v1/me → account ID → GET /v1/accounts/{accountId}/resellers → GET /v1/resellers/{resellerId}/organizations to build the org picker.
  2. GET /v1/agents?organization_id={id}&page=1&limit=50 for the table.
  3. Create: POST /v1/agents. Edit: GET /v1/agents/{agentId} then PUT with changed fields. Enable/disable toggle: PATCH /v1/agents/{agentId}/status (also carries SIP registration state — reflect the response, don’t assume).
Call-log viewer with playback:
  1. GET /v1/agents/{agentId}/call-logs?page=… for the table (timestamps, duration, sentiment, summary; filter with startDate/endDate).
  2. On row click, GET /v1/call-logs/{callLogId}/recording and feed the result to an <audio> element via your proxy.
Outbound call trigger:
  1. POST /v1/agents/{agentId}/outbound-calls with the destination number (to_number, E.164). Handle the 429 agent_at_capacity response.
  2. Poll GET /v1/agents/{agentId}/outbound-calls/{callId} for status; offer DELETE to remove a finished call’s record.
Knowledge-base manager:
  1. GET /v1/organizations/{organization_id}/knowledge-bases → pick or POST a new one.
  2. GET /v1/knowledge-bases/{knowledgeBaseId}/sources; add with POST. For files: PUT the bytes to the returned presignedUrl, then POST /v1/knowledge-sources/{sourceId}/enqueue with the returned jobId.
  3. Poll GET /v1/rag/jobs/{jobId} until the job completes; show per-source status.
Usage dashboard:
  1. GET /v1/metrics?startDate=…&endDate=… for headline numbers and charts.
  2. GET /v1/reports/minutes-by-agent and /minutes-by-organization for breakdown tables; GET /v1/billing-report for the billing view.