LogoLogo
No-code docsResources
  • 🖥️Welcome to the Bird API Docs
  • API Access
    • Access Policies
    • Access Roles
    • API Authorization
    • Common API usage
  • Conversations API
    • API reference
      • Channel configuration
        • Get conversations configuration
        • Update conversations configuration
      • Conversations messaging
        • Create conversation message
        • List conversation messages
        • Get conversation message
        • Update conversation message
        • Delete conversation message
        • Create pre-signed upload
      • Conversations management
        • Create conversation
        • List conversations
        • Get conversation
        • Update conversation
        • Delete conversation
      • Conversation Participants
        • Add participant to conversation
        • List participants
        • Get participant by ID
        • Get participant by identifier key and value
        • Update participant by ID
        • Update participant by identifier key and value
        • Delete participant
        • List participant conversations by ID
        • List participant conversations by identifier key and value
      • Workspace settings
        • Get antispam setting
        • Update antispam setting
        • Create allow/block rule
        • Get allow/block rule
        • List allow/block rules
        • Update allow/block rule
        • Delete allow/block rule
        • Add allow/block rules in bulk
        • Get allow/block bulk upload status
      • Events
  • Collaborations API
    • API reference
      • Agent Management
      • Team Management
      • Feeds
      • Feed item activity
      • Tags
      • Automation Rules
      • Business Hours
      • Capacity Rules
      • Routing Queues
      • Skills
      • SLA Policies
      • Macros
      • Sender Profiles
      • Ticket fields
  • Channels API
    • Supported channels
      • Programmable WhatsApp
        • Sending WhatsApp messages
        • Customer service window
        • Receiving messages
        • Message interactions
        • WhatsApp ISV integration
          • Setting up your customer workspaces
            • API Access
            • Associating your Facebook solution ID and business ID with your Bird CRM Organization
            • Creating a workspace for your customer
            • Buying a number through Bird
            • Subscribing to channel created webhooks
          • WhatsApp channel onboarding
            • Setting up the WhatsApp Embedded flow
            • Install WhatsApp phone number in Bird CRM
            • Subscribe to channel webhooks
      • Programmable SMS
        • Installing an SMS channel
          • US 10DLC API Installation
          • Toll-Free Numbers Verification API
        • Sending SMS messages
        • Receiving messages
        • Twilio Exit API
          • Using Twilio PHP SDK
          • Using Twilio Go SDK
          • Using Twilio Ruby SDK
        • Sinch Exit API
      • Programmable RCS
        • Sending messages
        • Receiving messages
        • Message interactions
      • Programmable Email
        • Sending Emails
        • Receiving messages
        • Message status
        • Message interactions
      • Programmable Line
        • Sending messages
        • Receiving messages
        • Message interactions
      • Programmable Telegram
        • Sending messages
        • Receiving messages
        • Message interactions
    • Message types
      • Text
      • Images
      • Files
      • List
      • Carousel
      • Template
    • Message status and interactions
      • Message Failure Codes
      • Message Failure Sources
        • SMS Platform Extended Error Codes
    • Send batch messages
    • API reference
      • Channel Groups
      • Messaging
      • Channels management
      • Channel connectors
      • Navigators
      • Compliance Keywords Messages
      • Conversions Sharing
      • Events
    • Rate Limit
  • Voice API
    • Installing a Voice channel
    • Voice Calls API
      • Initiate an outbound call
      • List calls from a channel
      • Get a call
      • Update a call
      • Answer a call
      • Ring a call
      • Hangup a call
      • Play a message in a call
      • Say Text-To-Speech (TTS)
      • Gather DTMF from a call
      • Forward a call
      • Record a Call
      • Record a call session
      • Update a call recording
      • List call recordings of a call
      • Get a call recording
      • Get a call insights
      • Get calls log
    • Recordings API
      • List Recordings
      • Get a Recording
      • Delete a Recording
      • List recording storage metrics
    • Transcriptions API
      • Initiate a Transcription
      • List Transcriptions
      • Get a Transcription
      • Delete a Transcription
    • Voice webhooks
    • Flash Calling API
  • Verify API
    • Verify API: Quick Start
  • Contacts API
    • Tracking Contact Events
      • API Reference
        • Get configuration
        • Track events
    • API reference
      • Manage workspace contacts
        • Create a contact
        • Get a contact
        • List contacts
        • Search contact by identifier
        • Update a contact
        • Create or update a contact by identifier
        • Delete a contact
      • Manage contact identifiers
        • Create contact identifier
        • List contact identifiers
        • Delete contact identifier
      • Manage contact attribute definition
        • Create attribute definition
        • Get attribute definition
        • List attribute definitions
      • Manage contact lists
        • Create a list
        • Get a list
        • List lists
        • Update a list
        • Delete a list
        • Add contacts to a list
        • Get contact list memberships
        • List contacts in a list
        • Remove contacts from a list
      • Lookup
        • Network/Country information for a phone number
  • Numbers API
    • API reference
      • Search Available Numbers
      • Buy a Number
      • List your Numbers
      • Get Long Code Number Details
      • Manage Endpoint Subscriptions
        • Cancel Number Subscription
      • Manage Endpoint Compliance Requirements
        • List Workspace compliace Requirements
        • Get Workspace Compliace Requirements
        • Update Workspace Compliace Requirements
      • 10DLC Compliance
        • Brands - Organization
          • Create a brand
          • List all brands
          • Get a brand
          • Update a brand
          • Delete a brand
          • Create a brand vetting
        • Brands - workspace
          • Create a brand
          • List all brands
          • Get a brand
          • Update a brand
          • Delete a brand
          • Create a brand vetting
          • List brand vettings
        • Campaigns
          • Optional: acting as Reseller
          • Create a campaign
          • List all campaigns
          • Get a campaign
          • Update a campaign
          • Delete a campaign
        • TCR Enums
        • Events
      • Toll-Free Numbers Verification API
      • Long Code Numbers
      • Short Code Numbers
      • Alphanumeric Senders
      • Events
  • Know-Your-Customer (KYC) API
    • List KYC forms
    • Get KYC form
    • Create KYC form entry
    • Update KYC form entry
    • List KYC form entries
    • Get a KYC form entry details
  • Reporting API
    • API reference
      • Channel Metrics
      • Flow Run Metrics
      • Wallet Metrics
      • Campaign Metrics
      • Message Metrics
  • Accounts API
    • API reference
      • Current user
        • Change password
        • Presigned upload
        • Memberships
        • Sessions
        • Configurations
          • Groups
            • Keys
      • IAM policies
      • Organizations
        • Upload media
        • Profile
        • Workspaces
        • Users
        • Access keys
        • Organization roles
        • Organization policies
        • Teams
          • Members
        • Approvals
          • Runs
            • Reviews
        • Configurations
          • Groups
            • Keys
      • Region groups
  • Touchpoints API
    • Supported Projects
      • Whatsapp Approved Message Templates
        • Creating WhatsApp Message templates
          • Text template blocks
          • Blocks Documentation
    • API reference
      • Projects
      • Message Templates
  • Notifications API
    • API Reference
      • Webhook subscriptions
        • Create a webhook subscription
        • List available webhook events
        • Get a webhook subscription
        • List webhook subscriptions
        • Update a webhook subscription
        • Delete a webhook subscription
        • Verifying a webhook subscription
        • Webhook subscription logs
  • Knowledge Base (KB) API
    • API reference
      • Documents
      • Folders
        • Import
      • Search
      • Presigned upload
  • Email API
    • Transmissions
  • Connectivity platform migration guide
    • Channels API and Conversations API
    • Migrating conversations API actions
    • Migrating WhatsApp channels
  • Client SDKs
    • Applications
    • Contact Profiles
      • Signed Identity
    • Push notifications
      • Quick Start
      • Subscribe contacts to push notification campaigns
      • Notification Display Priority
    • Event Tracking
      • Quick Start
      • Track Events
        • App
        • Audiences
        • Conference
        • Ecommerce
        • Hospitality
        • Lists
        • Messaging
        • Payments
        • Subscription
        • Suppressions
        • Survey
        • Web
    • App Inbox
      • Quick Start
      • Usage
      • Subscribe contacts to app inbox campaigns
    • SDK Integration
      • Android SDK
        • Notification Interactions
      • Swift SDK
        • Notification Interactions
      • Web SDK
        • Quick Start
        • Usage
        • API Reference
          • IdentityManager
          • BirdSdkApi
          • BirdTracker
            • Ecommerce
            • Conference
            • Messaging
            • Suppressions
            • Subscription
            • Survey
            • Web
            • Audiences
        • Web Push Notifications
          • Notification Interactions
  • Quickstarts
    • Conversations
    • Send an SMS message
    • Send an Email message
    • Send a WhatsApp message
