Vend API Merchant - Nano-settled pay-per-call APIs
APIs web de pago por llamada liquidadas en Nano (XNO): extracción de URL, búsqueda web, verificación de enlaces, inteligencia de dominios, geoip. Sin registro ni clave API; cada llamada cuesta 0.0001-0.0005 XNO.
Servidor MCP alojado
npx add-mcp 'https://extract.paypercall.dev/mcp'Se instala en Claude Code, Codex, Cursor y más
Documentación
Vend — Mercader API Autónomo
APIs de pago por llamada liquidadas en Nano (XNO). Sin registro, sin claves API — solo HTTP 402 con un desafío x402 v2.
Endpoints
| Endpoint | Precio (XNO) | Qué hace |
|---|---|---|
GET /api/v1/extract?url= | 0.0001 | Extrae texto/markdown limpio de cualquier página web |
GET /api/v1/check-link?url= | 0.0001 | Verifica estado HTTP, tiempo de respuesta, cadena de redirecciones |
GET /api/v1/domain-info?domain= | 0.0005 | Inteligencia completa de dominio: DNS, WHOIS, SSL, cabeceras HTTP |
GET /api/v1/web-search?q= | 0.0001 | Búsqueda web vía DuckDuckGo — títulos, URLs, fragmentos |
GET /api/v1/geoip?ip= | 0.0001 | Geolocalización IP — país, ciudad, coordenadas, ISP, ASN |
GET /api/v1/nano-info?account= | 0.0005 | Inteligencia de cuenta Nano — saldo, representante, número de bloques, frontera, peso, pendientes |
Guía rápida para compradores
BUYERS_GUIDE.md — guía completa paso a paso con instrucciones para curl, Python, JavaScript y wallets.
La versión corta: llama a cualquier endpoint -> obtén 402 -> envía Nano -> reintenta con el hash del bloque.
Cómo funciona (flujo del comprador)
1. GET /api/v1/extract?url=https://example.com
→ HTTP 402 with x402 payment challenge
2. Send 0.0001 XNO to nano_1yo6c1t64ahfjdw1dxizmbbnpdmbrckwhw9phbg5pdkeubrizga4qhnjmnx7
→ Get back a 64-char block hash
3. GET /api/v1/extract?url=https://example.com -H "X-PAYMENT: <block-hash>"
→ HTTP 200 with the extracted text
Ejemplo en Python
import httpx
# Step 1: Probe unpaid
resp = httpx.get("https://search.paypercall.dev/api/v1/web-search?q=nano")
assert resp.status_code == 402
challenge = resp.json()
# Step 2: Extract payment info
accept = challenge["accepts"][0]
print(f"Pay {challenge['price_xno']} XNO to {accept['payTo'][:15]}...")
# Step 3: Send Nano payment, get block hash (use your wallet)
# Step 4: Retry with payment
result = httpx.get(
"https://search.paypercall.dev/api/v1/web-search?q=nano",
headers={"X-PAYMENT": "your-64-char-block-hash"}
)
print(result.json())
Consulta examples/python-buyer.py para un script completo con manejo de errores.
Conformidad
Todos los endpoints pasan el Stelar x402 Doctor con 100.0/A:
- extract: https://api.stelardigital.com/doctor?url=https://extract.paypercall.dev/api/v1/extract
- check-link: https://api.stelardigital.com/doctor?url=https://check.paypercall.dev/api/v1/check-link
- domain-info: https://api.stelardigital.com/doctor?url=https://domain.paypercall.dev/api/v1/domain-info
- web-search: https://api.stelardigital.com/doctor?url=https://search.paypercall.dev/api/v1/web-search
- geoip: https://api.stelardigital.com/doctor?url=https://geoip.paypercall.dev/api/v1/geoip
- nano-info:
https://extract.paypercall.dev/api/v1/nano-info(el DNS de nano.paypercall.dev aún apunta a un despliegue inactivo, por lo que cada URL anunciada nombra a este host)
Desafío x402 v2 tanto en cabecera como en cuerpo. Subdominios por endpoint. Esquema de entrada Bazaar en cada endpoint.
Descubrimiento
- Manifiesto x402:
https://extract.paypercall.dev/.well-known/x402(también en check, domain, search) - Especificación OpenAPI:
https://extract.paypercall.dev/openapi.json(también en check, domain, search) - agent-tools.cloud: https://agent-tools.cloud/services/extract-paypercall-dev-sub822
Ejecución local
# Our package is not on PyPI yet (the `vend` name on PyPI is an unrelated packaging tool).
# Run from this repo instead:
uv sync
export VEND_WALLET_ADDRESS="nano_..."
uv run python -m vend
Licencia
MIT