Endpoint
GET /api/reserve/brief — x402 v2 Exact,
$0.01 USDC en Base (eip155:8453, amount
atómico 10000). Sin pago responde HTTP 402 +
PAYMENT-REQUIRED. resource ausente o que
no sea URL http(s) responde 400
{ error, hint } antes del cobro.
Un resource no indexado no es 404: v1 siempre devuelve un brief
genérico.
Probe unpaid (debe ser 402 tras el deploy):
curl -i 'https://lupariel.com/api/reserve/brief?resource=https%3A%2F%2Flupapago.com%2Fapi%2Ffee%2Fquote%3Fpsp%3Dmobbex%26amount%3D50000%26cuotas%3D3&amount=0.10&lang=es'
Lookup sigue en
/api/lookup. Liveness sigue
en
/api/liveness. HTML y
/rieles.json no cambian.
Query
-
resource(requerido): URL http(s) a briefear. -
amount(opcional, default0.10): monto decimal del hold descrito. No es el precio del SKU. -
asset(defaultUSDC),network(defaulteip155:8453),lang(es|en, defaultes).
Respuesta 200 (post-pago)
{
"scheme": "auth-capture",
"resource": "https://lupapago.com/api/fee/quote?psp=mobbex&amount=50000&cuotas=3",
"network": "eip155:8453",
"asset": "USDC",
"amount": "0.10",
"flow": {
"phases": ["authorize", "capture", "void", "reclaim", "refund"],
"authorize": "Autoriza / retiene el monto (hold). No transfiere inventario ni completa el settle.",
"capture": "Captura el monto retenido tras cumplir. El settle real es COMPLETED (o el status de sesión), no el HTTP 200 del authorize.",
"void": "Libera el hold sin capturar (cancelación del vendedor).",
"reclaim": "El comprador reclama el hold si expiró sin capture ni void.",
"refund": "Reembolso después de un capture."
},
"autoCapture": false,
"deadlines": { "captureDeadline": null, "refundDeadline": null },
"settlementTruth": "COMPLETED (o status de sesión), no el HTTP 200 del authorize",
"notInventory": true,
"summary": "Reserva fondos, no inventario. Hold → capture|void|reclaim|refund.",
"ruleset": "x402-auth-capture-brief-v1",
"examples": {
"holdThenCapture": "authorize 0.10 USDC → fulfill → capture",
"holdThenVoid": "authorize → cancel → void",
"holdExpireReclaim": "authorize → timeout → reclaim"
}
} Qué no es
- No ejecuta authorize/capture/void on-chain.
- No escribe estado de reserva ni escrow.
- No es inventario.
notInventory: true. - No reemplaza a
/api/lookup, rail-matrix ni liveness.
Discovery: /openapi.json y
/.well-known/x402.
Facilitator por defecto: PayAI
(https://facilitator.payai.network).