PARTNER
Phone & Voice
AI voice calls + wallet-owned phone numbers, paid in USDC.
Outbound conversational AI calls via Bland.ai, and dedicated US/CA phone numbers via Twilio. Numbers auto-register with Bland on purchase so they can be used as outbound caller-ID. Carrier and fraud lookups round it out. Every endpoint pay-per-use.
Every call uses a phone number you own. Pay $5.00 once for a 30-day US/CA number, then place unlimited AI calls at $0.54 each with that number as your caller-ID. No number = no call.
Number provisioning is currently limited to US and Canada. SMS is not offered — A2P 10DLC registration adds 1–4 week onboarding friction. Inbound (receiving calls) isn't enabled yet; this is outbound-only for now.
What Agents Use It For
Anywhere your agent needs to reach a human in real time — verification callbacks, appointment reminders, voice surveys, automated outbound — without standing up telephony infrastructure or signing carrier contracts.
Endpoints & Pricing
All endpoints are 402-gated. Send a request without payment to receive payment requirements, then re-send with an x402 signature attached. Settlement happens after the upstream Twilio or Bland call succeeds — failed upstream calls are not charged.
| Method | Endpoint | Price | Purpose |
|---|---|---|---|
| POST | /v1/voice/call | $0.54 | Outbound AI conversation call (Bland.ai). Defaults to 5 min, max 30 min. |
| GET | /v1/voice/call/{call_id} | free | Poll call status, duration, transcript, and recording URL. |
| POST | /v1/phone/numbers/buy | $5.00 | Provision a dedicated US/CA number, wallet-bound for 30 days. |
| POST | /v1/phone/numbers/renew | $5.00 | Extend the lease on a provisioned number by 30 days. |
| POST | /v1/phone/numbers/list | $0.001 | List active numbers owned by your wallet. |
| POST | /v1/phone/numbers/release | free | Release a provisioned number back to the Twilio pool. |
| POST | /v1/phone/lookup | $0.01 | Carrier identification + line type (landline, mobile, VoIP). |
| POST | /v1/phone/lookup/fraud | $0.05 | Lookup + fraud signals (SIM swap, call forwarding). |
Quick Start — Your First AI Call
Total spend for the round trip: $5.54 USDC ($5.00 for a 30-day number + $0.54 per call). Polling for the transcript is free.
Buy a number ($5.00, once per 30 days)
The number is leased to your wallet for 30 days and auto-registered with Bland so it can be used as outbound caller-ID.
# Send unpaid; server returns 402 with payment requirements
curl -X POST https://blockrun.ai/api/v1/phone/numbers/buy \
-H "Content-Type: application/json" \
-d '{"country":"US","areaCode":"415"}'
# Sign EIP-3009 USDC transfer from your wallet,
# then replay with the signed X-Payment header.
# Response:
# {
# "phone_number": "+14155551234",
# "expires_at": "2026-06-15T00:00:00.000Z",
# "chain": "base",
# "message": "Number provisioned for 30 days..."
# }Place the AI call ($0.54 flat, max 30 min)
from is required and must be a number your wallet owns. task is plain English — describe what the AI should say and do.
curl -X POST https://blockrun.ai/api/v1/voice/call \
-H "Content-Type: application/json" \
-d '{
"to": "+12025551234",
"from": "+14155551234",
"task": "Hi, this is Maya from BlockRun. Confirm tomorrow at 3pm and ask the recipient to press 1 to confirm or 2 to reschedule. Keep it under 60 seconds.",
"voice": "maya",
"max_duration": 5
}'
# Response (after settlement):
# {
# "call_id": "0721a3f8-9ae6-...",
# "status": "success",
# "poll_url": "https://blockrun.ai/api/v1/voice/call/0721a3f8-...",
# "message": "Call initiated. Poll poll_url for status, transcript, and recording."
# }Poll for the transcript (free)
Status, duration, full transcript, recording URL, and whether a human or voicemail picked up. No payment needed.
curl https://blockrun.ai/api/v1/voice/call/0721a3f8-...
# Response (when completed):
# {
# "status": "completed",
# "call_length": 0.75, // minutes
# "answered_by": "human", // or "voicemail" / "no-answer"
# "from": "+14155551234",
# "to": "+12025551234",
# "concatenated_transcript": "...",
# "recording_url": "https://..."
# }Use From Your Tooling
Don't want to sign x402 payloads yourself? Pick a client that handles wallet signing automatically:
Install once, then ask Claude / Cursor: "use blockrun_phone to buy a US number and call +1…"
claude mcp add blockrun --transport http \
https://mcp.blockrun.ai/mcpTool: blockrun_phone · actions: numbers_buy, voice_call, voice_status, numbers_list, lookup, …
Wallet loaded from ~/.blockrun/.session. SDK handles 402 + signing for any raw endpoint.
pip install blockrun-llm
# or
npm install @blockrun/llmUse client.requestWithPaymentRaw("/v1/phone/numbers/buy", { country: "US" }) for any endpoint.
Common Pitfalls
Twilio + Bland delivered the call, but the recipient's carrier sent it straight to voicemail without ringing. Two usual causes: (a) “Silence Unknown Callers” is enabled on the recipient's iPhone — add the number to contacts as a workaround; (b) US carrier spam filtering on fresh Twilio numbers. For production, register the number with the Free Caller Registry (free, 1–3 days) so T-Mobile / AT&T / Verizon stop treating it as “Spam Likely”.
Means the number wasn't registered with Bland. Any number bought via numbers/buy is auto-registered — if you bought before that auto-step shipped, just numbers/release + numbers/buy again.
BlockRun is solvent — the backing Bland.ai account ran out. Resolves automatically once topped up. (Not your problem; report so we can refill.)
Bland auto-detects voicemail and ends the call to avoid leaving a recorded message. Expected behavior — the recipient simply didn't answer. If you want Bland to leave a voicemail message, that's a separate “voicemail message” feature you'd have to opt into in the task prompt.
Behind the Scenes
Powers number search, purchase, lease management, release, and carrier + fraud lookups. We absorb Twilio's per-month carrier fee in the $5 number price.
twilio.comPowers the actual voice AI — STT, LLM, TTS, interruption detection, voicemail handling. Your Twilio numbers are imported into Bland on purchase so they can be used as outbound caller-ID (BYOT).
bland.aiGet Started
All you need is a USDC-funded wallet on Base or Solana. Hit any endpoint, get a 402, attach payment, get the response.