VoxLink.ai

Outbound Campaigns

Create campaign

Create a draft call, WhatsApp, or SMS campaign

Updated 27 July 2026

Create a new campaign. Campaigns start in draft — add leads, then start with Update campaign status.

Supported channels:

  • call (default) — outbound voice with an OUTBOUND assistant
  • whatsapp — approved WhatsApp template via one of your senders
  • sms — SMS body from an SMS-capable number (may be temporarily unavailable on the platform)

Request body

Shared

namestringrequired

Campaign name. Maximum 255 characters.

channelstring

call, whatsapp, or sms.

timezonestring

IANA timezone for the send/call window (e.g. America/New_York). Defaults to the assistant timezone for call campaigns, otherwise your account timezone.

schedule_windowsarray

Preferred schedule: one or more daily windows as objects with start and end in HH:MM. Overnight windows are supported when end is earlier than start (e.g. 16:0002:00).

allowed_hours_start_timestring

Legacy single-window start (HH:MM). Used if schedule_windows is omitted.

allowed_hours_end_timestring

Legacy single-window end (HH:MM). Overnight when end < start.

scheduled_start_atstring

Optional ISO datetime. When set, the campaign can be scheduled to auto-start at that time.

allowed_daysarray

Weekdays: mondaysunday.

max_retriesinteger

Max retry attempts per lead. Range: 1–5.

retry_intervalinteger

Minutes between retries. Range: 10–4320.

mark_complete_when_no_leadsboolean

Automatically mark the campaign complete when no remaining work is left.

Call campaigns

assistant_idinteger

Required for channel=call. Must be an OUTBOUND assistant you own.

max_calls_in_parallelinteger

Concurrent calls (plan-bounded, max 10).

phone_number_idsarray

Outbound from-number IDs available to your account.

retry_on_voicemailboolean

Retry when a call hits voicemail.

retry_on_goal_incompleteboolean

Keep retrying until a boolean post-call goal variable is true.

goal_completion_variablestring

Boolean post-call schema variable name used with retry_on_goal_incomplete.

fallback_channelstring

Optional call→text follow-up after max call retries: whatsapp or sms.

fallback_whatsapp_sender_idinteger

Required when fallback_channel=whatsapp.

fallback_whatsapp_template_idinteger

Required when fallback_channel=whatsapp. Must be an approved template on that sender.

fallback_sms_from_phone_number_idinteger

Required when fallback_channel=sms.

fallback_sms_bodystring

Required when fallback_channel=sms. Supports {{variable}} placeholders.

fallback_variable_mappingobject

Maps WhatsApp template placeholders (e.g. "1") to lead variable keys for the fallback send.

WhatsApp campaigns

whatsapp_sender_idinteger

Required for channel=whatsapp. Sender you own.

whatsapp_template_idinteger

Required for channel=whatsapp. Approved template on that sender.

text_variable_mappingobject

Maps template placeholders (e.g. "1") to lead variable keys.

messages_per_minuteinteger

Per-campaign send rate (1–10). WhatsApp campaigns also share a user-wide pool of 10 in-flight sends across all your active WhatsApp campaigns.

SMS campaigns

sms_from_phone_number_idinteger

Required for channel=sms. Must be SMS-capable and available to you.

sms_bodystring

Required for channel=sms. Max 1600 characters. Supports {{variable}} placeholders.

Response

messagestring

Success message

dataobject

Created campaign (same shape as Get campaign), including channel, schedule, text config, and fallback fields.

Error responses

422 Unprocessable Entity

Plan limit, invalid assistant/sender/template, disabled channel, or validation errors.

{
  "message": "Campaign created successfully",
  "data": {
    "id": 1,
    "name": "Product Demo Campaign",
    "channel": "call",
    "status": "draft",
    "assistant_id": 42,
    "timezone": "Europe/Bucharest",
    "max_calls_in_parallel": 3,
    "messages_per_minute": null,
    "schedule_windows": [{ "start": "09:00", "end": "18:00" }],
    "scheduled_start_at": null,
    "allowed_hours_start_time": "09:00",
    "allowed_hours_end_time": "18:00",
    "allowed_days": ["monday", "tuesday", "wednesday", "thursday", "friday"],
    "max_retries": 3,
    "retry_interval": 60,
    "retry_on_voicemail": false,
    "retry_on_goal_incomplete": false,
    "goal_completion_variable": null,
    "mark_complete_when_no_leads": true,
    "phone_number_ids": [11, 12],
    "whatsapp_sender_id": null,
    "whatsapp_template_id": null,
    "sms_from_phone_number_id": null,
    "sms_body": null,
    "text_variable_mapping": null,
    "fallback_channel": "whatsapp",
    "fallback_whatsapp_sender_id": 7,
    "fallback_whatsapp_template_id": 15,
    "fallback_sms_from_phone_number_id": null,
    "fallback_sms_body": null,
    "fallback_variable_mapping": { "1": "customer_name" },
    "created_at": "2026-07-24 18:00:00",
    "updated_at": "2026-07-24 18:00:00"
  }
}
{
  "message": "Campaign created successfully",
  "data": {
    "id": 2,
    "name": "WhatsApp Follow-up",
    "channel": "whatsapp",
    "status": "draft",
    "assistant_id": null,
    "messages_per_minute": 10,
    "schedule_windows": [{ "start": "09:00", "end": "20:00" }],
    "whatsapp_sender_id": 7,
    "whatsapp_template_id": 15,
    "text_variable_mapping": { "1": "customer_name" },
    "fallback_channel": null
  }
}

Related guides