Skip to main content
This page collects every bulk and batch capability Vobiz exposes, so you can pick the right one without reading each product section. Each entry gives the endpoint, how results come back, and the limits stated on its detailed page.

At a glance

Bulk outbound dialing

Fan a single request out to many destinations. Separate destinations in the to field with <, up to 1000 destinations per request. Each destination can be a PSTN number or a SIP URI.
cURL
  • Limit: 1000 destinations per request. A to value above that returns 400 Bad Request.
  • Separator: use <. A comma is treated as part of a single destination.
  • Results: the 200 response carries one request_uuid for the request. Each destination is delivered its own UUID through the ring_url, answer_url, and hangup_url callbacks.
  • Pacing: 429 Too Many Requests indicates you exceeded your calls-per-second or concurrent-call limit. Spread bulk dials over time and retry with jitter.
Monitor what is still pending with Retrieve All Queued Calls, which returns up to 20 call UUIDs. See Make an Outbound Call for the full parameter set.

Batch campaign dialing from a CSV

For list-driven outbound dialing with retries, scheduling, caller-ID rotation, and concurrency control, use the Voice Campaign Manager. It runs on https://campaign.vobiz.ai and authenticates with the same X-Auth-ID and X-Auth-Token headers as the main API - see Campaign API authentication. Upload contacts as multipart/form-data with the CSV in a field named file.
cURL
  • Size: there is no hard row limit. Uploads above 500,000 rows produce an advisory warning.
  • Concurrency: a campaign’s max_concurrent is at least 1 and no higher than your account concurrency limit.
  • Replacement: re-uploading on a ready campaign replaces every existing contact. Upload returns 409 while a campaign is running, paused, or queued.
  • Results: GET /campaigns/{campaign_id}/results returns a CSV of contact outcomes, and is available while the campaign is still running, so partial exports work.
  • Attempts: GET /campaigns/{campaign_id}/calls pages attempts with page and per_page, where per_page has a maximum of 200.
The upload response summarises the batch:
200 OK
See Campaign contacts and results for the CSV column rules and Voice Campaign Manager API for the surrounding lifecycle.

Bulk CDR export

Export every call detail record matching your filters as a single CSV file. This one is synchronous: the response body is the file.
cURL
  • Filters: the same filters as the list endpoint, minus paging. There is no page or per_page - the file contains every matching row, so scope it with start_date and end_date.
  • Content type: the response is text/csv. Do not send Accept: application/json on this request.
  • Empty match: returns 200 with a header-only or empty CSV body.
To pull CDRs as JSON in batches instead, List CDRs pages with per_page up to 100. See Export CDRs as CSV.

Bulk recording export

Package historical recordings matching a filter into a downloadable archive. This runs as a background job and returns 202 Accepted immediately.
cURL
  • Delivery: the archive download link is emailed to every address in recipient.customer_account, typically within 15-60 minutes depending on volume. Completion is signalled by that email rather than by a status endpoint, so treat the recipient inbox as the job’s completion channel.
  • Concurrency: one export runs at a time per account. A second request while one is in progress returns 403 Forbidden.
  • Range limits: maximum date range is 1 year (366 days). Maximum storage duration range is 30 days.
  • Filters: the additional filters (from_number, to_number, call_uuid, conference_name, recording_format, recording_id) apply when the date or storage duration range is 30 days or less. For longer ranges, export in smaller batches.
See Export Historical Recordings for the full filter matrix and validation rules.

Batched WhatsApp broadcast

A WhatsApp campaign sends an approved template to a resolved audience, delivering it in batches. Target the audience with audience_type: "tags" plus audience_tags, or audience_type: "contact_ids" plus audience_contact_ids.
cURL
  • Batching: the campaign object reports batch_size (recipients per batch) and batch_delay_ms (delay between batches).
  • Results: GET /api/v1/messaging/campaigns/{id}/recipients returns per-contact delivery status, filterable with status and paged with page and limit. The campaign object also carries total_recipients, sent_count, delivered_count, read_count, failed_count, and skipped_count.
  • Control: POST /campaigns/{id}/pause, /resume, and /cancel operate on the whole batch mid-send.
  • Listing: GET /api/v1/messaging/campaigns pages with limit up to 100.
See Campaigns API.

Bulk contact import

Import a WhatsApp contact list from CSV as multipart/form-data, with the file under the form field named file. The CSV needs phone_number and name columns; tags (comma-separated) is optional.
cURL
The response summarises the batch synchronously, and lists each failed row in errors:
200 OK
See Contacts API.

Bulk control operations

Two endpoints act on every matching resource in one request rather than moving data in bulk. Both are destructive. Hanging up all conferences disconnects every member across all active conference instances - see Hang Up All Conferences. Stopping all streams closes each WebSocket and fires an Event=StopStream callback per stream that had a status_callback_url - see Stop all Audio Streams.

Choosing between them