> For a complete page index, fetch https://docs.synthflow.ai/llms.txt. For full documentation content, fetch https://docs.synthflow.ai/llms-full.txt.

# Outbound number pooling

> Attach multiple phone numbers to outbound agents and select a caller ID per call with the Platform API.

Outbound number pooling lets you assign multiple phone numbers to a single outbound agent, then choose which number to use when creating each call. This is useful when you route traffic by campaign, region, or brand while keeping one shared agent configuration.

Use this guide together with the [agent endpoints in the API reference](/api-reference/platform-api/agents/get-assistant) and [make a call](/api-reference/platform-api/calls/voice-call) endpoint.

## Inspect attached phone numbers on an agent

`GET /v2/assistants/{model_id}` now returns `attached_phone_numbers` in the assistant object:

```json
{
  "attached_phone_numbers": [
    {
      "number": "+16286666348",
      "sid": "PN9c8dba0c87f9173af8054d3ccedb8afd",
      "slug": "16286666348"
    }
  ]
}
```

Use `slug` when you need to detach one number, and use `number` when you want to set a specific caller ID in `POST /v2/calls`.

## Attach multiple numbers to an outbound agent

Use `PUT /v2/assistants/{model_id}/phone_numbers`.

You can pass either:

* `phone_numbers` (phone number values, for example `+16286666348`)
* `phone_number_slugs` (internal slugs, for example `16286666348`)

### Attach using phone numbers

```bash
curl --request PUT \
  --url https://api.synthflow.ai/v2/assistants/{model_id}/phone_numbers \
  --header 'Authorization: Bearer YOUR_API_KEY' \
  --header 'Content-Type: application/json' \
  --data '{
    "phone_numbers": ["+16286666348", "+12131231214"]
  }'
```

### Attach using phone number slugs

```bash
curl --request PUT \
  --url https://api.synthflow.ai/v2/assistants/{model_id}/phone_numbers \
  --header 'Authorization: Bearer YOUR_API_KEY' \
  --header 'Content-Type: application/json' \
  --data '{
    "phone_number_slugs": ["16286666348", "1231242151"]
  }'
```

Successful response:

```json
{
  "status": "ok"
}
```

## Detach one attached number

Use `DELETE /v2/assistants/{model_id}/phone_numbers/{phone_number_slug}` to remove a single attached number:

```bash
curl --request DELETE \
  --url https://api.synthflow.ai/v2/assistants/{model_id}/phone_numbers/{phone_number_slug} \
  --header 'Authorization: Bearer YOUR_API_KEY'
```

Successful response:

```json
{
  "status": "ok"
}
```

## Select the outbound caller ID when creating a call

`POST /v2/calls` now accepts optional `from_phone_number`. Pass a phone number in the API body:

```json
{
  "model_id": "0ae2859d-c25c-4d56-a9f3-809387b725ce",
  "phone": "+14155550123",
  "name": "John Doe",
  "from_phone_number": "+16286666348"
}
```

If omitted, Synthflow uses the agent's default outbound number selection behavior.
In the UI logs and call records, the original phone number that was used for each call is still shown so you can verify caller ID selection.

## FAQ

<AccordionGroup>
  <Accordion title="Can I send both phone_numbers and phone_number_slugs in the same attach request?">
    No. Choose either one or the other.
  </Accordion>

  <Accordion title="Does this apply to inbound agents?">
    No. These attach and detach endpoints are intended for outbound number pooling on outbound agents.
  </Accordion>

  <Accordion title="What kind of phone numbers are accepted?">
    You can use any kind of phone number that you own like a custom phone number, phone numbers purchased inside Synthflow or phone numbers from your imported Twilio.
  </Accordion>
</AccordionGroup>