Skip to main content

Get strategy performance – Earn API

Updated on
Jul 31, 2026

Overview

Yield snapshots (~55-min cadence) for the trailing hours, oldest-first, plus period_fee_usdc and net_yield (see YieldSnapshot). USDC values are decimal dollars; weighted_apy is a percentage. Unknown strategy: 404. Capped at 2000 rows keeping the newest; truncated: true flags a capped response.

Endpoint

GET https://earn-api.quicknode.dev/functions/v1/api/v1/strategies/{id}/performance

Authorization

Include the published apikey header. This read request is public and does not require a SIWE signature.

Parameters

ParameterLocationTypeRequiredDescription
idpathstringYesStrategy UUID.
hoursqueryintegerNoTrailing window in hours. Defaults to 168 (7d); clamped to [1, 2160] (90d).

Example request

curl --request GET \
--url 'https://earn-api.quicknode.dev/functions/v1/api/v1/strategies/b7c1e2d3-0000-4000-8000-000000000001/performance?hours=168' \
--header 'Accept: application/json' \
--header 'apikey: <EARN_PUBLIC_API_KEY>'

Response

FieldTypeRequiredDescription
hoursintegerYesThe clamped trailing window in hours (1..2160).
truncatedbooleanYesTrue when the window held more than 2000 snapshots and the response was capped (see the endpoint description for which end gets dropped).
snapshotsarray<object>YesOldest-first yield snapshots within the window.
snapshots[].idstringYesSnapshot identifier.
snapshots[].total_value_usdcnumber | nullYesTotal strategy value in decimal US dollars.
snapshots[].period_yieldnumber | nullYesGross yield since the preceding snapshot, in decimal US dollars.
snapshots[].cumulative_yieldnumber | nullYesCumulative gross yield since strategy inception, in decimal US dollars.
snapshots[].cumulative_feesnumber | nullYesCumulative fees since strategy inception, in decimal US dollars.
snapshots[].period_fee_usdcnumberYesFees attributed to this snapshot, in decimal US dollars.
snapshots[].net_yieldnumberYes`period_yield - period_fee_usdc`, in decimal US dollars.
snapshots[].period_cover_fee_usdcnumberNoOpenCover premium for this snapshot. Present only for covered strategies.
snapshots[].weighted_apynumber | nullYesWeighted realized APY as a percentage.
snapshots[].snapshot_atstringYesSnapshot timestamp in ISO 8601 format.

Example response

{
"hours": 168,
"truncated": false,
"snapshots": [
{
"id": "d9e4f5a6-0000-4000-8000-000000000101",
"total_value_usdc": 1012.34,
"period_yield": 1.21,
"cumulative_yield": 12.34,
"cumulative_fees": 0.87,
"period_fee_usdc": 0.05,
"net_yield": 1.16,
"weighted_apy": 6.42,
"snapshot_at": "2026-07-07T18:00:00.000Z"
}
]
}

HTTP responses

StatusDescription
200The clamped window and the yield snapshot series.
400Invalid strategy id (a UUID is required).
404Resource not found.
429Rate 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.
500Internal server error.
OpenAPI source

This page is based on operation getStrategyPerformance in the Earn OpenAPI 3.1 specification.

Share this doc