The short version
- The REST paths share the same shape:
/api/v1/Account/{auth_id}/...with PascalCase resource segments (/Account/.../Call/, identical to Plivo). - The call parameters carry over (
from,to,answer_url, …), but the Vobiz client and method names differ (see the table):plivo.RestClient(...)/calls.create(...)→Vobiz(api_key=, auth_token=)/calls.make_call(...), and Vobiz methods take an explicitauth_id. - The make-call response includes the call identifier (
call_uuid) and a status message. - Bulk dialing is unchanged: both Plivo and Vobiz accept multiple destinations in a single
toseparated by<(for example,a<b<c).
Resource and method mapping
The table covers the resources most teams use. The Vobiz REST path assumes the basehttps://api.vobiz.ai and your account auth_id. SDK methods are shown in their Python form (every method takes auth_id=); the Node SDK uses the same names in camelCase (for example, make_call → makeCall).
| Plivo resource / method | Vobiz REST path | Vobiz SDK method (Python) |
|---|---|---|
| Calls | ||
Make a call (POST /Call/) | POST /api/v1/Account/{auth_id}/Call/ | client.calls.make_call(auth_id, from_, to, answer_url, ...) |
| Get a live call | GET /api/v1/Account/{auth_id}/Call/{call_uuid}/ | client.live_calls.get_live_call(auth_id, call_uuid) |
| List calls | GET /api/v1/Account/{auth_id}/Call/ | client.live_calls.list_live_calls(auth_id) (and list_queued_calls) |
| Hang up a call | DELETE /api/v1/Account/{auth_id}/Call/{call_uuid}/ | client.live_calls.hangup_call(auth_id, call_uuid) |
| Transfer a call | (call-control XML) | Return <Dial> / <Redirect> from your answer URL — see Transfer a Call |
| Play / speak / send digits | POST /api/v1/Account/{auth_id}/Call/{call_uuid}/Play/ (etc.) | client.play_audio.call(...), client.speak_text.call(...), client.dtmf.send_dtmf(...) |
| Applications | ||
| Create / list / get / update / delete | POST|GET|DELETE /api/v1/Account/{auth_id}/Application/ | client.applications.create_application(...), .list_applications(...), .retrieve_application(...), .update_application(...), .delete_application(...) |
| Numbers | ||
| Search inventory | GET /api/v1/Account/{auth_id}/PhoneNumber/ | client.phone_numbers.list_inventory_numbers(...) |
| Buy a number | POST /api/v1/Account/{auth_id}/PhoneNumber/{e164}/ | client.phone_numbers.purchase_from_inventory(auth_id, e164, currency) |
| List owned numbers | GET /api/v1/Account/{auth_id}/Number/ | client.phone_numbers.list_numbers(auth_id) |
| Release a number | DELETE /api/v1/Account/{auth_id}/Number/{number}/ | client.phone_numbers.unrent_number(auth_id, e164) |
| Route a number to a trunk | POST /api/v1/Account/{auth_id}/Number/{number}/ | client.phone_numbers.assign_number_to_trunk(...) / unassign_number_from_trunk(...) |
| Recordings | ||
| List / get / delete | GET|DELETE /api/v1/Account/{auth_id}/Recording/ | client.recordings.list_recordings(...), .get_recording(...), .delete_recording(...) |
| Conferences | ||
| Member ops (kick / mute / play) | POST|DELETE /api/v1/Account/{auth_id}/Conference/{name}/Member/{id}/ | client.conference.kick_member(...), client.conference_members.mute_member(...) / unmute_member(...) |
| Sub-accounts | ||
| Create / list / get / update / delete | POST|GET|DELETE /api/v1/Account/{auth_id}/Subaccount/ | client.sub_accounts.create_subaccount(...), .list_subaccounts(...), .retrieve_subaccount(...), .update_subaccount(...), .delete_subaccount(...) |
Use the canonical reference pages for exact request and response fields. The make-call contract is documented in full at Make an Outbound Call.
Before / after: making a call
The call parameters (from, to, answer_url, …) carry over, but the Vobiz client and method differ: plivo.RestClient(...)/client.calls.create(...) becomes Vobiz(api_key=, auth_token=)/client.calls.make_call(...) (Python) — and make_call takes an explicit auth_id.
ring_url, hangup_url, fallback_url, machine_detection, sip_headers, and time_limit: pass them exactly as you did on Plivo.
Raw HTTP equivalent
If you call the REST API directly instead of through an SDK, the change is also small: swap the base host tohttps://api.vobiz.ai, send your Vobiz auth_id in the path, and authenticate with the X-Auth-ID and X-Auth-Token headers. The path casing (/Account/.../Call/) is identical to Plivo’s. See Authentication & base URL for the exact credentials and host swap.
Beyond parity
A few Vobiz resources have no direct Plivo counterpart and are worth knowing about as you migrate:- Trunk — Vobiz exposes SIP trunking as a first-class resource, with credentials, IP-ACL, and origination-URI management, rather than folding it into the endpoint model.
- DID cool-off — released numbers enter a 15-day cool-off before they re-enter inventory, so plan number churn accordingly.
- Granular capacity — the account object surfaces per-account concurrency and calls-per-second (CPS) limits you can read and reason about directly.
Next
Migrate your XML
Map Plivo XML verbs to VobizXML and update your answer-URL responses.
Plivo to Vobiz overview
Back to the full migration guide and checklist.