---
title: "Wallet DeFi Protocol Positions"
method: GET
path: "/gateway/v1/wallet/protocols"
tags: ["Wallet"]
---

# Wallet DeFi Protocol Positions

`GET /gateway/v1/wallet/protocols`

Returns all DeFi protocol positions for a wallet — lending, staking, LP, and farming with token breakdowns and USD values.

**Lookup:** by `address` (EVM only — 0x-prefixed hex). Solana addresses are not supported.

## Query parameters

- `address` string, required — Wallet address — must be a raw 0x-prefixed hex address, not an ENS name
- `limit` integer — Results per page
- `offset` integer — Pagination offset

## Response `200`

OK

- DataResponseWalletProtocolItem
  - `$schema` string, uri — A URL to the JSON Schema for this object.
  - `data` WalletProtocolItem[], nullable, required
    - `chain` string, required — Canonical chain name where the protocol operates
    - `logo_url` string — Protocol logo image URL
    - `positions` WalletProtocolPosition[], nullable, required — Individual positions held in this protocol
      - `balance_usd` number, double, required — Total USD value of this position
      - `borrow_tokens` WalletProtocolToken[], nullable — Tokens borrowed in this position
        - `amount` number, double, required — Token amount held in this position
        - `chain` string, required — Canonical chain name like `ethereum` or `polygon`
        - `name` string — Full token name
        - `price` number, double, required — Current token price in USD
        - `symbol` string, required — Token ticker symbol
        - `token_address` string — Token contract address
      - `lp_tokens` WalletProtocolToken[], nullable — LP tokens in this position
        - `amount` number, double, required — Token amount held in this position
        - `chain` string, required — Canonical chain name like `ethereum` or `polygon`
        - `name` string — Full token name
        - `price` number, double, required — Current token price in USD
        - `symbol` string, required — Token ticker symbol
        - `token_address` string — Token contract address
      - `name` string, required — Position name or type like `Lending` or `Staking`
      - `reward_tokens` WalletProtocolToken[], nullable — Unclaimed reward tokens in this position
        - `amount` number, double, required — Token amount held in this position
        - `chain` string, required — Canonical chain name like `ethereum` or `polygon`
        - `name` string — Full token name
        - `price` number, double, required — Current token price in USD
        - `symbol` string, required — Token ticker symbol
        - `token_address` string — Token contract address
      - `supply_tokens` WalletProtocolToken[], nullable — Tokens supplied/deposited in this position
        - `amount` number, double, required — Token amount held in this position
        - `chain` string, required — Canonical chain name like `ethereum` or `polygon`
        - `name` string — Full token name
        - `price` number, double, required — Current token price in USD
        - `symbol` string, required — Token ticker symbol
        - `token_address` string — Token contract address
    - `protocol_name` string, required — Human-readable protocol name
    - `site_url` string — Protocol website URL
    - `total_usd` number, double, required — Total USD value across all positions in this protocol
  - `meta` OffsetMeta, required
    - `cached` boolean, required — Whether this response was served from cache
    - `credits_used` integer, required — Credits deducted for this request
    - `empty_reason` string — Hint explaining why the data array is empty, when applicable
    - `has_more` boolean — Whether more items may exist beyond this response. For offset-paged endpoints, continue with a larger offset. For time-series endpoints without offset/cursor controls, true means the requested time range hit an upstream cap; narrow from/to to continue. Omitted when exhaustion cannot be proven.
    - `limit` integer, required — Maximum number of items returned in this response
    - `offset` integer, required — Number of items skipped (pagination offset)
    - `total` integer — Total number of matching items (before pagination). Omitted when total is unknown.
    - `watermark` integer — Warehouse watermark (Unix seconds) this response was computed at, on warehouse-backed endpoints (e.g. Hyperliquid /trades/aggregate) — rows up to this time come from the warehouse, newer rows from the live tail. Omitted elsewhere.

## Other responses

- `default` — Error

---

[API](https://skmtc.dev/asksurf/apis/asksurf-public-rest-api.md) · [All operations](https://skmtc.dev/asksurf/apis/asksurf-public-rest-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/asksurf/asksurf-public-rest-api/revisions/4153a9cb5145/schema)
