> ## Documentation Index
> Fetch the complete documentation index at: https://docs.glider.fi/llms.txt
> Use this file to discover all available pages before exploring further.

# Get Strategy Performance

> Returns chartable target-allocation TWR performance for a strategy.

Returns a daily performance curve for the authenticated tenant's strategy.
The curve covers the shorter of 12 months or the shared asset price-history
window, and respects the strategy's configured rebalance cadence.

* Auth: `x-api-key` header (required)
* Scope: `strategies:read`

<ParamField path="strategyId" type="string" required>
  Strategy identifier.
</ParamField>

Common error responses:

* `400` when the path parameter is invalid, or when the strategy's stored
  spec references an unknown asset (`caip_asset_id` not registered) or an
  invalid allocation weight. The error body's `message` field carries the
  offending CAIP id(s) when an unknown asset is the cause.
* `401` when `x-api-key` header is missing or the key is invalid
* `403` when the API key lacks the `strategies:read` scope
* `404` when the strategy does not exist or does not belong to the tenant
* `500` on unexpected server errors

<RequestExample>
  ```bash cURL theme={null}
  curl --request GET \
    --url 'https://api.glider.fi/v2/strategies/01JWZEE2MF30KVRMRX53N88VA4/performance' \
    --header 'x-api-key: gldr_sk_your_api_key'
  ```

  ```javascript JavaScript theme={null}
  const response = await fetch(
    "https://api.glider.fi/v2/strategies/01JWZEE2MF30KVRMRX53N88VA4/performance",
    { headers: { "x-api-key": "gldr_sk_your_api_key" } },
  );
  const data = await response.json();
  ```
</RequestExample>

The response carries a `meta` block with the calculation provenance and a
`summary` block derived from the points (omitted when the curve has fewer
than two points).

* `meta.method` is `TWR` (time-weighted return). Other methods may be added
  in future.
* `meta.asOf` is the wall-clock the curve was computed at — useful for
  caching and for displaying "as of X" labels.
* The curve's window is implicit in `points`: the first/last point dates
  are the start/end. `points.at(-1).percentChange` is the cumulative
  return since `points[0].date`.
* `summary.windows[]` carries one entry per lookback that has a usable
  anchor in the curve, ordered shortest → longest (`1d`, `1w`, `1m`,
  `3m`, `6m`, `12m`). Each entry is `{ window, percentChange, since }`
  where `since` is the anchor date used. Windows whose lookback predates
  the curve are omitted (an empty array is a valid response on a
  brand-new strategy; `12m` is omitted unless the strategy has the full
  12-month history).

<ResponseExample>
  ```json 200 theme={null}
  {
    "success": true,
    "data": {
      "strategyId": "01JWZEE2MF30KVRMRX53N88VA4",
      "schedule": {
        "type": "interval",
        "frequency": "monthly"
      },
      "meta": {
        "method": "TWR",
        "currency": "USD",
        "asOf": "2026-04-30T12:00:00.000Z"
      },
      "points": [
        {
          "date": "2025-04-30",
          "percentChange": "0.0000"
        },
        {
          "date": "2025-05-31",
          "percentChange": "1.8742"
        },
        {
          "date": "2026-04-30",
          "percentChange": "12.4187"
        }
      ],
      "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" }
        ]
      }
    }
  }
  ```
</ResponseExample>
