Resume a paused parallel-dialer session by auto-fetching next batch
POST /voice/dialer/sessions/{session_id}/resume
Resume a PAUSED parallel-dialer session.
The voice service’s PATCH /sessions/{id}/status rejects
ACTIVE - the real resume flow is to call start-session again
with the existing session_id and a fresh batch of contacts. This
route does the lookup + filtering + forwarding in one shot so an MCP
caller only has to supply the session id (and optionally a batch
size).
Steps performed server-side:
- Fetch the session via
GET /api/parallel-calls/sessions(filtered to the caller’s org). Voice has no per-id GET, so we page withpage_size=200and find the row. - Verify the session belongs to the caller’s org and is in the
PAUSEDstate. ACTIVE / COMPLETED sessions return 422. - Read
list_idand thelist_offsetcursor fromsession_metadata. Sessions created without alist_id(ad-hoc / campaign-mode) cannot be resumed via this route and return 422. - Page contacts out of the source list starting at the cursor,
skipping rows already in
session.contact_idsand rows that have no usable phone field. - Forward up to
max_contactsrows to voice’s/api/parallel-calls/start-sessionwith the existingsession_id. Voice de-duplicates active calls within the session and auto-promotes status to ACTIVE on success.
The list_offset we send back to voice is advanced by the total
number of rows we read from the list (called + skipped + dialed) so
a future resume picks up where we left off, not where the previous
pause cursor sat.
Authorizations
Parameters
Path Parameters
Session UUID.
Session UUID.
Header Parameters
Request Body
Body for resuming a paused parallel-dialer session.
The resume endpoint mirrors what the dialer UI does when the SDR
clicks “Start Dialing” on a paused session: it pages the source list
using the cursor stored in session_metadata, filters out
already-called contacts, and forwards the next batch to the voice
service’s start-session endpoint.
Only max_contacts is exposed - org / user / from_phone /
list_id / agent / session_metadata are all read off the persisted
session so the caller doesn’t have to reconstruct them.
object
Number of contacts to dial in this batch. Voice caps parallel dialing at 4.
Responses
200
Successful Response
object
Echo of voice’s ParallelDialResponse plus a count of contacts dialed.
dialed_count is the number of calls actually placed in this
resume batch. It can be lower than max_contacts when the list is
near exhausted, every remaining row is missing a phone, or every
candidate was already called earlier in the session.
twilio_token and conference_name are deliberately dropped -
they are SDR-frontend specific and an MCP / API caller has no use
for them. The dialer UI regenerates them on join.
object
422
Validation Error