Check if a phone number supports iMessage/FaceTime for $0.05 per lookup via USDC micropayment.
What it does
StablePhone's `/api/lookup` endpoint lets you check whether a given US/Canadian phone number is registered for iMessage and FaceTime. You POST a phone number in E.164 format, pay $0.05 in USDC (settled on Base via x402 or Tempo via MPP), and receive a JWT token. The lookup is asynchronous (typically 30–90 seconds). You poll `GET /api/lookup/status?token=<jwt>` (authenticated via SIWX) until the result resolves to `complete`, at which point you get iMessage availability (`available`, `unavailable`, or `unknown`), FaceTime availability, carrier information (carrier name and number type), and country metadata. Results for the same number are cached for approximately one hour, so repeated lookups within that window don't incur additional charges. Tokens expire after 60 minutes.
This endpoint is part of the broader StablePhone API, which also offers AI-powered phone calls ($0.54/call), dedicated phone number provisioning ($20.00 for 30 days), and number top-ups ($15.00 per 30-day extension). All paid endpoints use x402 or MPP payment protocols — no API keys or accounts required. Free status-polling endpoints use SIWX (Sign-In With X) wallet authentication, restricting access to the wallet that initiated the request.
The endpoint accepts only POST requests. The probe returned 405 on HEAD and GET, which is expected since the OpenAPI spec defines it as POST-only. The endpoint is live and correctly configured.
Capabilities
Use cases
- —Verify whether a contact supports iMessage before sending a message via Apple's ecosystem
- —Determine if a phone number is a mobile, landline, or VoIP line via carrier data
- —Build lead qualification workflows that filter contacts by iMessage/FaceTime availability
- —Automate contact enrichment pipelines that tag numbers with Apple service support
- —Check FaceTime availability before attempting a video call
Fit
Best for
- —Agents or bots that need to route messages between iMessage and SMS
- —Contact enrichment and lead scoring pipelines
- —Developers building cross-platform messaging apps that adapt to Apple service availability
- —Bulk phone number classification (mobile vs landline vs VoIP)
Not for
- —Real-time synchronous lookups requiring sub-second responses (this is async, 30–90s)
- —Lookups outside US/Canada (phone_number pattern requires +1 prefix)
- —Free or unauthenticated usage — requires USDC wallet and x402/MPP payment
Quick start
# 1. POST to initiate lookup (pay $0.05 USDC via x402/MPP)
curl -X POST https://stablephone.dev/api/lookup \
-H 'Content-Type: application/json' \
-d '{"phone_number": "+14155551234"}'
# Returns 402 → pay → returns {"token": "<jwt>"}
# 2. Poll for results (SIWX auth required)
curl 'https://stablephone.dev/api/lookup/status?token=<jwt>'Example
Request
{
"phone_number": "+14155551234"
}Response
{
"status": "complete",
"carrier": {
"carrier": "T-Mobile",
"number_type": "mobile"
},
"country": {
"flag": "🇺🇸",
"iso2": "US",
"name": "United States"
},
"facetime": "available",
"imessage": "available",
"checked_at": "2025-06-14",
"phone_number": "+14155551234"
}Endpoint
Quality
Full OpenAPI schema with request/response definitions, detailed guidance docs, clear pricing ($0.05), and well-documented async polling flow. The probe returned 405 because HEAD/GET were tried on a POST-only endpoint, which is expected behavior — not a liveness issue. Docked slightly because no dedicated docs page exists (404) and no live 402 challenge was captured for this specific endpoint.
Warnings
- —Probe returned 405 because HEAD/GET were used on a POST-only endpoint; this does not indicate the endpoint is down
- —The /docs page returns 404 — all documentation comes from the OpenAPI spec and llms.txt guidance
- —Phone number pattern restricts to +1 (US/CA) numbers only
- —Lookup is async (30-90 seconds); token expires after 60 minutes
Citations
- —POST /api/lookup costs $0.05 per requesthttps://stablephone.dev
- —Lookup is async, typically 30-90 seconds, returns a JWT token for pollinghttps://stablephone.dev
- —Results include iMessage, FaceTime availability, carrier info, and country metadatahttps://stablephone.dev
- —Same number submitted within ~1 hour reuses cached result at no extra chargehttps://stablephone.dev
- —Payment via x402 (USDC on Base) or MPP (Tempo); free polling via SIWXhttps://stablephone.dev
- —Phone number must be E.164 format matching +1 followed by 10 digitshttps://stablephone.dev