> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.phonic.ai/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.phonic.ai/_mcp/server.

# Outbound Call

POST https://api.phonic.ai/v1/conversations/outbound_call
Content-Type: application/json

Initiates a call to a given phone number using Phonic's Twilio account.

Reference: https://docs.phonic.ai/api-reference/conversations/outbound-call

## Authentication

- `Authorization` header (bearer token, required) — Bearer authentication header of the form `Bearer <PHONIC_API_KEY>`. Manage your API keys [here](https://phonic.co/api-keys).

## Request

### Body (application/json)

This endpoint expects an OutboundCallRequest.

- `to_phone_number` (string, required) — The phone number to call in E.164 format.
- `config` (OutboundCallConfig, optional) — When an `agent` is provided, these `config` options override the agent settings.
- `dry_run` (boolean, optional, default: false) — If true, validates the outbound call setup without placing a call. Returns HTTP 200 with `conversation_id` set to null.

## Response

### 200

Success response

- `conversations_outbound_call_Response_200`

### 201

Call initiated successfully

- `conversation_id` (string, required) — The ID of the created conversation.
- `dry_run` (boolean, required) — Always false when a call was placed.

## Errors

### 400 Bad Request Error

Invalid parameters

- `error` (ValidationErrorError, required)
- `param_errors` (map from string to string, required) — Parameter-specific validation errors

### 401 Unauthorized Error

Unauthorized (authentication missing or invalid)

- `error` (BasicErrorError, optional)

### 404 Not Found Error

Agent not found

- `error` (BasicErrorError, optional)

### 409 Conflict Error

The call could not be completed. `error.code` says why - for example `no_answer` when the dialed number never picked up, `call_ended` when the call ended before it connected, or `sip_call_failed` when the carrier rejected it. Also returned when the agent is disabled.

- `error` (BasicErrorError, optional)

### 429 Too Many Requests Error

Concurrency limit reached

- `error` (BasicErrorError, optional)

### 500 Internal Server Error

Internal server error

- `error` (BasicErrorError, optional)

## Types

### OutboundCallConfig

When an `agent` is provided, these `config` options override the agent settings.

- `agent` (string, optional) — The name of the agent to use for the call.
- `project` (string, optional, default: main) — The name of the project to use for the call.
- `generate_welcome_message` (boolean, optional, default: false) — When `true`, the welcome message will be automatically generated and the `welcome_message` field will be ignored.
- `is_welcome_message_interruptible` (boolean, optional, default: true) — When `false`, the welcome message will not be interruptible by the user.
- `welcome_message` (string, optional, nullable) — Message to play when the conversation starts. Can contain template variables like `{{customer_name}}`. Ignored when `generate_welcome_message` is `true`.
- `system_prompt` (string, optional, default: Respond in 1-2 sentences.) — Instructions for the conversation. Can contain template variables like `{{subject}}`.
- `template_variables` (map from string to string, optional) — Variables that can be used in the welcome message and the system prompt.
- `voice_id` (string, optional, default: sabrina) — The voice ID to use for the agent.
- `generate_no_input_poke_text` (boolean, optional, default: false) — Whether to have the no-input poke text be generated by AI.
- `no_input_poke_sec` (integer, optional, nullable) — Number of seconds of silence before sending a poke message. `null` disables the poke message.
- `no_input_poke_text` (string, optional, default: Are you still there?) — The message to send after the specified silence. Ignored when generate_no_input_poke_text is true.
- `no_input_end_conversation_sec` (integer, optional, default: 180) — Seconds of silence before ending the conversation.
- `default_language` (enum, optional) — ISO 639-1 language code that sets the agent's default language to recognize and speak. Welcome message and no input poke text should be in this language.
  - Allowed values: `ar`, `az`, `bg`, `bn`, `cs`, `da`, `de`, `el`, `en`, `es`, `fa`, `fi`, `fil`, `fr`, `gu`, `he`, `hi`, `hu`, `id`, `it`, `ja`, `ka`, `km`, `kn`, `ko`, `lt`, `lv`, `ml`, `mr`, `ms`, `ne`, `nl`, `no`, `pa`, `pl`, `pt`, `ro`, `ru`, `si`, `sk`, `sq`, `sv`, `sw`, `ta`, `te`, `th`, `tr`, `uk`, `ur`, `vi`, `yue`, `zh`
- `additional_languages` (list of enum, optional, default: []) — Array of additional ISO 639-1 language codes that the agent should be able to recognize and speak. Should not include `default_language`. When `multilingual_mode` is `"auto"`, a maximum of 2 additional languages is allowed.
  - Allowed values: `ar`, `az`, `bg`, `bn`, `cs`, `da`, `de`, `el`, `en`, `es`, `fa`, `fi`, `fil`, `fr`, `gu`, `he`, `hi`, `hu`, `id`, `it`, `ja`, `ka`, `km`, `kn`, `ko`, `lt`, `lv`, `ml`, `mr`, `ms`, `ne`, `nl`, `no`, `pa`, `pl`, `pt`, `ro`, `ru`, `si`, `sk`, `sq`, `sv`, `sw`, `ta`, `te`, `th`, `tr`, `uk`, `ur`, `vi`, `yue`, `zh`
- `multilingual_mode` (enum, optional, default: request) — If `"auto"`, each user audio is automatically identified for the language to respond in. If `"request"`, user must request to change language (recommended). If `"initial"` the first turn user audio determines the language for the rest of the conversation.
  - Allowed values: `auto`, `request`, `initial`
- `push_to_talk` (boolean, optional, default: false) — Push to talk mode. User must send mute/unmute messages to turn on/off listening to audio. Defaults to false.
- `intelligence_level` (enum, optional, default: standard) — The intelligence level of the agent. `high` uses a more capable model for more complex reasoning, while `standard` is optimized for lower latency.
  - Allowed values: `standard`, `high`
- `phonic_model` (enum, optional) — The Phonic speech-to-speech model to generate with. Omit it to use the current default model.
  - Allowed values: `phonic_v0_5`, `phonic_v1`, `phonic_v1_1`
- `boosted_keywords` (list of string, optional) — These words, or short phrases, will be more accurately recognized by the agent.
- `pronunciation_dictionary` (list of OutboundCallConfigPronunciationDictionaryItems, optional) — Array of `{ word, pronunciation }` entries. Words must be unique.
- `min_words_to_interrupt` (integer, optional, default: 1) — Minimum number of words required to interrupt the assistant.
- `tools` (list of OutboundCallConfigToolsItems, optional) — Array of built-in or custom tool names to use.
- `enable_redaction` (boolean, optional, default: false) — When `true`, PII and PHI are redacted from text transcripts (e.g. replaced with tags like `[PHONE]`) and bleeped from audio recordings after the conversation ends.
- `enable_watermarking` (boolean, optional, default: false) — When `true`, an inaudible watermark is embedded in the audio the agent generates.
- `model` (enum, optional, default: merritt) — The speech-to-speech model to use.
  - Allowed values: `merritt`
- `audio_speed` (double, optional, default: 1) — The audio speed of the agent.
- `background_noise` (enum, optional) — The background noise type. Can be "office", "call-center", "coffee-shop", or null.
  - Allowed values: `office`, `call-center`, `coffee-shop`
- `background_noise_level` (double, optional, default: 0) — The background noise level of the agent.
- `mcp_servers` (list of string, optional) — Array of MCP server names to use.
- `tasks` (list of Task, optional) — Array of task objects with `name` and `description` fields.
- `outbound_number_pool` (OutboundNumberPool, optional, nullable) — Pool of phone numbers used for outbound calls.
- `enable_assistant_backchannel` (boolean, optional, default: false) — When `true`, the assistant will produce backchannel responses (e.g. "mm-hmm") while the user is speaking.
- `assistant_backchannel_aggressiveness` (double, optional, default: 0.1) — How aggressively the assistant produces backchannel responses. Only relevant when `enable_assistant_backchannel` is `true`.
- `configuration_endpoint` (OutboundCallConfigConfigurationEndpoint, optional, nullable) — When not `null`, at the beginning of the conversation the agent will make a POST request to this endpoint to get configuration options.
- `additional_params` (map from string to any, optional) — Additional runtime parameters.
- `data_retention_policy` (DataRetentionPolicy, optional) — Controls how long transcripts and audio recordings are retained before deletion.
- `languages` (list of enum, optional, default: ["en"], deprecated) — Array of ISO 639-1 language codes that the agent should be able to recognize. This field is deprecated. Use `default_language` and `additional_languages` instead.
  - Allowed values: `ar`, `az`, `bg`, `bn`, `cs`, `da`, `de`, `el`, `en`, `es`, `fa`, `fi`, `fil`, `fr`, `gu`, `he`, `hi`, `hu`, `id`, `it`, `ja`, `ka`, `km`, `kn`, `ko`, `lt`, `lv`, `ml`, `mr`, `ms`, `ne`, `nl`, `no`, `pa`, `pl`, `pt`, `ro`, `ru`, `si`, `sk`, `sq`, `sv`, `sw`, `ta`, `te`, `th`, `tr`, `uk`, `ur`, `vi`, `yue`, `zh`

### OutboundDryRunResponse

- `conversation_id` (any, required) — Always null when `dry_run` is true.
- `dry_run` (boolean, required) — Always true for this response.

### OutboundCallInitiatedResponse

- `conversation_id` (string, required) — The ID of the created conversation.
- `dry_run` (boolean, required) — Always false when a call was placed.

### ValidationErrorError

- `message` (string, required) — Error message

### BasicErrorError

- `message` (string, required) — Error message
- `code` (string, optional) — Error code

### OutboundCallConfigPronunciationDictionaryItems

- `word` (string, required)
- `pronunciation` (string, required)

### OutboundCallConfigToolsItems

### Task

- `name` (string, required) — The name of the task.
- `description` (string, required) — The description of the task.

### OutboundNumberPool

Pool of phone numbers used for outbound calls.

- `active` (list of string, required) — E.164 formatted phone numbers available for outbound calls.
- `blocked` (list of string, required) — E.164 formatted phone numbers that are blocked from being used.

### OutboundCallConfigConfigurationEndpoint

When not `null`, at the beginning of the conversation the agent will make a POST request to this endpoint to get configuration options.

- `url` (string, required) — URL to call. Must be a publicly routable HTTPS URL without embedded credentials.
- `headers` (map from string to string, optional) — Object of key-value pairs.
- `timeout_ms` (integer, optional, default: 3000) — Timeout in milliseconds for the endpoint call.

### DataRetentionPolicy

Controls how long transcripts and audio recordings are retained before deletion. When `zero_data_retention` is `true`, nothing is retained and `transcripts`/`audio_recordings` are omitted.

### DataRetentionPolicy0

Zero data retention mode. No transcripts or audio recordings are retained.

- `zero_data_retention` (boolean, required) — When `true`, no transcripts or audio recordings are retained.

### DataRetentionPolicy1

Standard data retention with configurable deletion windows.

- `zero_data_retention` (boolean, required) — Must be `false` for standard data retention.
- `transcripts` (DataRetentionPolicyOneOf1Transcripts, required)
- `audio_recordings` (DataRetentionPolicyOneOf1AudioRecordings, required)

### DataRetentionPolicyOneOf1Transcripts

- `delete_after_hours` (integer, required, nullable) — Number of hours after which transcripts are deleted. Null means transcripts are retained indefinitely.

### DataRetentionPolicyOneOf1AudioRecordings

- `delete_after_hours` (integer, required, nullable) — Number of hours after which audio recordings are deleted. Null means audio recordings are retained indefinitely.

## Examples

### Dry run response

**Response**

```json
{
  "conversation_id": null,
  "dry_run": true
}
```

**SDK Code**

```python Dry run response
import requests

url = "https://api.phonic.ai/v1/conversations/outbound_call"

headers = {"Authorization": "Bearer <apiKey>"}

response = requests.post(url, headers=headers)

print(response.json())
```

```javascript Dry run response
const url = 'https://api.phonic.ai/v1/conversations/outbound_call';
const options = {method: 'POST', headers: {Authorization: 'Bearer <apiKey>'}};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go Dry run response
package main

import (
	"fmt"
	"net/http"
	"io"
)

func main() {

	url := "https://api.phonic.ai/v1/conversations/outbound_call"

	req, _ := http.NewRequest("POST", url, nil)

	req.Header.Add("Authorization", "Bearer <apiKey>")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```

```ruby Dry run response
require 'uri'
require 'net/http'

url = URI("https://api.phonic.ai/v1/conversations/outbound_call")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <apiKey>'

response = http.request(request)
puts response.read_body
```

```java Dry run response
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.post("https://api.phonic.ai/v1/conversations/outbound_call")
  .header("Authorization", "Bearer <apiKey>")
  .asString();
```

```php Dry run response
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://api.phonic.ai/v1/conversations/outbound_call', [
  'headers' => [
    'Authorization' => 'Bearer <apiKey>',
  ],
]);

echo $response->getBody();
```

```csharp Dry run response
using RestSharp;

var client = new RestClient("https://api.phonic.ai/v1/conversations/outbound_call");
var request = new RestRequest(Method.POST);
request.AddHeader("Authorization", "Bearer <apiKey>");
IRestResponse response = client.Execute(request);
```

```swift Dry run response
import Foundation

let headers = ["Authorization": "Bearer <apiKey>"]

let request = NSMutableURLRequest(url: NSURL(string: "https://api.phonic.ai/v1/conversations/outbound_call")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "POST"
request.allHTTPHeaderFields = headers

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```

### Outbound call response

**Response**

```json
{
  "conversation_id": "conv_12cf6e88-c254-233e-a149-b2f1bdd22783",
  "dry_run": false
}
```

**SDK Code**

```python Outbound call response
import requests

url = "https://api.phonic.ai/v1/conversations/outbound_call"

headers = {"Authorization": "Bearer <apiKey>"}

response = requests.post(url, headers=headers)

print(response.json())
```

```javascript Outbound call response
const url = 'https://api.phonic.ai/v1/conversations/outbound_call';
const options = {method: 'POST', headers: {Authorization: 'Bearer <apiKey>'}};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go Outbound call response
package main

import (
	"fmt"
	"net/http"
	"io"
)

func main() {

	url := "https://api.phonic.ai/v1/conversations/outbound_call"

	req, _ := http.NewRequest("POST", url, nil)

	req.Header.Add("Authorization", "Bearer <apiKey>")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```

```ruby Outbound call response
require 'uri'
require 'net/http'

url = URI("https://api.phonic.ai/v1/conversations/outbound_call")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <apiKey>'

response = http.request(request)
puts response.read_body
```

```java Outbound call response
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.post("https://api.phonic.ai/v1/conversations/outbound_call")
  .header("Authorization", "Bearer <apiKey>")
  .asString();
```

```php Outbound call response
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://api.phonic.ai/v1/conversations/outbound_call', [
  'headers' => [
    'Authorization' => 'Bearer <apiKey>',
  ],
]);

echo $response->getBody();
```

```csharp Outbound call response
using RestSharp;

var client = new RestClient("https://api.phonic.ai/v1/conversations/outbound_call");
var request = new RestRequest(Method.POST);
request.AddHeader("Authorization", "Bearer <apiKey>");
IRestResponse response = client.Execute(request);
```

```swift Outbound call response
import Foundation

let headers = ["Authorization": "Bearer <apiKey>"]

let request = NSMutableURLRequest(url: NSURL(string: "https://api.phonic.ai/v1/conversations/outbound_call")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "POST"
request.allHTTPHeaderFields = headers

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```

### Outbound call response

**Response**

```json
{
  "conversation_id": "conv_12cf6e88-c254-233e-a149-b2f1bdd22783",
  "dry_run": false
}
```

**SDK Code**

```python Outbound call response
import requests

url = "https://api.phonic.ai/v1/conversations/outbound_call"

headers = {"Authorization": "Bearer <apiKey>"}

response = requests.post(url, headers=headers)

print(response.json())
```

```javascript Outbound call response
const url = 'https://api.phonic.ai/v1/conversations/outbound_call';
const options = {method: 'POST', headers: {Authorization: 'Bearer <apiKey>'}};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go Outbound call response
package main

import (
	"fmt"
	"net/http"
	"io"
)

func main() {

	url := "https://api.phonic.ai/v1/conversations/outbound_call"

	req, _ := http.NewRequest("POST", url, nil)

	req.Header.Add("Authorization", "Bearer <apiKey>")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```

```ruby Outbound call response
require 'uri'
require 'net/http'

url = URI("https://api.phonic.ai/v1/conversations/outbound_call")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <apiKey>'

response = http.request(request)
puts response.read_body
```

```java Outbound call response
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.post("https://api.phonic.ai/v1/conversations/outbound_call")
  .header("Authorization", "Bearer <apiKey>")
  .asString();
```

```php Outbound call response
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://api.phonic.ai/v1/conversations/outbound_call', [
  'headers' => [
    'Authorization' => 'Bearer <apiKey>',
  ],
]);

echo $response->getBody();
```

```csharp Outbound call response
using RestSharp;

var client = new RestClient("https://api.phonic.ai/v1/conversations/outbound_call");
var request = new RestRequest(Method.POST);
request.AddHeader("Authorization", "Bearer <apiKey>");
IRestResponse response = client.Execute(request);
```

```swift Outbound call response
import Foundation

let headers = ["Authorization": "Bearer <apiKey>"]

let request = NSMutableURLRequest(url: NSURL(string: "https://api.phonic.ai/v1/conversations/outbound_call")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "POST"
request.allHTTPHeaderFields = headers

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```

### conversations_outbound_call_example

**Request**

```json
{
  "to_phone_number": "+19189397081",
  "config": {
    "agent": "support-agent",
    "welcome_message": "Hi {{customer_name}}. How can I help you today?",
    "system_prompt": "You are an expert in {{subject}}. Be friendly, helpful and concise.",
    "template_variables": {
      "customer_name": "David",
      "subject": "Chess"
    },
    "voice_id": "sabrina",
    "generate_no_input_poke_text": false,
    "no_input_poke_sec": 30,
    "no_input_poke_text": "Are you still there?",
    "no_input_end_conversation_sec": 180,
    "default_language": "en",
    "additional_languages": [
      "es"
    ],
    "multilingual_mode": "request",
    "push_to_talk": false,
    "boosted_keywords": [
      "Load ID",
      "dispatch"
    ],
    "pronunciation_dictionary": [
      {
        "word": "Phuket",
        "pronunciation": "Poo-ket"
      }
    ],
    "min_words_to_interrupt": 1,
    "tools": [
      "keypad_input"
    ]
  },
  "dry_run": false
}
```

**Response**

```json
{
  "conversation_id": null,
  "dry_run": true
}
```

**SDK Code**

```python conversations_outbound_call_example
import requests

url = "https://api.phonic.ai/v1/conversations/outbound_call"

payload = {
    "to_phone_number": "+19189397081",
    "config": {
        "agent": "support-agent",
        "welcome_message": "Hi {{customer_name}}. How can I help you today?",
        "system_prompt": "You are an expert in {{subject}}. Be friendly, helpful and concise.",
        "template_variables": {
            "customer_name": "David",
            "subject": "Chess"
        },
        "voice_id": "sabrina",
        "generate_no_input_poke_text": False,
        "no_input_poke_sec": 30,
        "no_input_poke_text": "Are you still there?",
        "no_input_end_conversation_sec": 180,
        "default_language": "en",
        "additional_languages": ["es"],
        "multilingual_mode": "request",
        "push_to_talk": False,
        "boosted_keywords": ["Load ID", "dispatch"],
        "pronunciation_dictionary": [
            {
                "word": "Phuket",
                "pronunciation": "Poo-ket"
            }
        ],
        "min_words_to_interrupt": 1,
        "tools": ["keypad_input"]
    },
    "dry_run": False
}
headers = {
    "Authorization": "Bearer <apiKey>",
    "Content-Type": "application/json"
}

response = requests.post(url, json=payload, headers=headers)

print(response.json())
```

```javascript conversations_outbound_call_example
const url = 'https://api.phonic.ai/v1/conversations/outbound_call';
const options = {
  method: 'POST',
  headers: {Authorization: 'Bearer <apiKey>', 'Content-Type': 'application/json'},
  body: '{"to_phone_number":"+19189397081","config":{"agent":"support-agent","welcome_message":"Hi {{customer_name}}. How can I help you today?","system_prompt":"You are an expert in {{subject}}. Be friendly, helpful and concise.","template_variables":{"customer_name":"David","subject":"Chess"},"voice_id":"sabrina","generate_no_input_poke_text":false,"no_input_poke_sec":30,"no_input_poke_text":"Are you still there?","no_input_end_conversation_sec":180,"default_language":"en","additional_languages":["es"],"multilingual_mode":"request","push_to_talk":false,"boosted_keywords":["Load ID","dispatch"],"pronunciation_dictionary":[{"word":"Phuket","pronunciation":"Poo-ket"}],"min_words_to_interrupt":1,"tools":["keypad_input"]},"dry_run":false}'
};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go conversations_outbound_call_example
package main

import (
	"fmt"
	"strings"
	"net/http"
	"io"
)

func main() {

	url := "https://api.phonic.ai/v1/conversations/outbound_call"

	payload := strings.NewReader("{\n  \"to_phone_number\": \"+19189397081\",\n  \"config\": {\n    \"agent\": \"support-agent\",\n    \"welcome_message\": \"Hi {{customer_name}}. How can I help you today?\",\n    \"system_prompt\": \"You are an expert in {{subject}}. Be friendly, helpful and concise.\",\n    \"template_variables\": {\n      \"customer_name\": \"David\",\n      \"subject\": \"Chess\"\n    },\n    \"voice_id\": \"sabrina\",\n    \"generate_no_input_poke_text\": false,\n    \"no_input_poke_sec\": 30,\n    \"no_input_poke_text\": \"Are you still there?\",\n    \"no_input_end_conversation_sec\": 180,\n    \"default_language\": \"en\",\n    \"additional_languages\": [\n      \"es\"\n    ],\n    \"multilingual_mode\": \"request\",\n    \"push_to_talk\": false,\n    \"boosted_keywords\": [\n      \"Load ID\",\n      \"dispatch\"\n    ],\n    \"pronunciation_dictionary\": [\n      {\n        \"word\": \"Phuket\",\n        \"pronunciation\": \"Poo-ket\"\n      }\n    ],\n    \"min_words_to_interrupt\": 1,\n    \"tools\": [\n      \"keypad_input\"\n    ]\n  },\n  \"dry_run\": false\n}")

	req, _ := http.NewRequest("POST", url, payload)

	req.Header.Add("Authorization", "Bearer <apiKey>")
	req.Header.Add("Content-Type", "application/json")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```

```ruby conversations_outbound_call_example
require 'uri'
require 'net/http'

url = URI("https://api.phonic.ai/v1/conversations/outbound_call")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <apiKey>'
request["Content-Type"] = 'application/json'
request.body = "{\n  \"to_phone_number\": \"+19189397081\",\n  \"config\": {\n    \"agent\": \"support-agent\",\n    \"welcome_message\": \"Hi {{customer_name}}. How can I help you today?\",\n    \"system_prompt\": \"You are an expert in {{subject}}. Be friendly, helpful and concise.\",\n    \"template_variables\": {\n      \"customer_name\": \"David\",\n      \"subject\": \"Chess\"\n    },\n    \"voice_id\": \"sabrina\",\n    \"generate_no_input_poke_text\": false,\n    \"no_input_poke_sec\": 30,\n    \"no_input_poke_text\": \"Are you still there?\",\n    \"no_input_end_conversation_sec\": 180,\n    \"default_language\": \"en\",\n    \"additional_languages\": [\n      \"es\"\n    ],\n    \"multilingual_mode\": \"request\",\n    \"push_to_talk\": false,\n    \"boosted_keywords\": [\n      \"Load ID\",\n      \"dispatch\"\n    ],\n    \"pronunciation_dictionary\": [\n      {\n        \"word\": \"Phuket\",\n        \"pronunciation\": \"Poo-ket\"\n      }\n    ],\n    \"min_words_to_interrupt\": 1,\n    \"tools\": [\n      \"keypad_input\"\n    ]\n  },\n  \"dry_run\": false\n}"

response = http.request(request)
puts response.read_body
```

```java conversations_outbound_call_example
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.post("https://api.phonic.ai/v1/conversations/outbound_call")
  .header("Authorization", "Bearer <apiKey>")
  .header("Content-Type", "application/json")
  .body("{\n  \"to_phone_number\": \"+19189397081\",\n  \"config\": {\n    \"agent\": \"support-agent\",\n    \"welcome_message\": \"Hi {{customer_name}}. How can I help you today?\",\n    \"system_prompt\": \"You are an expert in {{subject}}. Be friendly, helpful and concise.\",\n    \"template_variables\": {\n      \"customer_name\": \"David\",\n      \"subject\": \"Chess\"\n    },\n    \"voice_id\": \"sabrina\",\n    \"generate_no_input_poke_text\": false,\n    \"no_input_poke_sec\": 30,\n    \"no_input_poke_text\": \"Are you still there?\",\n    \"no_input_end_conversation_sec\": 180,\n    \"default_language\": \"en\",\n    \"additional_languages\": [\n      \"es\"\n    ],\n    \"multilingual_mode\": \"request\",\n    \"push_to_talk\": false,\n    \"boosted_keywords\": [\n      \"Load ID\",\n      \"dispatch\"\n    ],\n    \"pronunciation_dictionary\": [\n      {\n        \"word\": \"Phuket\",\n        \"pronunciation\": \"Poo-ket\"\n      }\n    ],\n    \"min_words_to_interrupt\": 1,\n    \"tools\": [\n      \"keypad_input\"\n    ]\n  },\n  \"dry_run\": false\n}")
  .asString();
```

```php conversations_outbound_call_example
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://api.phonic.ai/v1/conversations/outbound_call', [
  'body' => '{
  "to_phone_number": "+19189397081",
  "config": {
    "agent": "support-agent",
    "welcome_message": "Hi {{customer_name}}. How can I help you today?",
    "system_prompt": "You are an expert in {{subject}}. Be friendly, helpful and concise.",
    "template_variables": {
      "customer_name": "David",
      "subject": "Chess"
    },
    "voice_id": "sabrina",
    "generate_no_input_poke_text": false,
    "no_input_poke_sec": 30,
    "no_input_poke_text": "Are you still there?",
    "no_input_end_conversation_sec": 180,
    "default_language": "en",
    "additional_languages": [
      "es"
    ],
    "multilingual_mode": "request",
    "push_to_talk": false,
    "boosted_keywords": [
      "Load ID",
      "dispatch"
    ],
    "pronunciation_dictionary": [
      {
        "word": "Phuket",
        "pronunciation": "Poo-ket"
      }
    ],
    "min_words_to_interrupt": 1,
    "tools": [
      "keypad_input"
    ]
  },
  "dry_run": false
}',
  'headers' => [
    'Authorization' => 'Bearer <apiKey>',
    'Content-Type' => 'application/json',
  ],
]);

echo $response->getBody();
```

```csharp conversations_outbound_call_example
using RestSharp;

var client = new RestClient("https://api.phonic.ai/v1/conversations/outbound_call");
var request = new RestRequest(Method.POST);
request.AddHeader("Authorization", "Bearer <apiKey>");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{\n  \"to_phone_number\": \"+19189397081\",\n  \"config\": {\n    \"agent\": \"support-agent\",\n    \"welcome_message\": \"Hi {{customer_name}}. How can I help you today?\",\n    \"system_prompt\": \"You are an expert in {{subject}}. Be friendly, helpful and concise.\",\n    \"template_variables\": {\n      \"customer_name\": \"David\",\n      \"subject\": \"Chess\"\n    },\n    \"voice_id\": \"sabrina\",\n    \"generate_no_input_poke_text\": false,\n    \"no_input_poke_sec\": 30,\n    \"no_input_poke_text\": \"Are you still there?\",\n    \"no_input_end_conversation_sec\": 180,\n    \"default_language\": \"en\",\n    \"additional_languages\": [\n      \"es\"\n    ],\n    \"multilingual_mode\": \"request\",\n    \"push_to_talk\": false,\n    \"boosted_keywords\": [\n      \"Load ID\",\n      \"dispatch\"\n    ],\n    \"pronunciation_dictionary\": [\n      {\n        \"word\": \"Phuket\",\n        \"pronunciation\": \"Poo-ket\"\n      }\n    ],\n    \"min_words_to_interrupt\": 1,\n    \"tools\": [\n      \"keypad_input\"\n    ]\n  },\n  \"dry_run\": false\n}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```

```swift conversations_outbound_call_example
import Foundation

let headers = [
  "Authorization": "Bearer <apiKey>",
  "Content-Type": "application/json"
]
let parameters = [
  "to_phone_number": "+19189397081",
  "config": [
    "agent": "support-agent",
    "welcome_message": "Hi {{customer_name}}. How can I help you today?",
    "system_prompt": "You are an expert in {{subject}}. Be friendly, helpful and concise.",
    "template_variables": [
      "customer_name": "David",
      "subject": "Chess"
    ],
    "voice_id": "sabrina",
    "generate_no_input_poke_text": false,
    "no_input_poke_sec": 30,
    "no_input_poke_text": "Are you still there?",
    "no_input_end_conversation_sec": 180,
    "default_language": "en",
    "additional_languages": ["es"],
    "multilingual_mode": "request",
    "push_to_talk": false,
    "boosted_keywords": ["Load ID", "dispatch"],
    "pronunciation_dictionary": [
      [
        "word": "Phuket",
        "pronunciation": "Poo-ket"
      ]
    ],
    "min_words_to_interrupt": 1,
    "tools": ["keypad_input"]
  ],
  "dry_run": false
] as [String : Any]

let postData = JSONSerialization.data(withJSONObject: parameters, options: [])

let request = NSMutableURLRequest(url: NSURL(string: "https://api.phonic.ai/v1/conversations/outbound_call")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "POST"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```