# List a SIP trunk's gateways

`GET /v1/voice/trunks/{trunk_id}/gateways`

Returns the gateway addresses used to forward inbound calls to this trunk, ordered by priority. A trunk with no gateway refuses inbound calls. Returns a `404 Not Found` error if the trunk does not exist in the workspace.

Returns the complete collection without pagination, including any pre-existing gateways above the current limit of 20. Reads are available when inbound calling is disabled.

## Code samples

**TypeScript**

```ts
const gateways = await bird.voice.trunks.gateways.list("TRUNK_ID");
for (const gateway of gateways.data) {
  console.log(gateway.id, gateway.priority);
}
```

Examples: [TypeScript](/docs/api/reference/list-voice-trunk-gateways.ts.md) · [Python](/docs/api/reference/list-voice-trunk-gateways.py.md) · [Go](/docs/api/reference/list-voice-trunk-gateways.go.md) · [PHP](/docs/api/reference/list-voice-trunk-gateways.php.md) · [CLI](/docs/api/reference/list-voice-trunk-gateways.cli.md) · [MCP](/docs/api/reference/list-voice-trunk-gateways.mcp.md) · [cURL](/docs/api/reference/list-voice-trunk-gateways.curl.md)

## Example response `200`

```json
{
  "data": [
    {
      "id": "vtg_01krdgeqcxet5s7t44vh8rt9mg",
      "trunk_id": "spt_01krdgeqcxet5s7t44vh8rt9mg",
      "sip_uri": "sip:pbx.example.com:5060",
      "priority": 0,
      "origination_format": "+{number}",
      "destination_format": "+{number}",
      "created_at": "2026-05-20T09:14:52Z",
      "updated_at": "2026-05-25T16:42:01Z"
    }
  ]
}
```

## Path parameters

- `trunk_id` (string)

## Response body

- `data` (array of object, required): The trunk's gateways, in priority order.
- `data.id` (string, required): Unique identifier for this gateway.
- `data.trunk_id` (string, required)
- `data.sip_uri` (string, required): SIP URI an inbound call to this trunk is forwarded to. The host only: which number is dialed at that host comes from `destination_format`, because it changes with every call.
- `data.priority` (integer, required): The order gateways are tried in, lowest first. Gateways sharing a priority take an equal share of calls, and any of them may be tried first on a given call.
- `data.origination_format` (string, required)

  How the calling number is spelled to this gateway, as a template whose
  `{number}` stands for the number without its leading `+`. It is stated
  in the `P-Asserted-Identity` header of the delivered call.

  A gateway that has not asked for anything else reports `+{number}`,
  which is E.164. A format with no `{number}` states that same identity on
  every call, whoever called.
- `data.destination_format` (string, required)

  How this gateway formats the dialed number. In the template,
  `{number}` represents the number without its leading `+`. The result
  is placed before the `sip_uri` host. For example, `1234#{number}`
  formats `+31201234567` as
  `sip:1234#31201234567@pbx.example.com:5060`.

  A gateway that has not asked for anything else reports `+{number}`,
  which is E.164. A format with no `{number}` is dialed as it stands, so
  every number the trunk answers reaches that one number.
- `data.created_at` (string, required)
- `data.updated_at` (string, required)

## Related resources

- [Should I use a Bird SDK or call the API directly?](/explained/platform/should-i-use-an-sdk-or-call-the-api-directly) (answer)
- [Build your first integration](/learn/paths/integration) (course)
- [Send your first email](/docs/get-started/send-your-first-email) (docs)

[Get an implementation brief](/learn/workspace?topic=api-basics)
