Skip to main content
Once you’ve created a SIP Trunk, you can start routing calls to it. Every inbound call must:
  1. Reach a PolyAI SIP server.
  2. Tell PolyAI which trunk it belongs to.
  3. Satisfy the trunk’s authentication, if you have configured any.

Where to send calls

PolyAI provides both DNS A records and SRV records to route calls to PolyAI SIP servers. Each SIP Trunk is issued a unique hostname, returned as inbound.hostname:
This resolves to a multi-A DNS record listing all of the PolyAI SIP servers in the region. You can either:
  • Treat each IP as a unique destination, and route calls evenly across each, or
  • Use only the first A record to let PolyAI randomly balance calls across the destinations for you.
Because the trunk ID is embedded in the hostname, no extra SIP header is needed — PolyAI identifies the trunk from the host you connected to.
PolyAI recommends against DNS caching, to avoid routing traffic to any disabled SIP servers.

Global A record

PolyAI also publishes a shared hostname per region: Returns the same multi-A record as the SIP Trunk A record, but can be used where your SIP server routes traffic to multiple PolyAI SIP Trunks or accounts. As the host is shared, you must provide the SIP Trunk ID on every INVITE (see Identifying the SIP Trunk).

SRV records

If you’d rather discover the PolyAI servers via SRV, PolyAI publishes records using the same hostnames as the Global A records (sbc.sip.<region>.poly.ai). <region> is one of eu, uk, us.
When you connect via a Global A record or SRV, you must provide the SIP Trunk ID on every INVITE (see Identifying the SIP Trunk).

Transport and encryption

PolyAI supports both encrypted and unencrypted transports. The PolyAI RTP port range in both cases is 9000–49000.

Firewall

PolyAI uses static IP addresses for all of its SIP and RTP servers. If you need these to add to your firewall, please reach out to support.

Certificates

Identifying the SIP Trunk

If you’re not connecting via the SIP Trunk’s hostname, you must provide the SIP Trunk ID in one of:
  • the X-PolyAI-SIP-Trunk-ID SIP header, or
  • an x-polyai-sip-trunk-id request-URI parameter.

Authenticating your calls

Authentication is optional per trunk. If you’ve configured it via the management API, your INVITE must satisfy it.

Token-based auth

Send the token in the X-PolyAI-SIP-Trunk-Token header on your INVITE:

Digest-based auth

Standard SIP digest authentication. PolyAI replies to your first INVITE with a 401 Unauthorized carrying a WWW-Authenticate challenge built from the trunk’s realm. Your SIP server then re-sends the INVITE with an Authorization header computed from the trunk’s username and password.

Checklist for an inbound call

  1. Connect over the right transport and port. If connecting over TLS, ensure you’ve uploaded PolyAI’s Root Certificate and that your SIP server is using a supported TLS Certificate.
  2. Select a hostname to connect to, providing the SIP Trunk ID if not using the SIP Trunk’s unique hostname.
  3. If the trunk has authentication, present the token header or answer the digest challenge.
  4. Set the dialed user part to a configured extension so the call reaches the right agent.
Last modified on August 17, 2026