Powered by GitBook
On this page

Was this helpful?

  1. Channels API
  2. Supported channels
  3. Programmable SMS
  4. Installing an SMS channel

US 10DLC API Installation

A quick start to install a US 10 DLC number

Last updated 3 months ago

Was this helpful?

10DLC is a local 10-digit phone number that requires Brand & Use Case registration and supports throughput levels suitable for A2P SMS campaigns. 10DLC is sanctioned by mobile carriers for A2P messaging and is intended to provide a reliable user experience, better deliverability, and higher messaging speed. To find out more about 10DLC see the following

To setup a new channel to send SMS messages using a United states 10 digit long code number the following steps are required

Some of the following requests will lead to additional workspace charges. Ensure you before proceeding

API Access

The following API requests can only be made using a and attached to an with the an that at least specifies the permissions to the resources outlined in each section below.

Find an available number

If you do not already have a US 10DLC number available in your workspace you can find one to purchase .You can filter by country, prefix, number type and number capabilities.

Example

The following example will return the first available US local number required for use with 10DLC registration.

curl --location 'https://api.bird.com/workspaces/<your-workspace-id>/numbers-available?limit=1&country=US&type=local' \
--header 'Accept: application/json' \
--header 'Authorization: AccessKey <your-access-key>'

Purchase a number

Once you have found an available number you can purchase this by providing the number (in E.1624 format) and the country (using a two digit ISO code).

A successful request to this endpoint will start a recurring monthly subscription based on the monthly cost of the number

The following example will purchase the number if it still available and you have sufficient balance in your workspace wallet. Provide number in E.1624 format and country in 2 digit ISO code (e.g. US)

curl --location 'https://api.bird.com/workspaces/<your-workspace-id>/numbers' \
--header 'Content-Type: application/json' \
--header 'Accept: application/json' \
--header 'Authorization: AccessKey <your-access-key>' \
--data '{
  "numbers": [
    {
      "number": "",
      "country": ""
    }
  ]
}'

(Optional) Set up 10DLC webhook subscriptions

You can set up a Web Hook subscription to be notified of any brand or campaign event. Brand and camping creation work in sync, and subscribing to all related events will automate the 10DLC registration process.

Brand Subscriptions

The Following example will Create a subscrscrition listing to all Brand Related events

curl --location 'https://api.bird.com/organizations/<your-organization-id>/workspaces/<your-workspace-id>/webhook-subscriptions' \
--header 'Content-Type: application/json' \
--header 'Accept: application/json' \
--header 'Authorization: AccessKey <your-access-key>' \
--data '{
    "signingKey": "my-signing-key",
    "eventFilters": [

    ],
    "event": "10dlc.brand",
    "service": "numbers",
    "url": "<your-webhook-url>"
    }'

Campaign Subscription

The Following example will Create a subscription listing to all Brand Related events

curl --location 'https://api.bird.com/organizations/<your-organization-id>/workspaces/<your-workspace-id>/webhook-subscriptions' \
--header 'Content-Type: application/json' \
--header 'Accept: application/json' \
--header 'Authorization: AccessKey <your-access-key>' \
--data '{
    "signingKey": "my-signing-key",
    "eventFilters": [

    ],
    "event": "10dlc.campaign",
    "service": "numbers",
    "url": "<your-webhook-url>"
    }'

Register a new brand with the campaign registry

A-Sync : this will start a background process that may require some time to complete. A Get call may be required to to retrieve the final result .

After creating a brand, this will be submitted for approval by the campaign registry. The brand must be approved before you can register a campaign with the campaign registry. Brand registration may take some time.

The following example will create a new brand that will be submitted for registration with the campaign registry.

curl --location 'https://api.bird.com/workspaces/<your-workspace-id>/tcr-brands' \
--header 'Content-Type: application/json' \
--header 'Accept: application/json' \
--header 'Authorization: AccessKey <your-access-key>' \
--data '{
  "entityType": "",
  "firstName": "",
  "lastName": "",
  "displayName": "",
  "companyName": "",
  "ein": "",
  "einIssuingCountry": "",
  "phone": "",
  "street": "",
  "city": "",
  "state": "",
  "postalCode": "",
  "country": "",
  "email": "",
  "stockSymbol": "",
  "stockExchange": "",
  "website": "",
  "vertical": "",
  "altBusinessId": "",
  "altBusinessIdType": ""
}

(Optional) Submit brand for external vetting

A-Sync : this will start a background process that may require some time to complete. A Get call may be required to to retrieve the final result .

The final result of If your brand is not being accepted or your company is not part of the Russell 3000 stock index you can also request additional vetting. For brands that are not part of the Russell 3000 stock index this can provide access to higher messaging throughputs (depending on your vetting score)

The following example will create a new brand vetting request that will be submitted for registration with the campaign registry. You must have previously created a brand

