AgentPhone registration API
The registration API from AgentPhone — 2 operation(s) for registration.
The registration API from AgentPhone — 2 operation(s) for registration.
openapi: 3.1.0
info:
title: API Reference agent-webhooks registration API
version: 1.0.0
servers:
- url: https://api.agentphone.ai
description: Production
tags:
- name: registration
paths:
/v1/register/status:
get:
operationId: get-registration-status-v-1-register-status-get
summary: Get Registration Status
description: 'Check the status of your A2P 10DLC registration.
### Sub-account status
To check the registration status of a sub-account, pass the `X-Sub-Account-Id` header with the sub-account ID returned from `POST /v1/register`.
### Possible statuses
- `none` -- No registration submitted.
- `pending` -- Registration is under review.
- `approved` -- Registration approved. Your account is ready to send messages.'
tags:
- registration
parameters:
- name: Authorization
in: header
description: Bearer authentication
required: true
schema:
type: string
- name: X-Sub-Account-Id
in: header
description: Check a sub-account's registration status. Pass the sub-account ID returned from `POST /v1/register`. Omit to check the master account.
required: false
schema:
type: string
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/CampaignStatusResponse'
/v1/register:
post:
operationId: register-a-2-p-v-1-register-post
summary: Register A2P
description: 'Submit an A2P 10DLC registration to enable outbound SMS on your account.
US carriers require 10DLC registration before your AI agent can send text messages. This endpoint accepts both `sole_proprietor` and `standard_brand` registration types.
### How it works
1. Submit your registration details via this endpoint
2. A one-time $25 registration fee is deducted from your account balance
3. We submit your registration to the carriers on your behalf
4. Carrier approval typically takes 7-10 business days
### Registration types
- **`sole_proprietor`** -- For individuals or small businesses. Simpler requirements, fewer fields.
- **`standard_brand`** -- For established businesses. Requires `business_name`, `organization_type`, `ein`, `privacy_policy_url`, `terms_of_service_url`.
### Sub-accounts
Parent accounts can set `create_sub_account: true` (the default) to create a dedicated sub-account for each registration. This lets you manage multiple campaigns independently. The $25 fee is always charged to the parent account.
### Opt-in image
`opt_in_image_url` must be a publicly accessible HTTPS URL to a screenshot showing how users opt in to receive messages from you (e.g. a consent checkbox on your signup form). Supports PNG, JPG, WEBP, and GIF up to 2MB. Google Drive links (`drive.google.com/file/d/.../view`) are automatically converted if the file is shared publicly.
### Re-submitting
If your previous registration was rejected, you can call this endpoint again to re-register.'
tags:
- registration
parameters:
- name: Authorization
in: header
description: Bearer authentication
required: true
schema:
type: string
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/RegistrationResponse'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/RegistrationRequest'
components:
schemas:
ValidationErrorLocItems:
oneOf:
- type: string
- type: integer
title: ValidationErrorLocItems
OrganizationType:
type: string
enum:
- sole_proprietor
- private_corporation
- public_corporation
- llc
- partnership
- non_profit
- co_op
- government
title: OrganizationType
ValidationError:
type: object
properties:
loc:
type: array
items:
$ref: '#/components/schemas/ValidationErrorLocItems'
msg:
type: string
type:
type: string
required:
- loc
- msg
- type
title: ValidationError
ContactTitle:
type: string
enum:
- ceo
- cfo
- cto
- coo
- vp
- gm
- director
- other
title: ContactTitle
CampaignStatusResponse:
type: object
properties:
campaign_status:
type: string
message:
type: string
stage:
type:
- string
- 'null'
required:
- campaign_status
- message
title: CampaignStatusResponse
RegistrationRequestRegistrationType:
type: string
enum:
- sole_proprietor
- standard_brand
description: '''sole_proprietor'' or ''standard_brand'''
title: RegistrationRequestRegistrationType
RegistrationResponse:
type: object
properties:
ok:
type: boolean
message:
type: string
campaign_status:
type: string
sub_account_id:
type:
- string
- 'null'
fee_cents:
type: integer
default: 2500
required:
- ok
- message
- campaign_status
title: RegistrationResponse
HTTPValidationError:
type: object
properties:
detail:
type: array
items:
$ref: '#/components/schemas/ValidationError'
title: HTTPValidationError
UseCase:
type: string
enum:
- account_notification
- customer_care
- delivery_notification
- fraud_alert
- higher_education
- marketing
- polling_voting
- public_service_announcement
- security_alert
- two_factor_authentication
title: UseCase
RegistrationRequest:
type: object
properties:
registration_type:
$ref: '#/components/schemas/RegistrationRequestRegistrationType'
description: '''sole_proprietor'' or ''standard_brand'''
first_name:
type: string
last_name:
type: string
email:
type: string
phone_number:
type: string
description: E.164 format, e.g. +15551234567
business_name:
type:
- string
- 'null'
description: Legal/registered business name. Required for standard_brand.
brand_name:
type:
- string
- 'null'
description: Public-facing brand name if different from business_name.
organization_type:
oneOf:
- $ref: '#/components/schemas/OrganizationType'
- type: 'null'
description: Required for standard_brand.
contact_title:
oneOf:
- $ref: '#/components/schemas/ContactTitle'
- type: 'null'
description: Your role. Required for standard_brand.
contact_title_other:
type:
- string
- 'null'
description: Custom title when contact_title is 'other'.
ein:
type:
- string
- 'null'
description: EIN / Tax ID. Required for standard_brand.
website_url:
type:
- string
- 'null'
industry:
type:
- string
- 'null'
description: e.g. technology, real_estate, retail, healthcare
business_regions:
type: array
items:
type: string
default:
- usa_and_canada
street_address:
type: string
street_address_2:
type:
- string
- 'null'
city:
type: string
state:
type: string
zip_code:
type: string
country:
type: string
default: US
planned_numbers:
type: integer
default: 1
description: Number of phone numbers you plan to use
description:
type: string
description: What your business does, who you message, and what types of messages you send. Min 40 chars.
use_cases:
type: array
items:
$ref: '#/components/schemas/UseCase'
description: 1-5 specific use cases for your SMS campaign.
volume:
$ref: '#/components/schemas/Volume'
default: low
description: Expected message volume.
message_samples:
type: array
items:
type: string
description: 2-5 example messages. Each must be 20-1024 chars and include your brand name.
consent_flow:
type: string
description: How users opt in to receive messages. Min 40 chars.
privacy_policy_url:
type:
- string
- 'null'
description: Required for standard_brand.
terms_of_service_url:
type:
- string
- 'null'
description: Required for standard_brand.
opt_in_image_url:
type: string
description: Publicly accessible URL to a screenshot of your opt-in flow (PNG, JPG, WEBP, or GIF, max 2MB)
includes:
type: array
items:
$ref: '#/components/schemas/CampaignInclude'
default: []
description: Content types included in messages.
link_sample:
type:
- string
- 'null'
description: Example URL if messages contain links.
create_sub_account:
type: boolean
default: true
description: Create a dedicated sub-account for this campaign. Set false to register on your main account.
required:
- registration_type
- first_name
- last_name
- email
- phone_number
- street_address
- city
- state
- zip_code
- description
- use_cases
- message_samples
- consent_flow
- opt_in_image_url
title: RegistrationRequest
CampaignInclude:
type: string
enum:
- links
- phone_numbers
- age_gated
- direct_lending
title: CampaignInclude
Volume:
type: string
enum:
- low
- high
title: Volume
securitySchemes:
HTTPBearer:
type: http
scheme: bearer