---
title: "Update campaign"
method: PUT
path: "/api/relay/rest/registry/beta/campaigns/{id}"
tags: ["Campaign Registry: Campaigns"]
---

# Update campaign

`PUT /api/relay/rest/registry/beta/campaigns/{id}`

Changes the editable fields of an existing US 10-digit long code (10DLC) campaign by ID. Use it to maintain the campaign registration itself; phone numbers are added through [Create phone number assignment order](/docs/apis/rest/campaign-registry/phone-number-assignments/create-order) and removed through the assignment delete operation.

#### Permissions

The API token used to authenticate must have the following scope(s) enabled to make a successful request: _Messaging_ and _Numbers_.

[Learn more about API scopes](/docs/platform/your-signalwire-api-space).

## Path parameters

- `id` string, uuid, required — Universal Unique Identifier.

## Request body

- UpdateCampaignRequest — Request body for updating a campaign. Every field is optional; a field you omit keeps its current value.
  - `name` string — A name for the campaign.
  - `signalwire_contact_emails` string[] — Email addresses SignalWire uses for registration correspondence about this campaign. Omit the field to keep the current list. Send an empty list to remove the campaign's own addresses, after which correspondence falls back to the brand's addresses, then to the first administrator on the account.
  - `status_callback_url` string, uri — Specify a URL to receive webhook notifications when your campaign's state changes. See the [10DLC status callback](/docs/apis/rest/webhooks/ten-dlc-status-callback) docs for the webhook payload.

## Response `200`

The request has succeeded.

- CampaignResponse — Response containing a single campaign.
  - `id` string, uuid, required — Universal Unique Identifier.
  - `name` string — A name for the campaign.
  - `state` string — The current state of the campaign.
  - `sms_use_case` string — An SMS Use Case category for the campaign (2FA, ACCOUNT_NOTIFICATION, AGENTS_FRANCHISES, CARRIER_EXEMPT, CHARITY, CUSTOMER_CARE, DELIVERY_NOTIFICATION, EMERGENCY, FRAUD_ALERT, HIGHER_EDUCATION, K12_EDUCATION, LOW_VOLUME_MIXED, MARKETING, MIXED, POLITICAL, POLITICAL_SECTION_527, POLLING_VOTING, PROXY, PUBLIC_SERVICE_ANNOUNCEMENT, SECURITY_ALERT, SOCIAL, SWEEPSTAKE, TRIAL, UCAAS_HIGH_VOLUME, UCAAS_LOW_VOLUME).
  - `sub_use_cases` string[] — A sub use case category for MIXED or LOW_VOLUME_MIXED campaigns (CUSTOMER_CARE, HIGHER_EDUCATION, POLLING_VOTING, PUBLIC_SERVICE_ANNOUNCEMENT, MARKETING, SECURITY_ALERT, 2FA, ACCOUNT_NOTIFICATION, DELIVERY_NOTIFICATION, FRAUD_ALERT).
  - `campaign_verify_token` string — Campaign Verify token. Required if sms use case is POLITICAL_SECTION_527.
  - `description` string — A description for the campaign. Please use at least 40 characters.
  - `sample1` string — Sample message template/content. At least two samples are required and up to five can be provided. Please use at least 20 characters.
  - `sample2` string — Sample 2.
  - `sample3` string — Sample 3.
  - `sample4` string — Sample 4.
  - `sample5` string — Sample 5.
  - `dynamic_templates` string — If your messaging content will be modified in any way beyond what you shared in your templates, please describe the nature of how the content will change.
  - `message_flow` string — Please describe the call to action/message flow your intended recipients will experience.
  - `opt_in_message` string — Please share the message subscribers receive when they opt in.
  - `opt_out_message` string — Please share the message subscribers receive when they opt out.
  - `help_message` string — Please share the message subscribers receive when they request help.
  - `opt_in_keywords` string — Opt in keywords that subscribers can use.
  - `opt_out_keywords` string — Opt out keywords that subscribers can use.
  - `help_keywords` string — Help keywords that subscribers can use.
  - `number_pooling_required` boolean — Will 50 or more numbers be used with this single campaign? If so, please enter true.
  - `number_pooling_per_campaign` string — If you will be using number pooling, please provide an explanation as to why it is needed.
  - `direct_lending` boolean — Will this campaign include content related to direct lending or other loan agreements?
  - `embedded_link` boolean — Will you be using an embedded link of any kind? Note that public URL shorteners (bitly, tinyurl) will not be accepted.
  - `embedded_phone` boolean — Are you using an embedded phone number (except the required HELP information contact phone number)?
  - `age_gated_content` boolean — Will this campaign include any age gated content as defined by carrier and CTA guidelines?
  - `lead_generation` boolean — Is there any intent of this campaign to generate leads?
  - `csp_campaign_reference` string — If you are your own Campaign Service Provider, what is the approved Campaign ID? (Mandatory for CSPs, otherwise please omit)
  - `signalwire_contact_emails` string[] — Email addresses SignalWire uses for registration correspondence about this campaign. Defaults to the brand's addresses, then the first administrator on the account.
  - `status_callback_url` string — Optional: Specify a URL to receive webhook notifications when your campaign's state changes. See the [10DLC status callback](/docs/apis/rest/webhooks/ten-dlc-status-callback) docs for the webhook payload.
  - `created_at` string, date-time — Timestamp when the campaign was created.
  - `updated_at` string, date-time — Timestamp when the campaign was last updated.

## Other responses

- `401` — Access is unauthorized.
- `404` — The server cannot find the requested resource.
- `422` — The request failed validation. See errors for details.
- `500` — An internal server error occurred.

## Changes

> 161 revisions in range; 3 could not be searched.

- **2026-09-18** `c4ac621ccf3c` — 1 breaking, 1 warning, 3 info
  - the `name` request property's minLength was increased from `0` to `3`
  - the `name` request property's maxLength was set to `64`
  - added the new optional request property `signalwire_contact_emails`
  - added the new optional request property `status_callback_url`
  - …1 more

[Change history](https://skmtc.dev/signalwire/apis/signalwire-rest-api/changes/api/relay/rest/registry/beta/campaigns/:id/put.md)

---

[API](https://skmtc.dev/signalwire/apis/signalwire-rest-api.md) · [All operations](https://skmtc.dev/signalwire/apis/signalwire-rest-api/llms.txt) · [OpenAPI document](https://skmtc.dev/signalwire/apis/signalwire-rest-api/revisions/20ee0f568ece?raw)
