At a glance
Bulk outbound dialing
Fan a single request out to many destinations. Separate destinations in theto 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
tovalue above that returns400 Bad Request. - Separator: use
<. A comma is treated as part of a single destination. - Results: the
200response carries onerequest_uuidfor the request. Each destination is delivered its own UUID through thering_url,answer_url, andhangup_urlcallbacks. - Pacing:
429 Too Many Requestsindicates you exceeded your calls-per-second or concurrent-call limit. Spread bulk dials over time and retry with jitter.
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 onhttps://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_concurrentis at least1and no higher than your account concurrency limit. - Replacement: re-uploading on a
readycampaign replaces every existing contact. Upload returns409while a campaign isrunning,paused, orqueued. - Results:
GET /campaigns/{campaign_id}/resultsreturns a CSV of contact outcomes, and is available while the campaign is still running, so partial exports work. - Attempts:
GET /campaigns/{campaign_id}/callspages attempts withpageandper_page, whereper_pagehas a maximum of200.
200 OK
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
pageorper_page- the file contains every matching row, so scope it withstart_dateandend_date. - Content type: the response is
text/csv. Do not sendAccept: application/jsonon this request. - Empty match: returns
200with a header-only or empty CSV body.
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 returns202 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.
Batched WhatsApp broadcast
A WhatsApp campaign sends an approved template to a resolved audience, delivering it in batches. Target the audience withaudience_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) andbatch_delay_ms(delay between batches). - Results:
GET /api/v1/messaging/campaigns/{id}/recipientsreturns per-contact delivery status, filterable withstatusand paged withpageandlimit. The campaign object also carriestotal_recipients,sent_count,delivered_count,read_count,failed_count, andskipped_count. - Control:
POST /campaigns/{id}/pause,/resume, and/canceloperate on the whole batch mid-send. - Listing:
GET /api/v1/messaging/campaignspages withlimitup to100.
Bulk contact import
Import a WhatsApp contact list from CSV asmultipart/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
errors:
200 OK
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
- Dialing a handful of numbers with identical call flow logic: bulk dialing on Make an Outbound Call.
- Dialing a list with retries, scheduling, and per-contact data: batch campaigns.
- Pulling call data for reconciliation right now: bulk CDR export.
- Pulling large volumes of recorded audio: bulk recording export, which arrives by email.
- Messaging a segment on WhatsApp: batched campaigns, after a bulk contact import.