Skip to content

Save A2P brand and campaign details

POST
/phone-numbers/a2p/inputs

Save the brand and campaign details WITHOUT submitting them.

Nothing reaches a carrier and nothing is charged. This is the draft step - call it as often as you like, then submit once with /a2p/register.

The save REPLACES what was there rather than merging, so send the whole object each time.

Authorizations

Parameters

Header Parameters

X-Target-Org-Id
Any of:
string

Request Body required

Brand and campaign details for A2P 10DLC registration.

Mirrors phone_numbers.interfaces.fastapi.dtos.A2pRegisterRequest.

Both dicts are OPEN and forwarded as-is, matching the app, which types them as bare Dict[str, Any] and stores them in JSONB before handing them to the carrier registry by name. Closing them here would reject a field the registry added last week.

object
brand_inputs

The legal business behind the messages: legal_business_name (required before registration can start), plus ein, address, website, business_type, vertical and whatever else the carrier registry asks for.

object
key
additional properties
any
campaign_inputs

What the messages are: use_case, message_samples and opt_in_method are the three the platform checks for before it considers the inputs complete.

object
key
additional properties
any

Responses

200

Successful Response

object
data
required

An open envelope for a purchase result, a release, or an A2P job.

Open on purpose. A purchase returns the stored row (whose capability and provider-metadata keys differ per provider), a workflow start returns a workflow_id, and the A2P reconcile returns per-number outcomes that grow as carriers add statuses. Pinning it would silently drop whatever the provider reported that this contract had not caught up on.

object
key
additional properties
any
pagination
Any of:
object
has_next
required

Whether there are more pages

boolean
limit
required

Items per page

integer
next_cursor
Any of:
string
notes
Any of:
Array<string>
page
required

Current page number (1-indexed)

integer
total
required

Total number of items

integer
total_available
Any of:
integer
total_is_lower_bound
Any of:
boolean

422

Validation Error

object
detail
Array<object>
object
loc
required
Array
msg
required
string
type
required
string