VoiceTel API (2.2.10)

Download OpenAPI specification:Download

VoiceTel REST API. All resource identifiers are in the URL path. Authenticate every request with Authorization: Bearer <apikey>. To obtain your API key, POST {"username": <id>, "password": "<password>"} to /v2.2/account/api-key — this is the only endpoint that does not require an Authorization header. The response is {"status":"success","data":{"apikey":"<32-hex-string>"}}. Re-fetch the API key after any password change. Rate-limited endpoints: account, account/recurring-charges, account/cdr, account/api-key — 6 requests per hour per IP.

Account

Account profile, settings, billing charges, credit history, call detail records, SIP registration status, and self-service signup and password recovery.

Create account (admin only)

Creates a new sub-account. Requires administrator credentials. The new account password is auto-generated and returned.

Authorizations:
bearerAuth
Request Body schema: application/json
required

Body for create account (admin only).

username
required
string^[0-9]+$

10-digit numeric username.

name
required
string

Human-readable name (in accountAddRequest).

email
required
string

Email address (in accountAddRequest).

masterAccount
string

Billing account. Defaults to username.

Responses

Request samples

Content type
application/json
{
  • "username": "1000000001",
  • "name": "Acme Inc",
  • "email": "user@example.com",
  • "masterAccount": "1000000001"
}

Response samples

Content type
application/json
{
  • "data": {
    },
  • "status": "success"
}

Update account settings

Updates account settings. Customers may update: timezone, notify, notifyThreshold, callerId. Administrators may additionally update: ccs, service flags, and rate fields.

Authorizations:
bearerAuth
Request Body schema: application/json
required

Body for update account settings.

sms
boolean

Admin only. Whether SMS messaging is enabled.

callerId
string^[2-9][0-9]{2}[2-9][0-9]{2}[0-9]{4}$

Default outbound caller ID — ten-digit telephone number (in accountPutRequest).

notify
boolean

Whether the account receives low-balance notifications (in accountPutRequest).

ccs
integer

Admin only. Concurrent-call cap on the account.

intl
boolean

Admin only. Whether international calling is allowed.

notifyThreshold
integer

Balance threshold (in dollars) below which notifications fire (in accountPutRequest).

e911
boolean

Admin only. Whether e911 provisioning is allowed.

timezone
string

IANA timezone identifier (in accountPutRequest).

mms
boolean

Admin only. Whether MMS messaging is enabled.

Responses

Request samples

Content type
application/json
{
  • "sms": true,
  • "callerId": "2015551234",
  • "notify": true,
  • "ccs": 0,
  • "intl": true,
  • "notifyThreshold": 0,
  • "e911": true,
  • "timezone": "America/Chicago",
  • "mms": true
}

Response samples

Content type
application/json
{
  • "data": {
    },
  • "status": "success"
}

Get account info

Returns full account details including balance, services, and rates. Rates are read-only. Rate limited: 6 requests per hour per IP.

Authorizations:
bearerAuth

Responses

Response samples

Content type
application/json
{
  • "data": {
    },
  • "status": "success"
}

Credit history

Returns the complete credit history for the account — all credits regardless of invoice status. Each entry includes a paid flag: true means the customer has fulfilled the invoice; false means the invoice is still outstanding. Use /v2.2/account/credits/paid or /v2.2/account/credits/unpaid to retrieve a filtered subset.

Authorizations:
bearerAuth
query Parameters
status
string
Enum: "paid" "unpaid"

Filter results to credit entries with the given paid/unpaid state.

Responses

Response samples

Content type
application/json
{
  • "data": {
    },
  • "status": "success"
}

Call detail records

Call Detail Records for the authenticated account within the given Unix-timestamp range. Rate-limited to 6 requests per hour per IP.

Authorizations:
bearerAuth
query Parameters
start
integer
Example: start=1747345200

Range start as Unix timestamp. Defaults to now.

end
integer
Example: end=1747258800

Range end as Unix timestamp. Defaults to 24h ago.

Responses

Response samples

Content type
application/json
{
  • "data": {
    },
  • "status": "success"
}

Get SIP registration

Returns the current SIP URI and user agent for the registered device.

Authorizations:
bearerAuth

Responses

Response samples

Content type
application/json
{
  • "data": {
    },
  • "status": "success"
}

Monthly recurring charges

Returns current MRC broken down by service plus a total. Rate limited: 6 requests per hour per IP.

Authorizations:
bearerAuth

Responses

Response samples

Content type
application/json
{
  • "data": {
    },
  • "status": "success"
}

Payment history

Returns all PayPal payments received on the account, newest first. Each entry includes the amount, date, PayPal transaction ID, payment status, and the payer email address. Payments represent real cash received; for credit adjustments see GET /v2.2/account/credits.

Authorizations:
bearerAuth

Responses

Response samples

Content type
application/json
{
  • "data": {
    },
  • "status": "success"
}

Get API Key

Returns the current API key for the account identified by username and password. No Bearer token is required or accepted — credentials must be provided in the request body. Rate limited to 6 requests per hour per IP.

Request Body schema: application/json
required

Body for get api key.

username
required
string

Your account username.

password
required
string

Your account password.

Responses

Request samples

Content type
application/json
{
  • "username": "1000000001",
  • "password": "abc1234567"
}

