Wallet Infrastructure
Wallet Infrastructure
Recoveries

Start recovery

POST
/v1/recoveries

Requires scope recoveries:create.

Authorization

ApiKey
headerAuthorizationBearer <sk_test_ or sk_live_ key>

Your sk_live_ / sk_test_ API key

Header Parameters

Idempotency-Key?string

Idempotency key for safe start retries (keyed with walletId)

Request Body

application/json
  1. body
walletId*string
Formatuuid
address*string
Match^0x[0-9a-fA-F]{40}$
chains*array<>
Items1 <= items
newPasskey*
verification?

A business attestation over the recovery.

recoveryToken?string

A single-use token from POST /v1/recoveries/challenge/verify, proving the customer holds the recovery code.

Length1 <= length
recoveryContact?string

The customer's recovery email address, recorded for future recoveries.

Formatemail
Lengthlength <= 320

Response Body

201application/json

Recovery started

TypeScript Definitions

Use the response body type in TypeScript.

data*
status*number
success*boolean
401application/json

The Authorization header is missing, malformed, or the API key is unknown or revoked

TypeScript Definitions

Use the response body type in TypeScript.

data*
status*number
success*boolean
429application/json

The API key exceeded its request budget for the window

TypeScript Definitions

Use the response body type in TypeScript.

data*
status*number
success*boolean

Language

curl -X POST 'https://api.pilot.shiga.io/v1/recoveries' \  -H 'Authorization: Bearer sk_test_...' \  -H 'Content-Type: application/json' \  -d '{  "walletId": "0ecad4a2-3549-43fb-807e-9ff033247480",  "address": "string",  "chains": [    "ethereum"  ],  "newPasskey": {    "x": "string",    "y": "string",    "credentialId": "string",    "credentialPublicKey": "string",    "rpId": "string",    "origins": [      "string"    ]  }}'
Example Response
{  "data": {    "walletId": "0ecad4a2-3549-43fb-807e-9ff033247480",    "address": "string",    "chains": [      "ethereum"    ],    "newPasskey": {      "x": "string",      "y": "string",      "credentialId": "string",      "passkeyBlob": "string",      "credentialPublicKey": "string",      "rpId": "string",      "origins": [        "string"      ],      "counter": 0,      "transports": [        "string"      ]    },    "verification": {      "payload": {        "businessId": "string",        "customerId": "string",        "walletId": "string",        "newSignerAddress": "string",        "chains": [          "string"        ],        "intent": "recovery",        "nonce": "string",        "issuedAt": 0,        "expiresAt": 0      },      "signatureB64": "string"    },    "recoveryToken": "string",    "recoveryContact": "user@example.com"  },  "status": 201,  "success": true}