Agents
List the voice agents in your account and read their persona, script and settings.
An agent holds the persona, script and call settings used when it answers or places a call. These routes are read-only. Create and edit agents in the dashboard.
To place a call with an agent, pass its id to Calls. To configure one, see Post-call webhooks and Custom functions.
| Endpoint | Request |
|---|---|
| List agents | GET/v1/agents |
| Get an agent | GET/v1/agents/:id |
The agent object
Most top-level fields use camelCase. Many keys inside scriptDefinition and humanizationSettings use snake_case. Each object holds only the fields listed here, and a field with no value can be left out.
Attributes
idstringrequired/v1/agents/:id route.namestringrequiredpersonaName.displayNamestringrequiredpersonaNamestringrequiredpersonaConfigobject | nullrequiredslugstringrequired/v1 routes accept only id.statusstringrequiredactive or inactive.typestringrequiredinbound, outbound or hybrid.baseInstructionsstringrequiredscriptDefinitionobjectrequiredhumanizationSettingsobjectrequiredcrmFieldsConfigarray | nullnull when none are set. Each item can have fieldName, field, label, required, type, fieldType, updateWithAI, possibleValues and aiInstructions.knowledgeBaseIdstringfollowUpSequenceIdstringwidgetConfigobject | nullappearance, behavior, branding, triggers, isActive, created_at and updated_at. null when not set.voiceCloneIdstringvoicemailMessagestring | nullrequiredcreatedAtstringrequiredupdatedAtstringrequiredpersonaConfig
namestringrequiredrolestringcompanystringpersonalitystring[]tonestringscriptDefinition
tool_messagesobjectinbound_introstringoutbound_introstringcallback_introstringqualificationstring[]objectionsobjectclosingstringfallbackstringtransferConditionsstring[]transfersarraynumber, instructions and action, and can have mode, language, operatorMessage, fallbackMessage and countryCode.base_instructionsarraytitle, content and optional variant.prompt_modestringguided or advanced.conversation_stepsarraystepNumber, title, content and order.advanced_promptstringstop_conditionsarrayid, title, condition and order.sms_actionsarrayid, name, triggers, requireConfirmation, messageContent and enabled.maxDurationSecondsintegerfirst_message_modestringassistant-speaks-first, assistant-speaks-first-with-model-generated-message or assistant-waits-for-user. inbound_first_message_mode, outbound_first_message_mode and callback_first_message_mode set this per call direction.start_speaking_planobjectwaitSeconds. inbound_start_speaking_plan, outbound_start_speaking_plan and callback_start_speaking_plan set this per call direction.humanizationSettings
booking_enabledbooleancalendar_configobject | nullcalendar_name, timezone, assignment_strategy and assigned_user_name.split_messagesbooleanmessage_delaynumbersilenceTimeoutSecondsintegerinterruptionEnabledbooleanbackgroundSoundstringoff, office or custom.personalityobject | nulltraits, background and goals.responseSpeedobject | nulltypingSpeed and thinkingTime.smsobject | nullresponseDelay, useEmoji and casualLanguage.modelobject | nulltemperature and maxTokens.voiceobject | nullspeed, stability, similarity_boost and style.transcriberobject | nulllanguage.List agents
/v1/agentsread keyReturns your agents, newest first. See Pagination.
Query parameters
limitintegerdefault 50offsetintegerdefault 0Returns 400 when limit or offset is out of range or isn't digits only.
curl "https://backend.synthesys.app/api/v1/agents?limit=10" \
-H "SYNTH_API_KEY: YOUR_API_KEY"{
"success": true,
"data": [
{
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"name": "Sarah",
"displayName": "Inbound sales",
"personaName": "Sarah",
"personaConfig": { "name": "Sarah", "role": "sales representative" },
"slug": "inbound-sales",
"status": "active",
"type": "inbound",
"baseInstructions": "Qualify the caller and book a demo.",
"scriptDefinition": {
"inbound_intro": "Hello! How can I help you today?",
"outbound_intro": "Hello! How can I help you today?",
"callback_intro": "Hello! How can I help you today?",
"qualification": [],
"objections": {},
"transferConditions": []
},
"humanizationSettings": { "calendar_config": null },
"crmFieldsConfig": null,
"widgetConfig": null,
"voicemailMessage": null,
"createdAt": "2026-10-01T09:30:00+00:00",
"updatedAt": "2026-10-20T14:05:00+00:00"
}
],
"pagination": { "total": 1, "limit": 10, "offset": 0 }
}Get an agent
/v1/agents/:idread keyReturns one agent by its UUID.
Returns 404 when the agent doesn't exist, was deleted or belongs to another account. An ID that isn't a valid UUID returns 400.
Path parameters
idstringrequiredcurl https://backend.synthesys.app/api/v1/agents/3fa85f64-5717-4562-b3fc-2c963f66afa6 \
-H "SYNTH_API_KEY: YOUR_API_KEY"{
"success": true,
"data": {
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"name": "Sarah",
"displayName": "Inbound sales",
"personaName": "Sarah",
"personaConfig": { "name": "Sarah", "role": "sales representative" },
"slug": "inbound-sales",
"status": "active",
"type": "inbound",
"baseInstructions": "Qualify the caller and book a demo.",
"scriptDefinition": {
"inbound_intro": "Hello! How can I help you today?",
"outbound_intro": "Hello! How can I help you today?",
"callback_intro": "Hello! How can I help you today?",
"qualification": [],
"objections": {},
"transferConditions": []
},
"humanizationSettings": { "calendar_config": null },
"crmFieldsConfig": null,
"widgetConfig": null,
"voicemailMessage": null,
"createdAt": "2026-10-01T09:30:00+00:00",
"updatedAt": "2026-10-20T14:05:00+00:00"
}
}