> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.agentphone.ai/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.agentphone.ai/_mcp/server.

# SMS registration and activation

> Register a US messaging campaign, track review, and verify that each number is ready to send.

SMS to US destinations requires an approved messaging campaign. Number activation is a separate check and depends on the sending line and account. Non-US destinations may be available without US campaign approval on some lines; a Canadian sending number alone does not determine the requirement. This guide covers US registration and how to inspect line readiness. Inbound SMS can be tested before approval. iMessage and WhatsApp use different onboarding paths.

## 1. Choose the account and registration

Open the [registration form](https://agentphone.ai/register), or use `POST /v1/register` from your backend.

| Type              | Use when                                                           | One-time registration fee |
| ----------------- | ------------------------------------------------------------------ | ------------------------- |
| `sole_proprietor` | Registering without an EIN                                         | \$25                      |
| `standard_brand`  | Registering an EIN business for lower-volume messaging             | \$25                      |
| `high_volume`     | Registering an EIN business for higher volume and external vetting | \$70                      |

Fees draw from the billing balance. Prepare accurate business/contact information, your messaging use case, sample messages, consent flow, and a public image of the opt-in flow. EIN business registrations also need business details and policy URLs. Use the [API reference](/api-reference) for the complete schema.

`POST /v1/register` defaults to `create_sub_account: true` for parent accounts. Save the returned `sub_account_id`, and create numbers and agents in that scope. Set `create_sub_account: false` only when you intend to register your main account. A campaign on one account does not activate unrelated numbers in another.

## 2. Track review and required changes

```bash
curl --fail-with-body "https://api.agentphone.ai/v1/register/status" \
  -H "Authorization: Bearer $AGENTPHONE_API_KEY" \
  -H "X-Sub-Account-Id: YOUR_SUB_ACCOUNT_ID"
```

Omit the sub-account header when registering on the main account. Read `campaign_status`, `stage`, and `issue` when present. Stages can include `received`, `verifying_business`, `registering_campaign`, `carrier_review`, `provisioning`, `complete`, and `action_required`. Review time depends on the registration and carrier; submitting the form is not approval.

If an issue needs attention, inspect `GET /v1/register` and follow the returned explanation. `PATCH /v1/register` updates an existing registration without a new submission fee; changes go through review. Do not submit another paid registration just to check status or edit a field.

## 3. Check the exact number

### Approved registration but sending is blocked

Account approval and number activation are different checks. Fetch the number you intend to send from, using the same API key and sub-account header:

```bash
curl --fail-with-body "https://api.agentphone.ai/v1/numbers/YOUR_NUMBER_ID" \
  -H "Authorization: Bearer $AGENTPHONE_API_KEY" \
  -H "X-Sub-Account-Id: YOUR_SUB_ACCOUNT_ID"
```

| `outboundSms`           | Next step                                                                                                                                    |
| ----------------------- | -------------------------------------------------------------------------------------------------------------------------------------------- |
| `registration_required` | Verify registration and account scope. If the campaign is approved in this same scope, contact support with the number ID and request ID.    |
| `activating`            | Wait for the number's campaign attachment. This usually takes a few minutes after purchase. Check again before sending.                      |
| `enabled`               | The number attachment is confirmed. Make a test send and inspect its result; destination restrictions and delivery failures can still apply. |

A newly activated number can briefly receive carrier error `4773` while routing catches up. If the original message has definitively failed for that reason, retry once after about 30 seconds. Persistent failures need support, not repeated purchases or registrations.

## 4. Test delivery and plan volume

Send to a consenting mobile recipient, identify your business, and include the opt-out language appropriate to your campaign. A successful send response confirms acceptance; read message history for delivery status and `failureReason`.

Use [Messaging rate limits](/documentation/reference/messaging-rate-limits) to plan throughput and segmentation. For accepted-but-undelivered messages or an approved campaign that still cannot send, follow [Troubleshooting](/troubleshooting).