Skip to main content
Bulk calls are campaign-driven in Ringg. For most campaigns, create the campaign with POST /campaign/save, then start it with POST /campaign/start.
For CSVs with 5,000 or more rows, use the beta large-campaign flow after it is enabled for your workspace. That path uploads and validates the CSV asynchronously before starting calls.

Prerequisites

  • A workspace API key
  • An outbound assistant ID
  • One or more workspace number IDs
  • A CSV file with a Mobile Number column and any assistant variables

Choose the campaign flow

Step 1: Prepare the CSV

Use the exact template from the Ringg dashboard when possible. At minimum, include the recipient number and every variable your assistant prompt uses.

Standard flow

Step 2: Upload the campaign contact list

POST /campaign/save accepts multipart/form-data. Do not set Content-Type manually in browser or Node FormData clients; let the client set the multipart boundary.
Save the returned list_id; it is required to start the campaign.

Step 3: Choose caller numbers

Pick one or more number IDs to use as from_numbers.

Step 4: Start the campaign

Step 5: Monitor campaign calls

Use campaign and history endpoints together:

Step 6: Stop calls if needed

Use termination endpoints for emergency stops or selective campaign cleanup.

Beta large-campaign flow

Use this path for CSVs with 5,000 or more rows. It separates upload, validation, balance checking, and call scheduling so long CSV imports do not block one request.
This flow is beta. Use the standard POST /campaign/save plus POST /campaign/start flow unless large-campaign beta access is enabled for your workspace.

Beta step 1: Upload the CSV

POST /campaign/upload-csv accepts the large CSV and campaign metadata. Use the same CSV headers, variable mapping, assistant ID, campaign window, country code, and call configuration you would send to POST /campaign/save.
Save the returned bulk_list_id. Use it for every following beta step.

Beta step 2: Poll upload status

Wait until processing is complete before checking balance or starting calls. If the status reports invalid rows, fix the CSV or remove invalid rows according to your campaign policy.

Beta step 3: Check balance

Only continue when the response confirms the workspace has enough balance for the validated rows.

Beta step 4: Start calls asynchronously

After scheduling, monitor the campaign with GET /campaign/all and call history filtered by the same bulk_list_id.

Upload large campaign CSV

Start the beta 5k+ row import.

Check upload status

Poll CSV processing before starting calls.

Check campaign balance

Confirm available balance for the validated contacts.

Start async campaign calls

Queue the large campaign for outbound calling.

Production checklist

  • Start with a small CSV before uploading a large campaign.
  • Set campaign windows in the audience’s timezone.
  • Validate CSV headers before upload.
  • Store list_id and selected from_numbers.
  • Store bulk_list_id for beta large campaigns.
  • Subscribe to webhooks for post-call results.
  • Use remove_invalid_rows=true when you prefer skipping invalid contacts instead of failing the whole upload.