# Get all agent groups for the authenticated organization Source: https://docs.callers.ai/api-reference/agent-groups/get-all-agent-groups-for-the-authenticated-organization https://api.callers.ai/openapi-json get /agent-groups Returns every agent group that belongs to the organization derived from the API key, each enriched with the number of agents currently assigned to it. # Get all agent groups for the authenticated organization Source: https://docs.callers.ai/api-reference/agent-groups/get-all-agent-groups-for-the-authenticated-organization-1 https://api.callers.ai/openapi-json get /campaign-groups Returns every agent group that belongs to the organization derived from the API key, each enriched with the number of agents currently assigned to it. # Get an agent group by id Source: https://docs.callers.ai/api-reference/agent-groups/get-an-agent-group-by-id https://api.callers.ai/openapi-json get /campaign-groups/{campaignGroupId} Returns a single agent group, scoped to the authenticated organization. Returns 404 if the agent group does not exist within the organization. # Get an agent group by id Source: https://docs.callers.ai/api-reference/agent-groups/get-an-agent-group-by-id-1 https://api.callers.ai/openapi-json get /agent-groups/{agentGroupId} Returns a single agent group, scoped to the authenticated organization. Returns 404 if the agent group does not exist within the organization. # Clear all vocabulary entries Source: https://docs.callers.ai/api-reference/agents/clear-all-vocabulary-entries https://api.callers.ai/openapi-json delete /campaigns/{campaignId}/vocabulary Removes all STT vocabulary entries from the agent. # Clear all vocabulary entries Source: https://docs.callers.ai/api-reference/agents/clear-all-vocabulary-entries-1 https://api.callers.ai/openapi-json delete /agents/{agentId}/vocabulary Removes all STT vocabulary entries from the agent. # Create an agent Source: https://docs.callers.ai/api-reference/agents/create-an-agent https://api.callers.ai/openapi-json post /agents Creates an agent with the complete configuration surface available in the UI. Supports CALL, CHAT, EMAIL, and TRIGGER agents. Most fields are optional and use canonical shared agent defaults. For a basic call agent, only name and voiceId are needed. No voice or phone number is selected automatically; IDs shown in examples are placeholders, not defaults. Use callParams for speech, scheduling, retries, voicemail, recording, and web calls; chatParams and emailParams configure their respective channels. steps or nestedSteps define the script, edges connect graph nodes, and fallbacks define recovery behavior. toolFunctions, triggers, preCallActions, knowledgeBaseIds, guardrailSettings, privacy, DNC, and memory settings are also supported. Arrays use replacement semantics and empty arrays clear values. The convenience fields voiceId and phoneNumbers override callParams.voice and callParams.phonesFrom. Omitted timezones default to UTC for deterministic API behavior; send an IANA timezone when local scheduling is required. Call, chat, and email agents are created inactive; trigger agents activate immediately. Organization, ownership, audit, lifecycle, generated credentials, and provider-managed fields are derived by the server. # Create an agent Source: https://docs.callers.ai/api-reference/agents/create-an-agent-1 https://api.callers.ai/openapi-json post /campaigns Creates an agent with the complete configuration surface available in the UI. Supports CALL, CHAT, EMAIL, and TRIGGER agents. Most fields are optional and use canonical shared agent defaults. For a basic call agent, only name and voiceId are needed. No voice or phone number is selected automatically; IDs shown in examples are placeholders, not defaults. Use callParams for speech, scheduling, retries, voicemail, recording, and web calls; chatParams and emailParams configure their respective channels. steps or nestedSteps define the script, edges connect graph nodes, and fallbacks define recovery behavior. toolFunctions, triggers, preCallActions, knowledgeBaseIds, guardrailSettings, privacy, DNC, and memory settings are also supported. Arrays use replacement semantics and empty arrays clear values. The convenience fields voiceId and phoneNumbers override callParams.voice and callParams.phonesFrom. Omitted timezones default to UTC for deterministic API behavior; send an IANA timezone when local scheduling is required. Call, chat, and email agents are created inactive; trigger agents activate immediately. Organization, ownership, audit, lifecycle, generated credentials, and provider-managed fields are derived by the server. # Delete an agent Source: https://docs.callers.ai/api-reference/agents/delete-an-agent https://api.callers.ai/openapi-json delete /campaigns/{campaignId} Archives the agent and cleans up its active workflows and provider configuration. Agent data and related records are retained. # Delete an agent Source: https://docs.callers.ai/api-reference/agents/delete-an-agent-1 https://api.callers.ai/openapi-json delete /agents/{agentId} Archives the agent and cleans up its active workflows and provider configuration. Agent data and related records are retained. # Duplicate an agent Source: https://docs.callers.ai/api-reference/agents/duplicate-an-agent https://api.callers.ai/openapi-json post /campaigns/{campaignId}/duplicate Creates a new agent by duplicating the given agent. You can optionally provide a new name or a target organization. # Duplicate an agent Source: https://docs.callers.ai/api-reference/agents/duplicate-an-agent-1 https://api.callers.ai/openapi-json post /agents/{agentId}/duplicate Creates a new agent by duplicating the given agent. You can optionally provide a new name or a target organization. # Get all agents by organization ID Source: https://docs.callers.ai/api-reference/agents/get-all-agents-by-organization-id https://api.callers.ai/openapi-json get /agents Get all agents by organization ID. Returns an array of AgentPublicDto. Optionally filter by campaign group ID — only agents belonging to the specified group within the same organization will be returned. # Get all agents by organization ID Source: https://docs.callers.ai/api-reference/agents/get-all-agents-by-organization-id-1 https://api.callers.ai/openapi-json get /campaigns Get all agents by organization ID. Returns an array of AgentPublicDto. Optionally filter by campaign group ID — only agents belonging to the specified group within the same organization will be returned. # Get an agent by ID Source: https://docs.callers.ai/api-reference/agents/get-an-agent-by-id https://api.callers.ai/openapi-json get /campaigns/{campaignId} Get a single agent by its ID. Returns a AgentPublicDto. # Get an agent by ID Source: https://docs.callers.ai/api-reference/agents/get-an-agent-by-id-1 https://api.callers.ai/openapi-json get /agents/{agentId} Get a single agent by its ID. Returns a AgentPublicDto. # Get vocabulary entries Source: https://docs.callers.ai/api-reference/agents/get-vocabulary-entries https://api.callers.ai/openapi-json get /campaigns/{campaignId}/vocabulary Returns all STT vocabulary entries for the agent. # Get vocabulary entries Source: https://docs.callers.ai/api-reference/agents/get-vocabulary-entries-1 https://api.callers.ai/openapi-json get /agents/{agentId}/vocabulary Returns all STT vocabulary entries for the agent. # Remove specific vocabulary entries Source: https://docs.callers.ai/api-reference/agents/remove-specific-vocabulary-entries https://api.callers.ai/openapi-json post /campaigns/{campaignId}/vocabulary/remove Removes STT vocabulary entries whose content matches the provided words. # Remove specific vocabulary entries Source: https://docs.callers.ai/api-reference/agents/remove-specific-vocabulary-entries-1 https://api.callers.ai/openapi-json post /agents/{agentId}/vocabulary/remove Removes STT vocabulary entries whose content matches the provided words. # Replace agent configuration Source: https://docs.callers.ai/api-reference/agents/replace-agent-configuration https://api.callers.ai/openapi-json put /campaigns/{campaignId} Replaces the complete writable agent configuration using the same relaxed, defaulted schema as agent creation. No phone number or voice is inferred from the organization. Omitted fields return to their schema defaults, supplied arrays replace existing arrays, empty arrays clear them, and null clears nullable fields. Use PATCH instead when changing only name, phoneNumbers, or webhooks. Lifecycle state is preserved unless the agent is changed to a trigger agent, which activates immediately. Ownership, audit, generated credentials, and provider-managed fields are preserved by the server. # Replace agent configuration Source: https://docs.callers.ai/api-reference/agents/replace-agent-configuration-1 https://api.callers.ai/openapi-json put /agents/{agentId} Replaces the complete writable agent configuration using the same relaxed, defaulted schema as agent creation. No phone number or voice is inferred from the organization. Omitted fields return to their schema defaults, supplied arrays replace existing arrays, empty arrays clear them, and null clears nullable fields. Use PATCH instead when changing only name, phoneNumbers, or webhooks. Lifecycle state is preserved unless the agent is changed to a trigger agent, which activates immediately. Ownership, audit, generated credentials, and provider-managed fields are preserved by the server. # Start agent Source: https://docs.callers.ai/api-reference/agents/start-agent https://api.callers.ai/openapi-json post /campaigns/{campaignId}/start Activates the specified agent # Start agent Source: https://docs.callers.ai/api-reference/agents/start-agent-1 https://api.callers.ai/openapi-json post /agents/{agentId}/start Activates the specified agent # Stop agent Source: https://docs.callers.ai/api-reference/agents/stop-agent https://api.callers.ai/openapi-json post /campaigns/{campaignId}/stop Deactivates the specified agent # Stop agent Source: https://docs.callers.ai/api-reference/agents/stop-agent-1 https://api.callers.ai/openapi-json post /agents/{agentId}/stop Deactivates the specified agent # Update agent Source: https://docs.callers.ai/api-reference/agents/update-agent https://api.callers.ai/openapi-json patch /campaigns/{campaignId} Partially updates the specified agent fields # Update agent Source: https://docs.callers.ai/api-reference/agents/update-agent-1 https://api.callers.ai/openapi-json patch /agents/{agentId} Partially updates the specified agent fields # Update existing vocabulary entries Source: https://docs.callers.ai/api-reference/agents/update-existing-vocabulary-entries https://api.callers.ai/openapi-json put /campaigns/{campaignId}/vocabulary Updates STT vocabulary entries that already exist on the agent. Entries whose content does not match any existing entry are ignored. # Update existing vocabulary entries Source: https://docs.callers.ai/api-reference/agents/update-existing-vocabulary-entries-1 https://api.callers.ai/openapi-json put /agents/{agentId}/vocabulary Updates STT vocabulary entries that already exist on the agent. Entries whose content does not match any existing entry are ignored. # Update interest criteria Source: https://docs.callers.ai/api-reference/agents/update-interest-criteria https://api.callers.ai/openapi-json post /campaigns/{campaignId}/update/interestcriteria Updates the interest criteria of the specified agent # Update interest criteria Source: https://docs.callers.ai/api-reference/agents/update-interest-criteria-1 https://api.callers.ai/openapi-json post /agents/{agentId}/update/interestcriteria Updates the interest criteria of the specified agent # Upload vocabulary entries Source: https://docs.callers.ai/api-reference/agents/upload-vocabulary-entries https://api.callers.ai/openapi-json post /campaigns/{campaignId}/vocabulary Adds or updates STT vocabulary entries for the agent. Entries are merged by content — new entries with the same content overwrite existing ones. # Upload vocabulary entries Source: https://docs.callers.ai/api-reference/agents/upload-vocabulary-entries-1 https://api.callers.ai/openapi-json post /agents/{agentId}/vocabulary Adds or updates STT vocabulary entries for the agent. Entries are merged by content — new entries with the same content overwrite existing ones. # Delete a background sound Source: https://docs.callers.ai/api-reference/background-noises/delete-a-background-sound https://api.callers.ai/openapi-json delete /background-noise/{id} Deletes an uploaded background sound and unlinks it from any campaigns that were referencing it. Preset background sounds cannot be deleted. # List background sounds Source: https://docs.callers.ai/api-reference/background-noises/list-background-sounds https://api.callers.ai/openapi-json get /background-noise Returns built-in preset background sounds together with sounds uploaded by the current organization. # Rename a background sound Source: https://docs.callers.ai/api-reference/background-noises/rename-a-background-sound https://api.callers.ai/openapi-json put /background-noise/{id} Updates the display name of an uploaded background sound. Preset background sounds cannot be edited. # Upload a background sound Source: https://docs.callers.ai/api-reference/background-noises/upload-a-background-sound https://api.callers.ai/openapi-json post /background-noise Uploads an MP3 file as a background sound for the current organization. # Download call PCAP file Source: https://docs.callers.ai/api-reference/calls/download-call-pcap-file https://api.callers.ai/openapi-json get /campaigns/{campaignId}/calls/{callId}/pcap Downloads the PCAP (packet capture) file containing SIP signaling traces for a call. Only available for SIP (Jambonz) calls. The PCAP data is only retained for recent calls. # Download call PCAP file Source: https://docs.callers.ai/api-reference/calls/download-call-pcap-file-1 https://api.callers.ai/openapi-json get /agents/{agentId}/calls/{callId}/pcap Downloads the PCAP (packet capture) file containing SIP signaling traces for a call. Only available for SIP (Jambonz) calls. The PCAP data is only retained for recent calls. # Get all calls by agent ID Source: https://docs.callers.ai/api-reference/calls/get-all-calls-by-agent-id https://api.callers.ai/openapi-json get /campaigns/{campaignId}/calls Get all calls by agent ID. Returns an array of CallPublicDto. Supports pagination. # Get all calls by agent ID Source: https://docs.callers.ai/api-reference/calls/get-all-calls-by-agent-id-1 https://api.callers.ai/openapi-json get /agents/{agentId}/calls Get all calls by agent ID. Returns an array of CallPublicDto. Supports pagination. # Get call recording URL Source: https://docs.callers.ai/api-reference/calls/get-call-recording-url https://api.callers.ai/openapi-json get /campaigns/{campaignId}/calls/{callId}/recording Get a URL for accessing the recording of a call associated with a given agent # Get call recording URL Source: https://docs.callers.ai/api-reference/calls/get-call-recording-url-1 https://api.callers.ai/openapi-json get /agents/{agentId}/calls/{callId}/recording Get a URL for accessing the recording of a call associated with a given agent # Get calls by agent ID and contact ID Source: https://docs.callers.ai/api-reference/calls/get-calls-by-agent-id-and-contact-id https://api.callers.ai/openapi-json get /campaigns/{campaignId}/contacts/{contactId}/calls Get all calls by agent id and contact id. Returns an array of PaginatedCallPublicDto. Supports pagination. # Get calls by agent ID and contact ID Source: https://docs.callers.ai/api-reference/calls/get-calls-by-agent-id-and-contact-id-1 https://api.callers.ai/openapi-json get /agents/{agentId}/contacts/{contactId}/calls Get all calls by agent id and contact id. Returns an array of PaginatedCallPublicDto. Supports pagination. # Play warm transfer summary Source: https://docs.callers.ai/api-reference/calls/play-warm-transfer-summary https://api.callers.ai/openapi-json post /call/{sessionId}/warm-transfer-summary Plays the warm transfer summary for the specified call and his child. (Only for calls made through SIP) # Update call status Source: https://docs.callers.ai/api-reference/calls/update-call-status https://api.callers.ai/openapi-json post /campaigns/{campaignId}/calls/{callId}/setStatus Sets the status of the given call of the given agent # Update call status Source: https://docs.callers.ai/api-reference/calls/update-call-status-1 https://api.callers.ai/openapi-json post /agents/{agentId}/calls/{callId}/setStatus Sets the status of the given call of the given agent # Create memory for campaign contact by phone number Source: https://docs.callers.ai/api-reference/contact-memory/create-memory-for-campaign-contact-by-phone-number https://api.callers.ai/openapi-json post /campaigns/{campaignId}/contacts/{phoneNumber}/memories Creates a new memory item for a contact identified by campaign and phone number # Create memory for campaign contact by phone number Source: https://docs.callers.ai/api-reference/contact-memory/create-memory-for-campaign-contact-by-phone-number-1 https://api.callers.ai/openapi-json post /agents/{agentId}/contacts/{phoneNumber}/memories Creates a new memory item for a contact identified by campaign and phone number # Create memory for contact Source: https://docs.callers.ai/api-reference/contact-memory/create-memory-for-contact https://api.callers.ai/openapi-json post /contacts/{contactId}/memories Creates a new memory item for the specified contact # Delete all memories for contact Source: https://docs.callers.ai/api-reference/contact-memory/delete-all-memories-for-contact https://api.callers.ai/openapi-json delete /contacts/{contactId}/memories Soft deletes all memory items for the specified contact by marking their status as DELETED. # Delete memory Source: https://docs.callers.ai/api-reference/contact-memory/delete-memory https://api.callers.ai/openapi-json delete /memories/{memoryId} Soft deletes a memory item by marking its status as DELETED. # Get memories for campaign contact by phone number Source: https://docs.callers.ai/api-reference/contact-memory/get-memories-for-campaign-contact-by-phone-number https://api.callers.ai/openapi-json get /campaigns/{campaignId}/contacts/{phoneNumber}/memories Retrieves all memory items for a contact identified by campaign and phone number. Optionally filter by status. # Get memories for campaign contact by phone number Source: https://docs.callers.ai/api-reference/contact-memory/get-memories-for-campaign-contact-by-phone-number-1 https://api.callers.ai/openapi-json get /agents/{agentId}/contacts/{phoneNumber}/memories Retrieves all memory items for a contact identified by campaign and phone number. Optionally filter by status. # Get memories for contact Source: https://docs.callers.ai/api-reference/contact-memory/get-memories-for-contact https://api.callers.ai/openapi-json get /contacts/{contactId}/memories Retrieves all memory items for the specified contact. Optionally filter by status. # Update memory Source: https://docs.callers.ai/api-reference/contact-memory/update-memory https://api.callers.ai/openapi-json patch /memories/{memoryId} Updates the text of an existing memory. This creates a new version and marks the old one as OUTDATED. # Archive a contact by phone number Source: https://docs.callers.ai/api-reference/contacts/archive-a-contact-by-phone-number https://api.callers.ai/openapi-json delete /campaigns/{campaignId}/contacts/phoneNumber/{phoneNumber} Archive contact associated with a given contact phone number. # Archive a contact by phone number Source: https://docs.callers.ai/api-reference/contacts/archive-a-contact-by-phone-number-1 https://api.callers.ai/openapi-json delete /agents/{agentId}/contacts/phoneNumber/{phoneNumber} Archive contact associated with a given contact phone number. # Archive all agent contacts Source: https://docs.callers.ai/api-reference/contacts/archive-all-agent-contacts https://api.callers.ai/openapi-json delete /campaigns/{campaignId}/contacts Archives all contacts associated with a given agent ID # Archive all agent contacts Source: https://docs.callers.ai/api-reference/contacts/archive-all-agent-contacts-1 https://api.callers.ai/openapi-json delete /agents/{agentId}/contacts Archives all contacts associated with a given agent ID # Archive contact by contact ID Source: https://docs.callers.ai/api-reference/contacts/archive-contact-by-contact-id https://api.callers.ai/openapi-json delete /campaigns/{campaignId}/contacts/{contactId} # Archive contact by contact ID Source: https://docs.callers.ai/api-reference/contacts/archive-contact-by-contact-id-1 https://api.callers.ai/openapi-json delete /agents/{agentId}/contacts/{contactId} # Archive contacts by contact IDs Source: https://docs.callers.ai/api-reference/contacts/archive-contacts-by-contact-ids https://api.callers.ai/openapi-json delete /campaigns/{campaignId}/contacts/bulk Archive contacts associated with a given contact IDs array # Archive contacts by contact IDs Source: https://docs.callers.ai/api-reference/contacts/archive-contacts-by-contact-ids-1 https://api.callers.ai/openapi-json delete /agents/{agentId}/contacts/bulk Archive contacts associated with a given contact IDs array # Archive contacts by contact phone numbers Source: https://docs.callers.ai/api-reference/contacts/archive-contacts-by-contact-phone-numbers https://api.callers.ai/openapi-json delete /campaigns/{campaignId}/contacts/phone-number/bulk Archive contacts associated with a given contact phone numbers array # Archive contacts by contact phone numbers Source: https://docs.callers.ai/api-reference/contacts/archive-contacts-by-contact-phone-numbers-1 https://api.callers.ai/openapi-json delete /agents/{agentId}/contacts/phone-number/bulk Archive contacts associated with a given contact phone numbers array # Create a contact for an agent Source: https://docs.callers.ai/api-reference/contacts/create-a-contact-for-an-agent https://api.callers.ai/openapi-json post /campaigns/{campaignId}/contacts Adds a contact to the specified agent. Optionally fixes US phone numbers by adding a leading 1 if not present. Returns 400 with detailed error message if phone number validation fails. # Create a contact for an agent Source: https://docs.callers.ai/api-reference/contacts/create-a-contact-for-an-agent-1 https://api.callers.ai/openapi-json post /agents/{agentId}/contacts Adds a contact to the specified agent. Optionally fixes US phone numbers by adding a leading 1 if not present. Returns 400 with detailed error message if phone number validation fails. # Create contacts for an agent Source: https://docs.callers.ai/api-reference/contacts/create-contacts-for-an-agent https://api.callers.ai/openapi-json post /campaigns/{campaignId}/contacts/bulk Adds contacts to the specified agent. Optionally fixes US phone numbers by adding a leading 1 if not present. # Create contacts for an agent Source: https://docs.callers.ai/api-reference/contacts/create-contacts-for-an-agent-1 https://api.callers.ai/openapi-json post /agents/{agentId}/contacts/bulk Adds contacts to the specified agent. Optionally fixes US phone numbers by adding a leading 1 if not present. # Get a contact by ID. Source: https://docs.callers.ai/api-reference/contacts/get-a-contact-by-id https://api.callers.ai/openapi-json get /campaigns/{campaignId}/contacts/{contactId} Get agent contact. Returns an object with the contact # Get a contact by ID. Source: https://docs.callers.ai/api-reference/contacts/get-a-contact-by-id-1 https://api.callers.ai/openapi-json get /agents/{agentId}/contacts/{contactId} Get agent contact. Returns an object with the contact # Get all contacts by agent ID Source: https://docs.callers.ai/api-reference/contacts/get-all-contacts-by-agent-id https://api.callers.ai/openapi-json get /campaigns/{campaignId}/contacts Get all agent contacts. Returns an array of ContactPublicDto. Supports pagination, status filtering and sorting options. # Get all contacts by agent ID Source: https://docs.callers.ai/api-reference/contacts/get-all-contacts-by-agent-id-1 https://api.callers.ai/openapi-json get /agents/{agentId}/contacts Get all agent contacts. Returns an array of ContactPublicDto. Supports pagination, status filtering and sorting options. # Get contacts report by status Source: https://docs.callers.ai/api-reference/contacts/get-contacts-report-by-status https://api.callers.ai/openapi-json get /campaigns/{campaignId}/report Get a report of contacts organized by statuses, with an optional archived filter # Get contacts report by status Source: https://docs.callers.ai/api-reference/contacts/get-contacts-report-by-status-1 https://api.callers.ai/openapi-json get /agents/{agentId}/report Get a report of contacts organized by statuses, with an optional archived filter # Add a phone number Source: https://docs.callers.ai/api-reference/organizations/add-a-phone-number https://api.callers.ai/openapi-json post /organization/{sipId}/phone-number # Create a SIP carrier Source: https://docs.callers.ai/api-reference/organizations/create-a-sip-carrier https://api.callers.ai/openapi-json post /organization/sip # Create sub organization Source: https://docs.callers.ai/api-reference/organizations/create-sub-organization https://api.callers.ai/openapi-json post /organization/sub-organization Creates sub organization under the main organization associated with the API key # Delete sub organization by ID Source: https://docs.callers.ai/api-reference/organizations/delete-sub-organization-by-id https://api.callers.ai/openapi-json delete /organization/{id} Deletes the specified sub organization under the main organization associated with the API key # Get account information Source: https://docs.callers.ai/api-reference/organizations/get-account-information https://api.callers.ai/openapi-json get /organization Get information for the organization associated with this API key # Get list of SIP connections Source: https://docs.callers.ai/api-reference/organizations/get-list-of-sip-connections https://api.callers.ai/openapi-json get /organization/sip-list # Set call recording retention period Source: https://docs.callers.ai/api-reference/organizations/set-call-recording-retention-period https://api.callers.ai/openapi-json post /organization/set-recording-retention Sets the retention period in days for call recordings associated with the organization. Optionally applies to subaccounts. # Clone a new voice from audio samples Source: https://docs.callers.ai/api-reference/voices/clone-a-new-voice-from-audio-samples https://api.callers.ai/openapi-json post /voices/voice-clone # Create a new voice Source: https://docs.callers.ai/api-reference/voices/create-a-new-voice https://api.callers.ai/openapi-json post /voices # Delete a voice by its ID Source: https://docs.callers.ai/api-reference/voices/delete-a-voice-by-its-id https://api.callers.ai/openapi-json delete /voices/{id} # Get all voices for the current organization Source: https://docs.callers.ai/api-reference/voices/get-all-voices-for-the-current-organization https://api.callers.ai/openapi-json get /voices # Put voicesclone filesretention Source: https://docs.callers.ai/api-reference/voices/put-voicesclone-filesretention https://api.callers.ai/openapi-json put /voices/clone-files/retention # Update an existing voice by its ID Source: https://docs.callers.ai/api-reference/voices/update-an-existing-voice-by-its-id https://api.callers.ai/openapi-json put /voices/{id} # Get call webhook payload by agent ID and call ID Source: https://docs.callers.ai/api-reference/webhooks/get-call-webhook-payload-by-agent-id-and-call-id https://api.callers.ai/openapi-json get /campaigns/{campaignId}/calls/{callId}/webhook-payload # Get call webhook payload by agent ID and call ID Source: https://docs.callers.ai/api-reference/webhooks/get-call-webhook-payload-by-agent-id-and-call-id-1 https://api.callers.ai/openapi-json get /agents/{agentId}/calls/{callId}/webhook-payload # Subscribe a Webhook Source: https://docs.callers.ai/api-reference/webhooks/subscribe-a-webhook https://api.callers.ai/openapi-json post /campaigns/{campaignId}/webhook/subscribe Add a new webhook to the specified agent. # Subscribe a Webhook Source: https://docs.callers.ai/api-reference/webhooks/subscribe-a-webhook-1 https://api.callers.ai/openapi-json post /agents/{agentId}/webhook/subscribe Add a new webhook to the specified agent. # Managing Subaccounts Source: https://docs.callers.ai/documentation/agencies/managing-subaccounts Create a separate account for each client, switch between accounts and invite team members. Subaccounts let an agency run a separate account for each client under one main account. Every subaccount has its own agents, phone numbers, members and settings, and admins of the main account can work in all of them. ## Open Settings Click your name at the bottom of the sidebar and choose **Settings**. Admins see the tabs **General**, **Members**, **API Keys** (if API access is enabled for your account) and, in a main account, **Subaccounts**. The user menu at the bottom of the sidebar with Settings, Help and Sign out ## Create a Subaccount 1. In **Settings**, open the **Subaccounts** tab. 2. Click `Create Subaccount`. 3. Enter the **Subaccount Name** and click `Create`. The new subaccount's settings page opens. The Subaccounts tab in Settings with the Create Subaccount button The New Subaccount dialog with the Subaccount Name field and the Cancel and Create buttons A new subaccount starts empty: it has no agents, phone numbers or members of its own. It uses the main account's pricing, and its maximum number of dial attempts can't be higher than the main account's. The **Subaccounts** tab is shown to admins of a main account. A subaccount can't have subaccounts of its own. ## Your Subaccounts The **Subaccounts** tab lists your subaccounts with their **Date of creation**, number of **Members** and number of agents (**Campaigns**). The Subaccounts tab listing subaccounts with their date of creation, members and campaigns Click a subaccount to open its settings page, with the sections **General**, **Billing**, **Limits**, **Permissions**, **Members**, **Agents** and **Webhooks**. Click `Enter` there to start working in the subaccount, or use the name dropdown to jump to another subaccount. ## Switch Between Accounts * Click the account name at the top of the sidebar - once your account has subaccounts, it opens a list. The list shows your main account with its subaccounts below it, and a check mark next to the account you're in. * Pick an account to open its **Agents** page. * Admins can click **Manage Subaccounts** at the bottom of the list to go to the **Subaccounts** tab. The account list under the account name at the top of the sidebar, with the main account, its subaccounts and Manage Subaccounts To work with a subaccount through the API, use your main account's key with the `x-sub-organization-id` header - see [Generate an API Key](/documentation/using-callers/generate-api-key). ## Invite Members Members belong to one account. Admins of the main account already have admin access to every subaccount, and read-only members of the main account can view every subaccount, so you don't need to invite them again. To invite someone: 1. Switch to the account they should join. 2. Go to **Settings** > **Members** and click `Invite`. 3. Enter their **Email** - one address per invitation. 4. Choose their role next to the email: **Read Only** (default) or **Admin**. 5. Choose their access: **Full**, or turn individual permissions off (see below). 6. Click `Invite`. The Invite dialog with the Email field, the Read Only role, and the access menu with permission toggles The person receives an invitation email, and the dialog also shows the invitation link with a `Copy` button. After 24 hours, the invitation's status changes to **Invitation link expired**. If your account uses a [custom domain](/documentation/agencies/white-label), invitation emails aren't sent. Copy the link from the dialog and send it to the person yourself. ### Access Permissions The access menu narrows what a member can do. It shows **Full** when everything is allowed and **Limited** when something is turned off. * **Access contact phone numbers**: When off, contact phone numbers are masked. * **View transcripts and recordings** * **Manage users** * **Manage account settings** * **View Analytics** * **Manage API keys** * **Export contacts or calls** **Manage users**, **Manage account settings**, **View Analytics**, **Manage API keys** and **Export contacts or calls** are always off for **Read Only** members. ## Manage Members The **Members** tab lists everyone in the account with their **Role**, **Access** and **Status**. The Members tab with each member's role dropdown, access and status * **Role**: Switch a member between **Admin** and **Read Only**. * **Access**: Change the member's permissions. * **Status**: **Active**, **Pending** for an invitation that hasn't been accepted yet, or **Invitation link expired**. * The `⋯` menu on each row: * **Reset Password**: Create a new link for the member. Use it to resend an expired invitation. * **Reset MFA**: Shown when **Multi-Factor Authentication (MFA)** is turned on in the **General** tab. * **Delete**: Remove the member from the account. This happens right away, without a confirmation step. You can't change your own role or access. **Admins** can open every Settings tab, manage members and create subaccounts. **Read Only** members don't see the Settings tabs or **Analytics**. In accounts that sign in with SSO, there's no `Invite` button or `⋯` menu - members are managed through SSO. If you don't see the `Invite` button in your main account, contact support. ## Delete a Subaccount Open the subaccount's settings page from the **Subaccounts** tab, click `Delete Subaccount` at the bottom and confirm. The subaccount's agents and contacts are archived, its members are removed, its API keys stop working, its phone and messaging connections are disconnected and its custom voices are deleted. You can't restore a deleted subaccount from the app. # White Label Source: https://docs.callers.ai/documentation/agencies/white-label Present the platform to your clients under your own logo, name and domain. White labeling lets you present the platform to your clients as your own: your logo, your account name, and a custom domain where your team and your clients sign in. Set it up in your main account. Your [subaccounts](/documentation/agencies/managing-subaccounts) use the same branding and domain. **Before you begin:** You need a domain you own, bought from a domain registrar or web hosting service (for example GoDaddy, Namecheap or Cloudflare), and access to its DNS settings. White labeling - your logo and a custom domain - is available in a main account when it's enabled for your account. If you don't see the logo and **Connect a custom domain** in the **Account** section, contact support to turn it on. ## Add Your Logo and Name Click your name at the bottom of the sidebar, choose **Settings** and stay on the **General** tab. The **Account** section holds your branding: * **Logo**: Hover over the logo and click **Replace** to upload an image file of up to 5 MB. **Delete** removes the current logo. * **Account Name**: Type your company name and click `Save`. The Account section with the logo, the Account Name field and the Connect button for a custom domain Your logo appears at the top of the sidebar. ## Connect Your Domain ### Step 1: Enter Your Domain Click `Connect` next to **Connect a custom domain**. Type your domain in the **Domain** field without `https://` - for example `app.example.com` - and click the arrow to submit it. The Connect a Domain you own field with the Domain input ### Step 2: Add the A Record The section now shows **Custom Domain** with your URL and the DNS record to add. 1. Open your domain host's DNS settings. 2. Add a new **A record** with the values shown - use the copy buttons next to them: * **Name / Host / Alias**: The subdomain, for example `app`, or `@` if you connected a root domain such as `example.com`. * **Value / points to**: The IP address shown on the screen. 3. Back in Settings, click `A record added`. The Custom Domain section with the Name / Host / Alias and Value / points to values and the A record added button ### Step 3: Wait for Verification The status shows **Pending** while we look for your DNS record and set up a secure (HTTPS) certificate for your domain. The screen says this can take up to 48 hours - DNS changes can take a while to spread. The Custom Domain section with the Pending status and the verification message Once everything is ready, the status changes to **Connected**. The status doesn't update on its own - reload the Settings page to see it. The Custom Domain section with the green Connected status and the menu next to the URL If your record still can't be found after 24 hours, or the certificate can't be set up, the status changes to **Failed**. Check the A record with your domain host, then remove the domain and connect it again. ### Change or Remove Your Domain Click `⋯` next to the URL and choose **Remove Custom Domain**. The domain is removed right away, without a confirmation step. To switch to another domain, remove the current one and connect the new one. ## What Your Users See Once your domain is connected: * **Login page**: Your logo and "Welcome to" your account name. The SSO login option isn't shown, and **Forgot password?** asks users to contact their admin, who can create a reset link for them. * **Browser tab**: Your account name as the page title and your logo as the icon. * **Members tab**: Shows the domain your users should log in on. * **Invitations and password resets**: No emails are sent. Copy the link from the dialog and send it to the person yourself - see [Invite Members](/documentation/agencies/managing-subaccounts#invite-members). * **Subaccount members**: Must sign in on your custom domain. Signing in on the default address doesn't work for them. The login page with a custom logo, Welcome to Demo, and the email and password fields ## API Access with Your Custom Domain Once your domain is connected, you can make API calls and open the API documentation on your own domain instead of the default one: ``` https://[your-custom-domain]/api/openapi ``` For example, if your domain is `app.example.com`, the API documentation is at `https://app.example.com/api/openapi`, and API requests go to `https://app.example.com/api/...`. # Agent Actions Source: https://docs.callers.ai/documentation/build-your-agent/agent-actions Let your agent call your systems during a conversation - look up a customer, check availability, create a booking - and use the answer right away. An Action is a request your agent sends while it talks to a contact: it looks up an order in your CRM, checks free slots, or creates a ticket. The agent waits for the answer and uses it in the rest of the conversation. Callers sends all HTTP requests from the following IP addresses: ```copy theme={null} 35.245.204.86 35.221.61.75 ``` If your API endpoints are behind a firewall, whitelist these IP addresses to ensure action requests are delivered. ### Before You Start * **A publicly accessible endpoint**: Your API must be reachable from the internet and respond to HTTP requests. * **Credentials**: If the API requires authentication, have the API key or token ready. * **A fast response**: By default, the agent waits up to 30 seconds for an answer. Responses can be up to 1 MB. ### Add an Action Step * Open a node on the script canvas and click `Action` at the bottom of it. If your account has the App Center, the **Add Action** window opens. * Choose what the action does: * **An App Center integration**: Integrations are grouped by category; use **Search Apps** to find one. See the [App Center](/documentation/integrations/app-center) for what's available. Integrations marked **Turned off** aren't enabled for your account - contact support to turn them on. * **Create Custom Action**: Send an HTTP request to your own API. See [Create a Custom Action](#create-a-custom-action). * **Create Custom Code**: Run your own TypeScript or JavaScript code, if your account has it. The Add Action window with integrations by category and the Create Custom Action and Create Custom Code buttons Once you add the action, the step appears in the node. Its **Action Phrase** is what the agent says while the request runs, so the contact isn't left in silence. A new step starts with *Let me pull that up for you real quick.* - change it to fit your script. You can insert [variables](/documentation/build-your-agent/agent-variables) into the phrase. An Action step with its action phrase and a custom HTTP action, and the Action button in the node footer The Actions button in the agent editor header, next to Variables, opens the same window. Actions created there are saved to the agent without being added to a step. ### Create a Custom Action In the **Add Action** window, click **Create Custom Action** and fill in the request: * **Action Name**: A short name for the action. Names use lowercase letters, digits, underscores and hyphens, up to 64 characters, so *Look up customer* becomes `look_up_customer`. Each name must be unique within the agent. * **When should the custom action take place?**: Describe the situation in which the agent should run the action, for example *The contact has confirmed they are an existing customer*. The clearer the description, the more reliably the agent runs the action at the right moment. * **Variables Extracted with Prompt**: Details the agent picks up from the conversation and sends with the request, such as an order number. See [Transcript Variables](/documentation/build-your-agent/agent-variables#transcript-variables). * **Method**: **GET**, **POST**, **PATCH**, **PUT**, **DELETE** or **HEAD**. * **URL**: The full address of your endpoint. * **Headers**: For example an API key header such as `X-API-Key`. * **Query params**: Values added to the URL, for example an order ID. * **Authentication**: **None**, **Basic Auth** or **Bearer Token**. * **Body Type**: **None**, **Form Data**, **JSON** or **Raw**. For **JSON**, open **JSON Body** to write the request body. The URL, headers, query parameters and body can include contact details and values from the conversation. See [Variables in Actions](/documentation/build-your-agent/agent-variables#variables-in-actions). The HTTP (Send HTTP request) form with the action name, the trigger description, method and URL Already have the request as a cURL command? Click **Import** in the **cURL** panel on the right and paste it to fill in the method, URL, headers and body. The panel also shows the current request as a cURL command you can copy. #### Request Settings Further down the form you can fine-tune how the request behaves: * **Response is Binary**: Turn on when the response is a file, such as a PDF or an image. * **Use Proxy**: Send the request through your own proxy server. * **Timeout(in seconds)**: A time limit for the HTTP request itself. * **Follow redirects**: Follow redirect responses to the new address. * **On Failure**: What happens when the request fails. You can retry on all errors (4xx, 5xx) or only on internal errors (5xx), not retry, continue on all errors or only on 4xx errors, or stop. The default is **Do not continue (stop the flow)**. * **Ignore Response**: The request still runs, but the agent doesn't see the response. Use it for requests that only send data, such as logging a lead. * **Response Timeout**: How long the agent waits for the response. The default is 30 seconds. Timeout, Follow redirects, On Failure, Ignore Response and Response Timeout settings Each custom action request carries an `X-Signature` header (with `X-Signature-Type`), so your server can check that it came from Callers. The signature uses your organization's HMAC secret, which you can find in **Settings** on the **General** tab, under **Webhook Signature**. See [Validating Webhook Signatures](/documentation/webhook/validating-webhook-signatures). ### Test the Action * Click **Send Test Request** to send the request to your endpoint for real. * If the request uses variables, you're asked for sample values first. * The response appears on the right. After the first test, the button reads **Resend Request**. * Click **Add** to add the action to the step. A successful test does more than confirm the setup: the fields of the response become [response variables](/documentation/build-your-agent/agent-variables#action-response-variables) that you can use later in the script. The response panel with the headers and body returned by a test request ### Use the Response in the Conversation The agent receives the response as soon as it arrives and uses it to decide what to say and which way the conversation goes next. For example: * **Check availability**: Ask your system for open slots, stock or service hours. * **Look up customer records**: Fetch the contact's details or order status from your CRM or database. * **Schedule appointments**: Create bookings through an external scheduling API. * **Send confirmations**: Trigger emails or SMS messages after a specific step. * **Verify identity**: Check details the contact gives against your records. * **Route the conversation**: Branch the script on a value in the response, for example whether an `active` field is true. To say a response value word for word, insert it into a later step from the **Actions** tab of the variable picker. A step after the action with the Actions tab of the variable picker showing the response body fields If you want to send data **after the call ends**, you can configure a special webhook. Learn more in our [Advanced Webhooks Guide](/documentation/webhook/advanced-webhook). ### Manage Actions Hover over an Action step and click `···` next to the action to change how it runs: * **Replace**: Choose a different action for the step. * **Run in background without pausing the conversation**: The agent keeps talking while the request runs, and the response can arrive later in the conversation. Available if your account has it. * **Allow action without phrase**: Run the action without saying anything first. * **Remove**: Take the action out of the step. The Action step menu with Replace, Run in background, Allow action without phrase and Remove Every action you create is saved to the agent and listed under **My Actions** in the **Add Action** window, so you can reuse it in other steps. Click `···` next to an action there to **Choose** it, **Edit** it, or **Delete Action**. An action can't be deleted while a step uses it. My Actions with the Choose, Edit and Delete Action menu of a saved HTTP action For using contact details and conversation values in actions, see the [Agent Variables guide](/documentation/build-your-agent/agent-variables). # Agent Scenarios Source: https://docs.callers.ai/documentation/build-your-agent/agent-scenarios Prepare your agent for questions and objections that can come up at any point in a conversation, such as pricing, privacy, or "I'm busy right now". The script leads the conversation step by step, but contacts don't always follow it: they ask about the price, raise an objection, or say they're busy. A scenario is a prepared response to one such situation. It isn't tied to a place in the script - the agent uses it whenever the situation comes up and then returns to where it left off. ### Add a Scenario * Open the **Scenarios** tab at the top of the agent editor. * Click `+` under the list of scenarios. * In the title field (**Type question here**), describe the question or situation, for example *How much does it cost? What is the pricing?* You can list several ways a contact might put it, as in this example. * Add the steps the agent follows in this situation. The Scenarios tab with a list of scenarios and the plus button to add one ### Add Steps Scenario steps work the same way as steps in script nodes. The buttons under the steps add a `Step`, `Schedule a Meeting`, `Action`, `Call Transfer` or `End Call` - see [Agent Steps](/documentation/build-your-agent/customizing-steps) for each of them. Steps can include [variables](/documentation/build-your-agent/agent-variables), such as the contact's name. Scenarios with more than one step show a list icon in the list. An open pricing scenario with two steps and the Step, Schedule a Meeting, Action, Call Transfer and End Call buttons End the last step with a short question, such as *Does that make sense?*, so the conversation can return to the script smoothly. ### Use Scenario Examples * Click **Show Scenarios examples** at the bottom of the tab. * Click an example to add it as a new scenario. It comes with a ready-made step that you can edit. Examples you've already added are marked with a check mark. Scenario examples such as callback requests, integrations and whether the agent is a robot ### Edit or Delete a Scenario Click a scenario in the list to open it. Change the title or the steps right in the panel, or click `···` next to the title: * **Edit Title**: Jump to the title field. * **Delete**: Remove the scenario. ### Knowledge Base and A2A The buttons above the list connect extra sources of answers: * **Connect Knowledge Base**: Pick the knowledge bases the agent can draw on during the call, or click **Create New**. See [Knowledge Base](/documentation/using-callers/knowledge-base). * **Connect A2A**: Connect external agents that give your agent live guidance during the conversation, if your account has A2A connections. # Agent Script Source: https://docs.callers.ai/documentation/build-your-agent/agent-script This guide provides an overview of how to create a versatile and effective agent script within the Callers platform. Tailor the conversation flow to meet the unique needs of your agent, whether it's for inbound or outbound calls. ### Understanding the Script Creation Process Creating an agent script involves setting up a series of decision points and responses that guide the conversation with your clients. Script canvas showing a branching conversation flow ### Steps to Create Your Script **Initiate with the Intro Script** * **Inbound Calls**: As a suggestion, you might begin your script with an introductory script node where you confirm the client's identity by asking for their name and inquiring about their well-being. However, feel free to adjust this approach based on your specific needs. * **Outbound Calls**: As a suggestion, start by confirming the client’s identity and then proceed with the planned interaction. This is just a guideline, and you can tailor it as required. Expanded script node showing its steps #### **Branching the Conversation** * After the initial engagement, introduce a question to guide the conversation. Based on the client's response, you can expand the script: * Click the `+` button next to the current node. * Choose how to continue - `Add Subflow`, `Add Nested Script` (if your account has nested scripts), or `Go to Block`. * In the new node, label it with a title that represents the client’s latest response which guides the agent to this node. Alternatively, you can simply give a title to this node based on its content. The + menu with Add Subflow, Add Nested Script, and Go to Block **Note**: If no decision split is required, you can continue the script in the same node. ### Nested Scripts A **nested script** is a self-contained branch that lives on its own canvas. Nested scripts are available if your account has them. Use one when a part of the conversation is big enough to deserve its own flow - scheduling a meeting, handling an objection, running through a qualification checklist - and you don't want it crowding the main script. Nested scripts are easy to spot: they are **blue**, and the label above the node names the script it opens. Click the node to open it. The breadcrumb in the top-left shows where you are and takes you back to the parent script. A nested script open on its own canvas with a breadcrumb back to Script Already built the branch as a regular subflow? Open the node's `•••` menu and choose `Convert to Nested Script`. The option is greyed out when a node further down the branch is already a nested script. ### Managing Subflows, Nodes and Steps * To modify your script effectively, you can move nodes, delete unnecessary subflows, or adjust branching logic. * Moving or deleting **nodes**: * Hover over the node and click the `•••` icon to the right of its name. * `Delete` removes only this node, while `Delete With Subflows` also removes every node that branches off it. Node context menu with Edit, Create Subflow, Go to Block, Convert to Nested Script, Move, Duplicate, Delete and Delete With Subflows options * To move a node, press `Move`. The canvas switches into placement mode - pick the `+` button where the block should land, or press `Cancel` to back out. Move mode with the prompt to select the new position for the block #### **Customize Node Content** * Customize the dialogue and the questions in each node according to the agent goals. Refer to the [Customize Steps](/documentation/build-your-agent/customizing-steps) page for more details. **Note**: Each node must contain at least one step. #### **Directing Flow Between Nodes** * To lead the script from a subflow back to a specific node or to continue the script from a particular point: * Click the `+` button next to the node from which you want to continue. * Select `Go to Block`. * Pick the destination from the **Target Block** dropdown, or click it directly on the canvas. Optionally, give the block a name to describe the client response that leads here. Go to Block panel with the Target Block dropdown **Note:** You can add as many subflows as needed to accommodate various branches of the conversation. ### The Workflow Tab The script covers what the agent says. Everything around it - what starts the conversation, what counts as a good outcome, and what happens afterwards - lives on the **Workflow** tab at the top of the screen. Workflow tab showing the full conversation pipeline #### **Success Criteria** **Success Criteria** define the possible outcomes of a conversation, split into **Goal Reached** and **Goal Not Reached**. Click the card on the Workflow tab to open it. You can have Callers draft the criteria from your script with **Generate** (or **Regenerate** once there are criteria), or write your own with **+ Add**. Each outcome carries a short description that tells the agent when it applies. When the list looks right, click **Mark as Reviewed**. Success Criteria window with goal reached and goal not reached outcomes Edit the script later and the criteria may fall behind it. The window reminds you to review them after your last edits - run **Regenerate** to bring them back in line. #### **Summary** **Summary** is the information the agent collects from each conversation. Click the card on the Workflow tab to see the list; every entry pairs a name with the question it answers, and clicking one opens it for editing. Use **+ Add** to collect something extra. Whatever you define here shows up in the call summary, alongside your [Key Questions](/documentation/using-callers/key-questions). Summary window listing the information collected from the conversation ### **Validating the Flow** * Ensure all node links are correctly made to prevent any dead ends or loops in the conversation. * Preview and test the agent. Conduct test calls to check the flow and make necessary adjustments. Save the agent first - **Test** isn't shown while there are unsaved changes. Then click **Test** in the top-right corner to open the test panel. It lists your previous test calls, so you can come back to them later. Test panel with the Initiate a new test button Click **Initiate a new test** and choose how to run it: * **Phone Call** - The test call goes out over one of the agent's phone numbers, so you need one first - see [Phone Numbers](/documentation/build-your-agent/agent-setup#phone-numbers). Enter the number that should receive the call. * **Web Call** - Talk to the agent straight from your browser, if your account has it. Nothing to connect and no phone number involved, which makes it the quicker way to try a script. Fill in the script variables, then press **Start**. The toggles below let you load the contact's memories, or run the test in a different language or time zone. Initiate a new test window with Phone Call and Web Call tabs # Agent Setup Source: https://docs.callers.ai/documentation/build-your-agent/agent-setup Configure your voice agent's name, direction, phone numbers, voice, availability and call settings. Agent settings open from the icons on the right side of the agent editor header: **Channels**, **Availability**, **Agent** and **General Settings**. Clicking the agent name on the left opens **General Settings** too. The Channels, Availability, Agent and General Settings icons next to the Test button This page covers voice agents. For text agents, see [Text Agent Setup](/documentation/text-agents/text-agent-setup). ## General Settings * **Agent name**: The name you see in the agent list. * **Use case** (optional): A label such as *Cold Outreach*, *Lead Revival* or *Support & Troubleshooting*. Choose **Other** to describe your own. The use case helps you group and filter agents; it doesn't change how the agent behaves. * **Outgoing** and **Incoming**: The agent's direction. A new agent is **Outgoing**. Check **Incoming** as well to have one agent both make and answer calls - see [Outgoing and Incoming Together](#outgoing-and-incoming-together) - or uncheck **Outgoing** to make it inbound only. At least one direction stays selected. * **Voice**, **Text** or **Email**: The agent's channel. **Text** and **Email** are available if your account has them. * **Agent Instructions** (optional): General instructions the agent follows on every call. General Settings with the agent name, use case, Outgoing and Incoming cards, channel tabs and Agent Instructions ### Outgoing and Incoming Together With both **Outgoing** and **Incoming** checked, one agent calls your contacts and also answers calls to its phone numbers - for example, when a contact calls back. Such an agent combines the settings of both directions: * **Technical Settings** show the full outgoing list. * **Channels** lists your numbers set up for outgoing calls. A number that already answers calls for another agent can't be selected. * **Availability** shows the calling hours and dial attempts, and both **Max Outgoing Calls in Parallel** and **Max incoming calls in parallel**. ### Technical Settings Expand **Technical Settings** for call handling options: * **Record Calls**: Record every call. When recording is on, **Stop Recording When Call Is Transferred** stops it as soon as the call is handed over to another number. * **Check US Federal Do Not Call (DNC) Registry**: Don't call numbers on the US Federal DNC registry. Test calls are excluded from this check. Once it's on, you can also include state DNC lists. * **Enable Account Do Not Call (DNC) List**: Don't call numbers on your account's own Do Not Call list, if your account has it. Once it's on, **Update Account Do Not Call (DNC) List Automatically** adds the number of every contact who asks not to be called again. * **Continue Dialing Attempts after "Call Later"**: Keep dialing a contact whose call was classified as **Call Later**. * **Contact Memory**: Agents remember details about contacts from earlier calls and share them across your organization. You can turn memories off for this agent, stop it from adding new memories, make it use only memories from its own calls, or give it a custom prompt (up to 2,000 characters) about which details to remember. * **Sensitive data detection**: Detect credit card numbers, CVVs and PINs in call transcripts. Once it's on, choose what happens to them: **Mask sensitive messages**, **Delete transcripts with sensitive data** or **Delete recordings with sensitive data**. * **Send SIP Headers**: Pass contact variables as custom SIP headers on outbound calls and transfers. * **Allow Duplicate Phone Numbers**: Let several contacts share the same phone number. Once enabled, this setting can't be turned off. * **Local Dialing**: Dial contacts in local number format, so contacts can be added without a country code. Available if your account has it. * **Limit the duration of the call**: Calls longer than this are hung up automatically - from 1 to 60 minutes, 30 by default. Transferred calls get an extra 150 minutes. Technical Settings with Record Calls, Stop Recording When Call Is Transferred, the DNC options and Continue Dialing Attempts after Call Later Inbound-only agents have a shorter list: recording (including a message that tells callers the call is recorded), Contact Memory, sensitive data detection and the call duration limit. ## Phone Numbers Click **Channels** and open the **Voice Channels** tab to choose the numbers the agent uses. Numbers come from the telephony providers connected to your account - SIP, Twilio or Telnyx - or are managed by Callers. See [Telephony Integrations](/documentation/integrations/telephony) to connect one. * The providers are listed on the left; click one to jump to its numbers. * Check the numbers the agent should use. Click **Refresh** to load numbers you've just added in Twilio or Telnyx. * **Outgoing agents** see numbers set up for outgoing calls. With two or more numbers selected, choose a **Dialing Strategy**: * **Rotate Numbers** (default): Spread calls across your numbers, using the least recently used one first. This helps avoid spam flags. * **Prefer Local Numbers**: Call from a number that matches the contact's area code, rotating between local numbers if you have several. * **Auto Optimize**: Learn which numbers get better pickup rates for each area code and time of day, and use them first. * **Incoming agents** see numbers set up for incoming calls. A number that already takes calls for another agent can't be selected, and you need to stop the agent before you unselect one of its numbers. The Voice Channels tab with connected providers on the left, phone numbers with checkboxes on the right and the Dialing Strategy setting If you don't see the **Channels** button, phone numbers aren't enabled for your account. Contact support to turn them on. ## Voice and Conversation Click **Agent** to set how the agent sounds and listens: * **Language**: The language of the conversation. For languages with several dialects, pick one from the submenu, for example **English - United States**. * **Voice**: Voices available for the selected language, grouped into female and male voices. Type a sentence in **Sample text** and click the speaker icon to hear it. Voices you clone on the [Audio](/documentation/using-callers/audio) page appear here too. * **Background Soundscape**: Ambient sound behind the agent's voice - a built-in one or one you [uploaded](/documentation/using-callers/audio#background-sounds) - with its **Background volume level**. Available only for calls made through a SIP integration. * **Patience Level**: How long the agent waits after the contact stops speaking before it answers - from about 0.1 to 2 seconds, 1 second by default. Fast suits lively conversations, slow suits moments when the contact needs time to think. Individual steps can override it; see [Agent Steps](/documentation/build-your-agent/customizing-steps). * **Initiate Conversation After No Response**: How long the agent waits for a reply before it speaks again. On by default, 8 seconds. * **Auto-Adjust Patience on Interruptions**: The agent adjusts its delay when it's interrupted too often. On by default. * **Keypad Input (DTMF)**: Accept keypad presses during the call. With **Submit Input with #**, pressing `#` submits what the contact typed right away. * **Manual input only**: Turn off speech recognition, so the contact answers only with the keypad. * **Voice Emotions**: Let the agent speak with emotions, if your account has it. It's switched on automatically for voices that support emotions. * **Boost Keyword Recognition**: Words the agent should recognize more reliably, such as product names. Give each a weight from -100 to 100, or leave it blank for the default. * **Guardrails**: Limits on what the agent can say. Choose when responses are checked (**Streaming** or **Before speaking**) and what happens when a guardrail is triggered (**End conversation**, **Retry** or **Transfer to human**). You can add custom guardrails for this agent and, if your account has organization-wide guardrails, apply those too. * **Pronunciation Dictionaries**: Set how the agent pronounces specific words, written in IPA. * **Speech Recognition Vocabulary**: Important terms with alternate spellings or how they sound, to improve transcription. Available if your account has it. * **Leave message if reaching voicemail**: Leave a voicemail message, which can include [variables](/documentation/build-your-agent/agent-variables). Under **When to leave a voicemail**, choose **Whenever voicemail is detected**, **First detected voicemail only** or **On the final scheduled call (if voicemail is detected)**. The Agent window with language, voice, sample text, Background Soundscape, Patience Level and keypad settings ## Availability Click **Availability** to set when the agent calls. ### Outgoing Agents * **Use Contact's Time Zone**: Estimate each contact's local time zone from their phone number's country and area code, if your account has it. You then set a fallback time zone for numbers it can't place. * **Time zone**: The time zone for your calling hours. * **Days and hours**: Monday to Friday, 9:00 am to 5:00 pm by default. Click the arrow next to the hours to set different hours per day, add several time slots to a day, or copy one day's slots to all days. * **Attempts**: * **Total Dial Attempts**: How many times a contact is called in total - 5 by default, up to 10 unless your plan allows more. * **Max Daily Dial Attempts**: How many times a contact can be called per day - 3 by default, from 1 to 50. * **Min Wait Time Between Dial Attempts**: The shortest gap between two calls to the same contact, in minutes or hours - 90 minutes by default, from 5 minutes to 145 hours. * **Split Attempts per Day**: Set a different number of attempts for each day: Day 1, Day 2, and Day 3 - All Following Days. Click **Add Day** to plan up to 7 days separately. * **Limit Concurrent Calls**: Cap how many calls run at the same time with **Max Outgoing Calls in Parallel** (10 by default). Turn it off to let calls go out as fast as possible. Availability with the time zone, calling days and hours, dial attempts, Split Attempts per Day and Limit Concurrent Calls ### Incoming Agents Incoming agents answer at any time, so they only need a **Time zone** - used, for example, when scheduling meetings - and **Max incoming calls in parallel**: from 1 to 20, 2 by default. This limit applies to calls received through Twilio. Agents that handle [both directions](#outgoing-and-incoming-together) show all of the settings above. ## Saving and Publishing As soon as you change a setting, the header shows **Cancel** and **Save**. Click **Save** to keep your changes. If your account uses agent versions, click **Publish** afterwards to make them live. If your agent has several versions and you changed General Settings, Availability or Channels, you're asked to confirm that these changes apply to all versions. Your agents are listed on the **Agents** page, with their contacts, interactions, connect rate, success rate and status. The Agents page with the agent's type, name, total contacts, total interactions, connect rate, success rate and status Once your agent is set up, you're ready to launch. For **outgoing agents**, upload your contacts [in the app](/documentation/using-callers/uploading-contacts) or through the [API](/api-reference/introduction). # Agent Variables Source: https://docs.callers.ai/documentation/build-your-agent/agent-variables Insert contact details such as names and company names into your script, fill them in when you upload contacts, and pass them to Actions. Variables are placeholders for details that change from contact to contact, such as their name or company. Write a step once, for example *Hi `name`, this is `agentName` from `companyName`*, and during each call the agent says that contact's own values. The values come from your contact list. Every agent starts with two built-in variables, **name** and **phoneNumber**. You can't rename or delete them. ### Adding Variables to a Step * Click a step to edit it, then click **Variable** in the bar under it. You can also type `+` while writing the step. * A picker opens with all of the agent's variables. Click one to insert it. * To create a new variable, type its name and press `Enter`. It is added to the step and to the agent's variable list. Variable names can use letters, digits, `$` and `_`, must start with a letter, `$` or `_`, and can be up to 30 characters long. Spaces aren't allowed, so join words the way the built-in variables do: `companyName`, `propertyAddress`. A step with a new empty variable and the picker listing the agent's variables ### Editing and Deleting Variables Click a variable inside a step to open the picker again, or open the [Variables panel](#the-variables-panel). Then click the `···` button next to a variable: * **Edit**: Rename the variable. The new name replaces the old one everywhere it's used: in steps, scenarios and Actions. * **Delete from Variables**: Remove the variable from the agent, together with every place it's used in steps, scenarios and Actions. The built-in **name** and **phoneNumber** variables have no `···` button. The options menu of a variable with Edit and Delete from Variables ### The Variables Panel To see all of the agent's variables in one place, click the hexagon icon in the top-left part of the agent editor header. Its tooltip reads **Variables**. The agent editor header with the hexagon Variables button highlighted The panel shows: * **Variables In Use**: Variables used somewhere in the agent, such as in a step, a scenario or an Action. * **Variables Not In Use**: Variables that exist in the agent but aren't used anywhere yet. * **Add variable**: Type a name and press `Enter` to create a variable without adding it to a step. * The agent's Actions, if it has any. Click one to see the [response variables](#action-response-variables) it returns. The `···` button next to each variable works the same way as in a step. The Variables panel listing variables in use and not in use Every variable in the agent must have a value when you upload contacts, including the ones under **Variables Not In Use**. The exception is optional variables, such as the `email` variable a meeting step adds. Delete the variables you don't need, so your contact files don't need columns for them. ### Filling in Variable Values Variable values come from your contacts. See [Uploading Contacts](/documentation/using-callers/uploading-contacts) for the full upload steps. * **CSV file**: Add one column per variable, and name each column exactly like the variable. For example, if your script uses `companyName`, add a `companyName` column. Upper or lower case doesn't matter. * The upload window lists the columns your file must include, and **Download Sample CSV** gives you a file to start from. Besides your own variables, you always need `name` and `phoneNumber`; Email agents need `name` and `email` instead. * If a required column is missing, the file isn't accepted and you see which columns are missing. * A contact with an empty value for one of your variables is skipped; the rest of the file is still imported. * Extra columns that don't match any variable are saved with the contact. * **API**: Put the variable values in the `data` object of each contact. Keys follow the same naming rules as variable names. ```json theme={null} { "name": "John Doe", "phoneNumber": "+1 555 555 1234", "data": { "companyName": "Acme", "propertyAddress": "123 Maple Street" } } ``` When you add a single contact that is missing a value, the request is rejected and the error lists the missing fields. In a bulk request, contacts with missing values are skipped. See the [API Reference](/api-reference/introduction) for the endpoints. Outbound agents also check values right before dialing. A contact without a value for a variable used in the script isn't called: they are skipped, and you get a notification listing the missing variables. This can happen with contacts added before you added the variable to the script. ### Variables in Actions In a custom Action (`Action` → **Create Custom Action**), the **URL**, **Headers** and **Query params** fields accept variables. Click a field, then click the `+` button on its right to open the picker. In Actions it has more tabs: * **Contact**: The agent's variables. Type a name and press `Enter` to create a new one. * **Transcript**: Values the agent picks up from the conversation. See [Transcript Variables](#transcript-variables). * **CallData**: Details of the call, such as `duration`, `phoneFrom` and `phoneTo`. * **Metadata**: IDs such as `contactId`, `callId` and `campaignId`. * **Actions**: Values returned by the agent's other Actions, if it has any. See [Action Response Variables](#action-response-variables). To send variables in the request body, set **Body Type** to **JSON** and open **JSON Body**. The same variables are listed under the editor. A custom Action URL field with the plus button and the variable picker showing the Contact, Transcript, CallData and Metadata tabs ### Transcript Variables A transcript variable stores something the contact says during the call, such as an order number or a preferred date, so an Action can send it on. * In the Action, open **Variables Extracted with Prompt** and click **Add New Variable**. * Enter a **Variable Name**. * Choose its **Type**: * **Text**: Free-form answers. This is the default. * **Number**: Numeric answers. * **Boolean**: Yes/no answers. * **Array**: A list of values. Click **Define schema** to describe what each item contains. * In **Description**, explain what to capture, for example *Is this booking for a birthday, honeymoon, anniversary or another special occasion?* * Use the back arrow to return to the Action. The new variable is now on the **Transcript** tab of the picker, ready to insert into the URL, headers or body. Transcript variables also show up on the **Transcript** tab of the picker in steps. Variables Extracted with Prompt with a Boolean variable and its description ### Action Response Variables When you click **Send Test Request** in an Action and the request succeeds, the fields in its response become variables. Use them in later steps from the **Actions** tab of the picker, for example to read out an order status. You can also pass them to other Actions. To see an Action's response variables, open the [Variables panel](#the-variables-panel) and click the Action. If it shows **No Data Received**, test the Action again and make sure the request succeeds. The Variables panel showing the status and data response fields of an Action For more on setting up Actions, see the [Agent Actions guide](/documentation/build-your-agent/agent-actions). # AI Chat Source: https://docs.callers.ai/documentation/build-your-agent/ai-chat Describe what you need and let the AI chat build or change your agent for you. The AI chat in the agent editor builds and changes your agent from plain-language requests. Ask it to add steps to the script, write scenarios, set up variables, change the agent's settings or translate the whole agent - it makes the changes in the editor for you to review. ## Open the Chat Click the AI button in the bottom-left corner of the canvas. It's there both on a new agent and on one you're editing. Script canvas with the AI button highlighted in the bottom-left corner The chat opens on the left side of the editor. Drag its right edge to make it wider, and click `X` to close it. Type your request into **Tell AI what to do next** - up to 5,000 characters - and press Enter to send it. Press Shift+Enter for a new line. ## What You Can Ask * **Script**: Add, change or remove steps and nodes, and change how they connect. * **Scenarios** and **Variables**: Create or edit them. * **Actions**: Add actions the agent uses during calls. * **Workflow**: Success criteria, summary questions, triggers, pre-conversation actions and webhooks. * **Settings**: The agent's name, use case and direction, voice and language, calling hours and dial attempts, voicemail, recording, Do Not Call options and phone numbers. * **Translation**: Translate all the text in the agent into another supported language. * **Find and replace**: Replace a word or phrase everywhere in the script. The chat shows what it found and asks you to confirm first. For example: * "Add a step that asks whether now is a good time to talk." * "Call contacts Monday to Friday from 10 am to 6 pm." * "Replace 'demo' with 'consultation' everywhere in the script." * "Translate the agent into Spanish." When a request needs more details, the chat asks clarifying questions one at a time. Answer each and click **Next**, then **Submit**. For questions with options, you can also type your own answer under **Other** or pick **I'll choose later**. The chat doesn't save or publish your agent, start or stop it, upload contacts or place test calls - you do that yourself. ## Review and Undo Changes The chat applies its changes to the editor right away, and the header switches to **Cancel** and **Save**. Nothing is saved to your agent until you click **Save**. Under each reply, the chat lists the areas it changed - such as **Script**, **Scenarios** or **Agent**. Expand one to see what was added, edited or removed, and click a script change to jump to that node on the canvas. The AI chat with a request, the Script change summary, the change card and Revert changes * **Change cards**: Every reply that changes the agent ends with a card describing the change. The **Base version** card at the top shows the agent as it was when the chat started. * **View changes**: Click the eye icon on an earlier card to preview that state on the canvas. Click it again to go back. * **Apply changes**: Click the arrow icon on an earlier card to return the agent to that state. * **Revert changes**: Click it at the bottom of the chat to undo everything the chat changed and return to the **Base version**. When you're happy with the result, click **Save**. Click **Cancel** to discard all unsaved changes, including the chat's. If you edit the agent by hand between requests, the chat takes your edits into account. Very large requests can time out - if that happens, ask for one part at a time, for example one node of the script. ## Chat History Click the icon in the top-left corner of the chat to see **All Chats** for this agent. Chats are saved automatically, and you see only your own. * Click **New Chat** to start over. * Hover over a chat and open its `⋯` menu to **Edit** its name or **Delete** it. The AI chat is part of the agent editor, so it's available to admins. Read Only members can't open the agent editor. # Agent Steps Source: https://docs.callers.ai/documentation/build-your-agent/customizing-steps This guide provides detailed instructions on how to personalize the dialogue and questions in each node of your agent script within the Callers platform. Open a node on the script canvas to see its steps. The buttons at the bottom of the node add new ones: **Step**, **Schedule a Meeting**, **Action**, **Call Transfer**, and **End Call**. ### **Add Call Steps** * Click the `Step` button to add a step that the assistant will follow during the call. A script node with the Step button highlighted The new step opens ready for typing. The bar underneath it inserts more than plain text: * **Variable** - Insert a value that changes per contact, such as their name. See [Agent Variables](/documentation/build-your-agent/agent-variables). * **Instructions** - Insert an instruction for the agent instead of words to say verbatim, for example *Briefly introduce the product in one or two sentences*. Instructions show up as a blue block inside the step. * **Emotions** - Set how the line should sound, if your account has it. Emotions depend on the voice: if the button is unavailable, switch to a voice that supports emotional responses. An empty new step with the Variable, Instructions and Emotions buttons ### **Schedule Meetings** * Press the `Schedule a Meeting` button. * Scheduling runs on Cal.com, so [connect your Cal.com account](/documentation/integrations/cal-com) first. * Write what the assistant says before offering time slots. * Choose the Cal.com event in the **Meeting** dropdown. * Set the **Future Days Window** - how many days ahead contacts can book, from 1 to 14. It defaults to 14. * Under **If no slots are available**, decide how the assistant reacts: * **Use Fallback Phrase**: The assistant says a phrase of your choice instead. Enter it in the **Fallback Phrase** field that appears. * **Avoid Calling**: The assistant doesn't call when there are no slots. On incoming agents this option reads **Avoid answering**. Time slots are offered in the contact's time zone: the one provided when the contact was created, otherwise the one inferred from their phone number, and the agent's own time zone if neither is available. A script can hold up to 10 meeting steps. A Schedule Meeting step in a script node **Note**: Meeting invitations are sent to the contact's email. Adding this step adds an optional **`email`** variable - fill it in when you upload contacts. If a contact has no email, Callers tries to find one in the SIP headers or the conversation, and books the meeting without an invite if it can't. ### **Call Forwarding** * Press the `Call Transfer` button. * Enter a *Call Transfer Phrase*. The assistant says it right before the call is transferred. * Choose where the call goes: * **Phone / SIP**: An international phone number or a SIP URL. **Include the country code** for phone numbers. * **Human operator**: A queue of your human operators, if your account has them. * Set the **Caller ID for Forwarded Call** - the agent's number or the contact's number. A call transfer ends the node: you can't add more steps after it. A Call Transfer step with warm transfer turned on ### **Warm Transfer** Turn on **Warm Transfer** in a Call Transfer step to play a **summary message** before the call is handed over, so the person who picks up is ready for the conversation. * **Play warm transfer message to** - who hears the summary: * **Receiver only**: Played to the receiver before the contact is connected. Not recommended for call queues, because the message may play before anyone answers. * **Both parties**: Played to both sides. You then choose when it plays - **When call is connected**, or **When ⁕ is pressed**. * **Prompt for the warm transfer handoff message** - describe what the summary should cover. #### Triggering the Summary Through the API You can also play the summary from your own system, for example after transferring a call yourself: * API Endpoint: `POST /call/{sessionId}/warm-transfer-summary` - see the [API Reference](/api-reference/introduction). * Required: * `Authorization` header with your API key. * `sessionId` of the call to play the summary for. * Optional: * `x-sub-organization-id`: If using sub-organization accounts. * `agentOnly` (boolean, defaults to `false`): If set to `true`, only the receiving agent hears the summary. The **Warm Transfer Summary** is designed to improve customer experience by giving the receiving agent context before connecting them with the caller. ### **Sending an SMS** SMS is no longer added as a separate step. To send a text message during the call, add an `Action` step that uses an SMS integration from the [App Center](/documentation/integrations/app-center), if your account has it - for example Twilio, ClickSend SMS, Heymarket SMS, Kudosity, Octopush SMS, or smsmode. See [Agent Actions](/documentation/build-your-agent/agent-actions) for how to set one up. Scripts that already contain an SMS step keep working as before. You just can't add new ones. ### **End Call** * Press the `End Call` button. * Add a phrase for the assistant to say before ending the call. Like a call transfer, ending the call closes the node, so it is always the last step. An End Call step with a goodbye phrase ### **Editing Steps** * **Reorder Steps**: Hover over a step and use the up and down arrows next to its number. * **Key Questions**: Click the star next to a step to make it a [key question](/documentation/using-callers/key-questions). Key questions appear in the call summary. * **Step Options**: Hover over a step to show its buttons: * **Copy**: Copy the step's text. * **Play**: Hear how the sentence will be said. * **Rephrase**: Generate a new version of the sentence. * **Delete**: Remove the step. A node needs at least one step, so the button is hidden when only one is left. * **Step Settings**: While you're editing a step, the settings button on its right sets the patience level for that step. It also lets the agent speak the step without interruptions - always finishing the line even if the contact talks over it, or only the first time it's played. Step toolbar with copy, play, rephrase and delete buttons Variables can be added to the script for dynamic customization. See [Agent Variables](/documentation/build-your-agent/agent-variables) page for more details. # Pre-Call Chat Source: https://docs.callers.ai/documentation/build-your-agent/pre-call-chat Send an AI-powered text message before dialing to ask contacts if they want to receive your call - boosting answering rates and reducing wasted dial attempts. ## What Is Pre-Call Chat? Pre-Call Chat is an optional step you can add to any outgoing voice agent. Instead of dialing a contact cold, Callers first sends them an AI-powered SMS or WhatsApp message asking if they'd like to receive your call. Contacts who say yes are far more likely to pick up - turning a reluctant ring into a warm, expected conversation. Pre-Call Chat requires a messaging channel (SMS or WhatsApp) to be connected to your account. See [Twilio SMS](/documentation/text-agents/twilio-sms), [Telnyx SMS](/documentation/text-agents/telnyx-sms), or [WhatsApp](/documentation/text-agents/whatsapp) to get started. ## Why Use It? Contacts who've already agreed to a call are significantly more likely to pick up when you dial them. Skip contacts who aren't available or interested right now, saving dial attempts for people who actually want to talk. Asking permission before calling feels respectful and professional, which sets a positive tone before the conversation even starts. Choose what happens when contacts don't reply or decline - proceed anyway, reschedule, or stop. ## How It Works When your agent is active, Callers sends your configured opening message to the contact via SMS or WhatsApp before any call is attempted. The AI reads their response and determines whether they've agreed to the call, declined, or haven't replied yet. Based on the reply (or lack of one), the system either places the voice call, reschedules it for a working window, or moves on - according to your configuration. *** ## Configuration Pre-Call Chat is configured from the **Workflow** tab of your agent. Click the **Pre-Call Chat** node in the workflow diagram to open the settings panel. Agent workflow showing the Pre-Call Chat node ### Initial Message Write the message that will be sent to contacts before dialing. This is your first touchpoint, so keep it concise and clear. You can personalize it with agent variables and use the built-in AI rephrase tool to refine your wording. Pre-Call Chat configuration modal *** ### When the Contact Agrees If the contact replies and the AI determines they've approved the call, Callers will proceed to dial them. One setting controls the timing: **Allow calling outside working hours** | Setting | Behavior | | - | - | | Off (default) | The call is placed at the start of the next available working window as defined in your agent's availability settings. | | On | The call is placed immediately, even if it's currently outside your agent's calling hours. | *** ### When the Contact Doesn't Reply Control what happens if a contact receives your message but never responds. **Response timeout** Set how long (in minutes) Callers waits for a reply before treating it as no response. The minimum is 1 minute; the maximum is 1,440 minutes (24 hours). **Send a follow-up nudge** Enable this to send one additional follow-up message after the timeout expires before giving up. This gives unresponsive contacts a second chance to confirm. **No-response action** | Option | What happens | | - | - | | Proceed with voice call | The call is placed anyway, just as if the contact had agreed. The contact is re-queued and dialed at the next working window. | | Do not call | The contact is marked as **Unreached** and no call is made. | *** ### When the Contact Declines If the contact's reply indicates they don't want a call, you can choose what happens next. | Option | What happens | | - | - | | Do not call | The contact is marked as **Not Interested** and no call is made. | | Continue full script in chat | *(Coming soon)* The conversation continues as a regular text agent instead of a voice call. | *** ## Contact Statuses After Pre-Call Chat After the pre-call chat concludes, each contact receives one of the following outcomes: | Outcome | Contact Status | Description | | - | - | - | | Approved → call within hours | **Calling** | Contact agreed and the call is placed immediately. | | Approved → call in next window | **Pending Retry** | Contact agreed and the call will be placed at the next working window. | | Declined | **Not Interested** | Contact explicitly refused the call. | | No response → Do not call | **Unreached** | Contact didn't reply and the no-response action is set to Do Not Call. | | No response → Proceed | **Pending Retry** | Contact didn't reply but the agent is configured to call anyway. | | Technical failure | **Pending Retry** | The chat couldn't be delivered; the contact re-enters the queue. | Contact sidebar interactions timeline *** ## Frequently Asked Questions No. Pre-Call Chat only controls the outreach message sent *before* the call. Your full agent script runs as normal once the voice call connects. Yes - SMS (via Twilio or Telnyx) and WhatsApp are both supported. Make sure your messaging channel is connected before enabling Pre-Call Chat. Callers uses an AI analysis step to interpret the contact's reply. It determines the most likely intent (approved, declined, or unclear) along with a confidence score. Ambiguous replies that can't be confidently classified are treated as no-response, and the configured no-response action applies. Pre-Call Chat activity (messages sent, replies received, outcomes) is tracked alongside your standard agent analytics. Contact statuses update in real time as chats conclude. Yes. Any variable defined under Agent Variables is available to use in the initial message. # Starting a New Agent Source: https://docs.callers.ai/documentation/build-your-agent/starting-a-new-agent Callers efficiently manages both inbound and outbound calls. Follow this step-by-step guide to create a new agent. ### Create the Agent Open **Agents** in the sidebar and click `New Agent` in the top right corner. While you have no agents yet, the button is also in the middle of the page. The Agents page with the New Agent button in the top right corner and in the middle of the empty page The agent editor opens right away, with the agent named **New agent**. You can change its name and set an optional use case at any time in **General Settings** - see [Agent Setup](/documentation/build-your-agent/agent-setup#general-settings). A new agent is **outbound** by default. To make it inbound instead - or to have it handle both directions - change this in the agent's settings. See [Agent Setup](/documentation/build-your-agent/agent-setup#outgoing-and-incoming-together). ### Choosing a Channel An agent reaches your contacts over one channel, which you pick in the agent's **General Settings**. Each has its own guide. Text and Email agents are available if your account has them. Calls contacts, or takes their calls, over the phone. Holds the conversation over SMS or WhatsApp. Sends emails, reads the replies, and responds. Voice agents that answer calls can also talk to visitors on your website through a **Widget**, if your account has it. You turn it on under **Channels** > **Widget** - see [Installing the Widget](/documentation/widget-agents/installing-the-widget). ### Starting Your Agent A new agent opens on the **Script** canvas with a single **Intro Script** node. That node is your starting point, and you can build the rest of the script in either of two ways. * **Start from Scratch**: Add steps to the canvas yourself and shape the flow by hand. * **Build It with AI**: Describe what you need and let the assistant draft the script for you. To use the assistant, click the AI button in the bottom-left corner of the canvas. Script canvas with the AI button highlighted in the bottom-left corner The chat panel opens on the left. Type what the agent should do into **Tell AI what to do next** - up to 5,000 characters - and send it. Keep the conversation going to refine the result. See [AI Chat](/documentation/build-your-agent/ai-chat) for what you can ask and how to undo changes. Expanded AI chat panel with the prompt field While you work, the tabs at the top of the screen - **Script**, **Scenarios**, and **Workflow** - let you move between the script, your scenarios, and the agent's workflow: triggers, actions, success criteria and the call summary. The agent's settings open from the icons in the top right - see [Agent Setup](/documentation/build-your-agent/agent-setup). Click **Save** in the top right when you are done. For detailed instructions on how to build and customize your script, refer to our [Script Building Guide](/documentation/build-your-agent/agent-script). # Setup Source: https://docs.callers.ai/documentation/email-agents/email-setup Connect mailboxes, choose how emails are sent, and configure subject lines, signatures, and follow-ups for your email agent. ## Setting Up an Email Agent Email agent setup defines which mailboxes your agent sends from, how it receives replies, and how each message looks and follows up. A few minutes of configuration keeps your emails personal, professional, and deliverable. ## Creating a New Email Agent 1. Navigate to your Callers dashboard. 2. Click the **New Agent** button. 3. Select **Email** as the agent type. 4. Enter a **Agent Name**. ## Connecting Mailboxes Open the **Mailboxes** section from your agent to connect the email accounts this agent will use. ### Add a Mailbox 1. Click **Add Mailbox**. 2. Choose your provider - **Gmail**, **Outlook**, **Yahoo**, or a custom provider over **SMTP**. 3. Follow the prompts to authorize the account. 4. Once connected, the mailbox becomes available to select for this agent. A mailbox can be connected for **sending**, **receiving**, or both. To let the AI agent read and reply to responses, connect the mailbox for both directions. ### Sending vs. Receiving * **Sending (outbound)** - The address your AI agent sends emails from. * **Receiving (inbound)** - The inbox Callers watches for replies so the AI agent can respond. For custom providers, receiving uses IMAP. For Gmail, Outlook, and Yahoo, connecting the account typically enables both sending and receiving. For SMTP mailboxes, add an IMAP connection if you want the AI agent to read and reply to responses. ### Send Limits Each mailbox has a **Send Limit** - the maximum number of emails it will send per day. Send limits protect your sender reputation and help you stay within your provider's sending policies. Set a limit that matches your provider's guidance and your account's warm-up status. Sending too many emails too quickly from a new address can hurt deliverability. Start with a conservative daily limit and increase it gradually as the mailbox builds a sending history. ## How Emails Are Sent When you connect more than one sending mailbox, choose how Callers picks which address to use for each email: | Strategy | Behavior | | - | - | | **Rotate Mailboxes** | Distributes emails across your mailbox pool, using the least recently used addresses first. Helps avoid spam flags and keeps usage balanced. | | **Random** | Randomly selects a mailbox for each email. Provides natural distribution without strict ordering. | | **Fixed** | Always uses the first selected mailbox. Use this when you want a single, consistent sender identity. | Rotating across multiple mailboxes is the recommended approach for larger agents - it spreads volume, protects deliverability, and reduces the chance of any single address being flagged. ## Message Content ### Default Subject Set the **Default Subject** line used for the first email in the conversation. Replies continue in the same thread, so the subject is applied once when the conversation starts. ### Signature Add a **Signature** to append to your emails so every message looks polished and consistent. Use this for your name, title, company, and any contact details or links you want to include. ### AI Instructions Provide general guidelines for the AI agent's tone and behavior across all emails in the agent - for example, how formal to be, what to emphasize, and any topics to avoid. ## Follow-Ups Follow-ups let your AI agent re-engage contacts who haven't replied. Open the follow-up settings for your email agent to configure them. * **Send Follow-up when no reply** - Turn this on to automatically send follow-ups. Follow-ups are auto-generated by the AI when there's no response. * **Send in** - Choose how long to wait after the previous email before the next follow-up is sent. * **Total Follow-Ups** - The maximum number of follow-up emails the AI agent will send if a contact doesn't reply. * **Min Wait Time Between Follow-Ups** - The minimum gap between follow-ups, set in minutes or hours. * **Split Follow-Ups per Day** - Spread follow-ups out so they aren't all sent in a single burst. * **Follow-Up Prompt** - Add custom instructions to shape the content and tone of follow-up messages. Follow-ups stop automatically as soon as a contact replies - the AI agent then switches to responding in context instead of following up. ## Availability Configure the time zone and the days and hours during which your agent sends emails. Messages scheduled outside your availability window are held and sent at the start of the next available window. ## Saving and Launching 1. Click **Save Changes** to save your agent configuration. 2. Review your mailboxes, subject, signature, and follow-up settings. 3. When ready, click **Launch Agent** to start sending. Before launching, confirm that at least one mailbox is connected and selected, and that your contacts include valid email addresses. ## Next Steps * [Upload contacts](/documentation/using-callers/uploading-contacts) to your agent. * Review [Analytics & Insights](/documentation/using-callers/analytics) for monitoring performance. # Overview Source: https://docs.callers.ai/documentation/email-agents/overview Learn how to create and run AI-powered email agents in Callers, where your AI agent sends, reads, and replies to emails automatically. ## What Are Email Agents? Email agents bring Callers' AI to your inbox. Instead of calling or texting, an email agent sends personalized emails, reads the replies it receives, and responds automatically - following the script and goals you define, just like your voice and text agents. Email is ideal for longer-form outreach, professional follow-ups, and any audience that prefers to communicate in writing. Because conversations happen asynchronously, your contacts can reply whenever it suits them, and your AI agent picks the conversation back up the moment a reply arrives. ## Key Benefits Your AI agent composes personalized, on-brand emails based on your agent script - no manual writing required. When a contact replies, the AI agent reads the message and responds in context, carrying the conversation forward toward your goal. Connect several sending addresses and let Callers distribute emails across them to protect deliverability and sender reputation. Automatically follow up when a contact doesn't reply, with timing and tone you control. ## How Email Agents Work Connect the email accounts your agent will send from - Gmail, Outlook, Yahoo, or any provider over SMTP. See [Email Setup](/documentation/email-agents/email-setup) for details. Use the same script builder you already know to define the conversation flow, what the AI agent should achieve, and how it should respond to replies. Choose the subject line for the first email and add a signature so every message looks polished and professional. Add your contact list. For email agents, each contact needs an email address. See [Uploading Contacts](/documentation/using-callers/uploading-contacts). Start the agent. The AI agent sends the first email, watches for replies, and handles the conversation from there. ## Supported Email Providers Connect the mailboxes you already use. Callers supports the major providers as well as any custom mail server over SMTP. Connect your Google Workspace or personal Gmail account. Connect Microsoft 365 or Outlook.com mailboxes. Connect Yahoo Mail accounts. Connect any other email provider or custom mail server using SMTP for sending and IMAP for reading replies. ## Sending and Replying * **Outbound sending** - The AI agent sends the first email to each contact using one of your connected mailboxes. * **Inbound replies** - When you connect a mailbox for receiving, Callers watches that inbox and hands new replies to the AI agent, which responds in the same email thread. * **Threaded conversations** - Replies stay within the original email thread, so the exchange reads naturally for your contact. To have your AI agent read and reply to responses, make sure the mailbox is connected for **both** sending and receiving. A send-only mailbox can deliver emails but won't pick up replies. ## Getting Started From your dashboard, click **New Agent** and choose **Email** as the agent type. Open **Mailboxes** and connect the addresses you want to send from and receive replies on. Set your default subject line, add a signature, and decide how follow-ups should behave. Add your contact list and start the agent. Email agents share the same contact management, analytics, and reporting as your voice and text agents. If you already run agents in Callers, email will feel familiar from day one. ## Next Steps * [Set up mailboxes, sending, and follow-ups](/documentation/email-agents/email-setup) * [Upload contacts](/documentation/using-callers/uploading-contacts) to your agent * Review [Analytics & Insights](/documentation/using-callers/analytics) to monitor performance # Getting Started with Callers Source: https://docs.callers.ai/documentation/get-started/getting-started-with-callers ## What is Callers? Our platform, featuring 24/7/365 AI Agents, is reshaping how businesses engage with customers in areas like support, success, and meeting scheduling. By leveraging cutting-edge voice technology, our AI agents go beyond traditional interaction - they dynamically engage in complex tasks such as live-action meeting booking. Our focus on enhancing customer experience and business efficiency is evidenced by our notable improvements in lead engagement and appointment scheduling efficiency. Callers is not just meeting the market need for continuous, efficient customer service; we are setting new standards for AI-powered communication solutions in the fast-paced business world. Join us in leading the transformation in AI-driven customer interactions. ## Outbound Operations Experience unparalleled lead generation with Callers' AI Voice technology, revolutionizing your outbound strategy and fueling business growth. Re-engage and convert dormant leads into active opportunities with Callers' AI-driven lead revival strategies, breathing new life into your sales pipeline. Schedule appointments with Callers' AI personal assistant, expertly handling meeting scheduling to enhance efficiency and client engagement. Gather authentic information using Callers' AI agents, enhancing customer insights and driving product improvement.