Skip to main content
Coming Soon — The Campaign Scheduler API is currently in development and available on the Dev instance for testing. It will be released to production in the coming weeks.

List Campaigns

GET /api/v/campaign/ Returns all campaigns, optionally filtered by email or workspace. Query Parameters:
ParameterTypeDescription
emailstringFilter by campaign owner email
workspacestringFilter by workspace ID
curl -X GET "https://api.vaani.ai/api/v/campaign/?workspace=ws_001" \
  -H "Cookie: access_token=YOUR_TOKEN"

Create Campaign

POST /api/v/campaign/
curl -X POST "https://api.vaani.ai/api/v/campaign/" \
  -H "Content-Type: application/json" \
  -H "Cookie: access_token=YOUR_TOKEN" \
  -d '{
    "name": "February Reminders",
    "agent_id": "agent_abc123",
    "workspace": "ws_001",
    "email": "[email protected]",
    "locale_name": "USCA",
    "earliest_prospect_time": "09:00:00",
    "latest_prospect_time": "21:00:00",
    "call_ratio": 1.0,
    "max_number_calls": 10,
    "min_time_between_calls": 30,
    "dialer_interval": 10
  }'
Key Fields:
FieldTypeDefaultDescription
namestringrequiredCampaign display name
agent_idstringnullVaani agent ID for this campaign
workspacestringnullWorkspace this campaign belongs to
emailstringnullCampaign owner email
locale_namestring"USCA"Region for timezone and phone formatting
activebooleantrueWhether the campaign is active
call_ratiofloat1.0Ratio of outgoing calls to available agents
dialer_intervalinteger10Seconds between dialer ticks (2–15)
max_active_callsinteger0Max concurrent calls (0 = unlimited)
max_number_callsinteger10Max call attempts per prospect
min_time_between_callsinteger30Min minutes between call attempts
dupe_daysinteger90Days a phone number is considered duplicate (-1 to disable)
expire_daysinteger90Days until a prospect expires
earliest_prospect_timetime"09:00:00"Earliest time to call (prospect’s timezone)
latest_prospect_timetime"21:00:00"Latest time to call (prospect’s timezone)
ignore_statesstring""Comma-separated states to exclude from dialing
filter_holidaysbooleantrueSkip states that prohibit holiday telemarketing
max_wait_timeinteger60Max seconds a call waits in queue
queue_strategystring"longest-idle-agent"How calls are assigned to agents
wrap_up_timeinteger3Seconds between calls for agent wrap-up
pausedbooleanfalseTemporarily pause dialing

Get Campaign Details

GET /api/v/campaign/{slug}/ Returns full campaign details by slug.
curl -X GET "https://api.vaani.ai/api/v/campaign/february-reminders/" \
  -H "Cookie: access_token=YOUR_TOKEN"

Update Campaign

PUT /api/v/campaign/{slug}/ or PATCH /api/v/campaign/{slug}/ Update campaign settings. The cache is automatically invalidated after updates.
curl -X PATCH "https://api.vaani.ai/api/v/campaign/february-reminders/" \
  -H "Content-Type: application/json" \
  -H "Cookie: access_token=YOUR_TOKEN" \
  -d '{
    "call_ratio": 1.5,
    "max_active_calls": 20,
    "paused": false
  }'

Delete Campaign

DELETE /api/v/campaign/{slug}/ Deletes the campaign and clears its cache.
curl -X DELETE "https://api.vaani.ai/api/v/campaign/february-reminders/" \
  -H "Cookie: access_token=YOUR_TOKEN"

Campaign Status

GET /api/v/campaign/{slug}/status/ Returns the real-time operational status of a campaign.
curl -X GET "https://api.vaani.ai/api/v/campaign/february-reminders/status/" \
  -H "Cookie: access_token=YOUR_TOKEN"
Possible statuses:
StatusCondition
RunningCampaign is active and has prospects currently being called
StoppedCampaign is active with unresolved prospects but no active calls
CompletedAll prospects have been resolved
InactiveCampaign is not active

Upload Prospect List

POST /api/v/upload/{list_slug}/ Upload a CSV file to a prospect list. Large files are automatically split into batches.
curl -X POST "https://api.vaani.ai/api/v/upload/february-list/" \
  -H "Cookie: access_token=YOUR_TOKEN" \
  -F "[email protected]" \
  -F "dedupe=true"
Response:
{
  "message": "Uploaded successfully."
}

Retry Failed Upload

POST /api/v/upload/{uuid}/retry/ Retry a previously failed prospect list upload.
curl -X POST "https://api.vaani.ai/api/v/upload/550e8400-e29b-41d4-a716-446655440000/retry/" \
  -H "Cookie: access_token=YOUR_TOKEN"
Response:
{
  "success": true
}

Add Single Prospect

POST /api/v/prospect/{list_uuid}/ Add a single prospect to a prospect list via form data.
curl -X POST "https://api.vaani.ai/api/v/prospect/550e8400-e29b-41d4-a716-446655440000/" \
  -H "Cookie: access_token=YOUR_TOKEN" \
  -d "primary_phone=+14155551234" \
  -d "first_name=John" \
  -d "last_name=Smith"