Skip to main content
GET
/
v2
/
discovery
/
strategies
curl --request GET \
  --url 'https://api.glider.fi/v2/discovery/strategies?collection=top_performing&sort=tvl.desc&limit=20' \
  --header 'x-api-key: gldr_sk_your_api_key'
// Both collections paginate — follow `nextCursor`, keeping collection (and sort,
// for top_performing) stable across pages.
const response = await fetch(
  "https://api.glider.fi/v2/discovery/strategies?collection=top_performing&sort=tvl.desc&limit=20",
  { headers: { "x-api-key": "gldr_sk_your_api_key" } },
);
const data = await response.json();

// Fetch next page if present
if (data.nextCursor) {
  const next = await fetch(
    `https://api.glider.fi/v2/discovery/strategies?collection=top_performing&sort=tvl.desc&cursor=${encodeURIComponent(data.nextCursor)}`,
    { headers: { "x-api-key": "gldr_sk_your_api_key" } },
  );
}
{
  "success": true,
  "data": {
    "strategies": [
      {
        "strategyId": "01JWZEE2MF30KVRMRX53N88VA4",
        "name": "Balanced Growth",
        "description": "Multi-chain balanced allocation strategy",
        "allocation": {
          "assets": [
            { "assetId": "eip155:1/erc20:0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", "weight": "60" },
            { "assetId": "eip155:1/erc20:0xdac17f958d2ee523a2206206994597c13d831ec7", "weight": "40" }
          ]
        },
        "createdAt": "2026-01-01T00:00:00.000Z",
        "metrics": {
          "performance": {
            "summary": {
              "windows": [
                { "window": "1d",  "percentChange": "0.4521",  "since": "2026-04-29" },
                { "window": "1w",  "percentChange": "1.7812",  "since": "2026-04-23" },
                { "window": "1m",  "percentChange": "3.4910",  "since": "2026-03-30" },
                { "window": "3m",  "percentChange": "8.1004",  "since": "2026-01-30" },
                { "window": "6m",  "percentChange": "10.7240", "since": "2025-10-30" },
                { "window": "12m", "percentChange": "12.4187", "since": "2025-04-30" }
              ]
            }
          }
        },
        "canMirror": true
      }
    ]
  },
  "nextCursor": null
}
{
  "success": false,
  "error": {
    "code": "API_400",
    "message": "Invalid request"
  }
}
Returns Glider’s public, mirrorable strategies so you can surface them to your users and mirror them via the enrollment flow. Every result is public and mirrorable — use the returned strategyId with POST /v2/enroll.
  • Auth: x-api-key header (required). No additional scope is needed.
Choose a collection:
  • curated — a hand-picked set of strategies, in editorial order.
  • top_performing — strategies ranked by live analytics. Use sort to choose the ranking.
Both collections are cursor-paginated (keyset): pass the nextCursor from the previous response as the cursor query parameter to fetch the next page. nextCursor is null when there are no more results. Keep collection stable across pages. For top_performing the cursor already encodes its sort, so you may follow nextCursor without re-sending sort; if you do send it, it must match the cursor’s. A cursor from one collection (or one sort) is rejected if replayed against another.
collection
string
required
Which catalog to return: curated or top_performing.
sort
string
default:"tvl.desc"
Ranking for top_performing. One of tvl.desc, inflows7d.desc, or users.desc. Ignored for curated.
limit
integer
default:"50"
Max strategies per page. Min 1, max 50. Applies to both collections; follow nextCursor to page beyond the first set.
cursor
string
Opaque pagination cursor from a previous response. Must be paired with the same collection that produced it. For top_performing the cursor carries its sort, so sort need not be re-sent; if sent, it must match.
Each item carries display metadata, its current allocation (asset weights, in the same shape as GET /v2/strategies), and metrics.performance.summary — target-allocation performance over standard lookback windows (1d…12m), in the same shape as GET /v2/strategies/{strategyId}/performance. A window is omitted when the strategy’s price history is shorter than that lookback. Common error responses:
  • 400 (API_400) when collection is missing/invalid or sort/limit is invalid
  • 400 (API_400) when an explicit sort conflicts with the one the cursor was issued for
  • 400 (API_002) when cursor is malformed or was issued for a different collection
  • 401 when x-api-key header is missing or the key is invalid
  • 500 on unexpected server errors
curl --request GET \
  --url 'https://api.glider.fi/v2/discovery/strategies?collection=top_performing&sort=tvl.desc&limit=20' \
  --header 'x-api-key: gldr_sk_your_api_key'
// Both collections paginate — follow `nextCursor`, keeping collection (and sort,
// for top_performing) stable across pages.
const response = await fetch(
  "https://api.glider.fi/v2/discovery/strategies?collection=top_performing&sort=tvl.desc&limit=20",
  { headers: { "x-api-key": "gldr_sk_your_api_key" } },
);
const data = await response.json();

// Fetch next page if present
if (data.nextCursor) {
  const next = await fetch(
    `https://api.glider.fi/v2/discovery/strategies?collection=top_performing&sort=tvl.desc&cursor=${encodeURIComponent(data.nextCursor)}`,
    { headers: { "x-api-key": "gldr_sk_your_api_key" } },
  );
}
{
  "success": true,
  "data": {
    "strategies": [
      {
        "strategyId": "01JWZEE2MF30KVRMRX53N88VA4",
        "name": "Balanced Growth",
        "description": "Multi-chain balanced allocation strategy",
        "allocation": {
          "assets": [
            { "assetId": "eip155:1/erc20:0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", "weight": "60" },
            { "assetId": "eip155:1/erc20:0xdac17f958d2ee523a2206206994597c13d831ec7", "weight": "40" }
          ]
        },
        "createdAt": "2026-01-01T00:00:00.000Z",
        "metrics": {
          "performance": {
            "summary": {
              "windows": [
                { "window": "1d",  "percentChange": "0.4521",  "since": "2026-04-29" },
                { "window": "1w",  "percentChange": "1.7812",  "since": "2026-04-23" },
                { "window": "1m",  "percentChange": "3.4910",  "since": "2026-03-30" },
                { "window": "3m",  "percentChange": "8.1004",  "since": "2026-01-30" },
                { "window": "6m",  "percentChange": "10.7240", "since": "2025-10-30" },
                { "window": "12m", "percentChange": "12.4187", "since": "2025-04-30" }
              ]
            }
          }
        },
        "canMirror": true
      }
    ]
  },
  "nextCursor": null
}
{
  "success": false,
  "error": {
    "code": "API_400",
    "message": "Invalid request"
  }
}