Recuperar acceso
Actualizado:
¿Has perdido el token de acceso de un pedido? Demuestra que eres el titular de la cartera con la que se realiza el pago firmando un mensaje de un solo uso y obtén todos los pedidos de la cartera con nuevos tokens de acceso, los pagos aún en curso y el saldo.
Los tokens antiguos siguen funcionando a menos que los revoques.
El proceso
Acepta un reto
POST /wallet/challengeDevuelve un mensaje de texto (EIP-4361) para tu monedero.
Firma el mensaje
personal_sign(EIP-191) demessageexactamente tal y como se ha recibido. La firma no implica ninguna transferencia de fondos.Recuperar
POST /wallet/recoverDevuelve los pedidos de la cartera con nuevos tokens de acceso.
Acepta un reto
Cuerpo de la solicitud
Nombre | Tipo | Descripción |
|---|---|---|
dirección | Cadena | Obligatorio. Dirección de monedero, |
Objetivo | Cadena |
|
Se envía un desafío a cualquier dirección: la respuesta no indica si la dirección tiene órdenes.
Ejemplo
POST https://proxy-seller.com/api/x402/v1/wallet/challenge
{
"address": "0x1111111111111111111111111111111111111111",
"purpose": "recover"
}Respuesta
200: Correcto
{
"challenge_id": "chl_01JZ9E5F7G9H1J3K5M7N9P1Q3R",
"address": "0x1111111111111111111111111111111111111111",
"purpose": "recover",
"message": "proxy-seller.com wants you to sign in with your Ethereum account:\n0x1111111111111111111111111111111111111111\n\nRecover access to orders paid from this wallet at Proxy-Seller. Signing does not move funds.\n\nURI: https://proxy-seller.com/api/x402/v1/wallet/recover\nVersion: 1\nChain ID: 8453\nNonce: sDYRsY6sbhBxxPSC\nIssued At: 2026-11-02T12:00:00Z\nExpiration Time: 2026-11-02T12:05:00Z\nRequest ID: chl_01JZ9E5F7G9H1J3K5M7N9P1Q3R",
"expires_at": "2026-11-02T12:05:00Z",
"signature": {
"type": "eip191_personal_sign",
"contract_wallets": "eip1271"
}
}Un desafío tiene una duración de 5 minutos y se puede utilizar una sola vez. Las carteras de contratos inteligentes son compatibles a través de EIP-1271 cuando contract_wallets es eip1271.
Recuperar
Cuerpo de la solicitud
Nombre | Tipo | Descripción |
|---|---|---|
challenge_id | Cadena | Obligatorio. ID de un desafío con |
firma | Cadena | Obligatorio. Firma de |
límite | Número entero | Número de entradas por página: 1-200; 50 por defecto. |
offset | Número entero | Número de página, a partir de 0 |
revoke_existing | Booleano | Revoca todos los tokens de este monedero emitidos antes de que se creara este reto. |
Cada página necesita un nuevo reto. Enviar revoke_existing: true solo en la primera página: en una página posterior, se anularían las fichas que acabas de recibir en las páginas anteriores.
Ejemplo
POST https://proxy-seller.com/api/x402/v1/wallet/recover
{
"challenge_id": "chl_01JZ9E5F7G9H1J3K5M7N9P1Q3R",
"signature": "0x9a7c…1c",
"limit": 50,
"offset": 0
}Respuesta
200: Correcto
{
"wallet": "0x1111111111111111111111111111111111111111",
"network": "eip155:8453",
"account": {
"type": "wallet",
"exists": true,
"status": "active",
"balance_usd": "6.40",
"email_attached": false,
"topup_url": "https://proxy-seller.com/api/x402/v1/topup",
"withdraw_url": "https://proxy-seller.com/api/x402/v1/wallet/withdraw"
},
"orders": [
{
"order_id": "ord_01JZ8Q7K5N2R4T6V8X0Z2B4D6F",
"status": "active",
"payment_state": "settled",
"summary": "2x IPv4 US, 30 days",
"amount_usd": "3.60",
"created_at": "2026-11-02T10:01:12Z",
"expires_at": "2026-12-02T23:59:59Z",
"url": "https://proxy-seller.com/api/x402/v1/orders/ord_01JZ8Q7K5N2R4T6V8X0Z2B4D6F",
"access_token": "x402_Nf5gT2hY8jU4kI1oL7pA3sD9fG6hJ0kL2zX5cV8bN4m",
"token_type": "Bearer"
}
],
"pending_payments": [],
"topups": [
{
"id": "tup_01JZ9D4E6F8G0H2J4K6M8N0P2Q",
"status": "credited",
"payment_state": "settled",
"amount_usd": "10.00",
"created_at": "2026-11-02T11:20:31Z",
"url": "https://proxy-seller.com/api/x402/v1/topup/tup_01JZ9D4E6F8G0H2J4K6M8N0P2Q",
"access_token": "x402_Rt6yU1iO7pA2sD8fG3hJ9kL4zX0cV5bN6mQ1wE7rT2y",
"token_type": "Bearer"
}
],
"withdrawals": [
{
"id": "wdr_01JZ9E8H0J2K4M6N8P0Q2R4S6T",
"status": "done",
"amount_usd": "6.40",
"address": "0x1111111111111111111111111111111111111111",
"network": "eip155:8453",
"created_at": "2026-12-03T09:14:22Z",
"tx_hash": "0x5c3e8a1f0b7d4e2c9a6f1b8d3e0c7a4f2b9e6d1c8a5f3e0b7d4c1a9f6e3b8d2c",
"sent_at": "2026-12-03T15:40:05Z",
"confirmed_at": "2026-12-03T15:43:10Z"
}
],
"pagination": {
"limit": 50,
"offset": 0,
"total": 1
}
}Nombre | Descripción |
|---|---|
cuenta |
|
pedidos | Órdenes de la cartera, ordenadas por fecha (las más recientes primero), con nuevos tokens. No se emite ningún token cuando finaliza el periodo de acceso de la orden (90 días después de su vencimiento). |
pending_payments | Pagos cuyo resultado aún se desconoce o que están en proceso de revisión: |
recargas | Hasta 20 recargas recientes con nuevas fichas |
retiradas | Hasta 20 solicitudes de retirada más recientes del monedero, ordenadas de más reciente a más antigua: |
paginación |
|
Aviso | Solo para carteras bloqueadas: los pedidos se muestran sin tokens |
401: Acceso no autorizado — La firma no procede de la dirección del desafío.
404: No encontrado
{
"error": "not_found",
"message": "Challenge not found",
"retryable": false,
"retry_action": "abandon",
"detail": "challenge is unknown, expired or already used"
}El desafío es desconocido, ha caducado, ya se ha utilizado o se ha emitido para withdraw. Consigue uno nuevo.