sphoroVOICEdocs
Markdown

API reference

Every endpoint this deployment serves, generated from the running server — so it describes the version you are actually talking to rather than a snapshot somebody exported. For what the fields mean and which combinations make sense, follow the links: this page is the index, not the explanation.

The same thing, machine-readable: openapi.json and openapi.yaml. Most code generators and coding assistants take either directly — see build with AI.

Everything is under https://voice.sphoro.com, carries Authorization: Bearer …, and speaks JSON. Using your API key covers the header, pagination, rate limits, idempotency and every error code.

The same list, as data

Everything on this page comes from one document, which you can read directly — and which carries the request bodies and response schemas this page deliberately does not repeat.

Shell
# Every path and method this deployment serves.
curl -s https://voice.sphoro.com/openapi.json | jq -r '
  .paths | to_entries[] | .key as $p | .value | to_entries[]
  | "\(.key | ascii_upcase)\t\($p)"'

# One endpoint, in full.
curl -s https://voice.sphoro.com/openapi.json | jq '.paths["/v1/calls"].post'

62 endpoints, in 9 groups.

Agents

What these are for: Agent reference.

EndpointDoes
GET /v1/agentsList agents
POST /v1/agentsCreate an agent
DELETE /v1/agents/{id}Delete an agent
GET /v1/agents/{id}Retrieve an agent
PATCH /v1/agents/{id}Update an agent
POST /v1/agents/{id}/post_call/testTest an agent's post-call settings
POST /v1/agents/{id}/restoreRestore a deleted agent

Agent groups

What these are for: Agent groups.

EndpointDoes
GET /v1/agent_groupsList agent groups
POST /v1/agent_groupsCreate an agent group
DELETE /v1/agent_groups/{id}Delete an agent group
GET /v1/agent_groups/{id}Retrieve an agent group
PATCH /v1/agent_groups/{id}Update an agent group
GET /v1/agent_groups/{id}/membersList a group's agents

Knowledge bases

What these are for: Knowledge base.

EndpointDoes
GET /v1/knowledge_basesList knowledge bases
POST /v1/knowledge_basesCreate a knowledge base
DELETE /v1/knowledge_bases/{id}Delete a knowledge base and everything in it
GET /v1/knowledge_bases/{id}Retrieve a knowledge base
GET /v1/knowledge_bases/{id}/documentsList documents
POST /v1/knowledge_bases/{id}/documentsIngest a document
DELETE /v1/knowledge_bases/{id}/documents/{doc}Delete a document
POST /v1/knowledge_bases/{id}/searchSearch a knowledge base

Calls

What these are for: 3. Make a call.

EndpointDoes
GET /v1/callsList calls
POST /v1/callsStart a call
POST /v1/calls/rendezvousPlace a call between two people
GET /v1/calls/ringingWatch for calls waiting to be answered
GET /v1/calls/{id}Retrieve a call
POST /v1/calls/{id}/claimAnswer a ringing call
POST /v1/calls/{id}/endEnd a call
GET /v1/calls/{id}/eventsStream call events
POST /v1/calls/{id}/eventsInject an event into a live call
POST /v1/calls/{id}/give-upRecord that nobody answered
GET /v1/calls/{id}/recordingDownload a recording
GET /v1/calls/{id}/recording_urlGet a playable recording link
POST /v1/calls/{id}/seatTake one end of a rendezvous
POST /v1/calls/{id}/tokenJoin a call from a browser
GET /v1/calls/{id}/transcriptRetrieve a transcript
POST /v1/realtime/tokensMint a browser token

Workflows

What these are for: Workflows.

EndpointDoes
GET /v1/workflowsList workflows
POST /v1/workflowsCreate a workflow
DELETE /v1/workflows/{id}Delete a workflow
GET /v1/workflows/{id}Retrieve a workflow
PATCH /v1/workflows/{id}Update a workflow
GET /v1/workflows/{id}/runsList workflow runs
POST /v1/workflows/{id}/runsRun a workflow

Functions

What these are for: Tools and functions.

EndpointDoes
GET /v1/functionsList callable functions

Webhooks

What these are for: 5. Webhooks.

EndpointDoes
GET /v1/webhook_endpointsList webhook endpoints
POST /v1/webhook_endpointsCreate a webhook endpoint
PUT /v1/webhook_endpointsDeclare a webhook endpoint
DELETE /v1/webhook_endpoints/{id}Delete a webhook endpoint
GET /v1/webhook_endpoints/{id}Retrieve a webhook endpoint
PATCH /v1/webhook_endpoints/{id}Update a webhook endpoint
GET /v1/webhook_endpoints/{id}/deliveriesList delivery attempts
POST /v1/webhook_endpoints/{id}/testSend a test event

Analytics

What these are for: Analytics.

EndpointDoes
GET /healthzLiveness probe
POST /v1/analytics/csatRecord a satisfaction rating
GET /v1/analytics/overviewUsage and quality overview
GET /v1/analytics/timeseriesBucketed call volume and cost

Projects

What these are for: Projects and budgets.

EndpointDoes
GET /v1/projectsList projects
POST /v1/projectsCreate a project
DELETE /v1/projects/{id}Delete a project
GET /v1/projects/{id}Retrieve a project
PATCH /v1/projects/{id}Update a project

Request bodies and response shapes

Deliberately not repeated here. Every field of every body, with its type, its bounds and its default, is in openapi.json — where it is generated from the same code that validates the request, and therefore cannot disagree with it. A table on this page could.

For the fields you will actually be writing by hand, the guide pages carry them with the reasoning attached: agent reference is the big one, and flows, journeys and post-call analysis cover the nested shapes.

Conventions

VersioningEvery path is under /v1. New fields are added without a version bump; nothing is removed from a version.
Unknown fieldsRefused with a 400 naming the field, never silently dropped.
Lists and blocksReplace whole on a PATCH. Scalars merge. See agent reference.
IdentifiersOpaque prefixed strings. Store them whole.
TimestampsRFC 3339, in UTC.
IdempotencyIdempotency-Key on any POST that has a side effect. A retry with the same key returns the original response.
ErrorsA problem document with a type that links into the error table on this site.