Update a campaign
Replaces the editable fields of a 10DLC campaign and pushes the change to the US 10DLC registry. This is a full replacement: name is required and any field you leave out is cleared.
curl --request PUT \
--url https://api.vobiz.ai/api/v1/sms/10dlc/campaigns/{id} \
--header 'Content-Type: application/json' \
--header 'X-Auth-ID: <api-key>' \
--header 'X-Auth-Token: <api-key>' \
--data '
{
"name": "Example Corp account alerts"
}
'from vobiz import Vobiz
client = Vobiz(api_key="MA_XXXXXXXX", auth_token="YOUR_AUTH_TOKEN")
client.sms.campaigns.update_campaign(
id="4c2a0e8d-6b4f-4d2c-b0a8-9e7c5a3f1d24",
name="Example Corp account alerts",
program_summary="Example Corp sends account, billing and support alerts to customers who opted in on the sign-up form. Reply STOP to opt out, HELP for help.",
confirmation_message="Example Corp: You are subscribed to account alerts. Msg frequency varies. Msg & data rates may apply. Reply HELP for help, STOP to opt out.",
help_message="Example Corp: For help email support@example.com. Reply STOP to opt out.",
stop_message="Example Corp: You have been unsubscribed. Reply HELP for help.",
customer_care_phone="+14155550100",
customer_care_email="support@example.com",
terms_and_conditions_url="https://example.com/terms",
privacy_policy_url="https://example.com/privacy",
example_messages=[
"Example Corp: Your support ticket #48213 was updated. View it at https://example.com/support. Reply STOP to opt out."
],
use_cases=[
"ALERTS"
],
message_types=[
"SMS"
],
opt_ins={
"web": {"url": "https://example.com/signup", "callToAction": "By checking this box you agree to receive account alerts from Example Corp. Msg frequency varies. Msg & data rates may apply. Reply STOP to opt out, HELP for help."}
},
low_volume=True,
embedded_link=True,
)
const options = {
method: 'PUT',
headers: {
'X-Auth-ID': '<api-key>',
'X-Auth-Token': '<api-key>',
'Content-Type': 'application/json'
},
body: JSON.stringify({name: 'Example Corp account alerts'})
};
fetch('https://api.vobiz.ai/api/v1/sms/10dlc/campaigns/{id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"id": "8a7d2f10-3c4b-4e9a-b1d2-6e5f4a3b2c11",
"accountId": "MA_XXXXXXXX",
"brandId": "5f1c3a2e-7b4d-4e8f-9a0b-1c2d3e4f5a60",
"name": "Example Corp account alerts",
"campaignType": "TEN_DIGIT_LONG_CODE",
"stage": "DRAFT",
"programSummary": "Example Corp sends account, billing and support alerts to customers who opted in on the sign-up form. Reply STOP to opt out, HELP for help.",
"useCases": [
"ALERTS"
],
"messageTypes": [
"SMS"
],
"lowVolume": true,
"ageGated": false,
"directLending": false,
"embeddedLink": true,
"embeddedPhone": false,
"createdAt": "2026-10-06T14:28:25Z",
"updatedAt": "2026-10-06T15:02:10Z"
}Authorizations
Your Vobiz account Auth ID (MA_XXXXXXXX).
Your Vobiz account Auth Token.
Path Parameters
Campaign ID (UUID) returned by POST /10dlc/campaigns or POST /10dlc/campaigns/toll-free. An unknown ID, an ID from another account, or a value that is not a UUID returns 404 with {"error":"campaign not found"}.
Body
Full replacement body for a 10DLC campaign update: the shared campaign fields. name is required and any field you leave out is cleared; campaignType and the brand stay as created.
Name for the campaign, for your reference. Required on create and on update.
"Example Corp account alerts"
Plain-language description of the program: what you send, to whom, how often and how recipients opt in. Reviewers read this first.
"Example Corp sends account and support alerts to customers who opted in on the sign-up form. Reply STOP to opt out, HELP for help."
Message you send when a recipient opts in. Include your brand name and how to get help or opt out.
"Example Corp: You are subscribed to account alerts. Msg frequency varies. Msg & data rates may apply. Reply HELP for help, STOP to opt out."
Reply you send when a recipient texts HELP. Include your brand name and a way to reach support.
"Example Corp: For help email support@example.com. Reply STOP to opt out."
Reply you send when a recipient texts STOP, confirming they will receive no further messages.
"Example Corp: You have been unsubscribed. Reply HELP for help."
Customer care phone number for the program, in E.164 format.
"+14155550100"
Customer care email address for the program.
"support@example.com"
Public URL of the terms and conditions that cover the program.
"https://example.com/terms"
Public URL of your privacy policy.
"https://example.com/privacy"
Sample messages exactly as the campaign will send them, including your brand name and opt-out language. Cover each use case you list.
[
"Example Corp: Your support ticket #48213 was updated. View it at https://example.com/support. Reply STOP to opt out."
]
Use-case codes the campaign covers. Values accepted by the US 10DLC registry: TWO_FACTOR_AUTH, ALERTS, FRAUD_ALERTS, CHAT, PROMOTIONAL_MARKETING, EDUCATION, DONATION, PUBLIC_SERVICE_ANNOUNCEMENT, VOTING_POLLING, POLITICAL, M2M, SWEEPSTAKE.
["ALERTS"]
Message types the campaign sends, for example SMS and MMS.
["SMS"]
How recipients give consent, as an object keyed by opt-in channel (for example web, keyword, paper). Each entry describes that flow, for example url and callToAction for web; the object is passed to the registry as given.
{
"web": {
"url": "https://example.com/signup",
"callToAction": "By checking this box you agree to receive account alerts from Example Corp. Msg frequency varies. Msg & data rates may apply. Reply STOP to opt out, HELP for help."
}
}
Declares the campaign as low volume to the registry. Defaults to false.
Set true when the content is restricted to adults. Defaults to false.
Set true when the content relates to direct lending or loan arrangements. Defaults to false.
Set true when messages contain URLs. Defaults to false.
Set true when messages contain phone numbers. Defaults to false.
Numbers on your account to attach to the campaign, as digits with country code and no + (for example 14155550100).
["14155550100"]
documentId values of supporting documents uploaded with POST /10dlc/documents. Every ID must be on your account, otherwise the request returns 400.
documentId values of MMS sample files uploaded with POST /10dlc/documents. Every ID must be on your account, otherwise the request returns 400.
Response
The updated campaign.
A 10DLC or toll-free campaign on your account and its state at the US 10DLC registry. Optional fields are omitted when empty, and registry state is refreshed when you retrieve the campaign.
Campaign ID (UUID) on your account. Use it in every /10dlc/campaigns/{id} path.
"8a7d2f10-3c4b-4e9a-b1d2-6e5f4a3b2c11"
Your Vobiz account ID (MA_...). Always the account whose credentials made the request.
"MA_XXXXXXXX"
ID of the brand the campaign runs under. Omitted for toll-free campaigns, which carry their business details themselves.
"5f1c3a2e-7b4d-4e8f-9a0b-1c2d3e4f5a60"
Name you gave the campaign, for your reference.
"Example Corp account alerts"
Kind of campaign. TEN_DIGIT_LONG_CODE is a standard 10DLC campaign (the default on create) and TOLL_FREE_UNIFIED_NUMBER is a toll-free verification created with POST /10dlc/campaigns/toll-free. The other values are registry campaign types you can request on create.
TEN_DIGIT_LONG_CODE, TOLL_FREE_UNIFIED_NUMBER, TOLL_FREE_NUMBER, SHORT_CODE, EXTERNAL_TEN_DIGIT_LONG_CODE, DCA2_TEN_DIGIT_LONG_CODE, TOLL_FREE_EXTERNALLY_VERIFIED, RCS_SENDER_LAUNCH Registry lifecycle stage. A new campaign is DRAFT; after you register it, it moves through review stages such as SUBMITTED, IN_REVIEW or APPEALED and settles at REGISTERED or REJECTED. Other values include REGISTERED_PENDING_UPDATE, REGISTERED_PENDING_DEREGISTRATION, REJECTED_EXTERNALLY, DEREGISTERED, ARCHIVED, BLOCKED, SUSPENDED and DELETED; treat it as an open string.
"REGISTERED"
Description of the program as submitted to the registry. Omitted when not set.
Opt-in confirmation message as submitted. Omitted when not set.
HELP reply as submitted. Omitted when not set.
STOP reply as submitted. Omitted when not set.
Customer care phone number, in E.164 format. Omitted when not set.
"+14155550100"
Customer care email address. Omitted when not set.
"support@example.com"
Sample messages as submitted. Omitted when not set.
Public URL of your terms and conditions. Omitted when not set.
Public URL of your privacy policy. Omitted when not set.
Use-case codes as submitted, for example ALERTS or, on a toll-free campaign, NOTIFICATIONS. Omitted when not set.
["ALERTS"]
Message types as submitted, for example SMS. Omitted when not set.
["SMS"]
Opt-in details as submitted, keyed by channel (for example web). Omitted when not set.
Whether the campaign is declared low volume. Always present; false unless you set it.
Whether the content is restricted to adults. Always present; false unless you set it.
Whether the content relates to direct lending. Always present; false unless you set it.
Whether messages contain URLs. Always present; false unless you set it.
Whether messages contain phone numbers. Always present; false unless you set it.
Numbers recorded on the campaign on your account. 10DLC campaigns store digits with country code (for example 14155550100); toll-free campaigns store E.164 with a leading +. For the registry's own list use GET /10dlc/campaigns/{id}/numbers.
["14155550100"]
The registry's review feedback after a rejection, with keys such as rejectionDate, rejectionReasons and rejectionDetails (each detail has errorCode, description, recommendedAction and rejectionCategory). Omitted when the campaign has no feedback; address every point before you appeal.
When Vobiz last refreshed this record from the US 10DLC registry, in ISO 8601 (RFC 3339) UTC. Omitted until the first refresh.
"2026-10-14T17:19:03Z"
When the record was created on your account, in ISO 8601 (RFC 3339) UTC.
"2026-10-06T14:28:25Z"
When the record last changed on your account, in ISO 8601 (RFC 3339) UTC.
"2026-10-14T17:19:03Z"
Was this page helpful?
curl --request PUT \
--url https://api.vobiz.ai/api/v1/sms/10dlc/campaigns/{id} \
--header 'Content-Type: application/json' \
--header 'X-Auth-ID: <api-key>' \
--header 'X-Auth-Token: <api-key>' \
--data '
{
"name": "Example Corp account alerts"
}
'from vobiz import Vobiz
client = Vobiz(api_key="MA_XXXXXXXX", auth_token="YOUR_AUTH_TOKEN")
client.sms.campaigns.update_campaign(
id="4c2a0e8d-6b4f-4d2c-b0a8-9e7c5a3f1d24",
name="Example Corp account alerts",
program_summary="Example Corp sends account, billing and support alerts to customers who opted in on the sign-up form. Reply STOP to opt out, HELP for help.",
confirmation_message="Example Corp: You are subscribed to account alerts. Msg frequency varies. Msg & data rates may apply. Reply HELP for help, STOP to opt out.",
help_message="Example Corp: For help email support@example.com. Reply STOP to opt out.",
stop_message="Example Corp: You have been unsubscribed. Reply HELP for help.",
customer_care_phone="+14155550100",
customer_care_email="support@example.com",
terms_and_conditions_url="https://example.com/terms",
privacy_policy_url="https://example.com/privacy",
example_messages=[
"Example Corp: Your support ticket #48213 was updated. View it at https://example.com/support. Reply STOP to opt out."
],
use_cases=[
"ALERTS"
],
message_types=[
"SMS"
],
opt_ins={
"web": {"url": "https://example.com/signup", "callToAction": "By checking this box you agree to receive account alerts from Example Corp. Msg frequency varies. Msg & data rates may apply. Reply STOP to opt out, HELP for help."}
},
low_volume=True,
embedded_link=True,
)
const options = {
method: 'PUT',
headers: {
'X-Auth-ID': '<api-key>',
'X-Auth-Token': '<api-key>',
'Content-Type': 'application/json'
},
body: JSON.stringify({name: 'Example Corp account alerts'})
};
fetch('https://api.vobiz.ai/api/v1/sms/10dlc/campaigns/{id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"id": "8a7d2f10-3c4b-4e9a-b1d2-6e5f4a3b2c11",
"accountId": "MA_XXXXXXXX",
"brandId": "5f1c3a2e-7b4d-4e8f-9a0b-1c2d3e4f5a60",
"name": "Example Corp account alerts",
"campaignType": "TEN_DIGIT_LONG_CODE",
"stage": "DRAFT",
"programSummary": "Example Corp sends account, billing and support alerts to customers who opted in on the sign-up form. Reply STOP to opt out, HELP for help.",
"useCases": [
"ALERTS"
],
"messageTypes": [
"SMS"
],
"lowVolume": true,
"ageGated": false,
"directLending": false,
"embeddedLink": true,
"embeddedPhone": false,
"createdAt": "2026-10-06T14:28:25Z",
"updatedAt": "2026-10-06T15:02:10Z"
}