BlockRun
Marketplace

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.

HOW IT WORKS

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.

8 endpoints live on Base + Solana
Real-time conversation
Wallet-bound numbers
No account required
US/CA ONLY · NO SMS

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.

AI Voice Calls
Outbound conversational AI calls powered by Bland.ai. The agent dials, speaks, listens, and responds in real time based on a natural-language task prompt.
Wallet-Owned Numbers
Provision a dedicated US or Canadian number bound to your wallet for 30 days. Use it as caller ID on outbound calls via Bland (BYOT auto-imported on purchase).
Carrier + Fraud Lookup
Identify line type, carrier, and risk signals like SIM swap and call forwarding. Useful for KYC, anti-fraud, or routing decisions before calling.
Pay-per-Use, No Accounts
Every endpoint settled in USDC via x402 on Base or Solana. No API keys, no monthly subscription for callers — just attach payment to the request.

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.

MethodEndpointPricePurpose
POST/v1/voice/call$0.54Outbound AI conversation call (Bland.ai). Defaults to 5 min, max 30 min.
GET/v1/voice/call/{call_id}freePoll call status, duration, transcript, and recording URL.
POST/v1/phone/numbers/buy$5.00Provision a dedicated US/CA number, wallet-bound for 30 days.
POST/v1/phone/numbers/renew$5.00Extend the lease on a provisioned number by 30 days.
POST/v1/phone/numbers/list$0.001List active numbers owned by your wallet.
POST/v1/phone/numbers/releasefreeRelease a provisioned number back to the Twilio pool.
POST/v1/phone/lookup$0.01Carrier identification + line type (landline, mobile, VoIP).
POST/v1/phone/lookup/fraud$0.05Lookup + 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.

01

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..."
# }
02

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."
# }
03

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:

Claude Code / Cursor (MCP)

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/mcp

Tool: blockrun_phone · actions: numbers_buy, voice_call, voice_status, numbers_list, lookup, …

Python / TypeScript SDK

Wallet loaded from ~/.blockrun/.session. SDK handles 402 + signing for any raw endpoint.

pip install blockrun-llm
# or
npm install @blockrun/llm

Use client.requestWithPaymentRaw("/v1/phone/numbers/buy", { country: "US" }) for any endpoint.

Common Pitfalls

📵 The phone didn't ring

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”.

❌ “Invalid ‘from’ — you might not own this number.”

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.

💸 “Insufficient balance.”

BlockRun is solvent — the backing Bland.ai account ran out. Resolves automatically once topped up. (Not your problem; report so we can refill.)

📞 Got voicemail, AI hung up immediately

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

Twilio

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.com
Bland.ai

Powers 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.ai

Get Started

All you need is a USDC-funded wallet on Base or Solana. Hit any endpoint, get a 402, attach payment, get the response.