| name | Yes | Campaign name (max 255 chars) | |
| channel | No | Defaults to call | |
| sms_body | No | Required for channel=sms. Max 1600 chars. Supports {{variable}}. | |
| timezone | No | IANA timezone, e.g. Europe/Berlin | |
| max_retries | No | 1–5 | |
| allowed_days | No | | |
| assistant_id | No | Required for channel=call. OUTBOUND assistant you own. | |
| retry_interval | No | Minutes between retries (10–4320) | |
| fallback_channel | No | Optional call→text follow-up after max call retries | |
| phone_number_ids | No | Outbound from-number IDs | |
| schedule_windows | No | Daily windows [{start:"HH:MM", end:"HH:MM"}]. Overnight when end < start. | |
| fallback_sms_body | No | | |
| retry_on_voicemail | No | | |
| scheduled_start_at | No | Optional ISO datetime for auto-start | |
| whatsapp_sender_id | No | Required for channel=whatsapp | |
| messages_per_minute | No | Per-campaign send rate 1–10 (WhatsApp/SMS) | |
| whatsapp_template_id | No | Required for channel=whatsapp. Approved template on that sender. | |
| max_calls_in_parallel | No | Concurrent calls (max 10) | |
| text_variable_mapping | No | Template placeholder → lead variable | |
| allowed_hours_end_time | No | Legacy single-window end HH:MM | |
| allowed_hours_start_time | No | Legacy single-window start HH:MM if schedule_windows omitted | |
| goal_completion_variable | No | | |
| retry_on_goal_incomplete | No | | |
| sms_from_phone_number_id | No | Required for channel=sms. SMS-capable number. | |
| fallback_variable_mapping | No | WhatsApp template placeholder → lead variable for fallback | |
| fallback_whatsapp_sender_id | No | | |
| mark_complete_when_no_leads | No | | |
| fallback_whatsapp_template_id | No | | |
| fallback_sms_from_phone_number_id | No | | |