curl --location 'https://api.bird.com/workspaces/<your-workspace-id>/tcr-brands/<your-brand-id>/vettings' \
--header 'Content-Type: application/json' \
--header 'Accept: application/json' \
--header 'Authorization: AccessKey <your-access-key>' \
--data '{
  "class": "STANDARD",
  "vettingProviderId": "AEGIS"
}

Register a new campaign with the campaign registry

To reduce the likelihood of rejection, ensure you are familiar with 10dlc registration examples and best practices. Specifically

Most 10DLC rejections are caused by unclear or incomplete description and/or messageFlow

A-Sync : this will start a background process that may require some time to complete. A Get call may be required to to retrieve the final result .

Optional: acting as Reseller

If you are registering a 10DLC campaign on behalf of third parties (e.g., your clients), you are required to also include your own contact information as part of the registration process. You can do so by including a resellerId in your POST campaign calls

The Reseller ID is a unique value to be shared by all workspaces, all brands, and all campaigns created under your Organization.

  • If you operate as a reseller you only need to obtain a reseller UUID once and reuse it in all your requests

  • If you intend to register one or more brands (for example multiple branches of your company) for your internal use you can NULL the field

You can create a Reseller via UI

you can retrieve information via the following method

Ensure your reseller status is active before creating a campaign with it

Creating a New Campaign

After creating a campaign, this will be submitted for approval by the campaign registry. The campaign must be approved before you can associate this with an SMS channel. Campaign registration can take 1-2 weeks to be approved.

The following example will create a new campaign that will be submitted for registration with the campaign registry. Your associated brand must be approved

curl --location 'https://api.bird.com/workspaces/<your-workspace-id>/tcr-brands/<your-brand-id>/campaigns' \
--header 'Content-Type: application/json' \
--header 'Accept: application/json' \
--header 'Authorization: AccessKey <your-access-key>' \
--data '{
  "name": "",
  "usecase": "",
  "subUsecases": [
    ""
  ],
  "description": "",
  "embeddedLink": ,
  "embeddedPhone": ,
  "numberPool": ,
  "ageGated": ,
  "directLending": ,
  "subscriberOptin": ,
  "subscriberOptout": ,
  "subscriberHelp": ,
  "samples": [
    ""
  ],
  "messageFlow": "",
  "helpMessage": "",
  "helpKeywords": "",
  "optoutKeywords": "",
  "optinKeywords": "",
  "optinMessage": "",
  "optoutMessage": "",
  "termsAndConditions": true
}'

(Optional) create a workspace subscription to list to channel related events

Same as done before, you can create a workspace subscription to listen to Channel Status changes

Channel Updates Subscription

The example below will create a workspace-wide subscription tracking all updates regarding your channels you can use to track channels' status changes

curl --location 'https://api.bird.com/organizations/<your-organization-id>/workspaces/<your-workspace-id>/webhook-subscriptions' \
--header 'Content-Type: application/json' \
--header 'Accept: application/json' \
--header 'Authorization: AccessKey <your-access-key>' \
--data '{
  "service": "channels",
  "event": "channel.updated",
  "url": "myURL.com",
  "signingKey": "mysecretkey",
  "eventFilters": [
  ]
}'

Install a channel connector

A-Sync : this will start a background process that may require some time to complete. A Get call may be required to to retrieve the final result .

The following example will create a new SMS connector with an approved 10DLC campaign and US local number:

curl --location 'https://api.bird.com/workspaces/<your-workspace-id>/connectors' \
--header 'Content-Type: application/json' \
--header 'Accept: application/json' \
--header 'Authorization: AccessKey <your-access-key>' \
--data '{
    "connectorTemplateRef": "sms-messagebird:1",
    "name": "SMS channel",
    "arguments": {
        "phoneNumberId": "",
        "useCaseId": "",
        "channelMessageType": "",
    },
    "channelConversationalStatusEnabled": true
}
Property
Type
Description
Required

connectorTemplateRef

string

Set as sms-messagebird:1

Yes

name

string

The name of your connector e.g. My SMS channel

Yes

arguments.phoneNumberId

string

The ID of the number you created above

Yes

arguments.channelMessageType

string

The type of traffic that will be sent through this channel

Yes

arguments.useCaseId

string

The ID of your campaign

Yes

channelConversationalStatusEnabled

boolean

If true incoming messages will create new conversations in Inbox

No

Get your channel id

Once you have created your SMS connector, this will create an SMS channel. You can then get your channel ID to before setting up channel webhooks

If you are listening to channels events the channelId will be returned with the first channel updated event

The following example will get the connector you have created in the previous step. Parse the channel.channelId to get the id of your new SMS channel

curl --location 'https://api.bird.com/workspaces/<your-workspace-id>/connectors/<your-connector-id>' \
--header 'Accept: application/json' \
--header 'Authorization: AccessKey <your-access-key>'

Setup channel message webhooks

Once your channel has been installed you will then need to setup a webhook subscription to receive status updates and inbound messages

The following request example will create a new SMS subscription for inbound and outbound messages

Inbound messages

curl --location 'https://api.bird.com/organizations/<your-organization-id>/workspaces/<your-workspace-id>/webhook-subscriptions' \
--header 'Content-Type: application/json' \
--header 'Accept: application/json' \
--header 'Authorization: AccessKey <your-access-key>' \
--data '{
    "signingKey": "my-signing-key",
    "eventFilters": [
        {
            "key": "channelId",
            "value": "<your-channel-id>"
        }
    ],
    "event": "sms.inbound",
    "service": "channels",
    "url": "<your-webhook-url>"
}'

Outbound messages

curl --location 'https://api.bird.com/organizations/<your-organization-id>/workspaces/<your-workspace-id>/webhook-subscriptions' \
--header 'Content-Type: application/json' \
--header 'Accept: application/json' \
--header 'Authorization: AccessKey <your-access-key>' \
--data '{
    "signingKey": "my-signing-key",
    "eventFilters": [
        {
            "key": "channelId",
            "value": "<your-channel-id>"
        }
    ],
    "event": "sms.outbound",
    "service": "channels",
    "url": "<your-webhook-url>"
}'
Property
Type
Description
Required

signingKey

string

Set your own signing key to validate webhooks

Yes

event

string

The event you are subscribing to. For SMS channels either sms.outbound or sms.inbound

Yes

event[]

object

Event filters are inclusive, which means you will only get events for filters you add

No

eventFilters.key

string

If you do not want events for all events you can add a filter. Eventfilters are inclusive e.g. for each event filter you add you will get those events. Valid filters for channels are channelId

No

eventFilters.value

string

The filter value. In this case a channelid. You will get webhooks for this channel

No

service

string

The service that will be sending the webhooks. In this case channels

url

string

A valid HTTPS endpoint to receive the webhooks

Yes

Confirm a 10DLC Channels Readiness to send SMS traffic

