Recupera l'accesso
Updated:
Hai perso il token di accesso di un ordine? Dimostra di essere il titolare del portafoglio utilizzato per il pagamento firmando un messaggio monouso e ottieni tutti gli ordini del portafoglio con i nuovi token di accesso, i pagamenti ancora in corso e il saldo.
I vecchi token continuano a funzionare a meno che non li revochi.
Il flusso
Accetta una sfida
POST /wallet/challengeRestituisce un messaggio di testo (EIP-4361) per il tuo portafoglio.
Firma il messaggio
personal_sign(EIP-191) dimessageesattamente come ricevuto. La firma non comporta alcun trasferimento di fondi.Recupera
POST /wallet/recoverRestituisce gli ordini del portafoglio con i nuovi token di accesso.
Accetta una sfida
Corpo della richiesta
Nome | Tipo | Descrizione |
|---|---|---|
indirizzo | Stringa | Obbligatorio. Indirizzo del portafoglio, |
scopo | Stringa |
|
Viene inviata una sfida a un indirizzo qualsiasi: la risposta non indica se l’indirizzo abbia ordini.
Esempio
POST https://proxy-seller.com/api/x402/v1/wallet/challenge
{
"address": "0x1111111111111111111111111111111111111111",
"purpose": "recover"
}Risposta
200: OK
{
"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"
}
}Una sfida ha una durata di 5 minuti e può essere utilizzata una sola volta. I portafogli basati su smart contract sono supportati tramite EIP-1271 quando contract_wallets è eip1271.
Recupera
Corpo della richiesta
Nome | Tipo | Descrizione |
|---|---|---|
challenge_id | Stringa | Obbligatorio. ID di una sfida con |
firma | Stringa | Obbligatorio. Firma di |
limite | Numero intero | Numero di voci per pagina: da 1 a 200, 50 per impostazione predefinita |
offset | Numero intero | Numero di pagina, a partire da 0 |
revoke_existing | Booleano | Revoca tutti i token di questo portafoglio emessi prima della creazione di questa sfida |
Ogni pagina richiede una nuova sfida. Invia revoke_existing: true solo nella prima pagina: in una pagina successiva ciò annullerebbe i gettoni appena ricevuti nelle pagine precedenti.
Esempio
POST https://proxy-seller.com/api/x402/v1/wallet/recover
{
"challenge_id": "chl_01JZ9E5F7G9H1J3K5M7N9P1Q3R",
"signature": "0x9a7c…1c",
"limit": 50,
"offset": 0
}Risposta
200: OK
{
"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
}
}Nome | Descrizione |
|---|---|
account |
|
ordini | Ordini del portafoglio, in ordine cronologico (dal più recente al più vecchio), con i nuovi token. Non viene emesso alcun token quando il periodo di validità dell’ordine è scaduto (90 giorni dopo la scadenza) |
pending_payments | Pagamenti il cui esito non è ancora noto o che sono in fase di revisione: |
ricariche | Fino a 20 ricariche recenti con nuovi gettoni |
prelievi | Fino a 20 richieste di prelievo più recenti dal portafoglio, in ordine cronologico (dalla più recente alla più vecchia): |
impaginazione |
|
avviso | Solo per portafogli bloccati: gli ordini sono elencati senza token |
401: Accesso non autorizzato — la firma non proviene dall’indirizzo della sfida.
404: Pagina non trovata
{
"error": "not_found",
"message": "Challenge not found",
"retryable": false,
"retry_action": "abandon",
"detail": "challenge is unknown, expired or already used"
}La sfida è sconosciuta, scaduta, già utilizzata o assegnata per withdraw. Prendine uno nuovo.