---
title: "Update a campaign"
method: PATCH
path: "/v1/campaigns/{campaign_id}"
tags: ["Campaigns"]
---

# Update a campaign

`PATCH /v1/campaigns/{campaign_id}`

## Path parameters

- `campaign_id` integer, required

## Request body

- UpdateCampaignRequest — All fields are optional. Only provided fields will be updated.
  - `name` string — Campaign name.
  - `from_number` string — Phone number to dial from in E.164 format.
  - `time_start` string — Start time for the calling window in HH:MM format (e.g. "09:00").
  - `time_end` string — End time for the calling window in HH:MM format (e.g. "17:00").
  - `timezone` string — IANA timezone for the calling window.
  - `contact_list_id` integer — ID of the contact list to dial.
  - `days` string[] — Days of week to run the campaign (e.g. ["Monday", "Wednesday", "Friday"]). **Note:** When setting days, time_start and time_end must also be provided (either in the same request or already set on the campaign).

## Response `200`

Updated campaign

- 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

- `404` — Campaign 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)
