Skip to main content
POST
/
api
/
v2
/
voice-campaigns
Create Voice Campaign
curl --request POST \
  --url https://api.voiceaiwrapper.app/api/v2/voice-campaigns \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "name": "Q4 Outreach",
  "type": "OUTBOUND",
  "assistant_id": "asst_abc123",
  "tenant_voice_provider_id": "VGVuYW50Vm9pY2VQcm92aWRlcjoxMjM=",
  "dialer_type": "SINGLE",
  "vapi_calling_entity": "ASSISTANT",
  "phone_number_id": "pn_abc123",
  "phone_number_pool_id": "Vm9pY2VQaG9uZU51bWJlclBvb2w6MTIz",
  "start_date": "2025-01-01",
  "end_date": "2025-03-31",
  "timezone": "America/New_York",
  "days_of_week": [
    "MONDAY",
    "TUESDAY",
    "WEDNESDAY",
    "THURSDAY",
    "FRIDAY"
  ],
  "daily_start_time": "09:00",
  "daily_end_time": "17:00",
  "max_call_attempts": 3,
  "max_daily_attempts": 1,
  "min_gap_between_attempts": 60,
  "consider_voicemail_as_answered": true,
  "webhook_url": "https://yourapp.com/webhooks/campaign"
}
'
{
  "status": "success",
  "message": "Campaign created successfully",
  "data": {
    "campaign_id": "Vm9pY2VDYW1wYWlnbjoxMjM=",
    "campaign_name": "Q4 Outreach",
    "campaign_type": "OUTBOUND",
    "campaign_status": "DRAFT"
  }
}

Authorizations

Authorization
string
header
required

Bearer authentication header of the form Bearer <token>, where <token> is your auth token.

Body

application/json

Campaign configuration

name
string
required

Campaign display name. Required.

Example:

"Q4 Outreach"

type
enum<string>
required

Campaign type. Required. Immutable after creation.

Available options:
INBOUND,
OUTBOUND
Example:

"OUTBOUND"

assistant_id
string
required

Provider-native assistant/agent ID to use for calls. Required.

Example:

"asst_abc123"

tenant_voice_provider_id
string
required

Global ID of the tenant voice provider to use. Required. Note: tenant_voice_provider_id = voiceai_pod_id

Example:

"VGVuYW50Vm9pY2VQcm92aWRlcjoxMjM="

dialer_type
enum<string>
required

Dialer type. Required.

Available options:
SINGLE,
POOL
Example:

"SINGLE"

vapi_calling_entity
enum<string>

VAPI calling entity type (VAPI provider only). Optional.

Available options:
ASSISTANT,
WORKFLOW,
SQUAD
Example:

"ASSISTANT"

phone_number_id
string

Provider-native phone number ID. Optional. Can be configured after creation.

Example:

"pn_abc123"

phone_number_pool_id
string

Global ID of the phone number pool (POOL dialer only). Optional.

Example:

"Vm9pY2VQaG9uZU51bWJlclBvb2w6MTIz"

start_date
string<date>

Campaign start date (YYYY-MM-DD). Required for OUTBOUND campaigns.

Example:

"2025-01-01"

end_date
string<date>

Campaign end date (YYYY-MM-DD). Optional. Must be after start_date if provided.

Example:

"2025-03-31"

timezone
string

IANA timezone string. Required for OUTBOUND campaigns.

Example:

"America/New_York"

days_of_week
string[]

Days of the week when the campaign is active. Required for OUTBOUND campaigns.

Example:
[
"MONDAY",
"TUESDAY",
"WEDNESDAY",
"THURSDAY",
"FRIDAY"
]
daily_start_time
string

Daily call start time (HH:MM or HH:MM:SS). Required for OUTBOUND campaigns.

Example:

"09:00"

daily_end_time
string

Daily call end time (HH:MM or HH:MM:SS). Required for OUTBOUND campaigns. Must be after daily_start_time.

Example:

"17:00"

max_call_attempts
integer

Maximum total call attempts per lead. Required for OUTBOUND campaigns. Minimum: 1.

Required range: x >= 1
Example:

3

max_daily_attempts
integer

Maximum call attempts per lead per day. Required for OUTBOUND campaigns. Minimum: 1.

Required range: x >= 1
Example:

1

min_gap_between_attempts
integer

Minimum minutes between call attempts for a lead. Required for OUTBOUND campaigns. Minimum: 3.

Required range: x >= 3
Example:

60

consider_voicemail_as_answered
boolean

When true, voicemail pickups count as answered and stop retries. Optional.

Example:

true

webhook_url
string<uri>

URL to receive campaign event webhooks. Optional.

Example:

"https://yourapp.com/webhooks/campaign"

Response

Campaign created successfully. Returns campaign ID, name, type, and status.

status
string
Example:

"success"

message
string
Example:

"Campaign created successfully"

data
object