---
title: "Query facets analytics"
method: POST
path: "/environments/{envId}/analytics/facets"
tags: ["computation"]
---

# Query facets analytics

`POST /environments/{envId}/analytics/facets`

Group data by facet values with optional ranging, sorting and limits.

Facet requests are limited to 3 dimensions in the by clause.

Sorting and ranging always apply to the last given facet.

## Path parameters

- `envId` string, required

## Request body

- FacetsRequest — Request for facets query - groups data by facet values
  - `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
  - `by` FacetName[], required — List of facet names to group by (applies to all metrics)
  - `limit` integer — Maximum number of buckets to return (applies to all metrics)
  - `filters` Filter[] — Top-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
        - `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)
  - `metrics` FacetMetricRequest[], required — List of facet metric requests to process
    - `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
          - `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)
    - `sorts` Sort[] — Array of sort criteria. Each sort criteria contains a name and order.
      - `measure` 'AVG' | 'MIN' | 'MAX' | 'P50' | 'P90' | 'P95' | 'P99' | 'COUNT' | 'PERCENTAGE' | 'SUM', required — Measure name identifier. Represents the type of measure/aggregation applied to a metric.
      - `order` 'ASC' | 'DESC', required — Sort order
  - `ranges` NumberRange[] — Ranges to apply to facet metrics. At the moment, only number ranges are supported.
    - `from` number, required
    - `to` number, required

## Response `200`

Facets analytics response

- FacetsResponse — Response for facets query - contains grouped data by facet values
  - `metrics` object[], required — List of facet metric responses. Each metric can have either measures or buckets for grouping.
    - `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
    - `unit` 'BYTES' | 'MILLISECONDS' | 'NUMBER' | 'PERCENT' — Unit of measurement for metrics. Specifies the unit in which the metric values are expressed.
    - `buckets` Bucket[] — List of buckets that can contain either measures or nested buckets
      - union — A bucket represents a single facet bucket. Buckets can be nested and eventually lead to a leaf bucket with measures.
        - BucketLeaf — A leaf bucket represents a set of measure values for a given facet key.
          - `key` string, required
          - `name` string, required
          - `type` 'LEAF', required — Indicates this bucket is a leaf node containing measures.
          - `measures` Measure[], required — Array of measure results. Each measure contains a name and value. The measures array is always represented as the leaf node of the buckets tree for other types of analytics requests. Example: [{"name": "COUNT", "value": 2984}, {"name": "AVG", "value": 89.5}]
            - `name` 'AVG' | 'MIN' | 'MAX' | 'P50' | 'P90' | 'P95' | 'P99' | 'COUNT' | 'PERCENTAGE' | 'SUM', required — Measure name identifier. Represents the type of measure/aggregation applied to a metric.
            - `value` number, required — The measure value.
        - BucketGroup — A group bucket represents a set of nested buckets for a given facet key.
          - `key` string, required
          - `name` string, required
          - `type` 'GROUP', required — Indicates that this bucket is a grouping node containing nested buckets.
          - `buckets` BucketList, required — recursive

## Other responses

- `400` — Bad request - Invalid Facets Request.
- `500` — Internal server error while computing facets.

---

[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)
