https://api.phoneagent.xyz/countries
PhoneAgent — countries with rentable SMS phone numbers for AI agents. Returns 190+ supported countries, each with the number of services offered and the cheapest price tier ($1, $2, or $5 USDC). Add ?service=<alias> (e.g. tg, wa, go, zo for OpenAI, other for any platform) to see which countries carry that service with live price and inventory pool. Companion route GET /services lists all 1,000+ service aliases; GET /services?country=<iso> lists what a single country offers. Pair with POST /rent
Start with a quote-only recipe. Payment signing stays in your project.
const response = await fetch("https://api.phoneagent.xyz/countries", {
method: "GET",
});
console.log(response.status);
console.log(Object.fromEntries(response.headers));
console.log((await response.text()).slice(0, 1000));
// A valid 402 is a quote, not a completed paid call.This sends no payment. Inspect the 402 response before adding a wallet-enabled client.
- Exact route checked
skipped origin unreachable · origin-check:ERR_SSL_PACKET_LENGTH_TOO_LONG
- Origin unavailable
ERR_SSL_PACKET_LENGTH_TOO_LONG
- Observed in cdp-bazaar
The registry record was observed and retained with provenance.
- Observed in 402-index
Discovered through bazaar.
- Registry record checked
Registry health: healthy.
EVIDENCE
Each record has an exact-route quote outcome. Unresolved templates and potentially mutating methods are labeled instead of being invoked without provider-specific test input. A quote is still separate from a settled paid call.