Response samples

Content type
application/json
{
  • "data": {
    },
  • "status": "success"
}

Request password recovery

Sends a password recovery link to the email address on file. No authentication required.

Request Body schema: application/json
required

Body for request password recovery.

email
required
string

Email address (in accountRecoverRequest).

Responses

Request samples

Content type
application/json
{
  • "email": "user@example.com"
}

Response samples

Content type
application/json
{
  • "data": {
    },
  • "status": "success"
}

Create a new account

Creates a new account. No authentication required. Returns account credentials and API key. A verification email is sent.

Request Body schema: application/json
required

Body for create a new account.

name
required
string

Human-readable name (in accountSignupRequest).

email
required
string

Email address (in accountSignupRequest).

promo
string

Optional promotional code.

Responses

Request samples

Content type
application/json
{
  • "name": "Acme Inc",
  • "email": "user@example.com",
  • "promo": "example"
}

Response samples

Content type
application/json
{
  • "data": {
    },
  • "status": "success"
}

ACL

Manage the IP Access Control List for IP-based SIP authentication. Only routable public IPv4 CIDRs with masks /8, /16, /24, or /32 are accepted.

Add IP ACL entries

Adds one or more IPv4 CIDR blocks. Only routable public addresses accepted. Mask must be /8, /16, /24, or /32.

Authorizations:
bearerAuth
Request Body schema: application/json
required

Body for add ip acl entries.

required
Array of objects (cidrEntry)

List of CIDR ranges authorized for IP-based authentication on this account (in aclModifyRequest).

Responses

Request samples

Content type
application/json
{
  • "acl": [
    ]
}

Response samples

Content type
application/json
{
  • "data": {
    },
  • "status": "success"
}

Remove IP ACL entries

Removes one or more IPv4 CIDR blocks from the IP-ACL. CIDRs are passed as a comma-separated cidrs query string parameter.

Authorizations:
bearerAuth
query Parameters
cidrs
required
string
Example: cidrs=203.0.113.0/24

Comma-separated list of CIDR blocks to remove from the ACL (e.g. 203.0.113.0/24,203.0.113.1/32).

Responses

Response samples

Content type
application/json
{
  • "data": {
    },
  • "status": "success"
}

List IP ACL entries

Returns all IP CIDR blocks on the account IP authentication ACL.

Authorizations:
bearerAuth

Responses

Response samples

Content type
application/json
{
  • "data": {
    },
  • "status": "success"
}

Authentication

Manage the account SIP authentication type (Digest, IP Auth, or both) and password.

Update authentication settings

Updates the account authentication type and/or password.

Authorizations:
bearerAuth
Request Body schema: application/json
required

Body for update authentication settings.

password
string

6-10 alphanumeric characters with at least one letter and one number.

authType
integer
Enum: 0 1 2 3

Authentication mode for the account. 0 = Digest only, 1 = IP allowlist only, 2 = Digest OR IP allowlist, 3 = Digest AND IP allowlist.

Responses

Request samples

Content type
application/json
{
  • "password": "abc123",
  • "authType": 0
}

Response samples

Content type
application/json
{
  • "data": {
    },
  • "status": "success"
}

Get authentication settings

Returns the current authentication type, its description, and all IP ACL entries for the account.

Authorizations:
bearerAuth

Responses

Response samples

Content type
application/json
{
  • "data": {
    },
  • "status": "success"
}

e911

Provision and manage e911 emergency service records for telephone numbers on the account.

Validate an e911 address

Validates a street address for e911 provisioning. Returns the validated address including an addressid for use with PUT /e911/{dn}.

Authorizations:
bearerAuth
Request Body schema: application/json
required

Body for validate an e911 address.

address1
required
string

Street address line 1 (in e911AddressRequest).

address2
string

Street address line 2 (apartment, suite, floor) — may be empty.

city
required
string

City name (in e911AddressRequest).

zip
required
string

Postal code (in e911AddressRequest).

state
required
string

Two-letter US state code (in e911AddressRequest).

Responses

Request samples

Content type
application/json
{
  • "address1": "411 HACKENSACK AVENUE",
  • "address2": "STE 200",
  • "city": "HACKENSACK",
  • "zip": "07601",
  • "state": "NJ"
}

Response samples

Content type
application/json
{
  • "data": {
    },
  • "status": "success"
}

Remove e911 record

E 911 remove record on /v2.2/e911/{dn}.

Authorizations:
bearerAuth
path Parameters
dn
required
string

Ten-digit telephone number for the e911 record (DELETE /v2.2/e911/{dn}).

Responses

Response samples

Content type
application/json
{
  • "status": "error",
  • "error": {
    }
}

Provision e911 with known addressId

Provisions an e911 address using a pre-validated addressId from POST /e911/validate.

Authorizations:
bearerAuth
path Parameters
dn
required
string

Ten-digit telephone number for the e911 record (PUT /v2.2/e911/{dn}).

Request Body schema: application/json
required

Body for provision e911 with known addressid.

addressid
required
integer

Address ID from POST /e911/validate.

callername
required
string

Caller name displayed to the PSAP dispatcher (e911).

Responses

Request samples

Content type
application/json
{
  • "addressid": 123456,
  • "callername": "JOHN DOE"
}

Response samples

