> ## Documentation Index
> Fetch the complete documentation index at: https://www.vobiz.ai/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Create a toll-free campaign

> Starts toll-free verification for one or more toll-free numbers. The business details travel inside the request, so no brand is needed; only `name` is required, but the registry reviews every field you send.



## OpenAPI

````yaml openapi-sms.yaml POST /10dlc/campaigns/toll-free
openapi: 3.0.3
info:
  title: Vobiz Messaging API
  description: >
    Send and receive SMS, MMS and RCS messages, buy messaging numbers, register
    for

    US 10DLC and toll-free, run broadcasts, manage conversations, opt-outs and
    webhooks.


    **Base URL:** `https://api.vobiz.ai/api/v1/sms`


    **Authentication:** every request needs the `X-Auth-ID` and `X-Auth-Token`
    headers.

    The account is taken from your credentials; you never put an account ID in a
    path or body.

    Field names in this API are camelCase.
  version: '1.0'
  contact:
    email: support@vobiz.ai
    url: https://vobiz.ai
servers:
  - url: https://api.vobiz.ai/api/v1/sms
    description: Production
security:
  - AuthID: []
    AuthToken: []
tags:
  - name: Messages
    description: Send messages and inspect their delivery state.
  - name: Numbers
    description: >-
      Messaging-capable numbers on your account, inventory search, purchase and
      release.
  - name: Coverage
    description: Where you can send, per country.
  - name: Conversations
    description: Two-way threads between one of your numbers and a contact.
  - name: Opt-outs
    description: Numbers that must not receive messages on a channel.
  - name: Webhooks
    description: Subscriptions that deliver message and broadcast events to your server.
  - name: Broadcasts
    description: Bulk sends from an uploaded recipient list.
  - name: RCS Senders
    description: RCS sender (agent) identities and their message templates.
  - name: 10DLC Brands
    description: US 10DLC brand registration.
  - name: 10DLC Campaigns
    description: US 10DLC campaigns, toll-free verification and supporting documents.
