The brand must be registered first. Campaigns submitted under a brand whose
registrationStatus is not ACTIVE are rejected with a reason that asks you to fix the brand.Campaign fields
Send these onPOST /10dlc/campaigns and PUT /10dlc/campaigns/{id}.
Registry values
The US 10DLC registry accepts theseuseCases. Vobiz passes them through as you send them.
TWO_FACTOR_AUTH, ALERTS, FRAUD_ALERTS, CHAT, PROMOTIONAL_MARKETING, EDUCATION, DONATION, PUBLIC_SERVICE_ANNOUNCEMENT, VOTING_POLLING, POLITICAL, M2M, SWEEPSTAKE
campaignType on this endpoint is TEN_DIGIT_LONG_CODE.
Supporting documents
Upload files before you reference them from a campaign.POST /10dlc/documentsismultipart/form-datawith the file in the field nameddocument. Files up to 10 MB are accepted; larger files return413 {"error": "document exceeds 10MB"}. The response is201withid,documentId,documentName,contentType,contentLengthandcreatedAt.- Put the
idvalues insupportingDocumentsormmsSampleFiles. Referencing a document that is not on your account returns400 {"error": "invalid request: supportingDocuments/mmsSampleFiles reference unknown documents; upload them via POST /v1/10dlc/documents first"}. GET /10dlc/documents/{documentId}streams the file back. The path takes thedocumentIdvalue, notid.
cURL
Register a campaign
1
Create the campaign
POST /10dlc/campaigns stores a draft on your account. Nothing is submitted yet.201 with the campaign object.2
Submit it for review
POST /10dlc/campaigns/{id}/register submits the campaign. The body is optional: {"priorityId": "<uuid>"} selects one of the registration priority options listed by GET /10dlc/campaigns/priorities. A non-UUID value returns 400 {"error": "invalid request: priorityId must be a UUID"}. The response is 200 with the refreshed campaign.3
Poll the network statuses
GET /10dlc/campaigns/{id}/network-statuses returns one entry per US carrier network with network (for example T_MOBILE, ATT, VERIZON), state (ACTIVE once approved), and, where the network assigns them, messageClass, throughput and brandTier. GET /10dlc/campaigns/{id} refreshes stage and rejectionReasons from the registry before returning. Subscribe to 10dlc.campaign.updated on the WebSocket to be told when the stage changes.4
Add numbers
Once Pass at least one of
stage is REGISTERED, attach the numbers that will send under this campaign with POST /10dlc/campaigns/{id}/numbers:numbers (digits, country code first, no +) or numberKeys (the numberKey from GET /numbers/available). Sending neither returns 400 {"error": "invalid request: numbers or numberKeys is required"}. The response is 200 {"status": "ok"}. GET /10dlc/campaigns/{id}/numbers lists what is attached according to the registry.5
Send
GET /numbers now shows the number with registration.status: approved. Send with POST /messages using that number as from.Manage a campaign
The campaign object
Stage values
stage is a string set by the registry. Treat it as an open list; these are the values you will see most often:
When a campaign is rejected,
rejectionReasons carries the registry’s feedback: a rejectionDate, a rejectionReasons array of plain-text reasons, and rejectionDetails entries with errorCode, description, rejectionCategory and, when present, recommendedAction.
What to expect
- Review involves the registry and each carrier separately, so
network-statusescan show some carriers approved while others are still pending. The campaignstagereflects the overall outcome. - Review time varies with the use case, the brand’s vetting tier and the reviewers’ queue. Register before you need to send.
- A campaign under a brand that is not
ACTIVEis rejected with a reason pointing at the brand. Fix the brand and register the campaign again. - Errors from the registry return
422withproviderError, an opaque diagnostic string you can quote to support. See the error reference.
Next steps
Toll-free verification
The equivalent flow for 8XX numbers.
Campaign endpoints
Full request and response schemas.
Build it with the Messaging API
Campaign endpoints
Create, register and attach numbers by API.
WebSocket events
Get
10dlc.campaign.updated as review progresses.Sending SMS
Send from your registered numbers.
Messaging webhooks
Track delivery once traffic flows.