Content type
application/json
{
  • "data": {
    },
  • "status": "success"
}

Get e911 record

Returns the e911 record for a specific telephone number on the account.

Authorizations:
bearerAuth
path Parameters
dn
required
string
Example: 2015551234

10-digit telephone number — used by e 911 query record.

Responses

Response samples

Content type
application/json
{
  • "data": {
    },
  • "status": "success"
}

Create an e911 record

Validates the address and provisions an e911 record for the given dn. dn must be a 10-digit telephone number owned by the authenticated account.

Authorizations:
bearerAuth
Request Body schema: application/json
required

e911 record details. The dn field identifies which number this record applies to.

zip
required
string

Postal code (in e911CreateRequest).

dn
required
string^[2-9][0-9]{2}[2-9][0-9]{2}[0-9]{4}$

Ten-digit telephone number owned by the authenticated account.

city
required
string

City name (schema e911CreateRequest).

address1
required
string

Street address line 1 (in e911CreateRequest).

address2
string

Street address line 2 (apartment, suite, floor).

callername
required
string

Caller name displayed to dispatch.

state
required
string

Two-letter state code.

Responses

Request samples

Content type
application/json
{
  • "zip": "07430",
  • "dn": "2017301000",
  • "city": "MAHWAH",
  • "address1": "4601 RIO VISTA DR",
  • "address2": "example",
  • "callername": "Michael Mavroudis",
  • "state": "NJ"
}

Response samples

Content type
application/json
{
  • "data": {
    },
  • "status": "success"
}

List all e911 records

Returns all e911 records provisioned for telephone numbers on the account.

Authorizations:
bearerAuth

Responses

Response samples

Content type
application/json
{
  • "data": {
    },
  • "status": "success"
}

Gateways

Manage SIP gateways (outbound trunks). System route types (USER, T30, VOICE_BRIDGE, DID, T38, RTC_BRIDGE, SDN) are always present and read-only.

Remove a gateway

Removes a gateway. Will fail if DIDs are currently routed to it.

Authorizations:
bearerAuth
path Parameters
id
required
integer

Resource identifier — used by gateways delete.

Responses

Response samples

Content type
application/json
{
  • "status": "error",
  • "error": {
    }
}

Update a gateway

Gateways put on /v2.2/gateways/{id}.

Authorizations:
bearerAuth
path Parameters
id
required
integer

Resource identifier — used by gateways put.

Request Body schema: application/json
required

Body for update a gateway.

gateway
string

Gateway address (IP[:port]) or system route name (in gatewayUpdateRequest).

prefix
string

Prefix.

limit
integer [ 1 .. 1000 ]

Limit.

Responses

Request samples

Content type
application/json
{
  • "gateway": "203.0.113.20:5060",
  • "prefix": "example",
  • "limit": 100
}

Response samples

Content type
application/json
{
  • "data": {
    },
  • "status": "success"
}

Get a gateway

Gateways get on /v2.2/gateways/{id}.

Authorizations:
bearerAuth
path Parameters
id
required
integer

Resource identifier — used by gateways get.

Responses

Response samples

Content type
application/json
{
  • "data": {
    },
  • "status": "success"
}

Add a gateway

Adds a SIP gateway. Must resolve to a routable public IPv4 address. Optional port as host:port. Optionally set a dial prefix and concurrent call limit.

Authorizations:
bearerAuth
Request Body schema: application/json
required

Body for add a gateway.

gateway
required
string

IP or hostname with optional port. Must resolve to a routable public IPv4 address.

prefix
string

Digits to prepend on outbound calls.

limit
integer [ 1 .. 1000 ]

Max concurrent calls. Default: 23.

Responses

Request samples

Content type
application/json
{
  • "gateway": "203.0.113.10:5060",
  • "prefix": "9",
  • "limit": 23
}

Response samples

Content type
application/json
{
  • "data": {
    },
  • "status": "success"
}

List gateways

Returns all system route types and user-defined SIP gateways. System routes: 1=USER, 2=T30, 3=VOICE_BRIDGE, 4=DID, 5=T38, 6=RTC_BRIDGE, 8=SDN.

Authorizations:
bearerAuth

Responses

Response samples

Content type
application/json
{
  • "data": {
    },
  • "status": "success"
}

List numbers on a gateway

Gateways numbers on /v2.2/gateways/{id}/numbers.

Authorizations:
bearerAuth
path Parameters
id
required
integer

Resource identifier — used by gateways numbers.

Responses

Response samples

Content type
application/json
{
  • "data": {
    },
  • "status": "success"
}

iNumbering

Number ordering, search, porting, and messaging campaign provisioning.

Order new telephone numbers

Places an the number order for the listed numbers and adds them to the authenticated account. Charges accounts.cash by accounts.did × len(numbers). Supports the Idempotency-Key header for safe retries (the cached response is returned for 24h on replay).

Authorizations:
bearerAuth
header Parameters
Idempotency-Key
string^[A-Za-z0-9_-]{1,128}$
Example: 9c8f4a-001

Client-supplied opaque token. Retries with the same key return the cached response and do NOT re-charge or re-order.

Request Body schema: application/json
required

Numbers to order. Each may set an optional route (gateway_id on this account, default 4).

required
Array of strings or objects

One or more numbers (max 100). Each may be a string or an object {number, route?}.

Responses

