Overview
ToS state, global hide list, the approval-banner flag, and the
covered-access signals. Unknown wallets return defaults (empty hide
list, both covered flags false). The OpenAPI operation description identifies
approved as a legacy field that is always true; the current response schema
does not define this field. covered_access / opencover_terms_accepted are SOFT
wizard signals only; the hard covered boundary is enforced at strategy
create.
Endpoint
GET https://earn-api.quicknode.dev/functions/v1/api/v1/wallets/{addr}/prefs
Authorization
Include the published apikey header. This read request is public and does not require a SIWE signature.
Parameters
| Parameter | Location | Type | Required | Description |
|---|---|---|---|---|
| addr | path | string | Yes | Wallet address (`0x` + 40 hex). |
Example request
curl --location 'https://earn-api.quicknode.dev/functions/v1/api/v1/wallets/0x1234567890abcdef1234567890abcdef12345678/prefs' \
--header 'Accept: application/json' \
--header 'apikey: <EARN_PUBLIC_API_KEY>'
Response
| Field | Type | Required | Description |
|---|---|---|---|
| address | string | Yes | Lowercased wallet address. |
| has_agreement | boolean | Yes | Whether the wallet has recorded a ToS agreement. |
| hidden_vault_keys | array<string> | Yes | The wallet's global `chainId:0xaddress` hide list (lowercased). |
| hide_approval | boolean | Yes | Whether the wallet has dismissed the approval banner. |
| covered_access | boolean | No | Whether the wallet is on the covered-access allowlist (`approved_wallets`) and may select COVERED in the strategy wizard. A SOFT UI signal only — the hard boundary is re-checked at strategy create (`POST /v1/strategies` → 403 `covered_not_allowed`). Defaults to false on a lookup hiccup. Absent on older gateway builds. |
| opencover_terms_accepted | boolean | No | Whether the wallet has a stored OpenCover terms signature (`POST /v1/wallets/{addr}/opencover-terms`). A SOFT UI signal; the covered create re-checks it (403 `covered_terms_required`). Defaults to false on a lookup hiccup. Absent on older gateway builds. |
Example response
{
"address": "0x1234567890abcdef1234567890abcdef12345678",
"has_agreement": false,
"hidden_vault_keys": [],
"hide_approval": false,
"covered_access": false,
"opencover_terms_accepted": false
}
HTTP responses
| Status | Description |
|---|---|
| 200 | The wallet's preferences. |
| 400 | Invalid wallet address. |
| 429 | Rate limit exceeded. `Retry-After` (seconds) tells you when to retry. Reads, feedback, and push writes are keyed per IP; create/update/delete are keyed per wallet+IP; deposit/withdraw/claim calldata is keyed per strategy+IP. |
| 500 | Internal server error. |
OpenAPI source
This page is based on operation getWalletPrefs in the Earn OpenAPI 3.1 specification.