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
curl https://agentnumber.really.com/availability
# → {"available": 12}
If available is 0, jump to the
waitlist and poll
/availability until a number opens.
2. Get the payment challenge
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:
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.
MPP — pathUSD on Tempo mainnet
Discover the canonical pathUSD contract and recipient at
/.well-known/mpp.json. Build
a Tempo charge credential with the
mppx SDK and
retry with Authorization: Payment:
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:
npx mppx https://agentnumber.really.com/subscribe --method POST
# one-time setup: npx mppx account create
Full details: /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
- Receive inbound SMS
- Authentication deep-dive for the recovery flow