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.10 | Send text messages to any phone number worldwide |
| 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 (Dehashed) |
| 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/messages/send
2. Server returns HTTP 402 with USDC price and payTo address
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
# This returns 402 with payment requirements
curl -X POST https://x402.dial.wtf/api/v1/messages/send \
-H "Content-Type: application/json" \
-d '{"to": "+1234567890", "body": "Hello from an AI agent"}'
# With x402 payment (handled automatically by SDK)
import { DialClient } from "@dial/sdk";
const dial = new DialClient({
baseUrl: "https://x402.dial.wtf",
fetch: x402WrappedFetch, // handles 402 automatically
});
await dial.messages.send({
to: "+1234567890",
body: "Hello from an AI agent",
});