Overview
GET /v2/streams/wallets/{address} returns all streams a given wallet address has snapshot data in, together with the wallet’s snapshot history for each stream. This is a public endpoint — no API key is required.
By default the endpoint returns only the latest snapshot per stream, which is efficient for summary views. Pass withSnapshots=true to include the full historical timeline for every stream.
Use
withSnapshots=false (the default) for portfolio overviews and summary widgets. Use withSnapshots=true when you need the full reward history across all streams for a wallet, such as for charts or reconciliation workflows.Endpoint
Parameters
Path Parametersstring
required
EVM wallet address to look up, such as
0x1111111111111111111111111111111111111111. The backend resolves the address against stored wallet snapshot records across all streams.boolean
default:false
Controls how much snapshot history is returned per stream.
false(default) — each stream entry contains a single-elementsnapshotsarray with the most recent snapshot only. Use this for summary tables and portfolio cards.true— each stream entry contains the fullsnapshotsarray with every recorded snapshot. Use this for historical charts, cumulative reward plots, and reconciliation.
Response Example
Response Semantics
snapshots contains one item by default
snapshots contains one item by default
When
withSnapshots=false, each stream entry’s snapshots array always contains exactly one element — the most recent snapshot recorded for that wallet in that stream. This is equivalent to the lastSnapshot field returned by Get Stream Wallets, but embedded in an array for a consistent shape regardless of the flag.withSnapshots=true returns the full timeline
withSnapshots=true returns the full timeline
When
withSnapshots=true, the snapshots array contains every recorded snapshot for the wallet in that stream, ordered by timestamp descending. The first element is always the most recent. This is the same data returned by Get Wallet Data but across all streams in a single response.An empty array is a valid response
An empty array is a valid response
If the wallet address has no snapshot data in any stream, the endpoint returns
streams: [] rather than failing. This means the wallet has not participated in any confirmed stream yet.Only confirmed, non-deleted streams are included
Only confirmed, non-deleted streams are included
The response only includes streams whose on-chain creation has been confirmed. Streams in a pending creation state are not returned even if internal records already exist.Additionally, soft-deleted streams are always excluded — even if the wallet accumulated snapshot data in them before deletion. This means a wallet’s historical snapshots for a deleted stream will never appear in this response.
Response Fields
WalletData[]
required
List of streams the wallet has participated in, one entry per stream.
WalletData
uuid
Identifier of the stream. This duplicates the
stream.id field for convenience.string
The wallet address whose data is being returned. Mirrors the
address path parameter.WalletSnapshot[]
Snapshot history for this wallet in the stream. Contains one element when
withSnapshots=false (the latest only), or the full timeline when withSnapshots=true. Ordered by timestamp descending. For the canonical WalletSnapshot field definitions, see the WalletSnapshot section on the Get Stream Wallets page.Stream
Full stream object. Uses the same
Stream schema returned by Get Streams, including id, chainId, contractAddress, customArgs, lastSnapshot, committedSnapshot, point, rewardToken, and estimatedLiveApr.WalletSnapshot
APR-related fields are only populated for token-based streams. For point-based streams, baseApr and apr are omitted.
datetime
Effective timestamp of the snapshot — the time bucket the metrics correspond to, not the database write time.
string
Total rewards accumulated by the wallet at this snapshot, in base units (wei for token streams, point precision for point streams). Reflects post-adapter values.
string
Accumulated rewards before adapter adjustments are applied.
datetime
Timestamp when this snapshot row was first created in Turtle’s backend.
datetime
Timestamp of the latest update applied to this snapshot row.
decimal | null
Time-weighted-average (TWA) USD TVL for the wallet after adapters.
decimal | null
TWA USD TVL for the wallet before adapters.
decimal | null
Base APR before adapter adjustments, expressed as a decimal fraction — multiply by 100 for the percentage (for example,
0.05 means 5%). Only populated for token-based streams.decimal | null
Effective APR after adapter adjustments, expressed as a decimal fraction — multiply by 100 for the percentage (for example,
0.05 means 5%). Only populated for token-based streams.object | null
Strategy-specific metrics for the snapshot. Treat as extensible JSON.
Stream
The stream field uses the same Stream schema returned by Get Streams. See that page for the complete field reference, including lastSnapshot, committedSnapshot, rewardToken, point, customArgs, and estimatedLiveApr.
To show the rate the wallet’s stream is currently paying, read stream.estimatedLiveApr rather than stream.lastSnapshot.apr or the wallet’s own snapshot apr — those are historical values tied to their snapshot timestamps. See Live APR vs snapshot APR.
Integration Notes
Choose withSnapshots based on your use case
Choose withSnapshots based on your use case
Use
withSnapshots=false (the default) for any view that only needs the current state: portfolio cards, leaderboards, summary widgets. Use withSnapshots=true only when you need to chart or reconcile the full reward history — it returns significantly more data per stream.Amounts are returned as strings on purpose
Amounts are returned as strings on purpose
Reward amounts are serialized as strings to avoid precision loss in JavaScript environments. Keep them as strings in transit and use a big-number library only when arithmetic or unit conversion is needed.
Use single-stream endpoints for stream-scoped queries
Use single-stream endpoints for stream-scoped queries
If you need snapshot data for one wallet within a specific stream, use Get Wallet Data. If you need a paginated list of all wallets for one stream, use Get Stream Wallets.
Error Handling
Unexpected internal error
Unexpected internal error
Status Code: 500 Internal Server ErrorSolution: Retry the request and contact Turtle if the issue persists.