paths:
  /10dlc/campaigns/toll-free:
    post:
      tags:
        - 10DLC Campaigns
      summary: Create a toll-free campaign
      description: >-
        Starts toll-free verification for one or more toll-free numbers. The
        business details travel inside the request, so no brand is needed; only
        `name` is required, but the registry reviews every field you send. The
        campaign is created with `campaignType` `TOLL_FREE_UNIFIED_NUMBER` and
        no `brandId`. Pass a `referenceId` so a retried request reconciles to
        the same campaign, then submit it with `POST
        /10dlc/campaigns/{id}/register`.
      operationId: create-toll-free-campaign
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TollFreeCampaignRequest'
            example:
              referenceId: tollfree-notifications-01
              name: Example Corp toll-free notifications
              useCase: NOTIFICATIONS
              messageVolume: TEN_THOUSAND
              numbers:
                - '+18335550100'
              programSummary: >-
                Example Corp sends account and support notifications to
                customers who opted in on the contact form. Reply STOP to opt
                out, HELP for help.
              exampleMessage: >-
                Example Corp: Your account balance is low. Add funds at
                https://example.com/wallet. Reply STOP to opt out, HELP for
                help.
              optIns:
                web:
                  url: https://example.com/contact
                  callToAction: >-
                    By checking this box you agree to receive account
                    notifications from Example Corp. Reply STOP to opt out, HELP
                    for help.
              optInImageURLs:
                - https://example.com/opt-in-screenshot.png
              privacyPolicyUrl: https://example.com/privacy
              termsAndConditionsUrl: https://example.com/terms
              legalName: Example Corporation Inc.
              businessName: Example Corp
              businessWebsite: https://example.com
              countryCode: US
              address:
                street: 100 Example Street
                city: San Francisco
                state: CA
                zipCode: '94105'
              businessContactFirstName: Alex
              businessContactLastName: Doe
              supportPhone: '+14155550100'
              supportEmail: support@example.com
              customerCareEmail: support@example.com
              taxId: 12-3456789
              taxIdIssuingCountry: US
              legalEntityType: PRIVATE_COMPANY
      responses:
        '201':
          description: The toll-free campaign was created.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Campaign'
              example:
                id: 9c1b3e5f-7a2d-4b8c-a0e1-2f3d4c5b6a72
                accountId: MA_XXXXXXXX
                name: Example Corp toll-free notifications
                campaignType: TOLL_FREE_UNIFIED_NUMBER
                stage: DRAFT
                programSummary: >-
                  Example Corp sends account and support notifications to
                  customers who opted in on the contact form. Reply STOP to opt
                  out, HELP for help.
                customerCarePhone: '+14155550100'
                customerCareEmail: support@example.com
                exampleMessages:
                  - >-
                    Example Corp: Your account balance is low. Add funds at
                    https://example.com/wallet. Reply STOP to opt out, HELP for
                    help.
                termsAndConditionsUrl: https://example.com/terms
                privacyPolicyUrl: https://example.com/privacy
                useCases:
                  - NOTIFICATIONS
                optIns:
                  web:
                    url: https://example.com/contact
                    callToAction: >-
                      By checking this box you agree to receive account
                      notifications from Example Corp. Reply STOP to opt out,
                      HELP for help.
                lowVolume: false
                ageGated: false
                directLending: false
                embeddedLink: false
                embeddedPhone: false
                numbers:
                  - '+18335550100'
                createdAt: '2026-10-08T04:36:40Z'
                updatedAt: '2026-10-08T04:36:40Z'
        '400':
          description: >-
            Invalid body, a missing `name`, or a `priorityId` that is not a
            UUID.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                name:
                  value:
                    error: 'invalid request: name is required'
                priorityId:
                  value:
                    error: 'invalid request: priorityId must be a UUID'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '422':
          description: >-
            The US 10DLC registry rejected the request. `error` carries the
            registry's description.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TenDLCError'
              example:
                error: >-
                  registration provider rejected the request: number
                  +18335550100 is already in a verification
                providerError: >-
                  registration error 403 (HTTP 403): number already in a
                  verification
        '500':
          $ref: '#/components/responses/ServerError'
        '502':
          description: >-
            The US 10DLC registry did not answer. Retry with the same
            `referenceId`.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TenDLCError'
              example:
                error: registration provider unavailable
                providerError: 'registration error 500 (HTTP 500): upstream timeout'
        '503':
          description: >-
            The registry did not accept Vobiz's service credentials. Retry later
            or contact support.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TenDLCError'
              example:
                error: registration provider rejected the service credentials
                providerError: 'registration error 401 (HTTP 401): unauthorized'
      x-codeSamples:
        - lang: typescript
          label: Node SDK
          source: >
            import { VobizClient } from "@vobiz/sdk";


            const client = new VobizClient({ apiKey: "MA_XXXXXXXX", authToken:
            "YOUR_AUTH_TOKEN" });


            await client.sms.campaigns.createTollFreeCampaign({
                referenceId: "tollfree-notifications-01",
                name: "Example Corp toll-free notifications",
                privacyPolicyUrl: "https://example.com/privacy",
                termsAndConditionsUrl: "https://example.com/terms",
                messageVolume: "TEN_THOUSAND",
                numbers: ["+18335550100"],
                useCase: "NOTIFICATIONS",
                programSummary: "Example Corp sends account and support notifications to customers who opted in on the contact form. Reply STOP to opt out, HELP for help.",
                exampleMessage: "Example Corp: Your account balance is low. Add funds at https://example.com/wallet. Reply STOP to opt out, HELP for help.",
                optIns: {
                    "web": {
                        "url": "https://example.com/contact",
                        "callToAction": "By checking this box you agree to receive account notifications from Example Corp. Reply STOP to opt out, HELP for help."
                    }
                },
                optInImageURLs: ["https://example.com/opt-in-screenshot.png"],
                countryCode: "US",
                address: {
                    street: "100 Example Street",
                    city: "San Francisco",
                    state: "CA",
                    zipCode: "94105"
                },
                supportPhone: "+14155550100",
                supportEmail: "support@example.com",
                businessContactFirstName: "Alex",
                businessContactLastName: "Doe",
                legalName: "Example Corporation Inc.",
                businessName: "Example Corp",
                businessWebsite: "https://example.com",
                customerCareEmail: "support@example.com",
                taxId: "12-3456789",
                taxIdIssuingCountry: "US",
                legalEntityType: "PRIVATE_COMPANY"
            })
        - lang: python
          label: Python SDK
          source: |
            from vobiz import Vobiz

            client = Vobiz(api_key="MA_XXXXXXXX", auth_token="YOUR_AUTH_TOKEN")

            from vobiz.sms import BrandAddress

            client.sms.campaigns.create_toll_free_campaign(
                reference_id="tollfree-notifications-01",
                name="Example Corp toll-free notifications",
                privacy_policy_url="https://example.com/privacy",
                terms_and_conditions_url="https://example.com/terms",
                message_volume="TEN_THOUSAND",
                numbers=[
                    "+18335550100"
                ],
                use_case="NOTIFICATIONS",
                program_summary="Example Corp sends account and support notifications to customers who opted in on the contact form. Reply STOP to opt out, HELP for help.",
                example_message="Example Corp: Your account balance is low. Add funds at https://example.com/wallet. Reply STOP to opt out, HELP for help.",
                opt_ins={
                    "web": {"url": "https://example.com/contact", "callToAction": "By checking this box you agree to receive account notifications from Example Corp. Reply STOP to opt out, HELP for help."}
                },
                opt_in_image_ur_ls=[
                    "https://example.com/opt-in-screenshot.png"
                ],
                country_code="US",
                address=BrandAddress(
                    street="100 Example Street",
                    city="San Francisco",
                    state="CA",
                    zip_code="94105",
                ),
                support_phone="+14155550100",
                support_email="support@example.com",
                business_contact_first_name="Alex",
                business_contact_last_name="Doe",
                legal_name="Example Corporation Inc.",
                business_name="Example Corp",
                business_website="https://example.com",
                customer_care_email="support@example.com",
                tax_id="12-3456789",
                tax_id_issuing_country="US",
                legal_entity_type="PRIVATE_COMPANY",
            )
        - lang: go
          label: Go SDK
          source: |
            import (
                "context"

                vobiz "github.com/vobiz-ai/Vobiz-Go-SDK"
                "github.com/vobiz-ai/Vobiz-Go-SDK/client"
                "github.com/vobiz-ai/Vobiz-Go-SDK/option"
                "github.com/vobiz-ai/Vobiz-Go-SDK/sms"
            )

            c := client.NewClient(
                option.WithAPIKey("MA_XXXXXXXX"),
                option.WithAuthToken("YOUR_AUTH_TOKEN"),
            )

            request := &sms.TollFreeCampaignRequest{
                    ReferenceID: vobiz.String(
                        "tollfree-notifications-01",
                    ),
                    Name: "Example Corp toll-free notifications",
                    PrivacyPolicyURL: vobiz.String(
                        "https://example.com/privacy",
                    ),
                    TermsAndConditionsURL: vobiz.String(
                        "https://example.com/terms",
                    ),
                    MessageVolume: vobiz.String(
                        "TEN_THOUSAND",
                    ),
                    Numbers: []string{
                        "+18335550100",
                    },
                    UseCase: vobiz.String(
                        "NOTIFICATIONS",
                    ),
                    ProgramSummary: vobiz.String(
                        "Example Corp sends account and support notifications to customers who opted in on the contact form. Reply STOP to opt out, HELP for help.",
                    ),
                    ExampleMessage: vobiz.String(
                        "Example Corp: Your account balance is low. Add funds at https://example.com/wallet. Reply STOP to opt out, HELP for help.",
                    ),
                    OptIns: map[string]any{
                        "web": map[string]any{
                            "callToAction": "By checking this box you agree to receive account notifications from Example Corp. Reply STOP to opt out, HELP for help.",
                            "url": "https://example.com/contact",
                        },
                    },
                    OptInImageUrLs: []string{
                        "https://example.com/opt-in-screenshot.png",
                    },
                    CountryCode: vobiz.String(
                        "US",
                    ),
                    Address: &sms.BrandAddress{
                        Street: vobiz.String(
                            "100 Example Street",
                        ),
                        City: vobiz.String(
                            "San Francisco",
                        ),
                        State: vobiz.String(
                            "CA",
                        ),
                        ZipCode: vobiz.String(
                            "94105",
                        ),
                    },
                    SupportPhone: vobiz.String(
                        "+14155550100",
                    ),
                    SupportEmail: vobiz.String(
                        "support@example.com",
                    ),
                    BusinessContactFirstName: vobiz.String(
                        "Alex",
                    ),
                    BusinessContactLastName: vobiz.String(
                        "Doe",
                    ),
                    LegalName: vobiz.String(
                        "Example Corporation Inc.",
                    ),
                    BusinessName: vobiz.String(
                        "Example Corp",
                    ),
                    BusinessWebsite: vobiz.String(
                        "https://example.com",
                    ),
                    CustomerCareEmail: vobiz.String(
                        "support@example.com",
                    ),
                    TaxID: vobiz.String(
                        "12-3456789",
                    ),
                    TaxIDIssuingCountry: vobiz.String(
                        "US",
                    ),
                    LegalEntityType: vobiz.String(
                        "PRIVATE_COMPANY",
                    ),
                }
            c.Sms.Campaigns.CreateTollFreeCampaign(
                    context.TODO(),
                    request,
                )
        - lang: java
          label: Java SDK
          source: |
            import com.vobiz.api.VobizApiClient;

            VobizApiClient client = VobizApiClient
                .builder()
                .apiKey("MA_XXXXXXXX")
                .authToken("YOUR_AUTH_TOKEN")
                .build();

            client.sms().campaigns().createTollFreeCampaign(
                TollFreeCampaignRequest
                    .builder()
                    .name("Example Corp toll-free notifications")
                    .referenceId("tollfree-notifications-01")
                    .privacyPolicyUrl("https://example.com/privacy")
                    .termsAndConditionsUrl("https://example.com/terms")
                    .messageVolume("TEN_THOUSAND")
                    .numbers(
                        Optional.of(
                            Arrays.asList("+18335550100")
                        )
                    )
                    .useCase("NOTIFICATIONS")
                    .programSummary("Example Corp sends account and support notifications to customers who opted in on the contact form. Reply STOP to opt out, HELP for help.")
                    .exampleMessage("Example Corp: Your account balance is low. Add funds at https://example.com/wallet. Reply STOP to opt out, HELP for help.")
                    .optIns(
                        new HashMap<String, Object>() {{
                            put("web", new 
                            HashMap<String, Object>() {{put("url", "https://example.com/contact");
                                put("callToAction", "By checking this box you agree to receive account notifications from Example Corp. Reply STOP to opt out, HELP for help.");
                            }});
                        }}
                    )
                    .optInImageUrLs(
                        Optional.of(
                            Arrays.asList("https://example.com/opt-in-screenshot.png")
                        )
                    )
                    .countryCode("US")
                    .address(
                        BrandAddress
                            .builder()
                            .street("100 Example Street")
                            .city("San Francisco")
                            .state("CA")
                            .zipCode("94105")
                            .build()
                    )
                    .supportPhone("+14155550100")
                    .supportEmail("support@example.com")
                    .businessContactFirstName("Alex")
                    .businessContactLastName("Doe")
                    .legalName("Example Corporation Inc.")
                    .businessName("Example Corp")
                    .businessWebsite("https://example.com")
                    .customerCareEmail("support@example.com")
                    .taxId("12-3456789")
                    .taxIdIssuingCountry("US")
                    .legalEntityType("PRIVATE_COMPANY")
                    .build()
            );
        - lang: ruby
          label: Ruby SDK
          source: >
            require 'vobiz'


            client = Vobiz::Client.new(api_key: 'MA_XXXXXXXX', auth_token:
            'YOUR_AUTH_TOKEN')


            client.sms.campaigns.create_toll_free_campaign(
              reference_id: "tollfree-notifications-01",
              name: "Example Corp toll-free notifications",
              privacy_policy_url: "https://example.com/privacy",
              terms_and_conditions_url: "https://example.com/terms",
              message_volume: "TEN_THOUSAND",
              numbers: ["+18335550100"],
              use_case: "NOTIFICATIONS",
              program_summary: "Example Corp sends account and support notifications to customers who opted in on the contact form. Reply STOP to opt out, HELP for help.",
              example_message: "Example Corp: Your account balance is low. Add funds at https://example.com/wallet. Reply STOP to opt out, HELP for help.",
              opt_ins: {},
              opt_in_image_ur_ls: ["https://example.com/opt-in-screenshot.png"],
              country_code: "US",
              address: {
                street: "100 Example Street",
                city: "San Francisco",
                state: "CA",
                zip_code: "94105"
              },
              support_phone: "+14155550100",
              support_email: "support@example.com",
              business_contact_first_name: "Alex",
              business_contact_last_name: "Doe",
              legal_name: "Example Corporation Inc.",
              business_name: "Example Corp",
              business_website: "https://example.com",
              customer_care_email: "support@example.com",
              tax_id: "12-3456789",
              tax_id_issuing_country: "US",
              legal_entity_type: "PRIVATE_COMPANY"
            )
        - lang: csharp
          label: C# SDK
          source: |
            using Vobiz;
            using Vobiz.Sms;

            var client = new VobizApiClient("YOUR_AUTH_TOKEN", "MA_XXXXXXXX");

            await client.Sms.Campaigns.CreateTollFreeCampaignAsync(
                new TollFreeCampaignRequest
                {
                    ReferenceId = "tollfree-notifications-01",
                    Name = "Example Corp toll-free notifications",
                    PrivacyPolicyUrl = "https://example.com/privacy",
                    TermsAndConditionsUrl = "https://example.com/terms",
                    MessageVolume = "TEN_THOUSAND",
                    Numbers = new List<string>() { "+18335550100" },
                    UseCase = "NOTIFICATIONS",
                    ProgramSummary =
                        "Example Corp sends account and support notifications to customers who opted in on the contact form. Reply STOP to opt out, HELP for help.",
                    ExampleMessage =
                        "Example Corp: Your account balance is low. Add funds at https://example.com/wallet. Reply STOP to opt out, HELP for help.",
                    OptIns = new Dictionary<string, object?>()
                    {
                        {
                            "web",
                            new Dictionary<object, object?>()
                            {
                                {
                                    "callToAction",
                                    "By checking this box you agree to receive account notifications from Example Corp. Reply STOP to opt out, HELP for help."
                                },
                                { "url", "https://example.com/contact" },
                            }
                        },
                    },
                    OptInImageUrLs = new List<string>() { "https://example.com/opt-in-screenshot.png" },
                    CountryCode = "US",
                    Address = new BrandAddress
                    {
                        Street = "100 Example Street",
                        City = "San Francisco",
                        State = "CA",
                        ZipCode = "94105",
                    },
                    SupportPhone = "+14155550100",
                    SupportEmail = "support@example.com",
                    BusinessContactFirstName = "Alex",
                    BusinessContactLastName = "Doe",
                    LegalName = "Example Corporation Inc.",
                    BusinessName = "Example Corp",
                    BusinessWebsite = "https://example.com",
                    CustomerCareEmail = "support@example.com",
                    TaxId = "12-3456789",
                    TaxIdIssuingCountry = "US",
                    LegalEntityType = "PRIVATE_COMPANY",
                }
            );
        - lang: php
          label: PHP SDK
          source: >
            <?php


            require 'vendor/autoload.php';


            use Vobiz\VobizClient;


            $client = new VobizClient(apiKey: 'MA_XXXXXXXX', authToken:
            'YOUR_AUTH_TOKEN');


            $client->sms->campaigns->createTollFreeCampaign(
                new TollFreeCampaignRequest([
                    'referenceId' => 'tollfree-notifications-01',
                    'name' => 'Example Corp toll-free notifications',
                    'privacyPolicyUrl' => 'https://example.com/privacy',
                    'termsAndConditionsUrl' => 'https://example.com/terms',
                    'messageVolume' => 'TEN_THOUSAND',
                    'numbers' => [
                        '+18335550100',
                    ],
                    'useCase' => 'NOTIFICATIONS',
                    'programSummary' => 'Example Corp sends account and support notifications to customers who opted in on the contact form. Reply STOP to opt out, HELP for help.',
                    'exampleMessage' => 'Example Corp: Your account balance is low. Add funds at https://example.com/wallet. Reply STOP to opt out, HELP for help.',
                    'optIns' => [
                        'web' => [
                            'url' => "https://example.com/contact",
                            'callToAction' => "By checking this box you agree to receive account notifications from Example Corp. Reply STOP to opt out, HELP for help.",
                        ],
                    ],
                    'optInImageUrLs' => [
                        'https://example.com/opt-in-screenshot.png',
                    ],
                    'countryCode' => 'US',
                    'address' => new BrandAddress([
                        'street' => '100 Example Street',
                        'city' => 'San Francisco',
                        'state' => 'CA',
                        'zipCode' => '94105',
                    ]),
                    'supportPhone' => '+14155550100',
                    'supportEmail' => 'support@example.com',
                    'businessContactFirstName' => 'Alex',
                    'businessContactLastName' => 'Doe',
                    'legalName' => 'Example Corporation Inc.',
                    'businessName' => 'Example Corp',
                    'businessWebsite' => 'https://example.com',
                    'customerCareEmail' => 'support@example.com',
                    'taxId' => '12-3456789',
                    'taxIdIssuingCountry' => 'US',
                    'legalEntityType' => 'PRIVATE_COMPANY',
                ]),
            );
