---
title: "Get a custom analytics dashboard"
method: GET
path: "/environments/{envId}/analytics/dashboards/{dashboardId}"
tags: ["dashboards"]
---

# Get a custom analytics dashboard

`GET /environments/{envId}/analytics/dashboards/{dashboardId}`

Retrieves a custom analytics dashboard by its unique identifier.

## Response `200`

The dashboard has been successfully retrieved.

- Dashboard — A custom analytics dashboard with its full definition including metadata, labels, and widgets.
  - `id` string, required — Unique identifier of the dashboard
  - `name` string, required — The name of the dashboard
  - `createdBy` string, required — The identifier of the user who created the dashboard. Deprecated — this field currently returns a raw user ID. In a future version it will be replaced by a structured object with display name and other user metadata.
  - `createdAt` string, date-time, required — Timestamp when the dashboard was created (ISO 8601)
  - `lastModified` string, date-time, required — Timestamp when the dashboard was last modified (ISO 8601)
  - `labels` object — Key-value pairs of labels for organizing and categorizing dashboards.
  - `widgets` Widget[], required — List of widget definitions in the dashboard
    - `id` string, required — Unique identifier of the widget within the dashboard
    - `title` string, required — Display title of the widget
    - `description` string — Optional description of the widget
    - `type` 'stats' | 'doughnut' | 'pie' | 'polarArea' | 'time-series-line' | 'time-series-bar' | 'vertical-bar' | 'horizontal-bar', required — The type of widget visualization. - **stats**: A single number KPI / stat widget displaying aggregated values. - **doughnut**: A doughnut chart widget for displaying proportional data. - **pie**: A pie chart widget for displaying proportional data. - **polarArea**: A polar area chart widget for displaying proportional data with varying radii. - **time-series-line**: A line chart widget for displaying data over time. - **time-series-bar**: A stacked bar chart widget for displaying data over time. - **vertical-bar**: A vertical bar chart widget for displaying comparative data across categories. - **horizontal-bar**: A horizontal bar chart widget for displaying comparative data across categories.
    - `layout` WidgetLayout, required — Layout positioning and sizing of a widget within the dashboard grid.
      - `cols` integer, required — Number of columns the widget spans
      - `rows` integer, required — Number of rows the widget spans
      - `x` integer, required — Horizontal position (column index) in the grid
      - `y` integer, required — Vertical position (row index) in the grid
    - `request` WidgetRequest, required — Defines the analytics request associated with a widget. This determines what data the widget displays. The `type` field selects the analytics request type. The structure aligns with the computation request schemas (see computation tag): - **measures**: Returns aggregated values. Same shape as `MeasuresRequest` (timeRange, metrics, filters). - **facets**: Groups data by facet values. Same shape as `FacetsRequest` (timeRange, by, metrics, limit, filters, ranges). - **time-series**: Returns data points over time. Same shape as `TimeSeriesRequest` (timeRange, interval, metrics, by, limit, filters, ranges).
      - `type` 'measures' | 'facets' | 'time-series', required — The type of analytics request this widget represents (measures, facets, or time series)
      - `timeRange` TimeRange, required — Time range for analytics queries
        - `from` string, date-time, required — Start timestamp as an ISO 8601 date string or an epoch unix timestamp
        - `to` string, date-time, required — End timestamp as an ISO 8601 date string or an epoch unix timestamp
      - `metrics` MetricRequest[], required — List of metric requests to process. Uses `MetricRequest` which supports metric name, measures, and optional filters.
        - `name` 'HTTP_REQUESTS' | 'HTTP_ERRORS' | 'HTTP_ERROR_RATE' | 'HTTP_REQUEST_CONTENT_LENGTH' | 'HTTP_RESPONSE_CONTENT_LENGTH' | 'HTTP_ENDPOINT_RESPONSE_TIME' | 'HTTP_GATEWAY_RESPONSE_TIME' | 'HTTP_GATEWAY_LATENCY' | 'LLM_PROMPT_TOKEN_SENT' | 'LLM_PROMPT_TOKEN_RECEIVED' | 'LLM_PROMPT_TOKEN_SENT_COST' | 'LLM_PROMPT_TOKEN_RECEIVED_COST' | 'LLM_PROMPT_TOTAL_TOKEN' | 'LLM_PROMPT_TOKEN_TOTAL_COST' | 'MESSAGE_PAYLOAD_SIZE' | 'MESSAGES' | 'MESSAGE_ERRORS' | 'MESSAGE_GATEWAY_LATENCY' | 'EDGE_DETECTION_COUNT' | 'EDGE_TOKENS_IN' | 'EDGE_TOKENS_OUT' | 'EDGE_HEARTBEAT_COUNT' | 'NATIVE_CONNECTIONS_SUMMARY' | 'NATIVE_MESSAGES_PRODUCED_DOWNSTREAM' | 'NATIVE_MESSAGES_PRODUCED_UPSTREAM' | 'NATIVE_MESSAGES_CONSUMED_DOWNSTREAM' | 'NATIVE_MESSAGES_CONSUMED_UPSTREAM' | 'NATIVE_BYTES_PRODUCED_DOWNSTREAM' | 'NATIVE_BYTES_PRODUCED_UPSTREAM' | 'NATIVE_BYTES_CONSUMED_DOWNSTREAM' | 'NATIVE_BYTES_CONSUMED_UPSTREAM' | 'NATIVE_ACTIVE_CONNECTIONS_DOWNSTREAM' | 'NATIVE_ACTIVE_CONNECTIONS_UPSTREAM' | 'NATIVE_AUTHENTICATIONS_SUCCESS_DOWNSTREAM' | 'NATIVE_AUTHENTICATIONS_SUCCESS_UPSTREAM' | 'NATIVE_AUTHENTICATIONS_FAILURE_DOWNSTREAM' | 'NATIVE_AUTHENTICATIONS_FAILURE_UPSTREAM' | 'NATIVE_OPERATIONS_RECEIVED' | 'NATIVE_OPERATIONS_FORWARDED' | 'NATIVE_OPERATIONS_ANSWERED' | 'NATIVE_OPERATIONS_COMPLETED' | 'NATIVE_OPERATION_GATEWAY_REQUEST_DURATION' | 'NATIVE_OPERATION_BROKER_DURATION' | 'NATIVE_OPERATION_GATEWAY_RESPONSE_DURATION', required — Available metric names for analytics queries
        - `measures` MeasureName[] — List of measures to compute for this metric
        - `filters` Filter[] — Request-level filters
          - union — Filter specification for analytics queries. Filters can be used at the top level of a request to refine the analytics results, or nested within a metrics to refine specific measures.
            - StringFilter — Filter specification for string values
              - …
            - NumberFilter — Filter specification for numeric values
              - …
            - ArrayFilter — Filter specification for array values.
              - …
      - `interval` union — A fixed time interval for time series analytics queries. Intervals are be expressed in milliseconds or duration strings (e.g., 10s, 1m, 5h).
        - string — Shorthand for expressing interval in seconds, minutes, hours or days as a string
        - number — Interval in milliseconds
      - `by` FacetName[] — List of facet names to group by. Required when type is `facets`, optional for `time-series`, not applicable for `measures`.
      - `limit` integer — Maximum number of buckets to return. Applicable when type is `facets` or `time-series`.
      - `filters` Filter[] — Top-level filters applied to all metrics in this widget request.
        - union — Filter specification for analytics queries. Filters can be used at the top level of a request to refine the analytics results, or nested within a metrics to refine specific measures.
          - StringFilter — Filter specification for string values
            - `name` 'API' | 'APPLICATION' | 'PLAN' | 'API_PRODUCT' | 'GATEWAY' | 'TENANT' | 'ZONE' | 'HTTP_METHOD' | 'HTTP_STATUS_CODE_GROUP' | 'HTTP_STATUS' | 'HTTP_PATH' | 'HTTP_PATH_MAPPING' | 'HOST' | 'GEO_IP_COUNTRY' | 'GEO_IP_REGION' | 'GEO_IP_CITY' | 'GEO_IP_CONTINENT' | 'CONSUMER_IP' | 'HTTP_USER_AGENT_OS_NAME' | 'HTTP_USER_AGENT_DEVICE' | 'MESSAGE_CONNECTOR_TYPE' | 'MESSAGE_CONNECTOR_ID' | 'MESSAGE_OPERATION_TYPE' | 'MESSAGE_SIZE' | 'MESSAGE_COUNT' | 'MESSAGE_ERROR_COUNT' | 'HTTP_ENDPOINT_RESPONSE_TIME' | 'HTTP_GATEWAY_LATENCY' | 'HTTP_GATEWAY_RESPONSE_TIME' | 'HTTP_REQUEST_CONTENT_LENGTH' | 'HTTP_RESPONSE_CONTENT_LENGTH' | 'LLM_PROXY_MODEL' | 'LLM_PROXY_PROVIDER' | 'MCP_PROXY_METHOD' | 'MCP_PROXY_TOOL' | 'MCP_PROXY_RESOURCE' | 'MCP_PROXY_PROMPT' | 'API_TYPE' | 'ERROR_KEY' | 'REQUEST_ID' | 'TRANSACTION_ID' | 'EDGE_PROVIDER' | 'EDGE_PROCESS' | 'EDGE_CLIENT' | 'EDGE_TYPE' | 'EDGE_VERSION' | 'EDGE_MODEL' | 'EDGE_TOOL' | 'NATIVE_CONNECTION_STATUS' | 'NATIVE_FAILURE_SIDE' | 'NATIVE_CLIENT_ID' | 'NATIVE_TOPIC' | 'NATIVE_OPERATION' | 'URI' | 'ENTRYPOINT', required — Available filter names for filtering analytics data
            - `operator` 'EQ' | 'IN' | 'LTE' | 'GTE' | 'CONTAINS', required — Filter operator
            - `value` string, required — Filter value (string for EQ)
          - NumberFilter — Filter specification for numeric values
            - `name` 'API' | 'APPLICATION' | 'PLAN' | 'API_PRODUCT' | 'GATEWAY' | 'TENANT' | 'ZONE' | 'HTTP_METHOD' | 'HTTP_STATUS_CODE_GROUP' | 'HTTP_STATUS' | 'HTTP_PATH' | 'HTTP_PATH_MAPPING' | 'HOST' | 'GEO_IP_COUNTRY' | 'GEO_IP_REGION' | 'GEO_IP_CITY' | 'GEO_IP_CONTINENT' | 'CONSUMER_IP' | 'HTTP_USER_AGENT_OS_NAME' | 'HTTP_USER_AGENT_DEVICE' | 'MESSAGE_CONNECTOR_TYPE' | 'MESSAGE_CONNECTOR_ID' | 'MESSAGE_OPERATION_TYPE' | 'MESSAGE_SIZE' | 'MESSAGE_COUNT' | 'MESSAGE_ERROR_COUNT' | 'HTTP_ENDPOINT_RESPONSE_TIME' | 'HTTP_GATEWAY_LATENCY' | 'HTTP_GATEWAY_RESPONSE_TIME' | 'HTTP_REQUEST_CONTENT_LENGTH' | 'HTTP_RESPONSE_CONTENT_LENGTH' | 'LLM_PROXY_MODEL' | 'LLM_PROXY_PROVIDER' | 'MCP_PROXY_METHOD' | 'MCP_PROXY_TOOL' | 'MCP_PROXY_RESOURCE' | 'MCP_PROXY_PROMPT' | 'API_TYPE' | 'ERROR_KEY' | 'REQUEST_ID' | 'TRANSACTION_ID' | 'EDGE_PROVIDER' | 'EDGE_PROCESS' | 'EDGE_CLIENT' | 'EDGE_TYPE' | 'EDGE_VERSION' | 'EDGE_MODEL' | 'EDGE_TOOL' | 'NATIVE_CONNECTION_STATUS' | 'NATIVE_FAILURE_SIDE' | 'NATIVE_CLIENT_ID' | 'NATIVE_TOPIC' | 'NATIVE_OPERATION' | 'URI' | 'ENTRYPOINT', required — Available filter names for filtering analytics data
            - `operator` 'EQ' | 'IN' | 'LTE' | 'GTE' | 'CONTAINS', required — Filter operator
            - `value` integer, required — Filter value (number for LTE/GTE)
          - ArrayFilter — Filter specification for array values.
            - `name` 'API' | 'APPLICATION' | 'PLAN' | 'API_PRODUCT' | 'GATEWAY' | 'TENANT' | 'ZONE' | 'HTTP_METHOD' | 'HTTP_STATUS_CODE_GROUP' | 'HTTP_STATUS' | 'HTTP_PATH' | 'HTTP_PATH_MAPPING' | 'HOST' | 'GEO_IP_COUNTRY' | 'GEO_IP_REGION' | 'GEO_IP_CITY' | 'GEO_IP_CONTINENT' | 'CONSUMER_IP' | 'HTTP_USER_AGENT_OS_NAME' | 'HTTP_USER_AGENT_DEVICE' | 'MESSAGE_CONNECTOR_TYPE' | 'MESSAGE_CONNECTOR_ID' | 'MESSAGE_OPERATION_TYPE' | 'MESSAGE_SIZE' | 'MESSAGE_COUNT' | 'MESSAGE_ERROR_COUNT' | 'HTTP_ENDPOINT_RESPONSE_TIME' | 'HTTP_GATEWAY_LATENCY' | 'HTTP_GATEWAY_RESPONSE_TIME' | 'HTTP_REQUEST_CONTENT_LENGTH' | 'HTTP_RESPONSE_CONTENT_LENGTH' | 'LLM_PROXY_MODEL' | 'LLM_PROXY_PROVIDER' | 'MCP_PROXY_METHOD' | 'MCP_PROXY_TOOL' | 'MCP_PROXY_RESOURCE' | 'MCP_PROXY_PROMPT' | 'API_TYPE' | 'ERROR_KEY' | 'REQUEST_ID' | 'TRANSACTION_ID' | 'EDGE_PROVIDER' | 'EDGE_PROCESS' | 'EDGE_CLIENT' | 'EDGE_TYPE' | 'EDGE_VERSION' | 'EDGE_MODEL' | 'EDGE_TOOL' | 'NATIVE_CONNECTION_STATUS' | 'NATIVE_FAILURE_SIDE' | 'NATIVE_CLIENT_ID' | 'NATIVE_TOPIC' | 'NATIVE_OPERATION' | 'URI' | 'ENTRYPOINT', required — Available filter names for filtering analytics data
            - `operator` 'EQ' | 'IN' | 'LTE' | 'GTE' | 'CONTAINS', required — Filter operator
            - `value` string[], required — Filter value (array for IN operator)

## Other responses

- `403` — Forbidden - Insufficient permissions to view this dashboard.
- `404` — No dashboard found for the given identifier.
- `500` — Internal server error while retrieving the dashboard.

---

[API](https://skmtc.net/gravitee-io/apis/gravitee-io-apim-management-api-analytics.md) · [All operations](https://skmtc.net/gravitee-io/apis/gravitee-io-apim-management-api-analytics/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/gravitee-io/gravitee-io-apim-management-api-analytics/revisions/ff8d60356a08/schema)
