Introduction
Overview
The base URL, authentication, response format and conventions for the Synthesys API, plus a link to every resource.
Base URL
All routes start from this address. Paths in this reference start at /v1.
https://backend.synthesys.app/apiAuthentication
Send your key in the SYNTH_API_KEY header on every /v1 request. Each endpoint shows the minimum permission it needs. See Authentication.
curl https://backend.synthesys.app/api/v1/agents \
-H "SYNTH_API_KEY: YOUR_API_KEY"API info
GET /api needs no key. It returns the API's name, its version of v1, a documentation link, and an endpoints object listing the path of each resource.
Response format
A successful response has "success": true and its result in data. List routes usually add pagination.
{
"success": true,
"data": [],
"pagination": { "total": 0, "limit": 50, "offset": 0 }
}A delete returns a message instead of data.
{ "success": true, "message": "Contact deleted successfully" }An error has "success": false, a string error, a stable code and a requestId. Every route uses this one format. See Errors.
{
"success": false,
"error": "This API key does not have permission to do this.",
"code": "FORBIDDEN",
"requestId": "6f1a2b3c-4d5e-4f60-8a7b-9c0d1e2f3a4b",
"timestamp": "2026-10-31T09:30:00.000Z"
}Conventions
- JSON: send request bodies as JSON with
Content-Type: application/json. The maximum body size is 256 KB, or 2 MB when saving custom functions. - IDs: most resource IDs are UUIDs. A path ID that isn't a valid UUID returns
400. - Timestamps: responses use ISO 8601 strings.
- Date filters: send
YYYY-MM-DDor a full ISO 8601 time with a timezone, such as2026-10-31T12:00:00Z. Anything else, including an impossible date such as2026-02-31, returns400. - Whole numbers: paging values must be digits only, so
1e3and0x10return400. - Search: a
searchvalue can be up to 200 characters. A value made only of*returns400, so leavesearchout to list everything. - Phone numbers: use international format, such as
+12025550123. The number must be valid and dialable. - Field casing: casing varies by resource. Agents, phone numbers and
POST /v1/callsuse camelCase. Contacts and query parameters use snake_case. Call logs mostly use snake_case, with a few camelCase fields. Use the names on each page exactly as shown. - Fixed fields: each response holds only the fields listed on that resource's page. A field with no value can be left out.
- Pagination: most lists use
limitandoffset, up to 100 results per request. See Pagination. - Rate limits: each key has its own allowance. See Rate limits.
- Tracing: every response has an
X-Request-IDheader. Include it when you contact support. - Unknown routes: anything else under
/v1returns404, after the key check.
Resources
Agents
AgentsRead your AI agents and their configuration.Post-call webhooksConfigure and test where an agent sends call results.Custom functionsLet an agent call your API during a conversation.VoicesRead your cloned voices.Knowledge basesManage the information agents can draw on.
Calling
CallsPlace outbound calls and track each one.Phone numbersRead your phone numbers and their readiness.ConversationsRead conversation threads.Call logsRead call outcomes, summaries and transcripts.RecordingsFind recordings and get download links.
Outreach
ContactsCreate, update, search and delete contacts.AudiencesManage groups of contacts.CampaignsRead campaigns and their progress.Follow-up sequencesRead the sequences attached to your agents.