---
title: "Update Campaign"
method: PATCH
path: "/api/v1/campaigns/{id}"
tags: ["CampaignService"]
---

# Update Campaign

`PATCH /api/v1/campaigns/{id}`

## Request

- Base URL: `https://api.ravan.ai`
- URL: `https://api.ravan.ai/api/v1/campaigns/{id}`
- Auth: API key in header `X-Api-Key`

## Path parameters

- `id` string, required

## Request body

- UpdateCampaignRequest
  - `name` string
  - `agent_id` string
  - `phone_number_id` string
  - `from_phone_number` string
  - `schedule` CampaignSchedule
    - `start` string: Execution start (ISO 8601, server-set)
    - `end` string: Execution end (ISO 8601, server-set)
    - `window_start` string: Daily call window start, e.g. 09:00
    - `window_end` string: Daily call window end, e.g. 18:00
    - `window_days` integer[]: Days of week (1=Mon ... 7=Sun)
    - `timezone` string: IANA timezone, e.g. Asia/Kolkata
    - `max_concurrent` integer: Max simultaneous calls
    - `retry_attempts` integer: Max retry count per contact
    - `retry_gap_min` integer: Minutes between retries

## Response `200`

Successful response

- GetCampaignResponse
  - `success` boolean
  - `message` string
  - `data` Campaign
    - `id` string: Campaign UUID
    - `organization_id` string: Organization UUID
    - `name` string: Campaign name
    - `agent_id` string: Assigned agent UUID
    - `phone_number_id` string: Phone number UUID
    - `from_phone_number` string: Caller ID
    - `status` string: Status: draft, running, paused, completed
    - `execution_status` string: Execution state
    - `schedule` CampaignSchedule
      - `start` string: Execution start (ISO 8601, server-set)
      - `end` string: Execution end (ISO 8601, server-set)
      - `window_start` string: Daily call window start, e.g. 09:00
      - `window_end` string: Daily call window end, e.g. 18:00
      - `window_days` integer[]: Days of week (1=Mon ... 7=Sun)
      - `timezone` string: IANA timezone, e.g. Asia/Kolkata
      - `max_concurrent` integer: Max simultaneous calls
      - `retry_attempts` integer: Max retry count per contact
      - `retry_gap_min` integer: Minutes between retries
    - `contact_stats` CampaignStats
      - `total` integer: Total contacts in campaign
      - `contacted` integer: Contacts that were reached
      - `successful` integer: Successful calls
      - `failed` integer: Failed calls
      - `no_answer` integer: No answer calls
      - `pending` integer: Awaiting first attempt
      - `in_progress` integer: Currently being called
    - `started_at` string: Execution start timestamp (ISO 8601)
    - `completed_at` string: Execution end timestamp (ISO 8601)
    - `created_at` string: Creation timestamp
    - `updated_at` string: Last update timestamp

## Changes

- **2026-11-03** `53e6f393f46e`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/ravan/apis/agni-api/changes/api/v1/campaigns/:id/patch.md)

---

[API](https://skmtc.dev/ravan/apis/agni-api.md) - [All operations](https://skmtc.dev/ravan/apis/agni-api/llms.txt) - [OpenAPI document](https://skmtc.dev/ravan/apis/agni-api/revisions/53e6f393f46e?raw)
