---
title: "Create a campaign"
method: POST
path: "/v1/campaigns"
tags: ["Campaigns"]
---

# Create a campaign

`POST /v1/campaigns`

## Request body

- CreateCampaignRequest
  - `name` string, required — Campaign name.
  - `type` 'outbound', required — Campaign type. Only **outbound** campaigns are supported (dials contacts from a contact list).
  - `bot_uid` string, required — UID of the bot that handles calls for this campaign.
  - `from_number` string, required — Phone number to dial from in E.164 format (e.g. "+12025551234").
  - `contact_list_id` integer, required — ID of the contact list to dial.
  - `time_start` string, required — Start time for the daily calling window in HH:MM format (e.g. "09:00").
  - `time_end` string, required — End time for the daily calling window in HH:MM format (e.g. "17:00").
  - `timezone` string — IANA timezone for the calling window (e.g. "America/New_York"). Defaults to UTC if not specified.
  - `days` string[] — Days of week to run the campaign (e.g. ["Monday", "Wednesday", "Friday"]). If not provided, campaign runs as single-day. Valid values: Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday.

## Response `201`

Campaign created

- CampaignResponse
  - `id` integer — Unique identifier.
  - `name` string — Campaign name.
  - `type` 'outbound' — Campaign type (always outbound).
  - `status` 'Scheduled' | 'Running' | 'Stopped' | 'Completed' | 'Failed' | 'Expired' | 'Paused' — Current campaign status.
  - `bot_uid` string — Bot UID for API reference.
  - `from_number` string — Phone number used to dial from (E.164 format).
  - `contact_list_id` integer — Associated contact list ID.
  - `time_start` string — Daily calling window start time in HH:MM format.
  - `time_end` string — Daily calling window end time in HH:MM format.
  - `timezone` string — Calling window timezone (IANA format).
  - `days` string[] — Days of week the campaign runs on (for recurring campaigns).
  - `schedule_type` 'single' | 'multi' — Schedule type: single (one-time) or multi (recurring on specific days).
  - `current_index` integer — Number of contacts already called.
  - `total_contacts` integer — Total number of contacts in the campaign's contact list.
  - `created_at` string, date-time
  - `updated_at` string, date-time

## Other responses

- `400` — Validation error
- `404` — Bot or contact list not found

---

[API](https://skmtc.net/openmicai/apis/openmic-v1-external-api.md) · [All operations](https://skmtc.net/openmicai/apis/openmic-v1-external-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/openmicai/openmic-v1-external-api/revisions/71c32e6ffd95/schema)
