Sign inGet Started

Update a SIP trunk gateway

PATCH
/v1/voice/trunks/{trunk_id}/gateways/{gateway_id}
const gateway = await bird.voice.trunks.gateways.update("TRUNK_ID", "GATEWAY_ID", {
  priority: 10,
});
console.log(gateway.id, gateway.priority);
Response200
{
  "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"
}
Updates the gateway's sip_uri, its priority, either number format, or any combination. Omitted fields stay unchanged; sending an empty string for a number format returns it to E.164.
An updated SIP URI that collides with another gateway on this trunk returns 409 Conflict. An empty body or invalid field returns 422. A trunk or gateway outside the workspace returns 404 Not Found. A trunk without inbound calling enabled returns 412 Precondition Failed.
Parameters
trunk_id
string
gateway_id
string
Request Payload
sip_uri
string
SIP URI an inbound call to this trunk should be forwarded to. Give the host only, with an optional port: which number is dialed there comes from destination_format, so a URI carrying a user part is rejected.
priority
integer
The order gateways are tried in, lowest first. Give two gateways the same priority to share calls between them evenly.
origination_format
string
How this gateway wants the calling number spelled, as a template whose {number} stands for the number without its leading +. The result is stated in the P-Asserted-Identity header of the delivered call.
Send an empty string to go back to E.164, which is +{number}. The template may add digits, letters and the characters -_.!~*'()&=+$,;?/%# around {number}, which may appear at most once, and anything else in braces is rejected so a misspelled placeholder cannot reach a call.
A format with no {number} at all states the same identity on every call, which is what a peer that only accepts one authorized number wants. The call then carries nothing about who really called.
destination_format
string
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.
Send an empty string to go back to E.164, which is +{number}. A format with no {number} at all sends every number this trunk answers to one fixed number, so 777000447973 reaches sip:777000447973@pbx.example.com:5060 whatever was dialed. The same rules as origination_format apply to what the template may contain.
Response Payload
id
string
required
Unique identifier for this gateway.
trunk_id
string
required
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.
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.
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.
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.
created_at
string
required
updated_at
string
required