sphoroVOICEdocs
Markdown

Sphoro Voice documentation

Place automated voice calls from your own software. An agent answers or dials, holds the conversation in the language you choose, and reports back when it is done. It is a plain JSON API over HTTPS — if your language can make an HTTP request, you are ready.

The whole setup, in six steps

Do them in order. Each page picks up exactly where the last one left off, and every command on every page is complete — paste it and run it.

How it works

What the pieces are and what happens on a call. Read after step 3, when every word below names something you have watched happen.

Building an agent

The six steps take an afternoon. This is the part you are in for the weeks afterwards — the prompt, the tools it can call, the documents it answers from, and what gets written down when the call ends.

Every field an agent accepts, what it changes, and what it defaults to — the whole configuration surface in one table.

How to write a system prompt that survives a real phone call: structure, length, refusals, numbers read aloud, and the failures to write against.

Put your own data into a call with call_variables, and the eight variables the platform fills in for you — dates, times and the caller's number.

Barge-in, how long a silence runs before the agent speaks, maximum call duration, and what to do when an answering machine picks up.

Ground answers in your own documents: ingest text, files and URLs, attach a base to an agent, and check what it retrieves before a caller does.

Let the agent call your API mid-conversation: the built-in tools, defining your own, argument validation, and what the caller hears while it runs.

For conversations one prompt cannot hold: nodes the call moves between, the four kinds of edge that move it, and variables captured on the way.

Press-1 menus that answer in milliseconds without a model, in-band and signalled digits, and how a menu hands over to a conversation.

The idea an agent deploys — prompt, voice, knowledge, flow — kept apart from the telephone, so one idea can run a line, a campaign and a widget.

Settings shared across a fleet of agents: what a group holds, why joining one changes nothing on its own, and how defaults are adopted.

Start from a working agent instead of an empty one. Every template we ship, what each is for, and how to create one and then change it.

Fixed lines rendered once and replayed instead of synthesised on every call — cheaper, instant, and the place to upload your own recordings.

The summary and the typed fields written onto every finished call, how to write an extraction that answers reliably, and how to test one.

Telephony

Numbers, carriers, and what happens at the two edges of a call.

Automation

When one call stops being the unit of work: many calls, over days, branching on how each one went.

Platform

The machinery under the conversation — the vendors behind the voice, where the money goes, the wire protocols, and the tools you drive it all with.

And the ones that are not steps

Read before you dial a list rather than after, and read again every time a call did not go out.

Before you start

Three things, and only the first is required to get through step 3.

You needWhere it comes from
An account on this deploymentSign in at the portal. If you do not have a login yet, whoever set up your organisation's account can invite you.
An API keyYou create it yourself, in the portal — step 1 walks through it.
A phone number, for outbound callsProvisioned on your account by Sphoro Voice. Web calls from a browser need no number at all, so you can test the whole integration before one is assigned.

The two things you will create

The API has exactly two objects on the path to a working call, and it is worth being clear about which is which before the commands start.

ObjectWhat it isHow long it lives
Agent agt_…The configuration that decides how the conversation goes: what it says first, the instructions it follows, the language and voice it speaks in.Long-lived. Create it once, use it for every call.
Call call_…One conversation, running that agent — dialled out to a phone number, or connected from a browser.Minutes. It carries its own transcript, recording and end reason afterwards.

Everything else on this site is about those two: how to authenticate the requests that create them (step 2), what language the agent holds the conversation in (step 4), and how you hear that a call finished (step 5).

Your base URL

Every path on this site is relative to one origin. It is the deployment you are reading these docs from, so the examples are already pointed at the right place.

Base URL
https://voice.sphoro.com

Every endpoint sits under /v1, every request carries a bearer token, and every body is JSON. Step 2 covers all three, along with pagination, rate limits and the full list of errors.

These docs are served by the API they describe. Every example on every page points at https://voice.sphoro.com — the same process answering this page answers those requests, so there is no second copy of the documentation to drift out of date. The machine-readable description of every endpoint is at openapi.json, and llms.txt is the same site in plain Markdown, for feeding to a model.

Reading this anywhere else

Every page here is also served as Markdown — the same words, no markup — at the page's own address with .md on the end. Paste one into a model, diff it between releases, or read the whole site from a terminal.

The whole site, as text
curl -s https://voice.sphoro.com/docs/llms.txt
curl -s https://voice.sphoro.com/docs/calls.md