Launch a voice campaign
Start an outbound voice broadcast — plain voice, smart voice, IVR or AI bot.
POST
https://nextgenpanel.cloudshope.com/api/v1/voice/voiceCampaignLaunches an outbound voice campaign against a voice clip you have already uploaded (voice_file_id). call_type selects the kind of call:
obd_voice_call — a plain recorded message. obd_smartvoice — a message with dynamic, per-recipient variables. obd_ivr — an IVR menu with keypress routing. ai_bot — an AI voice agent.
Recipients come from number (comma-separated 10-digit numbers), an uploaded CSV, or a saved group — chosen with sendTo. max_retry (1–3) with retry_after minutes controls redialling of unanswered calls.
Authentication
Send Authorization: Bearer <token>. An agent token needs the voice create permission.
Body parameters
| Name | Type | Required | Description |
|---|---|---|---|
campaign_name | string | Yes | Campaign name, up to 191 characters. |
voice_file_id | integer | Yes | Id of an uploaded voice clip. |
call_type | enum | Yes | obd_voice_call, obd_smartvoice, obd_ivr or ai_bot. |
sendTo | enum | Yes | Numbers, csv or Group. |
number | string | No | Comma-separated 10-digit numbers. Required when sendTo is Numbers. |
groupId | string | No | Saved group id. Required when sendTo is Group. |
csv_number_column | string | No | Name of the number column in the CSV. Required when sendTo is csv. |
max_retry | integer (1–3) | No | How many times to redial an unanswered number. |
retry_after | integer (minutes, ≤30) | No | Wait between retries. Required with max_retry. |
schedulled_at | string | No | When to start. Omit to start now. |
callback_url | string | No | Your endpoint for call-event callbacks. |
crm_workspace_id | string | No | Push call outcomes to this CRM workspace. |
Request
- Send as
application/json, or asmultipart/form-datawhensendToiscsv(file in afilefield). retry_afteris required whenevermax_retryis set.
curl -X POST https://nextgenpanel.cloudshope.com/api/v1/voice/voiceCampaign \
-H "Authorization: Bearer cs_live_9f2c…" \
-H "Content-Type: application/json" \
-d '{
"campaign_name": "Payment reminder",
"voice_file_id": 3391,
"call_type": "obd_voice_call",
"sendTo": "Numbers",
"number": "9876543210,9812345678",
"max_retry": 2,
"retry_after": 10
}'Response
{
"success": true,
"id": "cmp_48120",
"campaignId": 48120
}Errors
| Status | Type | When |
|---|---|---|
| 400 | malformed-body | The JSON body could not be parsed. |
| 403 | permission-denied | The agent has no role, or no permission to create voice campaigns. |
| 422 | validation-failed | A field failed validation. See errors. |
| 401 | unauthorized | The Authorization header is missing, malformed or the token is invalid or expired. |
| 403 | forbidden | The token is valid but the account is not allowed to perform this action. |
