Overview
Telephony and OSINT primitives for AI agents — pay-per-use via x402.
Dial x402
Telephony and OSINT primitives for AI agents. Send SMS, look up phone numbers, search breach data — all pay-per-use via x402 crypto payments.
No accounts. No API keys. No KYC. Just a wallet.
What is Dial?
Dial provides telephony and intelligence APIs that autonomous agents can pay for with USDC on Base. Every endpoint uses the x402 protocol — the open standard for HTTP 402 payments.
When an agent calls a Dial endpoint without payment, it gets back a 402 Payment Required response with the price. The agent signs a USDC authorization, resubmits, and gets the resource. Settlement happens on-chain in ~1 second.
Available Primitives
| Primitive | Price | Description |
|---|---|---|
| Send SMS | $0.05 | Send SMS to 10 supported countries (DE, GB, CA, AU, FR, BR, MX, SA, AE, ZA) |
| Phone Lookup | $0.05 | Reverse lookup — carrier, caller name, line type, SIM swap detection |
| Breach Search | $0.05 | Search leaked credentials by email, phone, IP, domain |
| Buy Credits | $0.10 | Prepay 100 credits for Bearer-token access (no x402 per-call) |
| Buy Number | $1.50 | Purchase a phone number (coming soon) |
| Phone Verify | $0.25 | OTP verification (coming soon) |
| eSIM | $2.45 | Order a data plan (coming soon) |
How It Works
1. Agent sends POST /api/v1/sms/send
2. Server returns HTTP 402; priced offer is in PAYMENT-REQUIRED header
3. Agent signs EIP-3009 transferWithAuthorization
4. Agent resubmits with PAYMENT-SIGNATURE header
5. Facilitator verifies and settles on-chain
6. Server sends the SMS and returns 200Networks
| Network | Chain ID | USDC Contract |
|---|---|---|
| Base (mainnet) | eip155:8453 | 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 |
| Base Sepolia (testnet) | eip155:84532 | 0x036CbD53842c5426634e7929541eC2318f3dCF7e |
Quick Example
# Returns 402; use -i to print status + PAYMENT-REQUIRED header (body may be {})
curl -i -sS -X POST "https://x402.dial.wtf/api/v1/sms/send" \
-H "Content-Type: application/json" \
-d '{"to":"+1234567890","message":"Hello from an AI agent"}'
# With x402 payment (handled automatically by SDK)
import { DialClient } from "@dial/api";
const dial = new DialClient({
baseUrl: "https://x402.dial.wtf",
x402Fetch: x402WrappedFetch, // handles 402 automatically for paid actions
});
await dial.sms.send({
to: "+1234567890",
message: "Hello from an AI agent",
});