---
title: "Update a campaign by ID"
method: PUT
path: "/campaigns/{id}"
tags: ["Campaigns"]
---

# Update a campaign by ID

`PUT /campaigns/{id}`

## Request

- Base URL: `https://api.emailchaser.com/r`
- URL: `https://api.emailchaser.com/r/campaigns/{id}`
- Auth: HTTP bearer

Updates campaign properties such as name, emoji, timezone, and various settings. Only provided fields will be updated. minimumHealthScore (1-100) stops any email account whose health score is below it, or that has no score yet, from sending in this campaign until its score is back up; its conversations wait for it and never move to another account. Send 0 to remove the minimum.

## Path parameters

- `id` integer, required

## Request body

- ModelsUpdateCampaignRequest
  - `allowNonBusinessEmails` boolean
  - `dailyLimit` integer: DailyLimit caps the total emails (initial + follow-ups) this campaign may schedule per calendar day in the campaign timezone. Omit to leave the cap unchanged; it cannot be cleared through this endpoint.
  - `emoji` string
  - `ignoreOutOfOfficeReplies` boolean
  - `isEnabledCatchallValidated` boolean
  - `isEnabledEmailVerifier` boolean
  - `isEnabledIgnoreHardBouncedLeads` boolean
  - `isEnabledIgnoreLeadsWhoAlreadyResponded` boolean
  - `isEnabledLlm` boolean: Settings - all optional boolean flags
  - `isEnabledSkipLeadIfAlreadyExists` boolean
  - `isEnabledStopFollowUpsAcrossCampaigns` boolean
  - `isEnabledStopFollowUpsForSameCompany` boolean
  - `isEnabledStopFollowUpsOnReply` boolean
  - `maximumSendingLimitPerSenderEmail` integer
  - `maximumSendingLimitPerSenderEmailVariation` integer
  - `maximumTimeBetweenEmails` integer
  - `minimumHealthScore` integer: MinimumHealthScore, 1-100, is the lowest email account health score (see healthScore on the sender emails) that may send in this campaign. An account below it, or with no score yet, sends nothing here, first emails and follow-ups alike, until its score is back at or above it; its conversations wait for it and never move to another account. Send 0 to remove the minimum; omit to leave it unchanged. A running campaign re-plans its unsent emails at once.
  - `minimumTimeBetweenEmails` integer
  - `name` string
  - `timezone` string

## Response `200`

Campaign updated successfully

- ModelsUpdateCampaignResponse
  - `campaign` object
    - `emoji` string
    - `id` integer
    - `minimumHealthScore` integer: MinimumHealthScore is the campaign's minimum email account health score after this update, null when it has none.
    - `name` string
  - `message` string

## Other responses

- `400`: Invalid campaign ID or request body
- `401`: Unauthorized - invalid or missing API key
- `404`: Campaign not found
- `500`: Failed to update campaign

---

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