Request samples

Content type
application/json
{
  • "numbers": [ ]
}

Response samples

Content type
application/json
{
  • "data": {
    },
  • "status": "success"
}

Aggregated number availability

Returns counts of available numbers bucketed by the chosen dimension. Optional filter parameters narrow the result. Results are cached for 10 minutes.

Authorizations:
bearerAuth
query Parameters
countBy
required
string
Enum: "state" "city" "rateCenter" "npanxx" "block"
Example: countBy=state

Aggregation dimension.

locState
string
Example: locState=NJ

Filter: state or province code (e.g. NJ).

city
string

Filter: city name.

rcAbbre
string

Filter: rate-center abbreviation.

npa
string
Example: npa=201

Filter: area code.

lata
integer

Filter: LATA code.

Responses

Response samples

Content type
application/json
{
  • "data": {
    },
  • "status": "success"
}

Submit a port-in order

Submits a number port-in. Replicates the legacy LNP web form: creates a port record, opens a support ticket, notifies the LNP team, and deducts $6 per TN from accounts.cash. Numbers must have been confirmed portable via GET /v2.2/ports/availability/{number} within the prior hour. The LOA must be uploaded after submission.

Authorizations:
bearerAuth
Request Body schema: application/json
required

Address, account, and TN list for the port-in submission.

streetSuffix
string
Enum: "N" "NE" "E" "SE" "S" "SW" "W" "NW"

Optional street direction suffix. Omit the field (or send an empty string) when none applies.

desiredDueDate
string <date-time>

Optional desired port date (YYYY-MM-DD). Leave blank for standard processing time.

room
string

Optional room.

lcBtn
required
string

Billing telephone number from the losing carrier bill.

floor
string

Optional floor.

street
required
string

Street name.

unitValue
string

Optional unit designator (e.g. APT, STE) and number.

nameType
required
string
Enum: "business" "residential"

Name type.

lcAccountNumber
required
string

Account number from the losing carrier bill.

streetNumber
required
string

Street number as it appears on the service address.

streetType
required
string

USPS street type abbreviation (e.g. ST, AVE, BLVD).

name
required
string

Subscriber name exactly as it appears on the bill from the losing carrier.

pin
string

Port-out PIN. Required by many carriers especially mobile. Contact the losing carrier to obtain.

authPerson
required
string

Full name of the person authorized to sign the LOA.

state
required
string

2-character state abbreviation.

zip
required
string

Postal code (in portSubmitRequest).

city
required
string

City name (in portSubmitRequest).

Array of objects (portFeature)

Optional per-TN routing, LIDB, and SMS configuration applied after the port completes.

streetPrefix
string
Enum: "N" "NE" "E" "SE" "S" "SW" "W" "NW"

Optional street direction prefix. Omit the field (or send an empty string) when none applies.

country
required
string

Country code.

did
required
Array of strings non-empty

One or more 10-digit phone numbers to port. Toll-free (8xx) numbers are separated from geographic numbers automatically.

building
string

Optional building identifier.

Responses

Request samples

Content type
application/json
{
  • "streetSuffix": "N",
  • "desiredDueDate": "2026-05-18T12:00:00Z",
  • "room": "",
  • "lcBtn": "2015551000",
  • "floor": "",
  • "street": "Main",
  • "unitValue": "",
  • "nameType": "business",
  • "lcAccountNumber": "123456789",
  • "streetNumber": "550",
  • "streetType": "ST",
  • "name": "Acme Corp",
  • "pin": "1234",
  • "authPerson": "Jane Smith",
  • "state": "IL",
  • "zip": "60601",
  • "city": "Chicago",
  • "features": [
    ],
  • "streetPrefix": "N",
  • "country": "US",
  • "did": [
    ],
  • "building": ""
}

Response samples

Content type
application/json
{}

List port-in records

Returns every port-in record submitted by the authenticated account, newest first.

Authorizations:
bearerAuth

Responses

Response samples

Content type
application/json
{
  • "data": {
    },
  • "status": "success"
}

Get a single port-in record

Returns the full detail for one port-in record. Returns 404 if the id does not exist or is owned by a different account.

Authorizations:
bearerAuth
path Parameters
id
required
string = 5 characters ^[A-Za-z0-9]{5}$
Example: w1476

Port record identifier (5-character alphanumeric pid) from the list response's pid field.

Responses

Response samples

Content type
application/json
{
  • "data": {
    },
  • "status": "success"
}

Search available phone numbers

Returns up to quantity numbers matching the tnMask and optional filters. Results are cached for 10 minutes.

Authorizations:
bearerAuth
query Parameters
tnMask
required
string
Example: tnMask=201

Prefix or wildcard pattern; 201, 201555, 201555*.

quantity
integer
Example: quantity=10

Maximum results, 1–1000. Defaults to 10.

province
string
Example: province=NJ

Limit results to this 2-letter US state or Canadian province code.

rateCenter
string

Rate-center name.

lata
integer

LATA code (query filter).

Responses

Response samples

Content type
application/json
{
  • "data": {
    },
  • "status": "success"
}

Check whether a number can be ported in

Checks whether the number can be ported in. On portable=true the system sets a Redis flag that lets a subsequent POST /v2.2/ports submit the port within an hour.

