> ## Documentation Index
> Fetch the complete documentation index at: https://docs.lacy.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Create SIP trunk

> Create a new SIP trunk with credentials, address, and proxy settings

This endpoint creates a new SIP trunk. The platform automatically provisions inbound and outbound trunks on the voice infrastructure using the provided credentials.

### Body Parameters

**sip\_trunk\_type** `string` *required*

The type of SIP trunk: `extension` for a SIP extension, or `number` for a phone number (DID). This determines the expected format of the `phone_number` field.

**phone\_number** `string` *required*

The SIP extension (1-15 characters, e.g. `1000`) when `sip_trunk_type` is `extension`, or a phone number in E.164 format (e.g. `+14155551234`) when `sip_trunk_type` is `number`.

**nickname** `string`

A short, human-friendly label for the trunk (e.g. "Provider X — Main"). Maximum 50 characters.

**sip\_username** `string` *required*

Username for SIP authentication (3-128 characters)

**sip\_password** `string` *required*

Password for SIP authentication (minimum 3 characters)

**sip\_address** `string` *required*

The SIP server address without port (e.g. `sip.provider.com`)

**sip\_calling\_format** `string` *required*

The outbound calling number format:

* `+e164` — International with `+` prefix (e.g. `+12025550123`)
* `e164` — International without `+` prefix (e.g. `12025550123`)
* `national` — National format without country code (e.g. `0741926265`)

**inbound\_authorization\_type** `string` *required*

How inbound calls are authenticated:

* `auth` — Uses the same SIP username and password configured for outbound
* `ip` — Whitelists specific IP addresses (requires `allowed_inbound_ips`)

**allowed\_inbound\_ips** `array`

Array of IP addresses allowed to send inbound calls. **Required** when `inbound_authorization_type` is `ip`. Must contain at least one valid IP address.

**country\_code** `string` *required*

ISO 3166-2 country code where the SIP trunk is located (e.g. `US`, `GB`, `DE`). When `sip_trunk_type` is `number`, the country is auto-detected from the phone number if possible.

**outbound\_proxy** `boolean`

Route outbound calls through a fixed IP address. Default: `false`. Only enable this if your SIP provider requires IP-based authentication for outbound traffic.

### Response

**message** `string`

Success message

**data** `object`

The created SIP trunk object (same fields as [Get SIP trunk](https://docs.lacy.ai/api-reference/sip-trunks/get-sip-trunk.md))

```json 201 Extension with password auth theme={null}
{
  "message": "SIP trunk created successfully.",
  "data": {
    "id": 42,
    "phone_number": "1000",
    "nickname": "Provider X — Main",
    "sip_username": "myuser",
    "sip_address": "sip.provider.com",
    "sip_calling_format": "+e164",
    "inbound_authorization_type": "auth",
    "allowed_inbound_ips": null,
    "outbound_proxy": false,
    "country_code": "US",
    "inbound_trunk_id": "ST_xxxxxxxxxxxx",
    "outbound_trunk_id": "ST_yyyyyyyyyyyy",
    "created_at": "2026-03-31T10:00:00.000000Z",
    "updated_at": "2026-03-31T10:00:00.000000Z"
  }
}
```

```json 201 Phone number (DID) with IP auth theme={null}
{
  "message": "SIP trunk created successfully.",
  "data": {
    "id": 43,
    "phone_number": "+14155551234",
    "nickname": null,
    "sip_username": "trunk_user",
    "sip_address": "sip.provider.com",
    "sip_calling_format": "e164",
    "inbound_authorization_type": "ip",
    "allowed_inbound_ips": ["203.0.113.10", "198.51.100.20"],
    "outbound_proxy": true,
    "country_code": "US",
    "inbound_trunk_id": "ST_xxxxxxxxxxxx",
    "outbound_trunk_id": "ST_yyyyyyyyyyyy",
    "created_at": "2026-03-31T10:00:00.000000Z",
    "updated_at": "2026-03-31T10:00:00.000000Z"
  }
}
```

```json 409 Duplicate theme={null}
{
  "error": "A SIP trunk with the same phone number, username, and address already exists."
}
```

```json 422 Validation Error theme={null}
{
  "message": "The given data was invalid.",
  "errors": {
    "sip_address": ["SIP server address is required."],
    "sip_calling_format": ["SIP calling format must be one of: +e164, e164, national."]
  }
}
```

```json 500 Provisioning Error theme={null}
{
  "error": "Failed to create SIP trunk. Please try again or contact support."
}
```

### What happens after creation

When you create a SIP trunk, the platform automatically:

1. **Provisions an inbound trunk** on the voice infrastructure — using either username/password or IP-based authentication depending on your `inbound_authorization_type` setting
2. **Provisions an outbound trunk** — using the SIP address and credentials you provided, optionally through the outbound proxy

If provisioning fails, the SIP trunk is not saved and a `500` error is returned.

### Next steps

After creating a SIP trunk, assign it to an AI assistant:

* **[Create Assistant](https://docs.lacy.ai/api-reference/assistants/create-assistant.md)** — Use the `phone_number_id` parameter
* **[Update Assistant](https://docs.lacy.ai/api-reference/assistants/update-assistant.md)** — Change the phone number on an existing assistant


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.