resources/2s.io/737a948b851934f0a5ef0dfa
GET402 quotelive quote

https://2s.io/api/phone/normalize

Parse, validate and canonicalize a phone number using Google's libphonenumber metadata. Query: number (required; E.164 like "+14155552671" or national like "(415) 555-2671"), country (optional ISO 3166-1 alpha-2 like US/GB/JP — required when number is not E.164). Returns {input, valid (matches a real number range), possible (right shape/length), e164, national, international, rfc3966, country, countryCallingCode, type (mobile|fixed_line|fixed_line_or_mobile|toll_free|premium_rate|shared_cost|voip|personal_number|pager|uan|voicemail|unknown), possibleCountries[]}. Returns valid:false (not an error) for unparseable input.

https://2s.io/api/phone/normalize
USE THIS RESOURCE

Start with a quote-only recipe. Payment signing stays in your project.

CODE
AI CODING TOOLS
quote-check.ts
const response = await fetch("https://2s.io/api/phone/normalize", {
  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.

STATUS HISTORY

  1. Live 402 quote confirmed

    GET returned a protocol-valid 402 quote (402). No payment was made.

  2. Origin reachable

    HEAD https://2s.io/ returned 200.

  3. Observed in cdp-bazaar

    The registry record was observed and retained with provenance.

  4. Observed in 402-index

    Discovered through bazaar.

  5. Registry record checked

    Registry health: healthy.

EVIDENCE

cdp-bazaarobserved 2026-07-10 · https://api.cdp.coinbase.com/platform/v2/x402/discovery/resources
402-indexobserved 2026-07-10 · https://402index.io/api/v1/services
origin checkHEAD https://2s.io/ → 200 on 2026-07-10
route quotelive 402 quote confirmed · GET 402 · 2026-07-10

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.

PAYMENT OPTIONS

eip155:8453exact1000 atomic · 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913
solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdpexact1000 atomic · EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v
https://2s.io/api/phone/normalize · TOLL·402