Authorizations:
bearerAuth
path Parameters
number
required
string^[2-9][0-9]{2}[2-9][0-9]{2}[0-9]{4}$
Example: 2017301000

Ten-digit telephone number to check.

Responses

Response samples

Content type
application/json
{
  • "status": "success",
  • "data": {
    }
}

Lookups

Per-lookup billed services. CNAM returns the registered Caller ID Name. LRN returns Location Routing Number and carrier details. Requires the service to be enabled on the account.

CNAM lookup

Returns the Caller ID Name registered for the given 10-digit telephone number. Billed per lookup. Requires CNAM service to be enabled.

Authorizations:
bearerAuth
path Parameters
number
required
string
Example: 2015551234

10-digit telephone number in NPANXXXXXX format.

Responses

Response samples

Content type
application/json
{
  • "data": {
    },
  • "status": "success"
}

LRN lookup

Returns the Location Routing Number (LRN) and carrier details for the destination number. Billed per lookup.

Authorizations:
bearerAuth
path Parameters
number
required
string
Example: 2125551234

Destination number in NPANXXXXXX format.

ani
required
string
Example: 2015551234

Calling party (ANI) in NPANXXXXXX format.

Responses

Response samples

Content type
application/json
{
  • "data": {
    },
  • "status": "success"
}

Messaging

SMS/MMS sending, routing, messaging campaigns, and delivery records.

Read messaging state for a set of numbers

Returns the current messaging routing state for each requested number. Numbers not on the authenticated account are returned with onAccount=false.

Authorizations:
bearerAuth
query Parameters
numbers
required
string
Example: numbers=9175803800,2012548000

Comma-separated list of 10-digit numbers. Maximum 1000.

Responses

Response samples

Content type
application/json
{
  • "data": {
    },
  • "status": "success"
}

Register a 10DLC brand at the network

Brand registration. Body fields define the brand attributes.

Authorizations:
bearerAuth
Request Body schema: application/json
required

Brand registration body.

messagingBrandDescription
string

Free-form description of the brand.

messagingBrandName
required
string

Brand display name.

messagingBrandId
required
string^B[A-Za-z0-9]+$

Brand identifier issued by the campaign registry. Must start with B and contain only alphanumeric characters.

Responses

Request samples

Content type
application/json
{
  • "messagingBrandDescription": "Acme Inc — appointment reminders",
  • "messagingBrandName": "Acme Inc",
  • "messagingBrandId": "BMQ8L9X"
}

Response samples

Content type
application/json
{
  • "data": {
    },
  • "status": "success"
}

Send a message (SMS or MMS)

Sends a text message. If mediaUrls is provided it goes as MMS via the messaging network; otherwise SMS via the SMS routing routed by the source number's assigned network. Charges the account on success.

Authorizations:
bearerAuth
Request Body schema: application/json
required

Source number, destination, and message text. Add mediaUrls to send MMS.

text
required
string

Message body (UTF-8). Long messages may be split into multiple segments.

subject
string

MMS subject line (optional, MMS only).

toNumber
required
string^[2-9][0-9]{2}[2-9][0-9]{2}[0-9]{4}$

Destination 10-digit telephone number.

fromNumber
required
string^[2-9][0-9]{2}[2-9][0-9]{2}[0-9]{4}$

Source 10-digit number; must be on the authenticated account.

mediaUrls
Array of strings

One or more publicly-reachable media URLs. Presence makes this an MMS.

Responses

Request samples

Content type
application/json
{
  • "text": "Reminder: appointment 3pm.",
  • "subject": "example",
  • "toNumber": "2015551234",
  • "fromNumber": "2012548000",
  • "mediaUrls": [
    ]
}

Response samples

Content type
application/json
{
  • "data": {
    },
  • "status": "success"
}

Message history for a number

Returns SMS or MMS Message Detail Records for a single number within a timestamp range. Both endpoints of the range are inclusive.

Authorizations:
bearerAuth
query Parameters
type
string
Enum: "sms" "mms" "dlr"
Example: type=sms

sms (default), mms, or dlr. dlr returns delivery status events for sent messages.

number
required
string^[2-9][0-9]{2}[2-9][0-9]{2}[0-9]{4}$
Example: number=2012548000

Ten-digit telephone number on the authenticated account — used by message history.

from
integer
Example: from=1747345200

Unix timestamp range start (newer). Defaults to now.

to
integer
Example: to=1747258800

Unix timestamp range end (older). Defaults to 24h ago.

Responses

Response samples

Content type
application/json
{
  • "data": {
    },
  • "status": "success"
}

Register a 10DLC campaign at the network

Campaign registration. messagingBrandId / externalCampaignId / campaignDescription are required; campaignClassName and campaignStartDate default to T / today if omitted.

Authorizations:
bearerAuth
Request Body schema: application/json
required

Campaign registration body.

campaignStartDate
string <date-time>

Campaign start date.

externalCampaignId
required
string

External campaign id.

campaignDescription
required
string

Campaign description.

campaignClassName
string

Campaign class name.

messagingBrandId
required
string

Messaging brand id.

Responses

Request samples

Content type
application/json
{
  • "campaignStartDate": "2026-05-18T12:00:00Z",
  • "externalCampaignId": "abc123",
  • "campaignDescription": "example",
  • "campaignClassName": "T",
  • "messagingBrandId": "abc123"
}

