Vend API Merchant - Nano-settled pay-per-call APIs
APIs web pay-per-call liquidadas em Nano (XNO): extração de URL, busca na web, verificação de links, inteligência de domínio, geoip. Sem cadastro ou chave de API; cada chamada custa 0,0001-0,0005 XNO.
Servidor MCP hospedado
npx add-mcp 'https://extract.paypercall.dev/mcp'Instala no Claude Code, Codex, Cursor e outros
Documentação
Vend — Merchant Autônomo de APIs
APIs pagas por chamada liquidadas em Nano (XNO). Sem cadastro, sem chaves de API — apenas HTTP 402 com desafio x402 v2.
Endpoints
| Endpoint | Preço (XNO) | O que faz |
|---|---|---|
GET /api/v1/extract?url= | 0.0001 | Extrai texto/markdown limpo de qualquer página web |
GET /api/v1/check-link?url= | 0.0001 | Verifica status HTTP, tempo de resposta, cadeia de redirecionamentos |
GET /api/v1/domain-info?domain= | 0.0005 | Inteligência completa de domínio: DNS, WHOIS, SSL, cabeçalhos HTTP |
GET /api/v1/web-search?q= | 0.0001 | Busca web via DuckDuckGo — títulos, URLs, trechos |
GET /api/v1/geoip?ip= | 0.0001 | Geolocalização de IP — país, cidade, coordenadas, ISP, ASN |
GET /api/v1/nano-info?account= | 0.0005 | Inteligência de conta Nano — saldo, representante, contagem de blocos, fronteira, peso, pendências |
Guia rápido para compradores
BUYERS_GUIDE.md — passo a passo completo com instruções para curl, Python, JavaScript e carteira.
Versão resumida: chame qualquer endpoint -> receba 402 -> envie Nano -> tente novamente com o hash do bloco.
Como funciona (fluxo do 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
Exemplo em 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())
Veja examples/python-buyer.py para um script completo e funcional com tratamento de erros.
Conformidade
Todos os endpoints passam no Stelar x402 Doctor com nota 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(o DNS de nano.paypercall.dev ainda aponta para uma implantação inativa, então todas as URLs divulgadas usam este host)
Desafio x402 v2 tanto no cabeçalho quanto no corpo. Subdomínios por endpoint. Esquema de entrada Bazaar em todos os endpoints.
Descoberta
- Manifesto x402:
https://extract.paypercall.dev/.well-known/x402(também em check, domain, search) - Especificação OpenAPI:
https://extract.paypercall.dev/openapi.json(também em check, domain, search) - agent-tools.cloud: https://agent-tools.cloud/services/extract-paypercall-dev-sub822
Executando localmente
# 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
Licença
MIT