---
title: "Register A2P"
method: POST
path: "/v1/register"
tags: ["registration"]
---

# Register A2P

`POST /v1/register`

Submit A2P 10DLC registration.

Deducts the registration fee ($25 for sole_proprietor / standard_brand,
$70 for high_volume) from the parent account's credit balance, creates an
optional sub-account, and sends a notification email.

## Request body

- RegistrationRequest
  - `registration_type` 'sole_proprietor' | 'standard_brand' | 'high_volume', required — 'sole_proprietor' ($25, no EIN, 1 number), 'standard_brand' ($25, EIN, low volume), or 'high_volume' ($70, EIN + external brand vetting for the highest carrier limits)
  - `first_name` string, required
  - `last_name` string, required
  - `email` string, required
  - `phone_number` string, required — E.164 format, e.g. +15551234567
  - `business_name` string, nullable — Legal/registered business name. Required for standard_brand and high_volume.
  - `brand_name` string, nullable — Public-facing brand name if different from business_name.
  - `organization_type` 'sole_proprietor' | 'private_corporation' | 'public_corporation' | 'llc' | 'partnership' | 'non_profit' | 'co_op' | 'government'
  - `contact_title` 'ceo' | 'cfo' | 'cto' | 'coo' | 'vp' | 'gm' | 'director' | 'other'
  - `contact_title_other` string, nullable — Custom title when contact_title is 'other'.
  - `ein` string, nullable — EIN / Tax ID. Required for standard_brand and high_volume.
  - `website_url` string, nullable
  - `industry` string, nullable — e.g. technology, real_estate, retail, healthcare
  - `business_regions` string[]
  - `street_address` string, required
  - `street_address_2` string, nullable
  - `city` string, required
  - `state` string, required
  - `zip_code` string, required
  - `country` string
  - `planned_numbers` integer — Number of phone numbers you plan to use
  - `description` string, required — What your business does, who you message, and what types of messages you send. Min 40 chars.
  - `use_cases` UseCase[], required — 1-5 specific use cases for your SMS campaign.
  - `volume` 'low' | 'high'
  - `message_samples` string[], required — 2-5 example messages. Each must be 20-1024 chars and include your brand name.
  - `consent_flow` string, required — How users opt in to receive messages. Min 40 chars.
  - `privacy_policy_url` string, nullable — Required for standard_brand and high_volume.
  - `terms_of_service_url` string, nullable — Required for standard_brand and high_volume.
  - `opt_in_image_url` string, required — Publicly accessible URL to a screenshot of your opt-in flow (PNG, JPG, WEBP, or GIF, max 2MB)
  - `includes` CampaignInclude[] — Content types included in messages.
  - `link_sample` string, nullable — Example URL if messages contain links.
  - `create_sub_account` boolean — Create a dedicated sub-account for this campaign. Set false to register on your main account.

## Response `200`

Successful Response

- RegistrationResponse
  - `ok` boolean, required
  - `message` string, required
  - `campaign_status` string, required
  - `sub_account_id` string, nullable
  - `fee_cents` integer, required

## Other responses

- `422` — Validation Error

---

[API](https://skmtc.net/agentphone/apis/agentphone-api.md) · [All operations](https://skmtc.net/agentphone/apis/agentphone-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/agentphone/agentphone-api/versions/3f3aa65dcd20/schema)