Response samples

Content type
application/json
{
  • "data": {
    },
  • "status": "success"
}

Read campaign status from the messaging network

For each id, returns the the messaging network campaign status and the list of numbers currently bound.

Authorizations:
bearerAuth
query Parameters
ids
required
string
Example: ids=ABC123,DEF456

Comma-separated alphanumeric campaign ids; max 100.

Responses

Response samples

Content type
application/json
{
  • "data": {
    },
  • "status": "success"
}

Numbers

Manage telephone numbers: routing, forwarding, DNIS translation, inbound CNAM lookup, outbound Caller ID Name (LIDB), SMS routing, and fax-to-email.

Add a number

Assigns a telephone number to the account. Account balance must cover the monthly DID rate.

Authorizations:
bearerAuth
Request Body schema: application/json
required

Body for add a number.

route
integer

Gateway route ID. Defaults to 4 (DID).

number
required
string^[2-9][0-9]{2}[2-9][0-9]{2}[0-9]{4}$

Telephone number (ten digits) (in numberAddRequest).

Responses

Request samples

Content type
application/json
{
  • "route": 4,
  • "number": "2015551234"
}

Response samples

Content type
application/json
{
  • "data": {
    },
  • "status": "success"
}

List numbers

Returns all telephone numbers on the account with full detail including route, gateway, forwarding, CNAM, SMS, and fax configuration.

Authorizations:
bearerAuth

Responses

Response samples

Content type
application/json
{
  • "data": {
    },
  • "status": "success"
}

Remove fax routing

Numbers fax delete on /v2.2/numbers/{number}/fax.

Authorizations:
bearerAuth
path Parameters
number
required
string

Ten-digit telephone number — used by numbers fax delete.

Responses

Response samples

Content type
application/json
{
  • "status": "error",
  • "error": {
    }
}

Set fax-to-email

Numbers fax set on /v2.2/numbers/{number}/fax.

Authorizations:
bearerAuth
path Parameters
number
required
string

Ten-digit telephone number — used by numbers fax set.

Request Body schema: application/json
required

Body for set fax-to-email.

email
required
string

Email address (in numberFaxRequest).

Responses

Request samples

Content type
application/json
{
  • "email": "fax@example.com"
}

Response samples

Content type
application/json
{
  • "data": {
    },
  • "status": "success"
}

Get fax-to-email routing

Numbers fax get on /v2.2/numbers/{number}/fax.

Authorizations:
bearerAuth
path Parameters
number
required
string

Ten-digit telephone number — used by numbers fax get.

Responses

Response samples

Content type
application/json
{
  • "data": {
    },
  • "status": "success"
}

Enable or disable inbound CNAM lookup

Numbers cnam on /v2.2/numbers/{number}/cnam.

Authorizations:
bearerAuth
path Parameters
number
required
string

Ten-digit telephone number — used by numbers cnam.

Request Body schema: application/json
required

Body for enable or disable inbound cnam lookup.

enabled
required
boolean

true to enable inbound CNAM lookup, false to disable.

Responses

Request samples

Content type
application/json
{
  • "enabled": true
}

Response samples

Content type
application/json
{
  • "data": {
    },
  • "status": "success"
}

Set DNIS translation

Sets the inbound DNIS translation for the number.

Authorizations:
bearerAuth
path Parameters
number
required
string

Ten-digit telephone number — used by numbers translation.

Request Body schema: application/json
required

Body for set dnis translation.

translation
required
string^[2-9][0-9]{2}[2-9][0-9]{2}[0-9]{4}$

DNIS translation. Digits and # only.

Responses

Request samples

Content type
application/json
{
  • "translation": "2015559999"
}

Response samples

Content type
application/json
{
  • "data": {
    },
  • "status": "success"
}

Remove SMS routing

Numbers sms delete on /v2.2/numbers/{number}/sms.

Authorizations:
bearerAuth
path Parameters
number
required
string

Ten-digit telephone number — used by numbers sms delete.

Responses

Response samples

Content type
application/json
{
  • "status": "error",
  • "error": {
    }
}

Set SMS routing

Sets or updates SMS routing for the number.

Authorizations:
bearerAuth
path Parameters
number
required
string

Ten-digit telephone number — used by numbers sms set.

Request Body schema: application/json
required

Body for set sms routing.

type
required
string
Enum: "email" "webhook" "sip"

email=forward to email address, webhook=HTTP POST, sip=direct IP delivery.

resource
required
string

Email address, webhook URL, or IP address depending on type.

Responses

Request samples

Content type
application/json
{
  • "type": "email",
  • "resource": "user@example.com"
}

Response samples

Content type
application/json
{
  • "data": {
    },
  • "status": "success"
}

Get SMS routing

Returns the SMS routing configuration for the number. Type is one of: email, webhook, sip.

Authorizations:
bearerAuth
path Parameters
number
required
string

Ten-digit telephone number — used by numbers sms get.

Responses

Response samples

Content type
application/json
{
  • "data": {
    },
  • "status": "success"
}

Set number route

Sets the gateway route for a number.

Authorizations:
bearerAuth
path Parameters
number
required
string

Ten-digit telephone number — used by numbers route.

Request Body schema: application/json
required

Body for set number route.

route
required
integer

