Skip to main content
Place an outbound call, inspect it, or control its audio while it is active. Log in, use a caller number on your account, and choose a test recipient:
This previews a call that plays Plivo’s hello demo. Replace --dry-run with --yes to place the billed call. To call your voice agent instead, supply its public answer URL, which returns <Stream> XML:
For human handoff, run plivo voice calls transfer "<call_uuid>" --legs aleg --aleg-url "<url>", where the new URL returns <Dial> XML.
  • Find a call UUID with plivo voice calls list after the call ends, or plivo voice calls list --live while it is active. A call leg is one side of a connected call (aleg is the caller, bleg the callee). DTMF means keypad tones, and TTS means text-to-speech.
  • Replace example numbers, URLs and <values> with yours. Omit [flags] unless adding options.
  • Global flags: see Configuration.

Calls

voice calls make spends money and requires --yes. Live-call controls (play, speak, record, dtmf, transfer, stop-*) act on an established call and don’t need it. hangup needs --yes, and previews with --dry-run alone. With -o json, the live-call controls and hangup print a result on stdout, such as {"data": {"call_uuid": "<call_uuid>", "hung_up": true}}.

Read a call in progress

voice calls get reads the call record, which Plivo writes when the call ends. Add --live to read a call still in progress. If the call has already ended, --live returns not found. voice calls list --live lists the calls in progress. Plivo returns only their UUIDs, with no filter or paging, so --live takes no other list flag. With -o json the UUIDs are in data.calls.

Filter the call list by date

plivo voice calls list shows the newest calls first. Without a date, Plivo returns the last 7 days.
  • --since and --until filter on when a call ended, in UTC, as YYYY-MM-DD or YYYY-MM-DD HH:MM[:SS]. --from-date and --to-date are the same flags.
  • A bare --until date includes that whole day. --until needs --since.
  • Plivo searches only the last 90 days, at most 31 days per request. A range outside either limit is refused before any request, and the error says what to run instead, such as the ranges to split it into.
A --from that isn’t an E.164 number, or a --to part that is neither an E.164 number nor a sip: URI, is refused before any request.

Streams on a live call (REST)

Start a WebSocket audio stream on an already-answered call (instead of via <Stream> XML), list the streams on a call, or stop them.