---
title: "Create a draft outbound campaign"
method: POST
path: "/v1/campaigns"
---

# Create a draft outbound campaign

`POST /v1/campaigns`

## Request

- Base URL: `https://api.skysay.ai`
- URL: `https://api.skysay.ai/v1/campaigns`
- Auth: none declared

One agent, one to ten caller-id numbers, one contact list, a purpose, a consent basis (existing_customer or explicit_consent), local calling windows (per contact timezone or one fixed zone), a per-disposition retry policy or preset (sales, collections, single_attempt), campaign concurrency within the plan's concurrent-call allowance, and an optional schedule. A campaign is locked at launch; duplicate it to change anything. Cold, purchased or scraped lists are not permitted.

## Request body

- CampaignCreate
  - `agent_id` string, required
  - `calling_windows` object
  - `consent_basis` 'existing_customer' | 'explicit_consent', required
  - `contact_list_id` string, required
  - `ends_at` string, date-time
  - `from_number_ids` string[], required
  - `language` string
  - `max_concurrency` integer
  - `name` string, required
  - `organization_id` string, required
  - `project_id` string, required
  - `purpose` string, required
  - `reserved_concurrency` integer
  - `retry_policy` object
  - `retry_policy_preset` 'sales' | 'collections' | 'single_attempt'
  - `scheduled_start_at` string, date-time
  - `time_zone` string: IANA time zone (default UTC), matched and stored like a contact's time_zone
  - `time_zone_mode` 'contact' | 'fixed'

## Response `201`

Campaign

---

[API](https://skmtc.dev/skysay/apis/skysay-api.md) · [All operations](https://skmtc.dev/skysay/apis/skysay-api/llms.txt) · [OpenAPI document](https://skmtc.dev/skysay/apis/skysay-api/revisions/95b8c66f99aa?raw)