Gateway id the number is currently routed to (in numberRouteRequest).

Responses

Request samples

Content type
application/json
{
  • "route": 1000
}

Response samples

Content type
application/json
{
  • "data": {
    },
  • "status": "success"
}

Remove call forward

Numbers forward remove on /v2.2/numbers/{number}/forward.

Authorizations:
bearerAuth
path Parameters
number
required
string

Ten-digit telephone number — used by numbers forward remove.

Responses

Response samples

Content type
application/json
{
  • "status": "error",
  • "error": {
    }
}

Set call forward

Numbers forward set on /v2.2/numbers/{number}/forward.

Authorizations:
bearerAuth
path Parameters
number
required
string

Ten-digit telephone number — used by numbers forward set.

Request Body schema: application/json
required

Body for set call forward.

destination
required
string^[2-9][0-9]{2}[2-9][0-9]{2}[0-9]{4}$

10-digit destination number.

Responses

Request samples

Content type
application/json
{
  • "destination": "2015551234"
}

Response samples

Content type
application/json
{
  • "data": {
    },
  • "status": "success"
}

Unassign multiple numbers from a campaign

Removes each listed number from the given campaign. The campaign itself is unchanged; only the number-to-campaign bindings are removed. campaignId is required — the system uses CSP sharing to resolve which messaging path holds the bindings, then issues path-appropriate removal calls.

Authorizations:
bearerAuth
query Parameters
numbers
required
string
Example: numbers=6185243600,4055160600

Comma-separated list of 10-digit telephone numbers to remove from the campaign. Maximum 1000.

campaignId
required
string^C[A-Z0-9]{6}$
Example: campaignId=CH5K5IZ

TCR campaign id the numbers are being removed from. The network is resolved via CSP sharing.

Responses

Response samples

Content type
application/json
{
  • "data": {
    },
  • "status": "success"
}

Move a number to another account

Reassigns the number from the authenticated account to the destination accountId on the given route. Both fields are required.

Authorizations:
bearerAuth
path Parameters
number
required
string^[2-9][0-9]{2}[2-9][0-9]{2}[0-9]{4}$
Example: 2012548000

Ten-digit telephone number currently on the authenticated account.

Request Body schema: application/json
required

Destination account and the route on that account that should receive the number.

route
required
integer

Gateway id the number is currently routed to (in numberMoveRequest).

accountId
required
integer

Destination account id (numeric username).

Responses

Request samples

Content type
application/json
{
  • "route": 1000,
  • "accountId": 1002
}

Response samples

Content type
application/json
{
  • "data": {
    },
  • "status": "success"
}

Remove a number

Permanently removes the number from the account. Numbers currently porting cannot be removed.

Authorizations:
bearerAuth
path Parameters
number
required
string

Ten-digit telephone number — used by numbers delete.

Responses

Response samples

Content type
application/json
{
  • "status": "error",
  • "error": {
    }
}

Get number detail

Numbers get on /v2.2/numbers/{number}.

Authorizations:
bearerAuth
path Parameters
number
required
string
Example: 2015551234

10-digit telephone number — used by numbers get.

Responses

Response samples

Content type
application/json
{
  • "data": {
    },
  • "status": "success"
}

Set outbound Caller ID Name (LIDB)

Sets the outbound Caller ID Name (CNAM/LIDB) for the number. Writes the name to the local cache (used by the softswitch for outbound caller-id) and then submits the update to the LIDB network. The local cache update is durable; a downstream failure is reported via the response's carrierStatus field but does not fail the request. Max 15 alphanumeric characters.

Authorizations:
bearerAuth
path Parameters
number
required
string

Ten-digit telephone number — used by numbers lidb.

Request Body schema: application/json
required

Body for set outbound caller id name (lidb).

customerOrderReference
string

Optional order reference. Auto-generated if omitted.

cnam
required
string

Outbound caller name. Max 15 alphanumeric characters.

Responses

Request samples

Content type
application/json
{
  • "customerOrderReference": "example",
  • "cnam": "ACME CORP"
}

Response samples

Content type
application/json
{
  • "data": {
    },
  • "status": "success"
}

Update inbound or outbound routing

At least one of routeIn / routeOut must be present. routeIn must be a numbers_sms row id owned by the authenticated account, or 0 to detach.

Authorizations:
bearerAuth
path Parameters
number
required
string^[2-9][0-9]{2}[2-9][0-9]{2}[0-9]{4}$

Ten-digit telephone number on the authenticated account — used by number messaging patch.

Request Body schema: application/json
required

Subset of routeIn/routeOut to update.

routeIn
integer

numbers_sms row id for inbound. 0 to detach.

routeOut
integer

Outbound carrier id (numbers.carrier value).

Responses

Request samples

Content type
application/json
{
  • "routeIn": 1234,
  • "routeOut": 17
}

Response samples

Content type
application/json
{
  • "data": {
    },
  • "status": "success"
}

Read messaging state for one number

Returns the current inbound route, outbound carrier, and enabled state for this number.

Authorizations:
bearerAuth
path Parameters
number
required
string^[2-9][0-9]{2}[2-9][0-9]{2}[0-9]{4}$
Example: 9175803800

Ten-digit telephone number on the authenticated account — used by number messaging get.

Responses

Response samples

