# Update a campaign

{% hint style="warning" %}
A successful request to this endpoint will mean you may be charged a [campaign resubmission fee](https://docs.bird.com/applications/channels/channels/supported-channels/sms/concepts/united-states-sms-registration/sms-10dlc/campaign-registration#campaign-registration-fees).
{% endhint %}

## Update campaign

> A campaign can only be updated when the status is APPROVED, DECLINED or REJECTED.\
> When the campaign is APPROVED only the fields 'description', 'samples', 'messageFlow', 'helpMessage', 'optinKeywords', 'optoutKeywords',\
> 'helpKeywords', 'optinMessage' and 'optoutMessage' can be updated.\
> When the campaign is DECLINED or REJECTED, all fields can be updated and the campaign will be resubmitted for review.<br>

```json
{"openapi":"3.0.3","info":{"title":"Numbers","version":"v1"},"tags":[{"description":"TCR Campaigns","name":"number_campaigns"}],"servers":[{"url":"https://api.bird.com","description":"Production API"}],"security":[{"accessKey":[]}],"components":{"securitySchemes":{"accessKey":{"description":"Uses the Authorization header: 'AccessKey ' followed by your access key token","scheme":"AccessKey","type":"http"}},"schemas":{"UpdateCampaign":{"type":"object","properties":{"name":{"type":"string","description":"Campaign name","nullable":true},"description":{"type":"string","maxLength":4096,"minLength":40,"description":"A use case that best matches the purpose of the campaign. Only editable when campaign is DECLINED.","nullable":true},"embeddedLink":{"type":"boolean","description":"Whether messages will contain links. Provide at least one sample containing a link. Only editable when campaign is DECLINED.","nullable":true},"embeddedPhone":{"type":"boolean","description":"Whether messages will contain phone number. Provide at least one sample containing a phone number. Only editable when campaign is DECLINED.","nullable":true},"numberPool":{"type":"boolean","description":"Whether a campaign will be associated with more than 50 numbers e.g. customer service use case. Only editable when campaign is DECLINED.","nullable":true},"ageGated":{"type":"boolean","description":"Whether a campaign contains age-gated content based on carrier/CTIA guidelines. Only editable when campaign is DECLINED.","nullable":true},"directLending":{"type":"boolean","description":"Whether a campaign includes content related to direct lending or loan arrangements. Only editable when campaign is DECLINED.","nullable":true},"samples":{"type":"array","description":"Between 1-5 sample messages, each 20-1024 characters. If directLending, embeddedPhone, embeddedLink is true provide relevant examples.","minItems":1,"maxItems":5,"items":{"type":"string","minLength":20,"maxLength":1024},"nullable":true},"messageFlow":{"type":"string","maxLength":4096,"minLength":40,"description":"Provide details of how the customer will opt into this campaign. If you have a live web opt-in provide the URL and ensure the page has details on the T&Cs/data collection for opting in, and how to opt out.","nullable":true},"helpMessage":{"type":"string","maxLength":255,"minLength":20,"description":"Help message of the campaign. A help message shall state the name of the service, contact (email or call centre), OPT IN and OPT OUT keywords.","nullable":true},"helpKeywords":{"type":"string","description":"A comma separated list of keywords. Support of the word HELP is the minimum requirement for requesting help/info.","nullable":true},"optoutKeywords":{"type":"string","description":"A comma separated list of keywords. Support of the word STOP is the minimum requirement for OPT OUT.","nullable":true},"optinKeywords":{"type":"string","description":"A comma separated list of keywords. Support of the word START is the minimum requirement for OPT OUT.","nullable":true},"optinMessage":{"type":"string","minLength":20,"description":"Provide an example of the message that will be sent after a customer has opted in.","nullable":true},"optoutMessage":{"type":"string","minLength":20,"description":"Provide an example of the message that will be sent after a customer has opted out.","nullable":true},"resellerId":{"type":"string","format":"uuid","description":"UUID of the reseller associated with this campaign. The specified reseller MUST be ACTIVE.","nullable":true}}},"Campaign":{"type":"object","additionalProperties":false,"properties":{"id":{"type":"string","description":"UUID of the campaign.","format":"uuid"},"name":{"type":"string","description":"Campaign name"},"subscription":{"$ref":"#/components/schemas/CampaignSubscription"},"status":{"type":"string","description":"Campaign status","enum":["DRAFT","FAILED","PENDING","REJECTED","APPROVED","DECLINED","SUSPENDED","DELETED","EXPIRED"]},"usecase":{"type":"string","description":"A use case that best matches the purpose of the campaign."},"subUsecases":{"type":"array","description":"If use case is MIXED or LOW_VOLUME mixed an array of 2-5 use cases.","items":{"type":"string"},"nullable":true},"description":{"type":"string","description":"A detailed description of what the campaign is for."},"embeddedLink":{"type":"boolean","description":"Whether messages will contain links. Provide at least one sample containing a link."},"embeddedPhone":{"type":"boolean","description":"Whether messages will contain phone number. Provide at least one sample containing a phone number."},"numberPool":{"type":"boolean","description":"Whether a campaign will be associated with more than 50 numbers e.g. customer service use case."},"ageGated":{"type":"boolean","description":"Whether a campaign contains age-gated content based on carrier/ctia guidelines."},"directLending":{"type":"boolean","description":"Whether a campaign includes content related to direct lending or loan arrangements."},"subscriberOptin":{"type":"boolean","description":"Confirm customer opt in is collected and processed."},"subscriberOptout":{"type":"boolean","description":"Confirm customer opt out is collected and processed."},"subscriberHelp":{"type":"boolean","description":"Confirm an info message is returned if a customer sends \"HELP\"."},"samples":{"type":"array","description":"Between 1-5 sample messages, each up to 1024 characters (empty until the campaign is submitted). If directLending, embeddedPhone, embeddedLink is true provide relevant examples.","maxItems":5,"items":{"type":"string","maxLength":1024}},"messageFlow":{"type":"string","description":"Provide details of how the customer will opt into this campaign. If you have a live web opt-in provide the URL and ensure the page has details on the T&Cs/data collection for opting in, and how to opt out."},"helpMessage":{"type":"string","description":"Help message of the campaign. A help message shall state the name of the service, contact (email or call centre), OPT IN and OPT OUT keywords."},"helpKeywords":{"type":"string","description":"A comma separated list of keywords. Support of the word HELP is the minimum requirement for requesting help/info."},"optoutKeywords":{"type":"string","description":"A comma separated list of keywords. Support of the word STOP is the minimum requirement for OPT OUT."},"optinKeywords":{"type":"string","description":"A comma separated list of keywords. Support of the word START is the minimum requirement for OPT OUT."},"optinMessage":{"type":"string","description":"Provide an example of the message that will be sent after a customer has opted in."},"optoutMessage":{"type":"string","description":"Provide an example of the message that will be sent after a customer has opted out."},"termsAndConditions":{"type":"boolean","description":"Indicates the campaign follows CTIA messaging principles and best practices."},"brandId":{"type":"string","description":"UUID of the brand associated with this campaign. The specified brand MUST be APPROVED.","format":"uuid"},"resellerId":{"type":"string","description":"UUID of the reseller associated with this campaign. The specified reseller MUST be ACTIVE.","nullable":true},"rejection":{"type":"object","description":"Rejection details","required":["description"],"properties":{"description":{"type":"string","description":"Rejection description"},"code":{"type":"string","description":"Rejection code"}}},"attachments":{"type":"array","description":"Attachments associated with this campaign.","items":{"$ref":"#/components/schemas/Attachment"}},"createdAt":{"type":"string","description":"Timestamp (UTC) when the campaign was created.","format":"date-time"},"updatedAt":{"type":"string","description":"Timestamp (UTC) when the campaign was last updated.","format":"date-time"}}},"CampaignSubscription":{"type":"object","title":"CampaignSubscription","additionalProperties":false,"description":"Describes status of Campaign Subscription","nullable":true,"properties":{"status":{"type":"string","enum":["active","inactive","canceling"]},"subscribedAt":{"type":"string","description":"Timestamp (UTC) when the subscription became active.","format":"date-time"},"updatedAt":{"type":"string","description":"Timestamp (UTC) when the subscription was last updated.","nullable":true,"format":"date-time"},"cancelledAt":{"type":"string","description":"Timestamp (UTC) when the subscription was cancelled.","nullable":true,"format":"date-time"}}},"Attachment":{"type":"object","additionalProperties":false,"required":["id","status","filename","contentType","createdAt","updatedAt"],"properties":{"id":{"type":"string","description":"The ID of the attachment.","format":"uuid"},"status":{"$ref":"#/components/schemas/AttachmentStatus"},"createdAt":{"type":"string","description":"Timestamp (UTC) when the attachment was created.","format":"date-time"},"updatedAt":{"type":"string","description":"Timestamp (UTC) when the attachment was last updated.","nullable":true,"format":"date-time"},"filename":{"type":"string","description":"The original name of the file when it was uploaded."},"mediaUrl":{"type":"string","description":"The URL to download the attachment."},"contentType":{"type":"string","description":"The detected MIME type of the file."}}},"AttachmentStatus":{"type":"string","description":"Attachment status","enum":["PENDING","ACTIVE","PENDING_DELETION","DELETED","FAILED","FAILED_DELETION"]},"error.detailed":{"additionalProperties":false,"description":"An error returned from the API that includes additional details about the error. The `details` property can contain any additional information about the error that may be helpful for debugging or understanding the error.\n","properties":{"code":{"description":"A unique code that identifies the error. This code can be used to programmatically identify the error.","minLength":3,"type":"string"},"details":{"additionalProperties":true,"description":"Any additional information about the error that may be helpful for debugging or understanding the error.","type":"object"},"message":{"description":"A human-readable message that describes the error.","minLength":1,"type":"string"}},"required":["code","message"],"title":"DetailedError","type":"object"},"error.validation":{"additionalProperties":false,"description":"A validation error returned from the API. The `details` map keys are JSON paths\npointing into the request body / parameters; values are arrays of human-readable\nmessages describing each problem with that path.\n","properties":{"code":{"description":"A unique code that identifies the error. This code can be used to programmatically identify the error.","minLength":3,"type":"string"},"details":{"additionalProperties":{"items":{"type":"string"},"type":"array"},"description":"Per-field validation messages keyed by JSON path.","type":"object"},"message":{"description":"A human-readable message that describes the error.","minLength":1,"type":"string"}},"required":["code","message"],"title":"ValidationError","type":"object"}},"responses":{"error.response.bad_request":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.detailed"}}},"description":"The request was malformed."},"error.response.invalid_request":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.validation"}}},"description":"The request contains invalid parameters or body fields."}}},"paths":{"/workspaces/{workspaceId}/tcr-brands/{brandId}/campaigns/{campaignId}":{"patch":{"description":"A campaign can only be updated when the status is APPROVED, DECLINED or REJECTED.\nWhen the campaign is APPROVED only the fields 'description', 'samples', 'messageFlow', 'helpMessage', 'optinKeywords', 'optoutKeywords',\n'helpKeywords', 'optinMessage' and 'optoutMessage' can be updated.\nWhen the campaign is DECLINED or REJECTED, all fields can be updated and the campaign will be resubmitted for review.\n","operationId":"updateTCRCampaign","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateCampaign"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Campaign"}}},"description":"Campaign successfully updated"},"400":{"$ref":"#/components/responses/error.response.bad_request"},"422":{"$ref":"#/components/responses/error.response.invalid_request"}},"summary":"Update campaign","tags":["number_campaigns"]}}}}
```

## CampaignUpdate object

| Field             | Type                                                                                    | Description                                                                                                                                                                                                   | Mandatory                                                         |                                              |
| ----------------- | --------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------- | -------------------------------------------- |
| useCase           | [useCase](/api/numbers-api/api-reference/10dlc-compliance/tcr-enums.md#usecases)        | A use case that best matches the purpose of the campaign                                                                                                                                                      | Optional                                                          | Yes. Only editable when campaign is DECLINED |
| subUsecases       | array<[useCase](/api/numbers-api/api-reference/10dlc-compliance/tcr-enums.md#usecases)> | If use case is MIXED or LOW\_VOLUME mixed an array of 2-5 use cases                                                                                                                                           | Optional. Unless changing use case to LOW\_VOLUME\_MIXED or MIXED | es. Only editable when campaign is DECLINED  |
| description       | string                                                                                  | A detailed description of what the campaign is for                                                                                                                                                            | Optional                                                          | es. Only editable when campaign is DECLINED  |
| embeddedLink      | boolean                                                                                 | Whether messages will contain links. Provide at least one sample containing a link                                                                                                                            | Optional                                                          | es. Only editable when campaign is DECLINED  |
| embeddedPhone     | boolean                                                                                 | Whether messages will contain phone number. Provide at least one sample containing a phone number                                                                                                             | Optional                                                          | es. Only editable when campaign is DECLINED  |
| numberPool        | boolean                                                                                 | Whether a campaign will be associated with more than 50 numbers e.g. customer service use case                                                                                                                | Optional                                                          | es. Only editable when campaign is DECLINED  |
| ageGated          | boolean                                                                                 | Whether a campaign contains age-gated content based on carrier/ctia guidelines                                                                                                                                | Optional                                                          | es. Only editable when campaign is DECLINED  |
| directLending     | boolean                                                                                 | Whether a campaign includes content related to direct lending or loan arrangements                                                                                                                            | Optional                                                          | es. Only editable when campaign is DECLINED  |
| subscriberOptin   | boolean                                                                                 | Confirm customer opt in is collected and processed                                                                                                                                                            | Optional. Unless adding opt in keywords/help messages             | es. Only editable when campaign is DECLINED  |
| subscriberOptout  | boolean                                                                                 | Confirm customer opt out is collected and processed                                                                                                                                                           | Optional                                                          | es. Only editable when campaign is DECLINED  |
| subscriberHelp    | boolean                                                                                 | Confirm an info message is returned if a customer sends “HELP”                                                                                                                                                | Optional                                                          | es. Only editable when campaign is DECLINED  |
| samples           | array\<string>                                                                          | Between 1-5 sample messages. If directLending, embeddedPhone, embeddedLink is true provide relevant examples                                                                                                  | Optional                                                          | <p><br></p>                                  |
| messageFlow       | string                                                                                  | Provide details of how the customer will opt into this campaign. If you have a live web opt-in provide the URL and ensure the page has details on the T\&Cs/data collection for opting in, and how to opt out | Optional                                                          | <p><br></p>                                  |
| helpKeywords      | string                                                                                  | A comma separated list of keywords. Support of the word HELP is the minimum requirement for requesting help/info.                                                                                             | Optional                                                          | <p><br></p>                                  |
| optoutKeywords    | string                                                                                  | A comma separated list of keywords. Support of the word STOP is the minimum requirement for OPT OUT.                                                                                                          | Optional                                                          | <p><br></p>                                  |
| optInKeywords     | string                                                                                  | A comma separated list of keywords. Support of the word START is the minimum requirement for OPT OUT.                                                                                                         | Optional. Required if subscriberOptin is changed to true          | <p><br></p>                                  |
| helpMessage       | string                                                                                  | Help message of the campaign. A help message shall state the name of the service, contact (email or call centre), OPT IN and OPT OUT keywords.                                                                | Optional                                                          | <p><br></p>                                  |
| optinMesage       | string                                                                                  | <p><br></p>                                                                                                                                                                                                   | Optional. Required if subscriberOptin is changed to true          | <p><br></p>                                  |
| optoutMesage      | sting                                                                                   | Provide an example of the message that will be sent after a customer has opted in.                                                                                                                            | Optional                                                          | <p><br></p>                                  |
| termsAndCondtions | boolean                                                                                 | Indicates the campaign follows CTIA messaging principles and best practices                                                                                                                                   | Optional                                                          | <p><br></p>                                  |

## CampaignResponse object

| Type                                                                                                                      | Description                                            |
| ------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------ |
| [CampaignReponse](/api/numbers-api/api-reference/10dlc-compliance/campaigns/create-a-campaign.md#campaignresponse-object) | CampaignResponse object describes a submitted campaign |


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.bird.com/api/numbers-api/api-reference/10dlc-compliance/campaigns/update-a-campaign.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
