POST /v1/calls with a pathway_id and you can’t change that request soon. If you can change the request, send agent_id instead. To build the agent first, see Migrate your pathways or personas.
How a request is treated
A migration split is the rule on a pathway that sends a share of its calls to an agent. For each request that names the pathway, the split decides whether the call goes to the agent or stays on the pathway. A call that stays on the pathway runs as it does today. A call that goes to the agent runs the agent’s production version. The split applies to aPOST /v1/calls request made with an organization API key that sends pathway_id and no persona_id or agent_id. Any other request runs as it does today. The split also routes inbound calls to numbers bound to the pathway, and texts sent with POST /v1/sms/send that run the pathway. A text that sends pathway_version or start_node_id stays on the pathway unless Agent owns call settings is on. A text also stays on the pathway when the request or the number has a persona, or when the agent’s Messages channel is off. Batch texts, POST /v1/sms/create, and conversations that a customer starts by texting first aren’t split. A conversation that is already active keeps running where it started.
The Agent owns call settings setting decides which values win on a call that goes to the agent:
- Off (the default): The request’s values win, exactly as today. The agent fills in only the settings that the request leaves out. A request that includes
pathway_versionstays on the pathway. - On: The agent’s values win for the fields marked “Agent” in the following table. Bland ignores the request’s values for those fields, including
pathway_version, so the call can still go to the agent.
The “Controlled by” column applies when Agent owns call settings is on. The request controls every row when it is off, with one exception: on a call that goes to the agent, Bland always ignores
start_node_id, because it names a node in the pathway rather than in the agent.
citation_schema_ids, disposition_ids, and analysis_preset never run on a call that goes to the agent, whether Agent owns call settings is on or off. The agent’s dispositions replace them. The request still succeeds, and Bland ignores citation_schema_id, citation_schema_ids, disposition_ids, and analysis_preset on that call. This applies to every call that runs an agent, not only calls routed from a pathway. To move your citation schemas and outcomes, see Coming from citations and outcomes.
If Bland can’t start the agent for a call that the split sent to it, the call runs on the pathway instead. It runs with every field the request sent, including the ones that Agent owns call settings would have replaced.
Set up in the dashboard
Before you start, check these items:
- The agent has a published production version. Without one, Bland rejects the split. See Environments.
- If you want to use outcomes, the agent has a published disposition. See Dispositions.
- Your organization is on an enterprise plan. The dashboard runs the migration as an experiment, and experiments are available on enterprise plans. The migration split API doesn’t require one.
1
Open the migration settings
Open the agent, go to Channels, and open Migrate from V1. Select Set up migration experiment.
2
Choose the pathway
Choose From a pathway, then pick the pathway that your requests name in
pathway_id.3
Turn on Agent owns call settings
Turn on Agent owns call settings. API calls that name the pathway then run with the agent’s voice, language, duration, and recording settings instead of the request’s. Dispatch fields such as number, timezone, webhook, and
request_data still come from the request. See How a request is treated for the full list.If you leave the setting off, the request’s values win.4
Optional: run the agent's dispositions on pathway calls
Select Also run this agent’s dispositions on pathway calls. Bland then runs the agent’s published dispositions on the calls that stay on the pathway, so outcome metrics can compare both groups of calls. Each run is billed like any disposition run, and Bland runs them for the length of the experiment.This option is on by default when the agent has a published disposition, and unavailable when it has none.
5
Start the experiment and ramp
Start the experiment, then ramp the share of calls that go to the agent in steps. The experiment supports guardrails and rollback.
6
Finish at 100%
When the share reaches 100%, finish the experiment. Every call that names the pathway now goes to the agent. Leave the split at 100%. See Keep the pathway in place.
Set it from the API
You can also set the split with the API. Pass your API key in theAuthorization header, as you do for Send Call. The examples read the key from BLAND_API_KEY. Replace the pathway ID in each URL and the agent ID in each body with your own.
PUT, PATCH, and DELETE on migration_split need permission to publish pathways: the owner, admin, or operator role. The reference pages are Get, Set, Update the policy, and Delete.
Send all calls to the agent
This request sets the split to 100% and turns on Agent owns call settings.Change the policy without changing traffic
PATCH updates only request_policy. It doesn’t change the share of calls, so it’s allowed while an experiment runs. The new policy applies from the next call.
Roll back
Setv2_percentage to 0. Every call that names the pathway then runs on the pathway again.
Errors
What changes in the webhook
The webhook depends on where the call ran.
Each entry in
agent_dispositions has the shape in Read the results.
Bland doesn’t convert an agent call’s webhook into the pathway’s shape. If your receiver needs one shape, handle both in the receiver.
For a pathway call, the agent’s dispositions never ride the call’s own webhook. They always arrive in a separate webhook with event_type: "dispositions" after the call’s webhook has been sent, whether or not that webhook is delayed for citations. See Post-call webhooks. A call that goes to the agent is never delayed for citations, because no citations run.
Keep the pathway in place
Experiments after migration
When the split is at 100% and no migration experiment is running, agent version experiments apply toPOST /v1/calls requests that the split sends to the agent, as they do to any agent call. Inbound calls that the split routes never enter an agent version experiment. While the migration experiment is still running, these calls stay out of agent version experiments, even at 100%. See Staged release.