概述
Single-strategy detail: config, live-valued positions, cycle/gauge fields
(cycle_state, swap_signals, last_skip, …), closed positions, and the
same computed rollups as the list. Poll this endpoint to watch a status
transition (e.g. pending_setup → active, closing → closed).
Endpoint
GET https://earn-api.quicknode.dev/functions/v1/api/v1/strategies/{id}
Authorization
Include the published apikey header. This read request is public and does not require a SIWE signature.
参数
| Parameter | Location | 类型 | Required | 描述 |
|---|---|---|---|---|
| id | path | 字符串 | 是 | Strategy UUID. |
Example request
curl --request GET \
--url 'https://earn-api.quicknode.dev/functions/v1/api/v1/strategies/b7c1e2d3-0000-4000-8000-000000000001' \
--header 'Accept: application/json' \
--header 'apikey: <EARN_PUBLIC_API_KEY>'
回复
该 strategy object includes every field documented by List strategies, plus the detail-only fields below.
| Field | 类型 | Required | 描述 |
|---|---|---|---|
| strategy | 对象 | 是 | `closed_positions` is OMITTED (not an empty array) when the strategy has no deactivated positions; every other detail-only field is always present. `live_apy` and `strategy_apy` are always present on detail. |
| strategy.positions | array<object> | 是 | Active positions with current APY and live USDC values. |
| strategy.positions[].current_apy | number | null | 不 | APY currently attributed to the position at the strategy's smoothing window. Present only on detail responses. |
| strategy.closed_positions | array<object> | 不 | Deactivated positions. Omitted when none exist. |
| strategy.vault_names | 对象 | 是 | Map of vault keys to display names. |
| strategy.last_cycle_at | string | null | 是 | Timestamp of the most recent strategy cycle. |
| strategy.cycle_state | string | null | 是 | `idle`, `pending`, `rebalancing`, `error`, `action_needed`, or `null`. |
| strategy.last_error | string | null | 是 | Most recent cycle error. |
| strategy.swap_signals | array<object> | null | 是 | Opaque internal swap signals; clients should not depend on their shape. |
| strategy.unmatched_exits | array<object> | null | 是 | Exit records not matched to a position. |
| strategy.last_skip | object | null | 是 | Most recent skipped-cycle details. |
| strategy.has_agreement | 布尔型 | 是 | Whether the owner recorded the Terms of Service agreement. |
| strategy.pending_rebalance | object | null | 是 | Current same-chain rebalance state, or `null`. |
| strategy.cover | 对象 | 不 | OpenCover premium summary, present only for covered strategies. |
Example response
This abbreviated response uses synthetic strategy data:
{
"strategy": {
"id": "b7c1e2d3-0000-4000-8000-000000000001",
"wallet_address": "0x1234567890abcdef1234567890abcdef12345678",
"name": "My USDC Strategy",
"capital_usdc": 1000,
"delta_pct": 3,
"cross_chain_delta_pct": 5,
"delta_confirmations": 2,
"max_positions": 2,
"chain_ids": "8453,42161",
"status": "active",
"active": true,
"total_value_usdc": 1012.34,
"pending_bridge_value_usdc": 0,
"net_value_usdc": 1012.34,
"realized_apy": 5.87,
"live_apy": 6.42,
"strategy_apy": 6.18,
"cycle_state": "idle",
"has_agreement": true,
"positions": [
{
"vault_name": "Seamless USDC Vault",
"chain_id": 8453,
"usdc_value": 600.25,
"current_apy": 6.48
}
]
}
}
HTTP responses
| 状态 | 描述 |
|---|---|
| 200 | Strategy detail. |
| 404 | Strategy not found. |
| 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 getStrategy in the Earn OpenAPI 3.1 specification.