components:
  schemas:
    TollFreeCampaignRequest:
      type: object
      description: >-
        Toll-free verification request. The business details travel inside the
        request, so no `brandId` is needed; only `name` is required, but the
        reviewer checks every field you send.
      required:
        - name
      properties:
        referenceId:
          type: string
          description: >-
            Your own idempotency reference. Repeating a create with the same
            value reconciles to the same campaign instead of creating a second
            one.
          example: tollfree-notifications-01
        name:
          type: string
          example: Example Corp toll-free notifications
          description: >-
            Name for the toll-free campaign, for your reference. Required (`400`
            with `invalid request: name is required` otherwise).
        privacyPolicyUrl:
          type: string
          format: uri
          example: https://example.com/privacy
          description: Public URL of your privacy policy.
        termsAndConditionsUrl:
          type: string
          format: uri
          example: https://example.com/terms
          description: Public URL of the terms and conditions that cover the program.
        messageVolume:
          type: string
          description: >-
            Expected monthly message volume. Values accepted by the US 10DLC
            registry: `HUNDRED`, `TEN_THOUSAND`, `TWO_HUNDRED_FIFTY_THOUSAND`,
            `SEVEN_HUNDRED_FIFTY_THOUSAND`, `FIVE_MILLION`.
          example: TEN_THOUSAND
        numbers:
          type: array
          description: >-
            Toll-free numbers on your account to verify, in E.164 format (for
            example `+18885550100`).
          items:
            type: string
          example:
            - '+18335550100'
        numberKeys:
          type: array
          description: >-
            Registry number keys of the numbers to verify, as an alternative to
            `numbers`.
          items:
            type: string
        useCase:
          type: string
          description: >-
            Main use case of the program. Values accepted by the US 10DLC
            registry: `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`.
          example: NOTIFICATIONS
        programSummary:
          type: string
          example: >-
            Example Corp sends account and support notifications to customers
            who opted in on the contact form. Reply STOP to opt out, HELP for
            help.
          description: >-
            Plain-language description of the program: what you send, to whom,
            how often and how recipients opt in.
        exampleMessage:
          type: string
          example: >-
            Example Corp: Your account balance is low. Add funds at
            https://example.com/wallet. Reply STOP to opt out, HELP for help.
          description: >-
            A sample message exactly as you will send it, including your brand
            name and opt-out language.
        optIns:
          type: object
          description: >-
            How recipients give consent, as an object keyed by opt-in channel
            (for example `web` with `url` and `callToAction`). Passed to the
            registry as given.
          additionalProperties: true
          example:
            web:
              url: https://example.com/contact
              callToAction: >-
                By checking this box you agree to receive account notifications
                from Example Corp. Reply STOP to opt out, HELP for help.
        optInImageURLs:
          type: array
          description: >-
            Public URLs of screenshots or images that show the opt-in flow to
            the reviewer.
          items:
            type: string
            format: uri
          example:
            - https://example.com/opt-in-screenshot.png
        additionalInformation:
          type: string
          description: >-
            Anything else the reviewer should know about the program, in plain
            text.
        countryCode:
          type: string
          example: US
          description: >-
            ISO 3166-1 alpha-2 code of the country where the business is
            registered.
        address:
          allOf:
            - $ref: '#/components/schemas/BrandAddress'
          description: >-
            Postal address of the business as it appears on its registration
            records.
        supportPhone:
          type: string
          example: '+14155550100'
          description: Support phone number for the business, in E.164 format.
        supportEmail:
          type: string
          format: email
          example: support@example.com
          description: Support email address for the business.
        businessContactFirstName:
          type: string
          example: Alex
          description: >-
            First name of the person the reviewer can contact about the
            business.
        businessContactLastName:
          type: string
          example: Doe
          description: Last name of the person the reviewer can contact about the business.
        legalName:
          type: string
          description: >-
            Registered legal name of the business, exactly as it appears on tax
            records.
          example: Example Corporation Inc.
        businessDBA:
          type: string
          description: >-
            Trading name ("doing business as") when it differs from `legalName`.
            Note the casing `businessDBA` on this endpoint, unlike `businessDba`
            on brands.
        businessName:
          type: string
          example: Example Corp
          description: Business name customers know you by.
        businessWebsite:
          type: string
          format: uri
          example: https://example.com
          description: Business website. It must be live and match the business.
        customerCareEmail:
          type: string
          format: email
          example: support@example.com
          description: Customer care email address for the program.
        taxId:
          type: string
          example: 12-3456789
          description: Tax identifier of the business, for example the US EIN.
        taxIdIssuingCountry:
          type: string
          example: US
          description: ISO 3166-1 alpha-2 code of the country that issued `taxId`.
        legalEntityType:
          type: string
          description: >-
            Legal form of the business. Values accepted by the US 10DLC
            registry: `PRIVATE_COMPANY`, `PUBLIC_COMPANY`, `NON_PROFIT`,
            `GOVERNMENT`, `SOLE_PROPRIETOR`.
          example: PRIVATE_COMPANY
        businessRegistrationType:
          type: string
          description: >-
            Type of registration number for a business outside the US. Values
            accepted by the US 10DLC registry: `VAT`, `CBN`,
            `PROVINCIAL_NUMBER`, `ABN`, `SIREN`, `NZBN`, `CIF`, `CNPJ`, `OTHER`.
        campaignVerifyToken:
          type: string
          description: >-
            Campaign Verify token for a US political program. Omit it for every
            other program.
        priorityId:
          type: string
          format: uuid
          description: >-
            ID (UUID) of a priority option from `GET
            /10dlc/campaigns/priorities`. A value that is not a UUID returns
            `400`; omit it when the list is empty.
    Campaign:
      type: object
      description: >-
        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.
      properties:
        id:
          type: string
          format: uuid
          description: >-
            Campaign ID (UUID) on your account. Use it in every
            `/10dlc/campaigns/{id}` path.
          example: 8a7d2f10-3c4b-4e9a-b1d2-6e5f4a3b2c11
        accountId:
          type: string
          example: MA_XXXXXXXX
          description: >-
            Your Vobiz account ID (`MA_...`). Always the account whose
            credentials made the request.
        brandId:
          type: string
          format: uuid
          description: >-
            ID of the brand the campaign runs under. Omitted for toll-free
            campaigns, which carry their business details themselves.
          example: 5f1c3a2e-7b4d-4e8f-9a0b-1c2d3e4f5a60
        name:
          type: string
          example: Example Corp account alerts
          description: Name you gave the campaign, for your reference.
        campaignType:
          type: string
          enum:
            - 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
          description: >-
            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.
        stage:
          type: string
          description: >-
            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.
          example: REGISTERED
        programSummary:
          type: string
          description: >-
            Description of the program as submitted to the registry. Omitted
            when not set.
        confirmationMessage:
          type: string
          description: Opt-in confirmation message as submitted. Omitted when not set.
        helpMessage:
          type: string
          description: HELP reply as submitted. Omitted when not set.
        stopMessage:
          type: string
          description: STOP reply as submitted. Omitted when not set.
        customerCarePhone:
          type: string
          example: '+14155550100'
          description: Customer care phone number, in E.164 format. Omitted when not set.
        customerCareEmail:
          type: string
          example: support@example.com
          description: Customer care email address. Omitted when not set.
        exampleMessages:
          type: array
          items:
            type: string
          description: Sample messages as submitted. Omitted when not set.
        termsAndConditionsUrl:
          type: string
          format: uri
          description: Public URL of your terms and conditions. Omitted when not set.
        privacyPolicyUrl:
          type: string
          format: uri
          description: Public URL of your privacy policy. Omitted when not set.
        useCases:
          type: array
          items:
            type: string
          example:
            - ALERTS
          description: >-
            Use-case codes as submitted, for example `ALERTS` or, on a toll-free
            campaign, `NOTIFICATIONS`. Omitted when not set.
        messageTypes:
          type: array
          items:
            type: string
          example:
            - SMS
          description: Message types as submitted, for example `SMS`. Omitted when not set.
        optIns:
          type: object
          description: >-
            Opt-in details as submitted, keyed by channel (for example `web`).
            Omitted when not set.
          additionalProperties: true
        lowVolume:
          type: boolean
          description: >-
            Whether the campaign is declared low volume. Always present; `false`
            unless you set it.
        ageGated:
          type: boolean
          description: >-
            Whether the content is restricted to adults. Always present; `false`
            unless you set it.
        directLending:
          type: boolean
          description: >-
            Whether the content relates to direct lending. Always present;
            `false` unless you set it.
        embeddedLink:
          type: boolean
          description: >-
            Whether messages contain URLs. Always present; `false` unless you
            set it.
        embeddedPhone:
          type: boolean
          description: >-
            Whether messages contain phone numbers. Always present; `false`
            unless you set it.
        numbers:
          type: array
          description: >-
            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`.
          items:
            type: string
          example:
            - '14155550100'
        rejectionReasons:
          type: object
          description: >-
            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.
          additionalProperties: true
        lastSyncedAt:
          type: string
          format: date-time
          description: >-
            When Vobiz last refreshed this record from the US 10DLC registry, in
            ISO 8601 (RFC 3339) UTC. Omitted until the first refresh.
          example: '2026-10-14T17:19:03Z'
        createdAt:
          type: string
          format: date-time
          example: '2026-10-06T14:28:25Z'
          description: >-
            When the record was created on your account, in ISO 8601 (RFC 3339)
            UTC.
        updatedAt:
          type: string
          format: date-time
          example: '2026-10-14T17:19:03Z'
          description: >-
            When the record last changed on your account, in ISO 8601 (RFC 3339)
            UTC.
    Error:
      type: object
      description: >-
        The body of every error response: a flat object with one `error` string
        that explains what went wrong. Use the HTTP status code to decide how to
        handle the error, and log `error` for diagnosis.
      required:
        - error
      properties:
        error:
          type: string
          example: 'recipient has opted out: +14155550123'
          description: >-
            Human-readable explanation of the error, for example `phoneNumber is
            required` or `recipient has opted out: +14155550123`. Branch on the
            HTTP status code rather than on this text.
    TenDLCError:
      description: >-
        Error returned when the US 10DLC registry declines or cannot process a
        request. `error` is a human-readable message you can show or log. When
        the registry answers with `400`, `404`, `409`, `422` or `429`, the same
        status is passed through with this body; `502` means the registry did
        not answer and `503` means it did not accept Vobiz's service
        credentials.
      allOf:
        - $ref: '#/components/schemas/Error'
        - type: object
          properties:
            providerError:
              type: string
              description: >-
                Opaque diagnostic string you can quote to support. Do not parse
                it.
              example: 'registration error 400 (HTTP 400): brand legalName is required'
    BrandAddress:
      type: object
      description: >-
        Postal address of the business. Keys are passed to the US 10DLC registry
        as given, so you can add any address key the registry accepts.
      additionalProperties: true
      properties:
        street:
          type: string
          example: 100 Example Street
          description: Street address, including number and suite.
        city:
          type: string
          example: San Francisco
          description: City or locality.
        state:
          type: string
          example: CA
          description: >-
            State, province or region; for US addresses, the two-letter state
            code (for example `CA`).
        zipCode:
          type: string
          example: '94105'
          description: ZIP or postal code, as a string (for example `94105`).
  responses:
    Unauthorized:
      description: Missing or invalid `X-Auth-ID` / `X-Auth-Token`.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error: missing or invalid credentials
    ServerError:
      description: Unexpected error. Retry with the same idempotency key where one applies.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error: internal error
  securitySchemes:
    AuthID:
      type: apiKey
      in: header
      name: X-Auth-ID
      description: Your Vobiz account Auth ID (`MA_XXXXXXXX`).
    AuthToken:
      type: apiKey
      in: header
      name: X-Auth-Token
      description: Your Vobiz account Auth Token.

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.