---
title: Subscribe + get a number — Guide
description: End-to-end flow from picking a payment rail to holding a bearer.
url: https://agentnumber.really.com/docs/guides/subscribe
doc_version: "1.0.0"
last_updated: "2026-05-15"
---

> ## Documentation index
> Fetch the complete documentation index at: https://agentnumber.really.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Subscribe + get a number

> The full flow from picking a payment rail to holding a bearer token. End-to-end, in one page.

## 1. Check that supply exists

```bash
curl https://agentnumber.really.com/availability
# → {"available": 12}
```

If `available` is `0`, jump to the [waitlist](/docs/reference/waitlist) and poll [`/availability`](/docs/reference/availability) until a number opens.

## 2. Get the payment challenge

```bash
curl -X POST https://agentnumber.really.com/subscribe
# → 402 Payment Required
# {
#   "x402Version": 2,
#   "accepts": [{
#     "scheme": "exact",
#     "network": "base",
#     "amount": "1800000000",
#     "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
#     "payTo": "0x...",
#     "maxTimeoutSeconds": 300
#   }]
# }
```

Read `accepts[]` at runtime — the API serves the canonical USDC contract for the live network via the 402 challenge. Never hardcode.

## 3. Sign + retry

Two payment rails settle the same product at the same price. Pick whichever your wallet supports — the bearer + number you receive are identical.

### x402 — USDC on Base mainnet

Sign an EIP-3009 `transferWithAuthorization` for `amount` from your wallet to `payTo`, base64-encode it, and retry:

```bash
curl -X POST https://agentnumber.really.com/subscribe \
  -H "X-PAYMENT: <base64-encoded-signed-payment>"
# → 200
# {
#   "token": "an_...",
#   "number": "+15555550123",
#   "expires_at": "2027-04-30T...",
#   "renewed": false
# }
```

Full details: [/docs/payment/x402](/docs/payment/x402).

### MPP — pathUSD on Tempo mainnet

Discover the canonical pathUSD contract and recipient at [/.well-known/mpp.json](/.well-known/mpp.json). Build a Tempo charge credential with the [mppx SDK](https://github.com/coinbase/mppx-sdk) and retry with `Authorization: Payment`:

```bash
curl -X POST https://agentnumber.really.com/subscribe \
  -H "Authorization: Payment <base64-encoded-credential>"
# → 200 (same response shape as the x402 path)
```

Or use the `npx mppx` CLI to auto-handle the 402 → sign → retry end-to-end:

```bash
npx mppx https://agentnumber.really.com/subscribe --method POST
# one-time setup: npx mppx account create
```

Full details: [/docs/payment/mpp](/docs/payment/mpp).

## 4. Persist the bearer + the wallet

Store the bearer somewhere durable. Keep the paying wallet's key somewhere even more durable — losing the wallet is unrecoverable. The bearer is recoverable with the wallet's signature; the reverse is not true.

## Where to go next

- [Send your first SMS](/docs/guides/send-sms)
- [Receive inbound SMS](/docs/guides/receive-sms)
- [Authentication deep-dive](/docs/auth) for the recovery flow

## Sitemap

- [Overview](/docs/)
- [Quickstart](/docs/quickstart)
- [Authentication](/docs/auth)
- [SMS](/docs/sms)
- [Voice](/docs/voice)
- [MCP](/docs/mcp)
- [Payment](/docs/payment)

See the full [sitemap.md](/sitemap.md) for the complete index of docs pages.

---

← Previous: [Overview](/docs/) · Next: [Send your first SMS](/docs/guides/send-sms) →
