The internet's payphone.
Walk up. Pay. Communicate.
A funded wallet is all you need. Provision a real US phone number in about two minutes. Send SMS for $0.05. Inbound is free.
No account. No 10DLC registration. No carrier paperwork. Your wallet owns the number.
POST /api/v1/sms/send — $0.05 per message402. The JSON body is often {} — payment terms are in the PAYMENT-REQUIRED header (only visible with curl -i). Use @x402/fetch in JS to pay automatically — see Quickstart below.Pay for what you use. Nothing else.
USDC on Base. No minimums, no subscriptions, no invoices. The wallet pays when you use it. Silence when you don't.
Send a one-off SMS from a pool number. No setup required — just pay and send.
POST /api/v1/sms/sendSend SMS from your provisioned number. Requires SIWE authentication (wallet that purchased the number).
POST /api/v1/numbers/mine/sendBuy an exclusive US phone line. 10k texts included first month. $60/mo renewal with 5k texts. Manage via SIWE.
POST /api/v1/numbers/buy/usBuy an exclusive international phone line. 10k texts included first month. $60/mo renewal with 5k texts. Manage via SIWE.
POST /api/v1/numbers/buy/intlTwilio makes you lease a landline.
Dial is the payphone.
Traditional SMS APIs were built for businesses with accounts, compliance teams, and patience for 6-week approval queues. Dial was built for teams and agents who need a number today.
Provision a real US phone number in about two minutes. No 10DLC brand registration. No carrier approval queue. No compliance review. The number is yours when the payment settles.
$100 activation. $60/month with 5k texts. $0.05 per SMS. That's the entire pricing model. No seat fees, no campaign registration costs, no invoices at the end of the month that don't match what you expected.
No account to create. No API key to manage. No credit card to attach. Your EVM wallet pays via USDC and owns the number. Prove ownership anytime with a wallet signature — no login required.
MCP server, llms.txt, Bazaar discovery — your agent finds the endpoint, reads the price, signs the payment, and gets the number. No human setup at any point. This is the only telephony API built for that.
Not to a platform account. Not to a carrier relationship. Your wallet pays, your wallet owns — the same way it holds any other asset. When you need to rotate, automate, or transfer it, you do that programmatically. No support ticket.
Walk up. Put in the coin. Make the call.
x402 is the HTTP payment standard — the protocol that activates HTTP 402 'Payment Required' for real machine payments. Your agent or app discovers the price, signs a USDC authorization, and gets the resource. No account. One round-trip.
POST to any Dial endpoint. No payment header yet. The server returns HTTP 402 with a PAYMENT-REQUIREDheader containing the price, network, and address to pay. That's your offer.
Your wallet signs an EIP-3009 typed-data authorization — a signature, not a transaction. No ETH needed. Gas is sponsored by the facilitator. The SDK handles this in one line.
Resubmit with your signature in the PAYMENT-SIGNATURE header. The OpenX402 facilitator verifies and settles on-chain in about one second. Your SMS is sent. Your number is provisioned. Done.
The only telephony API your agent can pay for itself.
Agents can't sign up for accounts. They can hold wallets. Every other telephony API was built for humans to set up. Dial is built for the agent that needs a phone number at 2am in the middle of a workflow — no human required.
Connect at x402.dial.wtf/mcp. Your agent discovers available tools, reads their schemas, calls them, and pays — all through the Model Context Protocol. Works with Claude, GPT, LangChain, CrewAI, and any MCP-compatible framework.
Machine-readable API docs at /llms.txt and /llms-full.txt. Your agent understands every endpoint, parameter, and response schema without you writing a single line of documentation for it.
Listed on openx402.ai. Bazaar-standard resource catalog at /discovery/resources. Protocol metadata at /.well-known/x402. Agents that browse the x402 ecosystem find Dial without you pointing them there.
@dial/api wraps every endpoint with typed methods, zod-validated schemas, and flow helpers. Works with any x402-compatible payment wrapper.
Your number lives in your wallet.
Not in a platform account.
The wallet that pays owns the number. Prove ownership anytime by signing with that wallet — no username, no password, no support ticket to recover access. The number persists as long as your wallet does.
Send messages from your number at the discounted rate. SIWE proves ownership, x402 handles payment.
Inbound messages stored automatically. Read via API or configure a webhook URL to receive them in real-time.
Renew your number for additional months. Keep your number as long as you need it.
Configure a webhook URL and every inbound SMS gets POST'd to your server in real-time with retry.
Three ways to start.
Pick yours.
Three ways to start: curl, JavaScript SDK, or MCP for AI agents.
Grab the SDK or hit the API directly. No account setup, no API key, no env var to rotate. Fund a wallet with USDC on Base and you're ready. Send your first SMS in under 3 minutes.
We'll provision lines and walk you through the dashboard live. Book a 15-minute demo →
Discovery endpoints
Everything a bot needs to find, understand, and pay for Dial services.