Recuperar acesso
Atualizado:
Perdeu o token de acesso de um pedido? Comprove que você é o proprietário da carteira de pagamentos assinando uma mensagem única e obtenha todos os pedidos da carteira com novos tokens de acesso, os pagamentos ainda em andamento e o saldo.
Os tokens antigos continuam funcionando, a menos que você os revogue.
O fluxo
Aceite um desafio
POST /wallet/challengeRetorna uma mensagem de texto (EIP-4361) para sua carteira.
Assine a mensagem
personal_sign(EIP-191) demessageexatamente como recebido. A assinatura não movimenta fundos.Recuperar
POST /wallet/recoverRetorna as ordens da carteira com novos tokens de acesso.
Aceite um desafio
Corpo da solicitação
Nome | Tipo | Descrição |
|---|---|---|
endereço | String | Obrigatório. Endereço da carteira, |
objetivo | String |
|
Um desafio é enviado a qualquer endereço: a resposta não indica se o endereço possui ordens.
Exemplo
POST https://proxy-seller.com/api/x402/v1/wallet/challenge
{
"address": "0x1111111111111111111111111111111111111111",
"purpose": "recover"
}Resposta
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"
}
}Um desafio tem duração de 5 minutos e pode ser usado uma vez. Carteiras de contratos inteligentes são compatíveis com o EIP-1271 quando contract_wallets é eip1271.
Recuperar
Corpo da solicitação
Nome | Tipo | Descrição |
|---|---|---|
challenge_id | String | Obrigatório. ID de um desafio com |
assinatura | String | Obrigatório. Assinatura de |
limite | Inteiro | Número de itens por página: 1–200, com 50 como padrão |
offset | Inteiro | Deslocamento da página, a partir de 0 |
revoke_existing | Booleano | Revogue todos os tokens desta carteira emitidos antes da criação deste desafio |
Cada página precisa de um novo desafio. Envie revoke_existing: true apenas na primeira página: em uma página posterior, isso revogaria os tokens que você acabou de receber nas páginas anteriores.
Exemplo
POST https://proxy-seller.com/api/x402/v1/wallet/recover
{
"challenge_id": "chl_01JZ9E5F7G9H1J3K5M7N9P1Q3R",
"signature": "0x9a7c…1c",
"limit": 50,
"offset": 0
}Resposta
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 | Descrição |
|---|---|
conta |
|
pedidos | Pedidos da carteira, os mais recentes primeiro, com novos tokens. Um token não é emitido quando o período de acesso do pedido termina (90 dias após seu vencimento) |
pending_payments | Pagamentos cujo resultado ainda não é conhecido ou que estão em análise: |
topups | Até 20 recargas mais recentes com novos tokens |
retiradas | Até 20 solicitações de saque mais recentes da carteira, com as mais recentes em primeiro lugar: |
paginação |
|
aviso | Apenas para carteiras bloqueadas: os pedidos são listados sem tokens |
401: Acesso não autorizado — a assinatura não é do endereço do desafio.
404: Não encontrado
{
"error": "not_found",
"message": "Challenge not found",
"retryable": false,
"retry_action": "abandon",
"detail": "challenge is unknown, expired or already used"
}O desafio é desconhecido, expirou, já foi usado ou emitido para withdraw. Pegue um novo.