Skip to main content
Vobiz mirrors Plivo’s recording model closely — same Record XML verb, same Record/ and Recording/ REST endpoints, and webhook-delivered transcription. Migration is mostly a base-URL (https://api.vobiz.ai/api/v1), auth-header (X-Auth-ID + X-Auth-Token, not Basic auth), and SDK-namespace swap.

Plivo → Vobiz mapping

PlivoVobiz
Record XML element<Record> XML element (VobizXML)
<Record> attrs action, method, fileFormat, maxLength, timeout, playBeep, finishOnKey, redirectSame attribute names and semantics
<Record recordSession="true"><Record recordSession="true">
<Record startOnDialAnswer="true"> (nested in Dial)<Record startOnDialAnswer="true">
<Record transcriptionType="auto|hybrid">, transcriptionUrl, transcriptionMethodSame attributes, values auto / hybrid
<Record recordChannelType="mono|stereo">record_channel_type on the REST Record/ call (mono/stereo); not a Record-XML attribute
POST /v1/Account/{id}/Call/{call_uuid}/Record/ (start)POST /api/v1/Account/{auth_id}/Call/{call_uuid}/Record/
DELETE /v1/Account/{id}/Call/{call_uuid}/Record/ (stop)DELETE /api/v1/Account/{auth_id}/Call/{call_uuid}/Record/
POST /v1/Account/{id}/Conference/{name}/Record/POST /api/v1/Account/{auth_id}/Conference/{name}/Record/
DELETE /v1/Account/{id}/Conference/{name}/Record/DELETE /api/v1/Account/{auth_id}/Conference/{name}/Record/
GET /v1/Account/{id}/Recording/ (list all)GET /api/v1/Account/{auth_id}/Recording/
GET /v1/Account/{id}/Recording/{recording_id}/GET /api/v1/Account/{auth_id}/Recording/{recording_id}/
DELETE /v1/Account/{id}/Recording/{recording_id}/DELETE /api/v1/Account/{auth_id}/Recording/{recording_id}/
Python client.calls.record(...) / start_recording(...)client.record_calls.start_recording(...)
Python client.calls.stop_recording(call_uuid)client.record_calls.stop_recording(...)
Python client.conferences.record(...)client.conference_recording.start_conference_recording(...)
Python client.recordings.list()client.recordings.list_recordings(...)
Python client.recordings.get(recording_id)client.recordings.get_recording(...)
Python client.recordings.delete(recording_id)client.recordings.delete_recording(...)
Node client.calls.record(callUuid)client.recordCalls.startRecording(...)
Node client.recordings.list/get/deleteclient.recordings.listRecordings/getRecording/deleteRecording

Before / after — record a voicemail in XML

Plivo (PlivoXML) and Vobiz (VobizXML) share the verb and attribute names verbatim:
Plivo
<?xml version="1.0" encoding="UTF-8"?>
<Response>
    <Speak>Please leave a message after the beep.</Speak>
    <Record action="https://yourapp.com/voicemail" method="POST"
            maxLength="120" timeout="10" finishOnKey="#" playBeep="true"
            fileFormat="mp3"/>
</Response>
Vobiz
<?xml version="1.0" encoding="UTF-8"?>
<Response>
    <Speak>Please leave a message after the beep.</Speak>
    <Record action="https://yourapp.com/voicemail" method="POST"
            maxLength="120" timeout="10" finishOnKey="#" playBeep="true"
            fileFormat="mp3"/>
</Response>
The action-URL callback params also match: RecordUrl, RecordingID, RecordingDuration, RecordingDurationMs, RecordingStartMs, RecordingEndMs. Vobiz adds RecordingEndReason (RecordingTimeout / maxLength / FinishedOnKey / HungUp).

Key differences & gotchas

  • Recording namespace split. Plivo puts in-call recording on client.calls; Vobiz splits it into client.record_calls (live call) and client.conference_recording (conference). Stored-asset list/get/delete lives on client.recordings on both sides.
  • recordChannelType location. On Vobiz, mono/stereo is set via record_channel_type on the REST Record/ call, not on the <Record> verb.
  • Transcription delivery. Both support auto and hybrid. Vobiz posts the result to transcriptionUrl (XML) or the recording callback_url (REST) — there is no polling endpoint, so wire up the webhook.
  • timeout default differs. timeout is the trailing-silence cutoff (Vobiz default 60s, Plivo default 15s); re-check your Plivo values after migrating.

What has no Vobiz equivalent

  • transcriptionType="manual" and transcriptionReportType (full/compact). Vobiz transcription is machine ASR only (auto / hybrid) — no human/manual tier and no report-type toggle.
  • Rich recording-list filters. Plivo’s recordings.list() filters by call_uuid, from_number, to_number, conference_name, MPC details, and add_time. Vobiz’s GET /Recording/ pages with limit/offset only — filter client-side.
  • Standalone Transcription resource. Plivo exposes a separate Transcription GET/DELETE API; Vobiz returns transcription only via the webhook payload, with no independently addressable record.
  • MPC participant-level pause/resume recording. Vobiz recording is start/stop at the call or conference level — no per-participant pause.