A-Sync : this will start a background process that may require some time to complete. A Get call may be required to retrieve the final result

10DLC numbers can only send traffic to the USA when linked to a campaign. Number Campaign link is an A-sync process requiring confirmations from multiple carriers.

The bird will only consider a number linked if all major USA carriers acknowledge the links. Delays in carrier acknowledgment can vary between 15 minutes to several hours and are usually longer around peak linking hours (afternoon/evening USA Pacific time)

Based on whether you have subscribed or not to channel events, you can determine the readiness of a given channel in 2 ways

Option 1: you are subscribed to channel updates

if you have a "channel.updated" event subscription, each change in a channel status will trigger an event. You can associate those events to the number you have used to install the channel by referring to "identifier" field. A channel ready to send SMS will have "status": "active".

{
  "service": "channels",
  "event": "channel.created",
  "payload": {
    "id": "f5d391a8-29b6-5092-940c-9a1cd7d06f30",
    "status": "active",
    "platformId": "sms-messagebird",
    "name": "SMS - 🇺🇸 +19802683122",
    "connectorId": "c8a93146-68e5-4e60-a77c-659877768bec",
    "identifier": "+19802683122",
    "preferences": {
      "disableProfileFetching": false,
      "explicitMarketingOptOut": false,
      "trackAdInitiatedThreads": false
    },
    "capabilities": {
      "messaging": {
        "displayName": "Messaging capabilities",
        "status": "active",
        "name": "",
        "expiresAt": "1970-01-01T00:00:00Z",
        "version": 0,
        "createdAt": "0001-01-01T00:00:00Z",
        "updatedAt": "0001-01-01T00:00:00Z",
        "outgoing": {
          "displayName": "Capability to send outgoing messages",
          "status": "active",
          "name": "",
          "version": 0,
          "createdAt": "1970-01-01T00:00:00Z",
          "updatedAt": "1970-01-01T00:00:00Z",
          "mms": {
            "displayName": "Capability to send outgoing mms messages",
            "status": "inactive",
            "name": "",
            "version": 0,
            "createdAt": "1970-01-01T00:00:00Z",
            "updatedAt": "1970-01-01T00:00:00Z"
          }
        },
        "incoming": {
          "displayName": "Capability to receive messages",
          "status": "active",
          "name": "",
          "version": 0,
          "createdAt": "1970-01-01T00:00:00Z",
          "updatedAt": "1970-01-01T00:00:00Z"
        }
      }
    },
    "useCaseId": "b43d79ab-3cbb-4a4a-9461-5da533f0cb18",
    "useCaseType": "marketing",
    "createdAt": "2024-09-20T12:08:57.098Z",
    "updatedAt": "2024-09-20T12:08:57.098Z"
  }
}

Option 2: you are NOT subscribed to channel updates

The channel cannot terminate SMS to the USA

This could happen if the number linked to its campaigns is not acknowledged or the 10DLC registration experiences issues. In this case, the "useCaseStatus" 's value will not be "ok"

"name": "useCaseStatus",
                "displayName": "UseCase Status",
                "assertions": [
                    {
                        "name": "brand",
                        "displayName": "",
                        "description": "",
                        "status": "ok"
                    },
                    {
                        "name": "campaign",
                        "displayName": "",
                        "description": "",
                        "status": "ok"
                    },
                    {
                        "name": "checks whether number is linked to campaign",
                        "displayName": "",
                        "description": "",
                        "status": "warning",
                        "message": "Number status is INACTIVE"
                    }
                ],
                "status": "warning"

The channel can terminate messages to the USA

In this case "useCaseStatus" will be "ok"

"name": "useCaseStatus",
                "displayName": "UseCase Status",
                "assertions": [
                    {
                        "name": "brand",
                        "displayName": "",
                        "description": "",
                        "status": "ok"
                    },
                    {
                        "name": "campaign",
                        "displayName": "",
                        "description": "",
                        "status": "ok"
                    },
                    {
                        "name": "checks whether number is linked to campaign",
                        "displayName": "",
                        "description": "",
                        "status": "ok"
                    }
                ],
                "status": "ok"
