Skip to main content
US toll-free numbers (area codes 800, 833, 844, 855, 866, 877 and 888) carry A2P messages after a one-time verification. The verification describes your business and your messaging program in a single submission. Unlike 10DLC, it does not require a brand record first.
Building with code? Submit verification with Create a toll-free verification request in the Messaging API.
In the console, toll-free verifications live under SMS & RCS → Registration → Toll-free. This page covers the same flow through the API.
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 on POST /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.
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_ALERTS
HUNDRED, TEN_THOUSAND, TWO_HUNDRED_FIFTY_THOUSAND, SEVEN_HUNDRED_FIFTY_THOUSAND, FIVE_MILLION

Verify 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

The response is 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:
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

On GET /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 optInImageURLs and spell out the consent text in optIns.callToAction.
  • Example message missing brand or STOP. Start exampleMessage with the business name and end it with opt-out instructions.
  • Website or policy mismatch. businessWebsite, privacyPolicyUrl and termsAndConditionsUrl must be live and belong to the same business as legalName.
  • Use case does not match the summary. Pick the useCase that describes the actual content, and keep programSummary consistent 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.