Can I reuse one Retell phone number across multiple agents or switch them dynamically?

Hello,

I have a quick architecture question regarding phone numbers and agents in Retell.

If I create 5 different agents, do I strictly need to purchase 5 separate phone numbers for each of them? Or is it possible to use 1 single phone number and dynamically map/switch it between different agents?

For example, can I remove a phone number from one agent and assign it to another when needed, or route the incoming call to different agents based on conditions using the same number?

I would love to know the best practice for managing numbers across multiple test/production agents. Thanks!

Hello @faqid80 No, you don’t need 5 separate numbers. Here’s what’s possible with 1 number:

  1. Reassign via API — Use the Update Phone Number API to swap the bound agent anytime.
  2. A/B Testing / Traffic Split — Enable A/B testing on a number to bind multiple agents simultaneously and split traffic by percentage (e.g., 50/50). No conditions, but great for testing.
  3. Agent Transfer mid-call — Route to different agents during a call based on logic using the Agent Transfer feature.

For test/prod workflows, the simplest approach is to use the Update Phone Number API to dynamically reassign the agent bound to the number as needed.

Regards

I had 2 numbers and switched them to different agents, no problem.

Hey,

Short answer: no, you don’t need a number per agent. One number can cover all five.

A couple of ways to handle it, depending on what you’re after.

Manual swap. A number binds to one inbound agent at a time (and optionally a separate outbound agent). You can change which agent is bound whenever you like with the Update Phone Number API, just set inbound_agent_id. So you can pull a number off one agent and put it on another without buying more. Fine for flipping between test and prod.

Dynamic routing (the one you actually want). Set up an Inbound Call Webhook on the number. Every inbound call hits your webhook first, before it connects. You get the from_number and to_number, and you respond with override_agent_id to pick which agent answers that specific call. Same number, different agent, based on whatever logic you want: caller, time of day, whatever. You can also pass dynamic variables and even reject unwanted calls from there.

For test vs prod specifically, I’d keep prod on its own number and test agents with web calls or outbound via the API, so you’re not constantly rebinding a live line.

Best practice in one line: one number plus an inbound webhook for routing beats one number per agent, unless an agent genuinely needs its own public line.

Russell

If you have a way to determine which agent you want it to go to (ie CRM or something like that) then you can use an inbound webhook on the number and then you can build the logic to send to whatever agent you want it to.