```

Before you can use a US 10DLC number to send SMS messages, you must be and campaign with an external registry called the campaign registry.

You can find the full list of brand management endpoints

A successful request to this endpoint will mean you are charged a fee. If you later need to update or resubmit your brand there may be additional fees.

A successful request to this endpoint will mean you are charged a fee.

Check for tips on how to write an effective Campaign description

Check on how to write an effective messageFlow

Once your brand status is approved you can then create your first . Brands can have multiple campaigns. A campaign describes what types of messages you will send from your SMS channel.

You can find the full list of campaign management endpoints

A successful request to this endpoint will mean you are charged a and a three month minimum commitment fee. If you later need to update or resubmit your brand there may be additional fees.

if so you can query the and wait for the "useCaseStatus" to turn to "ok"

here
this article
this article
here
valid access key
access role
access policy

Show the details of a specific connector.

get
Authorizations
Path parameters
workspaceIdstring · uuidRequired
connectorIdstring · uuidRequired
Responses
200
OK
application/json
404
connector not found
application/json
get
GET /workspaces/{workspaceId}/connectors/{connectorId} HTTP/1.1
Host: 
Authorization: Bearer jwt
Accept: */*
{
  "id": "123e4567-e89b-12d3-a456-426614174000",
  "workspaceId": "123e4567-e89b-12d3-a456-426614174000",
  "routingKey": "text",
  "name": "text",
  "region": "text",
  "description": "text",
  "arguments": {
    "someArgument": "someValue"
  },
  "channel": {
    "channelId": "123e4567-e89b-12d3-a456-426614174000",
    "platform": "text"
  },
  "number": {
    "profileId": "123e4567-e89b-12d3-a456-426614174000",
    "numberId": "123e4567-e89b-12d3-a456-426614174000",
    "phoneNumber": "text",
    "variables": {},
    "capabilities": "mms-inbound,mms-outbound,sms-inbound,sms-outbound",
    "numberType": "mobile",
    "endpointType": "alpha-number",
    "country": "NL",
    "profileAttachments": [
      {
        "capability": "text",
        "profileId": "text",
        "variables": {
          "connectorId": "text"
        }
      }
    ]
  },
  "connectorTemplateSlug": "text",
  "connectorTemplateRef": "text",
  "dataFetching": {
    "schedule": "text",
    "streams": [
      {
        "eventName": "text",
        "streamName": "text",
        "eventStreamName": "text",
        "filter": "text",
        "initialState": "text",
        "endCondition": "text",
        "incremental": true,
        "duplicatesFilterCapacity": 1,
        "cursorField": "text"
      }
    ]
  },
  "dataCapture": {
    "captureEndpoint": "text"
  },
  "createdAt": "2025-05-12T20:18:08.161Z",
  "updatedAt": "2025-05-12T20:18:08.161Z"
}

List resellers in a workspace

get
Authorizations
Path parameters
workspaceIdstring · uuidRequired

The ID for the workspace.

Example: d386a801-ee8d-4aba-a7e4-78671bd3b11e
Query parameters
limitinteger · min: 1 · max: 99Optional

Limits the number of results to return per page. The default value is 10 and maximum is 99. If the nextPageToken is defined on response, you can use it to get remaining numbers. To know more, refer to the pagination section.

Default: 10
pageTokenstring · max: 8000Optional

Pagination token that keeps of track of the current position in the list. Use it to query remaining results. If not provided, the first page is returned. To learn more about the pagination, please refer to the pagination section on API Access Common API Usage section.

reversebooleanOptional

Order in which to retrieve the results. By default, the orders are in ascending order date. To get the results in descending order, set this parameter to true.

Default: false
Responses
200
OK
application/json
Responseall of
get
GET /workspaces/{workspaceId}/tcr-resellers HTTP/1.1
Host: 
Authorization: Bearer jwt
Accept: */*
200

OK

{
  "nextPageToken": "text",
  "results": [
    {
      "id": "123e4567-e89b-12d3-a456-426614174000",
      "organizationId": "123e4567-e89b-12d3-a456-426614174000",
      "status": "PENDING",
      "companyName": "ABC Inc.",
      "phone": "+12024567890",
      "email": "johndoe@abc.com",
      "createdAt": "2025-05-12T20:18:08.161Z",
      "updatedAt": "2025-05-12T20:18:08.161Z"
    }
  ]
}
  • API Access
  • Find an available number
  • GETList all available numbers in stock at organization level.
  • Example
  • Purchase a number
  • POSTBuy Long Code Numbers
  • (Optional) Set up 10DLC webhook subscriptions
  • POSTCreate a webhook subscription
  • Register a new brand with the campaign registry
  • POSTCreate a brand at workspace level
  • (Optional) Submit brand for external vetting
  • POSTCreate a brand vetting at workspace level.
  • Register a new campaign with the campaign registry
  • Optional: acting as Reseller
  • GETList resellers in a workspace
  • Creating a New Campaign
  • POSTCreate campaign. A campaign can only be created for an approved brand.
  • (Optional) create a workspace subscription to list to channel related events
  • Install a channel connector
  • POSTCreate a new connector from a template.
  • Get your channel id
  • GETShow the details of a specific connector.
  • Setup channel message webhooks
  • POSTCreate a webhook subscription
  • Confirm a 10DLC Channels Readiness to send SMS traffic

Create a webhook subscription

post

To start receiving notifications via webhooks, the first step is to create a subscription. A webhook subscription specifies the destination URL for events and defines how they should be filtered. During setup, you can select which events to send to the specified URL. You can create multiple webhook subscriptions to route different types of events to various URLs as needed. Event filters are applied using AND operators, meaning that all specified criteria must be met for an event to be sent. If you want to handle multiple interactionTypes, you’ll need to create separate webhook subscriptions for each.

Authorizations
Path parameters
workspaceIdstring · uuidRequired

The ID for the workspace.

Example: b4e02c85-c6d2-4b15-8885-e09671799c61
organizationIdstring · uuidRequired

The ID for the organization.

Example: cb28a94e-8557-4394-80ea-5bbd2170d434
Body
all ofOptional
Responses
201
The webhook subscription was created successfully.
application/json
400
Invalid HTTP request. The HTTP response should include details about the error.
application/json
422
The HTTP request is well-formed but was unable to be processed. The HTTP response should include details about the error.
application/json
post
POST /organizations/{organizationId}/workspaces/{workspaceId}/webhook-subscriptions HTTP/1.1
Host: 
Authorization: Bearer jwt
Content-Type: application/json
Accept: */*
Content-Length: 243

{
  "service": "channels",
  "event": "sms.outbound",
  "eventFilters": [
    {
      "key": "channelId",
      "value": "58c44c1d-a6a0-4cb6-9f78-05308de87451"
    }
  ],
  "template": "text",
  "url": "https://example.com/webhook",
  "signingKey": "KeV+/HGoIQrxuE5YPCRR6AuQOJveldYNNhbVi1i22qk="
}
{
  "id": "123e4567-e89b-12d3-a456-426614174000",
  "organizationId": "cb28a94e-8557-4394-80ea-5bbd2170d434",
  "workspaceId": "b4e02c85-c6d2-4b15-8885-e09671799c61",
  "service": "channels",
  "event": "sms.outbound",
  "eventFilters": [
    {
      "key": "channelId",
      "value": "clicked"
    }
  ],
  "template": "twilio",
  "url": "https://example.com/webhook",
  "signingKey": "KeV+/HGoIQrxuE5YPCRR6AuQOJveldYNNhbVi1i22qk=",
  "status": "active",
  "createdAt": "2025-05-12T20:18:08.161Z",
  "updatedAt": "2025-05-12T20:18:08.161Z"
}

Create a webhook subscription

post

To start receiving notifications via webhooks, the first step is to create a subscription. A webhook subscription specifies the destination URL for events and defines how they should be filtered. During setup, you can select which events to send to the specified URL. You can create multiple webhook subscriptions to route different types of events to various URLs as needed. Event filters are applied using AND operators, meaning that all specified criteria must be met for an event to be sent. If you want to handle multiple interactionTypes, you’ll need to create separate webhook subscriptions for each.

Authorizations
Path parameters
workspaceIdstring · uuidRequired

The ID for the workspace.

Example: b4e02c85-c6d2-4b15-8885-e09671799c61
organizationIdstring · uuidRequired

The ID for the organization.

Example: cb28a94e-8557-4394-80ea-5bbd2170d434
Body
all ofOptional
Responses
201
The webhook subscription was created successfully.
application/json
400
Invalid HTTP request. The HTTP response should include details about the error.
application/json
422
The HTTP request is well-formed but was unable to be processed. The HTTP response should include details about the error.
application/json
post
POST /organizations/{organizationId}/workspaces/{workspaceId}/webhook-subscriptions HTTP/1.1
Host: 
Authorization: Bearer jwt
Content-Type: application/json
Accept: */*
Content-Length: 243

{
  "service": "channels",
  "event": "sms.outbound",
  "eventFilters": [
    {
      "key": "channelId",
      "value": "58c44c1d-a6a0-4cb6-9f78-05308de87451"
    }
  ],
  "template": "text",
  "url": "https://example.com/webhook",
  "signingKey": "KeV+/HGoIQrxuE5YPCRR6AuQOJveldYNNhbVi1i22qk="
}
{
  "id": "123e4567-e89b-12d3-a456-426614174000",
  "organizationId": "cb28a94e-8557-4394-80ea-5bbd2170d434",
  "workspaceId": "b4e02c85-c6d2-4b15-8885-e09671799c61",
  "service": "channels",
  "event": "sms.outbound",
  "eventFilters": [
    {
      "key": "channelId",
      "value": "clicked"
    }
  ],
  "template": "twilio",
  "url": "https://example.com/webhook",
  "signingKey": "KeV+/HGoIQrxuE5YPCRR6AuQOJveldYNNhbVi1i22qk=",
  "status": "active",
  "createdAt": "2025-05-12T20:18:08.161Z",
  "updatedAt": "2025-05-12T20:18:08.161Z"
}

Create a new connector from a template.

post
Authorizations
Path parameters
workspaceIdstring · uuidRequired
Body
namestringRequired
connectorTemplateRefstringOptional
channelConversationalStatusEnabledboolean | nullableOptional
invitationTokenstring | nullableOptional
Responses
201
OK
application/json
404
workspace not found
application/json
409
connector already exists
application/json
422
invalid data provided
application/json
post
POST /workspaces/{workspaceId}/connectors HTTP/1.1
Host: 
Authorization: Bearer jwt
Content-Type: application/json
Accept: */*
Content-Length: 236

{
  "name": "text",
  "connectorTemplateRef": "text",
  "arguments": {
    "someArgument": "someValue"
  },
  "securityArguments": {
    "ANY_ADDITIONAL_PROPERTY": {
      "ANY_ADDITIONAL_PROPERTY": "text"
    }
  },
  "channelConversationalStatusEnabled": true,
  "invitationToken": "text"
}
{
  "id": "123e4567-e89b-12d3-a456-426614174000",
  "workspaceId": "123e4567-e89b-12d3-a456-426614174000",
  "routingKey": "text",
  "name": "text",
  "region": "text",
  "description": "text",
  "arguments": {
    "someArgument": "someValue"
  },
  "channel": {
    "channelId": "123e4567-e89b-12d3-a456-426614174000",
    "platform": "text"
  },
  "number": {
    "profileId": "123e4567-e89b-12d3-a456-426614174000",
    "numberId": "123e4567-e89b-12d3-a456-426614174000",
    "phoneNumber": "text",
    "variables": {},
    "capabilities": "mms-inbound,mms-outbound,sms-inbound,sms-outbound",
    "numberType": "mobile",
    "endpointType": "alpha-number",
    "country": "NL",
    "profileAttachments": [
      {
        "capability": "text",
        "profileId": "text",
        "variables": {
          "connectorId": "text"
        }
      }
    ]
  },
  "connectorTemplateSlug": "text",
  "connectorTemplateRef": "text",
  "dataFetching": {
    "schedule": "text",
    "streams": [
      {
        "eventName": "text",
        "streamName": "text",
        "eventStreamName": "text",
        "filter": "text",
        "initialState": "text",
        "endCondition": "text",
        "incremental": true,
        "duplicatesFilterCapacity": 1,
        "cursorField": "text"
      }
    ]
  },
  "dataCapture": {
    "captureEndpoint": "text"
  },
  "createdAt": "2025-05-12T20:18:08.161Z",
  "updatedAt": "2025-05-12T20:18:08.161Z"
}

Buy Long Code Numbers

post

Assigns Long Code Numbers to the current workspace, charging the wallet for their subscription price. When creating LCNs as a User, all specified Number Stock Items should be reserved.

Authorizations
Path parameters
workspaceIdstring · uuidRequired

The ID for the workspace.

Example: d386a801-ee8d-4aba-a7e4-78671bd3b11e
Body
numberStockItemIdsstring · uuid[] · max: 25Required

The unique identifiers of the numbers you want to buy. You can buy up to 25 numbers at a time. This operation will incur wallet charges for the numbers. Before buying the number, you must reserve it.

Responses
201
Created
application/json
Responseall of
422
Validation error
application/json
post
POST /workspaces/{workspaceId}/numbers-long-code HTTP/1.1
Host: 
Authorization: Bearer jwt
Content-Type: application/json
Accept: */*
Content-Length: 63

{
  "numberStockItemIds": [
    "123e4567-e89b-12d3-a456-426614174000"
  ]
}
{
  "results": [
    {
      "id": "41e3cf43-4386-464a-a1ee-e6ef6fd6883d",
      "endpointId": "41e3cf43-4386-464a-a1ee-e6ef6fd6883d",
      "numberString": "+14155552671",
      "countryCode": "US",
      "type": "local",
      "capabilities": {
        "voice": {
          "inbound": true,
          "outbound": true
        },
        "sms": {
          "inbound": true,
          "outbound": true
        },
        "mms": {
          "inbound": true,
          "outbound": true
        }
      },
      "createdAt": "2025-05-12T20:18:08.161Z",
      "updatedAt": "2025-05-12T20:18:08.161Z",
      "order": {
        "countryCode": "US",
        "type": "local",
        "capabilities": [
          "voice"
        ],
        "prefix": "text",
        "status": "draft",
        "createdAt": "2025-05-12T20:18:08.161Z",
        "updatedAt": "2025-05-12T20:18:08.161Z"
      },
      "deprovisionAt": "2025-05-12T20:18:08.161Z",
      "endpoint": {
        "id": "123e4567-e89b-12d3-a456-426614174000",
        "type": "long-code-number",
        "instanceId": "1551f382-6870-4480-8f9b-f5ab34936288",
        "name": "+14155552671",
        "capabilities": [
          {
            "name": "sms",
            "inbound": {
              "status": "active",
              "issues": [
                "subscription-is-not-active"
              ]
            },
            "outbound": {
              "status": "active",
              "destinationStatuses": {
                "active": 1,
                "inactive": 1,
                "available": 1,
                "unavailable": 1
              },
              "supportsDestinations": true,
              "issues": [
                "subscription-is-not-active"
              ]
            }
          }
        ],
        "dependencies": [
          {
            "type": "connector",
            "connectorId": "123e4567-e89b-12d3-a456-426614174000",
            "connectorTemplateRef": "text",
            "capabilities": [
              "voice"
            ]
          }
        ],
        "issues": [
          "subscription-is-not-active"
        ],
        "provisioningStatus": "provisioned",
        "createdAt": "2025-05-12T20:18:08.161Z",
        "updatedAt": "2025-05-12T20:18:08.161Z"
      }
    }
  ]
}

Create a brand at workspace level

post

Create a brand at workspace level. This means it will be available only for this workspace. A brand registration is mandatory due to compliance requirements.

Authorizations
Path parameters
workspaceIdstring · uuidRequired

The ID for the workspace.

Example: d386a801-ee8d-4aba-a7e4-78671bd3b11e
Body
entityTypestring · enumRequired

Legal entity type. It can't be updated when the brand is approved.

Example: PRIVATE_PROFITPossible values:
firstNamestring · max: 100Optional

First or given name. Applicable to entity type.

Example: John
lastNamestring · max: 100Optional

Last or Surname. Applicable to entity type.

Example: Doe
displayNamestring · min: 1 · max: 255Required

Display or marketing name your brand.

Example: ABC Mobile
companyNamestring · min: 1 · max: 255Required

Legal company name. This should match the legal company name used to register your EIN/Tax ID.

Example: ABC Inc.
einstring · min: 1 · max: 21Required

Government assigned corporate tax ID. EIN is 9-digits in the U.S.

Example: 111111111
einIssuingCountrystring · min: 1 · max: 2Required

The 2 letter ISO country of registration submitted with your EIN / Tax ID registration.

Example: US
phonestring · min: 1 · max: 20Required

Valid phone number in e.164 international format.

Example: +12024567890
streetstring · min: 1 · max: 100Required

Street number and name.

Example: 123 6th Ave
citystring · min: 1 · max: 100Required

City name

Example: New York
statestring · min: 1 · max: 20Required

State. Must be a 2 letter state code for US states.

Example: NY
postalCodestring · min: 1 · max: 10Required

Postal code. Must be a 5 digit zip code for the United States.

Example: 10001
countrystring · min: 1 · max: 2Required

ISO 2 character country code.

Example: US
emailstring · min: 1 · max: 100Required

Valid email address of brand support contact.

Example: johndoe@abc.com
stockSymbolstring · max: 10Optional

Stock symbol. Required for entityType PUBLIC.

Example: ABC
stockExchangestring · enumOptional

Stock exchange. Required for entityType PUBLIC.

Example: NASDAQPossible values:
websitestring · min: 1 · max: 100Required

Brand website URL.

Example: https://example.com
verticalstring · max: 50Optional

Vertical or industry segment of the brand.

Example: RETAIL
altBusinessIdstring · max: 50Optional

Alternate business identifier.

altBusinessIdTypestring · enumOptional

Alternate business identifier type. Required if altBusinessId is provided.

Possible values:
businessContactEmailone ofOptional

Business contact email.

string · emailOptional
or
stringOptional
Responses
201
Brand successfully created
application/json
422
Invalid brand
application/json
post
POST /workspaces/{workspaceId}/tcr-brands HTTP/1.1
Host: 
Authorization: Bearer jwt
Content-Type: application/json
Accept: */*
Content-Length: 488

{
  "entityType": "PRIVATE_PROFIT",
  "firstName": "John",
  "lastName": "Doe",
  "displayName": "ABC Mobile",
  "companyName": "ABC Inc.",
  "ein": "111111111",
  "einIssuingCountry": "US",
  "phone": "+12024567890",
  "street": "123 6th Ave",
  "city": "New York",
  "state": "NY",
  "postalCode": "10001",
  "country": "US",
  "email": "johndoe@abc.com",
  "stockSymbol": "ABC",
  "stockExchange": "NASDAQ",
  "website": "https://example.com",
  "vertical": "RETAIL",
  "altBusinessId": "text",
  "altBusinessIdType": "NONE",
  "businessContactEmail": "name@gmail.com"
}
{
  "id": "123e4567-e89b-12d3-a456-426614174000",
  "organizationId": "123e4567-e89b-12d3-a456-426614174000",
  "createdAt": "2025-05-12T20:18:08.161Z",
  "updatedAt": "2025-05-12T20:18:08.161Z",
  "status": "PENDING",
  "entityType": "PRIVATE_PROFIT",
  "firstName": "John",
  "lastName": "Doe",
  "displayName": "ABC Mobile",
  "companyName": "ABC Inc.",
  "ein": "111111111",
  "einIssuingCountry": "US",
  "phone": "+12024567890",
  "street": "123 6th Ave",
  "city": "New York",
  "state": "NY",
  "postalCode": "10001",
  "country": "US",
  "email": "johndoe@abc.com",
  "stockSymbol": "ABC",
  "stockExchange": "NASDAQ",
  "website": "https://example.com",
  "vertical": "RETAIL",
  "altBusinessId": "text",
  "altBusinessIdType": "NONE",
  "businessContactEmail": "name@gmail.com",
  "businessContactEmailVerifiedDate": "2025-05-12T20:18:08.161Z",
  "workspaceIds": [
    "123e4567-e89b-12d3-a456-426614174000"
  ],
  "rejection": {
    "description": "text",
    "code": "text"
  }
}

Create a brand vetting at workspace level.

post

Create a brand vetting in a workspace. Brand vetting should be requested when the brand is not getting approved, or if the customer needs a higher throughput.

Authorizations
Path parameters
workspaceIdstring · uuidRequired

The ID for the workspace.

Example: d386a801-ee8d-4aba-a7e4-78671bd3b11e
brandIdstringRequired

A unique identifier for the brand.

Body
classstring · enumRequired

Identifies the vetting classification.

Example: STANDARDPossible values:
vettingProviderIdstringOptional

External vetting provider ID for the brand.

Responses
201
Brand vetting successfully created
application/json
422
Invalid workspace brand vetting
application/json
post
POST /workspaces/{workspaceId}/tcr-brands/{brandId}/vettings HTTP/1.1
Host: 
Authorization: Bearer jwt
Content-Type: application/json
Accept: */*
Content-Length: 47

{
  "class": "STANDARD",
  "vettingProviderId": "text"
}
{
  "id": "123e4567-e89b-12d3-a456-426614174000",
  "brandId": "123e4567-e89b-12d3-a456-426614174000",
  "createdAt": "2025-05-12T20:18:08.161Z",
  "updatedAt": "2025-05-12T20:18:08.161Z",
  "status": "PENDING",
  "vettingProviderId": "text",
  "token": "text",
  "score": "text",
  "class": "STANDARD",
  "reasons": [
    "text"
  ]
}

Create campaign. A campaign can only be created for an approved brand.

post

To create a campaign, it is essential to ensure that the brand has already been approved. Campaigns can only be initiated under the umbrella of brands that meet this prerequisite. Once a campaign is created, it cannot begin directing traffic immediately. Instead, it must go through a formal approval process. Only after the campaign has been reviewed and approved it will be authorized to send traffic.

Authorizations
Path parameters
workspaceIdstring · uuidRequired

The ID for the workspace.

Example: d386a801-ee8d-4aba-a7e4-78671bd3b11e
brandIdstringRequired

A unique identifier for the brand.

Body
namestringRequired

Campaign name

usecasestring · max: 50Required

A use case that best matches the purpose of the campaign.

subUsecasesstring[]Optional

If use case is MIXED or LOW_VOLUME mixed an array of 2-5 use cases.

descriptionstring · min: 40 · max: 4096Required

A detailed description of what the campaign is for.

embeddedLinkbooleanOptional

Whether messages will contain links. Provide at least one sample containing a link.

embeddedPhonebooleanOptional

Whether messages will contain phone number. Provide at least one sample containing a phone number.

numberPoolbooleanOptional

Whether a campaign will be associated with more than 50 numbers e.g. customer service use case.

ageGatedbooleanOptional

Whether a campaign contains age-gated content based on carrier/ctia guidelines.

directLendingbooleanOptional

Whether a campaign includes content related to direct lending or loan arrangements.

subscriberOptinbooleanOptional

Confirm customer opt in is collected and processed.

subscriberOptoutbooleanOptional

Confirm customer opt out is collected and processed.

subscriberHelpbooleanOptional

Confirm an info message is returned if a customer sends "HELP".

samplesstring[]Required

Between 1-5 sample messages. If directLending, embeddedPhone, embeddedLink is true provide relevant examples.

attachmentUrlsstring[]Optional

Up to 5 attachments.

messageFlowstring · min: 40 · max: 2048Required

Provide details of how the customer will opt into this campaign. If you have a live web opt-in provide the URL and ensure the page has details on the T&Cs/data collection for opting in, and how to opt out.

helpMessagestring · min: 20 · max: 255Required

Help message of the campaign. A help message shall state the name of the service, contact (email or call centre), OPT IN and OPT OUT keywords.

helpKeywordsstringOptional

A comma separated list of keywords. Support of the word HELP is the minimum requirement for requesting help/info.

optoutKeywordsstringOptional

A comma separated list of keywords. Support of the word STOP is the minimum requirement for OPT OUT.

optinKeywordsstringOptional

A comma separated list of keywords. Support of the word START is the minimum requirement for OPT OUT.

optinMessagestring · min: 20Optional

Provide an example of the message that will be sent after a customer has opted in.

optoutMessagestring · min: 20Optional

Provide an example of the message that will be sent after a customer has opted out.

termsAndConditionsboolean · enumRequired

Indicates the campaign follows CTIA messaging principles and best practices.

Possible values:
resellerIdstring · uuid | nullableOptional

UUID of the reseller associated with this campaign. The specified reseller MUST be ACTIVE.

Responses
201
Campaign successfully created
application/json
422
Invalid campaign
application/json
post
POST /workspaces/{workspaceId}/tcr-brands/{brandId}/campaigns HTTP/1.1
Host: 
Authorization: Bearer jwt
Content-Type: application/json
Accept: */*
Content-Length: 520

{
  "name": "text",
  "usecase": "text",
  "subUsecases": [
    "text"
  ],
  "description": "text",
  "embeddedLink": true,
  "embeddedPhone": true,
  "numberPool": true,
  "ageGated": true,
  "directLending": true,
  "subscriberOptin": true,
  "subscriberOptout": true,
  "subscriberHelp": true,
  "samples": [
    "text"
  ],
  "attachmentUrls": [
    "text"
  ],
  "messageFlow": "text",
  "helpMessage": "text",
  "helpKeywords": "text",
  "optoutKeywords": "text",
  "optinKeywords": "text",
  "optinMessage": "text",
  "optoutMessage": "text",
  "termsAndConditions": true,
  "resellerId": "123e4567-e89b-12d3-a456-426614174000"
}
{
  "id": "123e4567-e89b-12d3-a456-426614174000",
  "name": "text",
  "subscription": {
    "status": "active",
    "subscribedAt": "2025-05-12T20:18:08.161Z",
    "updatedAt": "2025-05-12T20:18:08.161Z",
    "cancelledAt": "2025-05-12T20:18:08.161Z"
  },
  "status": "DRAFT",
  "usecase": "text",
  "subUsecases": [
    "text"
  ],
  "description": "text",
  "embeddedLink": true,
  "embeddedPhone": true,
  "numberPool": true,
  "ageGated": true,
  "directLending": true,
  "subscriberOptin": true,
  "subscriberOptout": true,
  "subscriberHelp": true,
  "samples": [
    "text"
  ],
  "messageFlow": "text",
  "helpMessage": "text",
  "helpKeywords": "text",
  "optoutKeywords": "text",
  "optinKeywords": "text",
  "optinMessage": "text",
  "optoutMessage": "text",
  "termsAndConditions": true,
  "brandId": "123e4567-e89b-12d3-a456-426614174000",
  "resellerId": "text",
  "rejection": {
    "description": "text",
    "code": "text"
  },
  "attachments": [
    {
      "id": "123e4567-e89b-12d3-a456-426614174000",
      "status": "PENDING",
      "createdAt": "2025-05-12T20:18:08.161Z",
      "updatedAt": "2025-05-12T20:18:08.161Z",
      "filename": "attachment.txt",
      "mediaUrl": "https://example.com/attachment.txt",
      "contentType": "text/plain"
    }
  ],
  "createdAt": "2025-05-12T20:18:08.161Z",
  "updatedAt": "2025-05-12T20:18:08.161Z"
}

List all available numbers in stock at organization level.

get
Authorizations
Path parameters
organizationIdstring · uuidRequired

The ID for the organization.

Example: d0b85ccc-b63a-4e81-b698-c359d77d250e
Query parameters
limitinteger · min: 1 · max: 99Optional

Limits the number of results to return per page. The default value is 10 and maximum is 99. If the nextPageToken is defined on response, you can use it to get remaining numbers. To know more, refer to the pagination section.

Default: 10
pageTokenstring · max: 8000Optional

Pagination token that keeps of track of the current position in the list. Use it to query remaining results. If not provided, the first page is returned. To learn more about the pagination, please refer to the pagination section on API Access Common API Usage section.

countryCodesstring · iso3166-1[]Optional

A 2-digit ISO 3166-1 country code array.

Example: ["US","NL"]
prefixstring · min: 1 · max: 250Optional

Used to filter numbers belonging to a specific local area-code. It MUST be used in conjunction with the countryCodes filter. Always provide prefixes in full international format.

Example: +1212
testingbooleanOptional
Responses
200
OK
application/json
Responseall of
422
Invalid filter
application/json
get
GET /organizations/{organizationId}/numbers-stock-items HTTP/1.1
Host: 
Authorization: Bearer jwt
Accept: */*
{
  "results": [
    {
      "id": "123e4567-e89b-12d3-a456-426614174000",
      "countryCode": "US",
      "type": "local",
      "numberString": "+19283764510",
      "capabilities": {
        "voice": {
          "inbound": true,
          "outbound": true
        },
        "sms": {
          "inbound": true,
          "outbound": true
        },
        "mms": {
          "inbound": true,
          "outbound": true
        }
      },
      "monthlyPrice": {
        "currencyCode": "EUR",
        "amount": 3500000,
        "exponent": -6
      },
      "backOrderRequired": true,
      "backOrderStockId": "text"
    }
  ],
  "nextPageToken": "text"
}
page
understand the costs
register a brand
brand registration
brand vetting
campaign
campaign registration fee
GET connector status endpoint