resources/2s.io/9325fcb614cd225e5773faa5
GET402 quotelive quote

https://2s.io/api/geo/ip

Geolocate a single IPv4 or IPv6 address. Returns country (name + ISO code), region (name + code), city, ZIP, lat/lon, timezone, ISP, organization, and AS number + name. For bulk lookups (up to 100 IPs in one call) use /api/ipinfo/bulk instead. Lat/lon precision is city-level, not GPS.

https://2s.io/api/geo/ip
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/geo/ip", {
  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/geo/ip · TOLL·402