Content type
application/json
{
  • "data": {
    },
  • "status": "success"
}

Release a number back to the network

Releases the number back to the network (different from removing it from the account). A release event is created; the number cannot be re-assigned.

Authorizations:
bearerAuth
path Parameters
number
required
string

Ten-digit telephone number — used by number release.

Responses

Response samples

Content type
application/json
{
  • "status": "error",
  • "error": {
    }
}

Unassign a number from a campaign

Removes this number from the given campaign. The campaign continues to exist with its other bindings. campaignId is supplied as a query parameter (per REST: DELETE should not carry a request body).

Authorizations:
bearerAuth
path Parameters
number
required
string^[2-9][0-9]{2}[2-9][0-9]{2}[0-9]{4}$

Ten-digit telephone number on the authenticated account.

query Parameters
campaignId
required
string^C[A-Z0-9]{6}$
Example: campaignId=CH5K5IZ

TCR campaign id the number is being removed from.

Responses

Response samples

Content type
application/json
{
  • "data": {
    },
  • "status": "success"
}

Assign a 10DLC campaign to a number

Binds the number to a registered campaign at the network. Number must be on the authenticated account.

Authorizations:
bearerAuth
path Parameters
number
required
string^[2-9][0-9]{2}[2-9][0-9]{2}[0-9]{4}$

Ten-digit telephone number on the authenticated account — used by number messaging campaign assign.

Request Body schema: application/json
required

Campaign id to bind to this number.

campaignId
required
string^[A-Z0-9]+$

Campaign id (in numberCampaignAssignRequest).

Responses

Request samples

Content type
application/json
{
  • "campaignId": "ABC123"
}

Response samples

Content type
application/json
{
  • "data": {
    },
  • "status": "success"
}

Set the port-out PIN on a number

Updates the four-digit PIN that future losing carriers must present to release this number. Requires that the number is currently on the authenticated account.

Authorizations:
bearerAuth
path Parameters
number
required
string^[2-9][0-9]{2}[2-9][0-9]{2}[0-9]{4}$
Example: 2012548000

Ten-digit telephone number owned by the authenticated account — used by number port out pin update.

Request Body schema: application/json
required

Four-digit PIN to set on this number for future port-out validation.

pin
required
string^[0-9]{4}$

Four-digit numeric PIN.

Responses

Request samples

Content type
application/json
{
  • "pin": "4287"
}

Response samples

Content type
application/json
{
  • "data": {
    },
  • "status": "success"
}

Support

Support ticket management. Customers see only their own tickets. Administrators see all tickets.

Add a reply to a ticket

Adds a customer reply to an existing ticket. Customers can only reply to their own tickets.

Authorizations:
bearerAuth
path Parameters
id
required
integer

Resource identifier — used by support ticket reply create.

Request Body schema: application/json
required

Body for add a reply to a ticket.

message
required
string

Free-form message text (in ticketReplyRequest).

Responses

Request samples

Content type
application/json
{
  • "message": "Thank you for your reply."
}

Response samples

Content type
application/json
{
  • "data": {
    },
  • "status": "success"
}

Get ticket threads

Returns all message threads for a ticket. Customers can only view their own tickets.

Authorizations:
bearerAuth
path Parameters
id
required
integer

Resource identifier — used by support ticket messages.

Responses

Response samples

Content type
application/json
{
  • "data": {
    },
  • "status": "success"
}

Delete a ticket (admin only)

Tickets delete on /v2.2/support/tickets/{id}.

Authorizations:
bearerAuth
path Parameters
id
required
integer

Resource identifier — used by tickets delete.

Responses

Response samples

Content type
application/json
{
  • "status": "error",
  • "error": {
    }
}

Update ticket status

Updates the status of a ticket. Customers can only update their own tickets.

Authorizations:
bearerAuth
path Parameters
id
required
integer

Resource identifier — used by tickets put.

Request Body schema: application/json
required

Body for update ticket status.

status
required
string
Enum: "active" "pending" "closed" "spam"

Outcome of the ticket update request operation.

Responses

Request samples

Content type
application/json
{
  • "status": "active"
}

Response samples

Content type
application/json
{
  • "data": {
    },
  • "status": "success"
}

Get a ticket

Returns a ticket including its threads. Customers can only view their own tickets.

Authorizations:
bearerAuth
path Parameters
id
required
integer

Resource identifier — used by tickets get.

Responses

Response samples

Content type
application/json
{
  • "data": {
    },
  • "status": "success"
}

Create a support ticket

Creates a new support ticket. The customer email is automatically populated from the authenticated account. Administrators may optionally specify a different email.

Authorizations:
bearerAuth
Request Body schema: application/json
required

Body for create a support ticket.

subject
required
string

Subject line.

email
string

Admin only: create ticket on behalf of this customer email.

message
required
string

Free-form message text (in ticketCreateRequest).

Responses

Request samples

Content type
application/json
{
  • "subject": "I need help with my account",
  • "email": "user@example.com",
  • "message": "Please help me..."
}

Response samples

Content type
application/json
{
  • "data": {
    },
  • "status": "success"
}

List support tickets

Returns support tickets. Customers see only their own tickets. Administrators see all tickets.

Authorizations:
bearerAuth

Responses

Response samples

Content type
application/json
{
  • "data": {
    },
  • "status": "success"
}