> ## Documentation Index
> Fetch the complete documentation index at: https://dialnexa.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Update Campaign

> Update editable campaign settings such as display name, concurrency, and retry behavior. The assigned agent cannot be changed once calling has started.

<Warning>
  **Legacy endpoint - deprecated.** Unversioned endpoints are scheduled for removal on **July 31, 2026**. A public v1 replacement is not currently listed in the v1 reference. This endpoint remains available for existing integrations until then.
</Warning>

Updates editable settings on a campaign - primarily the retry policy (`number_of_retries`, `interval_between_retries`). Only the fields you include in the request are updated; omitted fields are left unchanged. Refer to the request schema below for the exact set of editable fields.

## When to use this

* **Retry tuning**: adjust `number_of_retries` and `interval_between_retries` to control how persistently the campaign re-attempts leads that don't connect.
* **Renaming**: keep the campaign's display name aligned with the business process it serves.
* **Retry policy changes**: adjust how aggressively DialNexa retries no-answer or busy outcomes. See [Auto-retry](/docs/batch-calls/retries-and-statuses).
* **Pausing**: set status-related fields to pause delivery while leaving the campaign's configuration in place.

If you need to swap the agent after calls have started, the cleanest path is to cancel the existing campaign through the dashboard and create a new one with the new agent, that keeps each campaign's call logs traceable to exactly one agent configuration.

## Path parameters

| Parameter | Description                                      |
| --------- | ------------------------------------------------ |
| `id`      | The campaign ID, for example `cmp_5tw8vz2rnx1q`. |

## Errors

* `404 Not Found` is returned when the campaign does not exist.
* `400 Bad Request` is returned when a field fails validation.
* `409 Conflict` is returned when you try to change `agent_id` after calls have been placed.

## Related endpoints

* [Get Campaign](/docs/api-reference/campaigns/get): confirm new settings.
* [Rate limits](/docs/reference/limits): workspace-level caps that apply to campaign dialling.
* [Auto-retry](/docs/batch-calls/retries-and-statuses): how retry policy interacts with call outcomes.


## OpenAPI

````yaml PATCH /campaigns/{id}
openapi: 3.0.0
info:
  title: DialNexa API
  description: >-
    Public REST API for the DialNexa voice AI platform. Versioned endpoints are
    under /v1; unversioned endpoints are legacy and deprecated.
  version: 1.0.0
servers:
  - url: https://api.dialnexa.com
    description: DialNexa production API
security:
  - bearer: []
tags:
  - name: API Keys
  - name: Agent Functions
  - name: Agents V1
  - name: Agents2
  - name: Batch Calls
  - name: Batch Calls V1
  - name: Call Logs
  - name: Calls
  - name: Calls V1
  - name: Campaign Leads
  - name: Campaigns
  - name: External Webhooks
  - name: Knowledge Base
  - name: Knowledge Base V1
  - name: LLMs
  - name: LLMs V1
  - name: Languages
  - name: Languages V1
  - name: Organization Phone Numbers
  - name: Organization Phone Numbers V1
  - name: Phone Number Pricing
  - name: Phone Number Pricing V1
  - name: Transcribers
  - name: Transcribers V1
  - name: User Webhooks
  - name: User Webhooks V1
  - name: V1
  - name: Voices
  - name: Voices V1
  - name: Webcall
  - name: Workflow Leads
  - name: Workflow Leads V1
  - name: Workflows
  - name: Workflows V1
paths:
  /campaigns/{id}:
    patch:
      tags:
        - Campaigns
      summary: Update a campaign by ID
      description: >-
        **Legacy endpoint - deprecated, scheduled for removal on July 31,
        2026.** Use the `/v1` version for new integrations. 
      operationId: CampaignsController_update
      parameters:
        - name: id
          required: true
          in: path
          schema:
            type: string
        - name: x-organization-id
          in: header
          description: RSA encrypted organization ID (base64 format)
          required: true
          schema:
            type: string
            example: BASE64_ENCRYPTED_ORG_ID_HERE
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateCampaignDto'
      responses:
        '200':
          description: Campaign updated successfully
        '404':
          description: Campaign not found
        '500':
          description: Internal Server Error
      deprecated: true
components:
  schemas:
    UpdateCampaignDto:
      type: object
      properties:
        sent_lead_count:
          type: number
          description: Total Number Failed Leads for this Campaign
          example: '10'
        picked_up_lead_count:
          type: number
          description: Total Number Leads who picked up for this Campaign
          example: '10'
        success_lead_count:
          type: number
          description: Total Number Successful Leads for this Campaign
          example: '10'
        completed_leads:
          type: number
          description: Total Number of Completed Leads for this Campaign
          example: '10'
        failed_leads:
          type: number
          description: Total Number of Failed Leads for this Campaign
          example: '10'
        number_of_retries:
          type: number
          description: Number of retries for the campaign (0-5)
          example: 3
        interval_between_retries:
          type: number
          description: Interval between retries in minutes (0-1440)
          example: 15
  securitySchemes:
    bearer:
      scheme: bearer
      bearerFormat: JWT
      type: http

````