Register a campaign
Submits the campaign to the US 10DLC registry for review and returns the refreshed campaign. The stage moves out of DRAFT; poll GET /10dlc/campaigns/{id} until it settles at REGISTERED or REJECTED.
curl --request POST \
--url https://api.vobiz.ai/api/v1/sms/10dlc/campaigns/{id}/register \
--header 'Content-Type: application/json' \
--header 'X-Auth-ID: <api-key>' \
--header 'X-Auth-Token: <api-key>' \
--data '
{
"priorityId": "2c9e4b7a-1d3f-4a5b-8c6d-0e9f8a7b6c5d"
}
'from vobiz import Vobiz
client = Vobiz(api_key="MA_XXXXXXXX", auth_token="YOUR_AUTH_TOKEN")
client.sms.campaigns.register_campaign(
id="4c2a0e8d-6b4f-4d2c-b0a8-9e7c5a3f1d24",
priority_id="2c9e4b7a-1d3f-4a5b-8c6d-0e9f8a7b6c5d",
)
const options = {
method: 'POST',
headers: {
'X-Auth-ID': '<api-key>',
'X-Auth-Token': '<api-key>',
'Content-Type': 'application/json'
},
body: JSON.stringify({priorityId: '2c9e4b7a-1d3f-4a5b-8c6d-0e9f8a7b6c5d'})
};
fetch('https://api.vobiz.ai/api/v1/sms/10dlc/campaigns/{id}/register', 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": "IN_REVIEW",
"useCases": [
"ALERTS"
],
"messageTypes": [
"SMS"
],
"lowVolume": true,
"ageGated": false,
"directLending": false,
"embeddedLink": true,
"embeddedPhone": false,
"numbers": [
"14155550100"
],
"lastSyncedAt": "2026-10-06T15:10:00Z",
"createdAt": "2026-10-06T14:28:25Z",
"updatedAt": "2026-10-06T15:10:00Z"
}{
"error": "invalid request: priorityId must be a UUID"
}{
"error": "missing or invalid credentials"
}{
"error": "campaign not found"
}{
"error": "registration provider rejected the request: brand must be ACTIVE before campaigns can be registered",
"providerError": "registration error 403 (HTTP 403): brand not active"
}{
"error": "internal error"
}{
"error": "registration provider unavailable",
"providerError": "registration error 500 (HTTP 500): upstream timeout"
}{
"error": "registration provider rejected the service credentials",
"providerError": "registration error 401 (HTTP 401): unauthorized"
}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
Optional body of a campaign registration. Send no body, or {}, for a 10DLC campaign.
ID (UUID) of a priority option from GET /10dlc/campaigns/priorities, for toll-free campaigns. A value that is not a UUID returns 400 with invalid request: priorityId must be a UUID.
"2c9e4b7a-1d3f-4a5b-8c6d-0e9f8a7b6c5d"
Response
The campaign after submission.
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 POST \
--url https://api.vobiz.ai/api/v1/sms/10dlc/campaigns/{id}/register \
--header 'Content-Type: application/json' \
--header 'X-Auth-ID: <api-key>' \
--header 'X-Auth-Token: <api-key>' \
--data '
{
"priorityId": "2c9e4b7a-1d3f-4a5b-8c6d-0e9f8a7b6c5d"
}
'from vobiz import Vobiz
client = Vobiz(api_key="MA_XXXXXXXX", auth_token="YOUR_AUTH_TOKEN")
client.sms.campaigns.register_campaign(
id="4c2a0e8d-6b4f-4d2c-b0a8-9e7c5a3f1d24",
priority_id="2c9e4b7a-1d3f-4a5b-8c6d-0e9f8a7b6c5d",
)
const options = {
method: 'POST',
headers: {
'X-Auth-ID': '<api-key>',
'X-Auth-Token': '<api-key>',
'Content-Type': 'application/json'
},
body: JSON.stringify({priorityId: '2c9e4b7a-1d3f-4a5b-8c6d-0e9f8a7b6c5d'})
};
fetch('https://api.vobiz.ai/api/v1/sms/10dlc/campaigns/{id}/register', 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": "IN_REVIEW",
"useCases": [
"ALERTS"
],
"messageTypes": [
"SMS"
],
"lowVolume": true,
"ageGated": false,
"directLending": false,
"embeddedLink": true,
"embeddedPhone": false,
"numbers": [
"14155550100"
],
"lastSyncedAt": "2026-10-06T15:10:00Z",
"createdAt": "2026-10-06T14:28:25Z",
"updatedAt": "2026-10-06T15:10:00Z"
}{
"error": "invalid request: priorityId must be a UUID"
}{
"error": "missing or invalid credentials"
}{
"error": "campaign not found"
}{
"error": "registration provider rejected the request: brand must be ACTIVE before campaigns can be registered",
"providerError": "registration error 403 (HTTP 403): brand not active"
}{
"error": "internal error"
}{
"error": "registration provider unavailable",
"providerError": "registration error 500 (HTTP 500): upstream timeout"
}{
"error": "registration provider rejected the service credentials",
"providerError": "registration error 401 (HTTP 401): unauthorized"
}