Until the verification is approved, messages from the toll-free number fail with a carrier error such as
EC_TF_NUMBER_NOT_VERIFIED in the message’s errorCode.Verification fields
Send these onPOST /10dlc/campaigns/toll-free. There is no brandId; the business details are part of this request.
Any
type you send is ignored. The resulting record always has campaignType: TOLL_FREE_UNIFIED_NUMBER.
Registry values
The registry accepts these values. Vobiz passes them through as you send them.useCase
useCase
TWO_FACTOR_AUTH, NOTIFICATIONS, SYSTEM_ALERTS, APP_NOTIFICATIONS, BANKING, BOOKING_CONFIRMATIONS, CHATBOT, COURIER_SERVICES_DELIVERIES, EMERGENCY_ALERTS, EVENTS_PLANNING, FRAUD_ALERTS, GENERAL_MARKETING, HEALTHCARE, INSURANCE_SERVICES, LEGAL_SERVICES, MOTIVATIONAL_REMINDERS, POLITICAL, REAL_ESTATE_SERVICES, RELIGIOUS_SERVICES, REWARDS_PROGRAM, WEBINAR_REMINDERS, AUCTIONS, COVID_19_ALERTSmessageVolume (messages per month)
messageVolume (messages per month)
HUNDRED, TEN_THOUSAND, TWO_HUNDRED_FIFTY_THOUSAND, SEVEN_HUNDRED_FIFTY_THOUSAND, FIVE_MILLIONVerify a toll-free number
1
Buy or bring the toll-free number
Search with
country=US on GET /numbers/available and purchase with POST /numbers/purchase, or use a toll-free number already on your account. See the Numbers guide.2
Submit the verification
201 with a campaign object whose campaignType is TOLL_FREE_UNIFIED_NUMBER and which has no brandId.3
Register and poll
From here the record behaves like any campaign:
POST /10dlc/campaigns/{id}/registersubmits it, optionally with{"priorityId": "<uuid>"}.GET /10dlc/campaigns/{id}refreshesstageandrejectionReasons.GET /10dlc/campaigns/{id}/network-statusesshows the carriers’ states.- The
10dlc.campaign.updatedWebSocket event fires on every change.
4
Handle a rejection
Read
rejectionReasons.rejectionDetails on the campaign. Correct the details and submit a new verification, or POST /10dlc/campaigns/{id}/appeal with {"reason": "..."} explaining what you fixed. Toll-free records are not edited through PUT /10dlc/campaigns/{id}; that endpoint returns 400 {"error": "invalid request: toll-free campaigns cannot be updated through this endpoint"} for them.5
Send
When
stage is REGISTERED, send with the toll-free number as from on POST /messages.How toll-free numbers appear on your account
OnGET /numbers a toll-free number has tollFree: true and registration.kind: toll_free:
registration.status follows the same values as for 10DLC: not_registered, draft, pending, approved, rejected. See the compliance overview.
Common toll-free rejections
- Opt-in not demonstrated. Add screenshots to
optInImageURLsand spell out the consent text inoptIns.callToAction. - Example message missing brand or STOP. Start
exampleMessagewith the business name and end it with opt-out instructions. - Website or policy mismatch.
businessWebsite,privacyPolicyUrlandtermsAndConditionsUrlmust be live and belong to the same business aslegalName. - Use case does not match the summary. Pick the
useCasethat describes the actual content, and keepprogramSummaryconsistent with it.
Next steps
10DLC campaigns
The flow for US local numbers.
Toll-free endpoint
Full request and response schema.
Build it with the Messaging API
Toll-free endpoint
Submit a verification request by API.
WebSocket events
Follow review status live.
Sending SMS
Send from your verified toll-free number.
Messaging webhooks
Track delivery once traffic flows.