---
title: "Get combined vault-level and substrategy analytics for a vault"
method: GET
path: "/vaults/analytics"
tags: ["Vaults"]
---

# Get combined vault-level and substrategy analytics for a vault

`GET /vaults/analytics`

Returns the vault-level analytics row plus per-substrategy analytics rows for a single vault. vault_level is null when the vault has no analytics blob yet; substrategies only contains entries whose Redis blob is present. 404 only when the vault itself does not exist — missing analytics data returns 200 with empty fields.

## Query parameters

- `address` string, required

## Response `200`

OK

- ResponsesVaultAnalyticsResp
  - `address` string
  - `as_of` string
  - `substrategies` ResponsesAccountAnalytics[]
    - `account_address` string
    - `annualized_volatility` ResponsesWindowedMetrics
      - `window_1y` string
      - `window_24h` string
      - `window_30d` string
      - `window_7d` string
      - `window_90d` string
      - `window_all` string
    - `apr` ResponsesWindowedMetrics
      - `window_1y` string
      - `window_24h` string
      - `window_30d` string
      - `window_7d` string
      - `window_90d` string
      - `window_all` string
    - `apr_simple_itd` string
    - `cum_return` string
    - `cumulative_pnl_series` ResponsesAccountDailyPnlPoint[]
      - `day` string
      - `value` string
    - `cumulative_pnl_usd` string
    - `end_value` string
    - `hourly_cumulative_pnl_series` ResponsesAccountHourlyPnlPoint[]
      - `at` string
      - `value` string
    - `max_dd` ResponsesWindowedMetrics
      - `window_1y` string
      - `window_24h` string
      - `window_30d` string
      - `window_7d` string
      - `window_90d` string
      - `window_all` string
    - `max_drawdown_to_date` string
    - `monthly_pnl_last_12m` ResponsesAccountMonthlyPnlEntry[]
      - `month` string
      - `month_return_canonical` string
    - `pnl` ResponsesWindowedMetrics
      - `window_1y` string
      - `window_24h` string
      - `window_30d` string
      - `window_7d` string
      - `window_90d` string
      - `window_all` string
    - `return` ResponsesWindowedMetrics
      - `window_1y` string
      - `window_24h` string
      - `window_30d` string
      - `window_7d` string
      - `window_90d` string
      - `window_all` string
    - `sharpe` ResponsesWindowedMetrics
      - `window_1y` string
      - `window_24h` string
      - `window_30d` string
      - `window_7d` string
      - `window_90d` string
      - `window_all` string
    - `sharpe_annualized_itd` string
    - `strategy_name` string
    - `vol_annualized_itd` string
  - `vault_level` ResponsesVaultAnalytics
    - `address` string
    - `annualized_volatility` ResponsesWindowedMetrics
      - `window_1y` string
      - `window_24h` string
      - `window_30d` string
      - `window_7d` string
      - `window_90d` string
      - `window_all` string
    - `apr` ResponsesWindowedMetrics
      - `window_1y` string
      - `window_24h` string
      - `window_30d` string
      - `window_7d` string
      - `window_90d` string
      - `window_all` string
    - `as_of` string
    - `best_period_return` ResponsesWindowedMetrics
      - `window_1y` string
      - `window_24h` string
      - `window_30d` string
      - `window_7d` string
      - `window_90d` string
      - `window_all` string
    - `max_drawdown` ResponsesWindowedMetrics
      - `window_1y` string
      - `window_24h` string
      - `window_30d` string
      - `window_7d` string
      - `window_90d` string
      - `window_all` string
    - `monthly_pnl_last_12m` ResponsesVaultMonthlyPnlEntry[]
      - `month` string
      - `month_return_pct` string
    - `pct_positive` ResponsesWindowedMetrics
      - `window_1y` string
      - `window_24h` string
      - `window_30d` string
      - `window_7d` string
      - `window_90d` string
      - `window_all` string
    - `pnl` ResponsesWindowedMetrics
      - `window_1y` string
      - `window_24h` string
      - `window_30d` string
      - `window_7d` string
      - `window_90d` string
      - `window_all` string
    - `recovery_hours` ResponsesWindowedMetrics
      - `window_1y` string
      - `window_24h` string
      - `window_30d` string
      - `window_7d` string
      - `window_90d` string
      - `window_all` string
    - `sharpe_ratio` ResponsesWindowedMetrics
      - `window_1y` string
      - `window_24h` string
      - `window_30d` string
      - `window_7d` string
      - `window_90d` string
      - `window_all` string
    - `top_holders` ResponsesVaultTopHolder[]
      - `percentage` string
      - `rank` integer
      - `value_usdc` string
    - `worst_period_return` ResponsesWindowedMetrics
      - `window_1y` string
      - `window_24h` string
      - `window_30d` string
      - `window_7d` string
      - `window_90d` string
      - `window_all` string

## Other responses

- `400` — Bad Request
- `404` — Not Found

## Changes

- **2026-07-17** `f1370c46e9e8` — 6 warning
  - added the new `BLOCK_TRADE_REPLAYED_SIGNATURE` enum value to the `error/allOf[#/components/schemas/responses.ErrorCode]/` response property for the response status `400`
  - added the new `BLOCK_TRADE_REPLAYED_SIGNATURE` enum value to the `error/allOf[#/components/schemas/responses.ErrorCode]/` response property for the response status `404`
  - added the new `EVM_VAULT_OPERATORS_DISABLED` enum value to the `error/allOf[#/components/schemas/responses.ErrorCode]/` response property for the response status `400`
  - added the new `EVM_VAULT_OPERATORS_DISABLED` enum value to the `error/allOf[#/components/schemas/responses.ErrorCode]/` response property for the response status `404`
  - …2 more
- **2026-06-09** `43b81de9b079` — 6 info
  - removed the `INVALID_RHINOFI_QUOTE` enum value from the `error/allOf[#/components/schemas/responses.ErrorCode]/` response property for the response status `400`
  - removed the `INVALID_RHINOFI_QUOTE` enum value from the `error/allOf[#/components/schemas/responses.ErrorCode]/` response property for the response status `404`
  - removed the `INVALID_RHINOFI_QUOTE_COMMIT` enum value from the `error/allOf[#/components/schemas/responses.ErrorCode]/` response property for the response status `400`
  - removed the `INVALID_RHINOFI_QUOTE_COMMIT` enum value from the `error/allOf[#/components/schemas/responses.ErrorCode]/` response property for the response status `404`
  - …2 more
- …earlier changes not shown

[Full history](https://skmtc.dev/tradeparadex/apis/paradex-rest-api-2/changes/vaults/analytics/get.md)

---

[API](https://skmtc.dev/tradeparadex/apis/paradex-rest-api-2.md) · [All operations](https://skmtc.dev/tradeparadex/apis/paradex-rest-api-2/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/tradeparadex/paradex-rest-api-2/revisions/a73698fdee53/schema)
