Move Retell AI telephony to Bird
Keep the Retell AI agent runtime while moving its telephone connection to Bird. Test each direction and the customer conversation separately.
1. Choose what is moving
Decide whether you are retaining Retell AI as the conversational runtime. This guide moves its telephone connection to Bird; it does not claim to copy or replace the runtime’s prompts, models or tools.
2. Prepare the Bird trunk
Create a trunk and enable the required direction. For incoming calls, configure the runtime’s documented delivery gateway. For outgoing calls, use the Bird SIP domain and an allowed authentication method.
3. Connect the runtime
Use Retell’s SIP setup and number import contract for its side. Configure each direction independently:
| Direction | Bird configuration | Retell configuration |
|---|---|---|
| Customer calls your number | Enable inbound, select the trunk on the number and configure a delivery gateway. | Import the same number and assign its inbound agent; use Retell’s published SIP destination for the Bird gateway. |
| Agent calls a customer | Enable outbound, allow a Voice-write API key and verify the caller ID. | Set the imported number’s termination host to the Bird trunk domain, with digest username bird and the allowed key secret. |
For a new Retell number import, the request body below connects a tested Bird trunk and an existing Retell agent. Replace every placeholder, then submit it to Retell’s POST https://api.retellai.com/import-phone-number using your Retell bearer key. Inspect an existing import before creating another one.
Code example
{
"phone_number": "YOUR_E164_NUMBER",
"termination_uri": "YOUR_BIRD_TRUNK_DOMAIN",
"sip_trunk_auth_username": "bird",
"sip_trunk_auth_password": "YOUR_ALLOWED_BIRD_KEY_SECRET",
"transport": "TLS",
"inbound_agents": [{ "agent_id": "YOUR_RETELL_AGENT_ID", "weight": 1 }],
"outbound_agents": [{ "agent_id": "YOUR_RETELL_AGENT_ID", "weight": 1 }]
}Keep credentials in the runtime’s protected configuration. Importing a number configures Retell; it does not port the number or change its Bird inbound route. Preserve the E.164 caller identity separately from the digest username. Configure compatible media settings and retain your current production route until both directions have passed a real call test.
First prove the Bird trunk with the terminal quickstart. Set the caller ID, destination and credential variables from that guide. This places a real call through the trunk without relying on the agent runtime:
Code example
bird voice tools test-call "$VOICE_TO" \
--trunk "$BIRD_TRUNK_ID" \
--caller-id "$BIRD_CALLER_ID" \
--protocol tls \
--duration 30s
bird voice listKeep provider runtime sessions and Bird call IDs as separate references. The external runtime’s create-call operation is not a Bird SDK method, and a trunk ID cannot replace an agent ID. Test routing and two-way audio first, then the runtime’s actual tool calls, interruptions and human handoff.
4. Route a controlled test
Point a test Voice number to the Bird trunk. Verify caller and agent audio, interruption behavior, one business tool and human handoff. Match the runtime session to the Bird call record.
5. Move production numbers deliberately
Complete any number transfer and registration work before changing the production route. Keep an alternate receiving route available and preserve active calls while assigning new calls to the tested connection.
References and next steps
- SIP trunks
- Receiving calls
- Voice troubleshooting
- Retell AI documentation
- Compare Bird and Retell AI
- All migration guides
- Voice AI resources
Related resources
Continue with the documentation, guides and examples for this topic. Resources are in English.
Understand the conceptWhat is a voice API?Explore the capabilityVoiceImplementation guideVoice overview
Get an implementation brief