Skip to content

Create a new 10DLC brand registration. Sets brandStatus to pending_review; Pingram handles carrier submission after review.

POST
/registrations/us/10dlc/brand
curl --request POST \
--url https://api.pingram.io/registrations/us/10dlc/brand \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{ "scenarioId": "own_brand", "businessType": "PRIVATE_PROFIT", "legalName": "example", "firstName": "example", "lastName": "example", "taxId": "example", "website": "example", "country": "example", "street": "example", "city": "example", "state": "example", "postalCode": "example", "complianceContactEmail": "example", "complianceContactPhone": "example" }'

Authorizations

Request Bodyrequired

Media typeapplication/json

Request body for POST /registrations/us/10dlc/brand

object
scenarioId
required

Who the 10DLC brand is registered for.

  • own_brand: personal or company project
  • client_brand: agency or contractor
string
Allowed values: own_brand client_brand
businessType
required

Legal entity type for a 10DLC brand.

  • PRIVATE_PROFIT: private for-profit (LLC, corp, etc.)
  • SOLE_PROPRIETOR: sole proprietorship
  • PUBLIC_PROFIT: publicly traded for-profit
  • NON_PROFIT: non-profit
  • GOVERNMENT: government
string
Allowed values: PRIVATE_PROFIT SOLE_PROPRIETOR PUBLIC_PROFIT NON_PROFIT GOVERNMENT
legalName
required
string
firstName

Required when businessType is SOLE_PROPRIETOR.

string
lastName

Required when businessType is SOLE_PROPRIETOR.

string
taxId

For US companies (country US): 9-digit EIN (Employer Identification Number). For Canada (country CA): 9-digit BN (Business Number). For other countries: national business tax identifier. Required except when businessType is SOLE_PROPRIETOR.

string
website
required
string
country
required
string
street
string
city
string
state
string
postalCode
string
complianceContactEmail
required
string
complianceContactPhone
required
string

Responses

200

Successful response

Media typeapplication/json

Public response type for 10DLC brand registration

object
accountId
required
string
scenarioId
required
string
businessType
required
string
legalName
required
string
displayName

Brand display name (marketing/DBA); defaults to legalName on customer submit.

string
firstName
string
lastName
string
taxId
string
website
required
string
country
required
string
street
string
city
string
state
string
postalCode
string
fullAddress

Legacy records only; new submissions use structured address fields.

string
complianceContactEmail
required
string
complianceContactPhone
required
string
brandStatus
required

Pingram-side 10DLC registration workflow status (brand or campaign).

  • not_started: no customer submission yet
  • pending_review: customer submitted; Pingram has not submitted to carriers
  • in_progress: submitted for carrier review
  • approved | rejected | info_needed: review outcome
string
Allowed values: not_started in_progress pending_review approved rejected info_needed
campaignStatus
required

Pingram-side 10DLC registration workflow status (brand or campaign).

  • not_started: no customer submission yet
  • pending_review: customer submitted; Pingram has not submitted to carriers
  • in_progress: submitted for carrier review
  • approved | rejected | info_needed: review outcome
string
Allowed values: not_started in_progress pending_review approved rejected info_needed
createdAt
required
string
updatedAt
required
string
Example
{
"brandStatus": "not_started",
"campaignStatus": "not_started"
}

400

Bad Request - validation errors, invalid input

Media typeapplication/json

Standard error response for API errors.

object
trackingId
required

Unique tracking ID for the request.

string
error
required

Structured error details for API error responses.

object
code
required

Machine-readable error code.

string
message
required

Human-readable error message.

string
fix

Actionable hint for fixing the error.

string
Examplegenerated
{
"trackingId": "example",
"error": {
"code": "example",
"message": "example",
"fix": "example"
}
}

401

Unauthorized

402

Payment Required - usage limits exceeded

Media typeapplication/json

Standard error response for API errors.

object
trackingId
required

Unique tracking ID for the request.

string
error
required

Structured error details for API error responses.

object
code
required

Machine-readable error code.

string
message
required

Human-readable error message.

string
fix

Actionable hint for fixing the error.

string
Examplegenerated
{
"trackingId": "example",
"error": {
"code": "example",
"message": "example",
"fix": "example"
}
}

500

Internal Server Error

502

Bad Gateway - provider error

Media typeapplication/json

Standard error response for API errors.

object
trackingId
required

Unique tracking ID for the request.

string
error
required

Structured error details for API error responses.

object
code
required

Machine-readable error code.

string
message
required

Human-readable error message.

string
fix

Actionable hint for fixing the error.

string
Examplegenerated
{
"trackingId": "example",
"error": {
"code": "example",
"message": "example",
"fix": "example"
}
}