Analytics metrics, dimensions, and filters reference

You're viewingApigee Edge documentation.
Go to theApigee X documentation.
info

This topic is a reference for analytics metrics, dimensions, and filters. For more context on using these, seeAPI Analytics overview.

This topic shows the names for metrics and dimensions as they appear in the UI and as you need to use them in API calls.

Metrics

Following are the API metrics you can retrieve in custom reports and management API calls.

Custom reports nameName to use in the management APIFunctionsDescription
Average Transactions per SecondtpsNone

The average number of transactions, meaning API proxy requests, per second. Note that if you have a relatively low number of transactions over the time period, the average number of transactions per second could appear to be zero in UI custom reports if the number is smaller than two decimal places.

API syntax:tps

Cache Hitcache_hitsum

The number of successful API requests that use the Response Cache instead of the response from the target service.

API syntax:sum(cache_hit)

L1 Cache Elements Countax_cache_l1_countavg, min, max

Returns the number of elements in L1 (in-memory) cache per transaction over a given time period. For example, if you choosemax for the period of a day, and within that day the highest number of elements in cache is 12 for a specific transaction, then the count will be 12. Foravg, if there are three transactions in the time period you're querying, and their cache counts are 5, 6, and 7, the average is 6. L1 cache is in-memory cache as opposed to L2 database cache, as described inCache internals.

API syntax:avg(ax_cache_l1_count)

Policy Errorspolicy_errorsum

The total number of policy errors over the specified time period.

Policy errors usually occur by design. For example, the Verify API Key policy throws an error when an invalid API key is passed in the request, and a Spike Arrest policy throws an error if the number of API calls exceeds the limit defined in the policy. So this metric is useful for finding potential trouble spots in your APIs. For example, policy_error metrics, grouped by the developer_app dimension, might help you discover that an API key or OAuth token has expired for a given app; or you might find that a specific API proxy is throwing a lot of Spike Arrest errors, leading you to discover that the proxy's spike arrest limit doesn't account for an increase in holiday traffic.

A policy error is logged in analytics only if the error results in API proxy failure. For example, if a policy'scontinueOnError attribute is set totrue, the API proxy continues processing a request even if the policy fails. In that case, a policy error is not logged in analytics.

The Policy Name on Error (ax_execution_fault_policy_name) dimension is useful for grouping policy errors by policy name.

A target failure (such as a 404 or 503) does not count as a policy failure. Those count as API proxy failures (is_error).

API syntax:sum(policy_error)

Proxy Errorsis_errorsum

The total number of times API proxies failed over the specified time period. Proxy failure can occur when a policy fails or when there's a runtime failure, such as a 404 or 503 from the target service.

The Proxy (apiproxy) dimension is useful for grouping API proxy failures by proxy.

API syntax:sum(is_error)

Request Processing Latencyrequest_processing_latencyavg, min, max

The amount of time (average, minimum, or maximum), inmilliseconds, that it takes Edge to process incoming requests. The time starts when the request reaches Edge and ends when Edge forwards the request to the target service.

Using different dimensions, you can examine request processing latencies by API proxy, developer app, region, and so on.

API syntax:max(request_processing_latency)

Request Sizerequest_sizesum, avg, min, max

The size of the request payload received by Edge, inbytes.

API syntax:avg(request_size)

Response Cache Executedax_cache_executedsum

The total number of times a Response Cache policy was executed over the given time period.

Since the Response Cache policy is attached in two places in an API proxy (once in the request and once in the response), it usually executes twice in an API call. A cache 'get' and a cache 'put' each count as one execution.

However, response cache execution is 0 if the<SkipCacheLookup> element in the policy evaluates to true (in the request), and 0 if the<SkipCachePopulation> element in the policy evaluates to true (in the response).

In theTrace tool, you can click the Response Cache icon in an executed API call and view theresponsecache.executedflow variable to see whether or not there was a cache execution (a value of 1).

API syntax:sum(ax_cache_executed)

Response Processing Latencyresponse_processing_latencyavg, min, max

The amount of time (average, minimum, or maximum), inmilliseconds, that it takes Edge to process API responses. The time starts when the API proxy receives the target service response and ends when Apigee forwards the response to the original caller.

Using different dimensions, you can examine response processing latencies by API proxy, region, and so on.

API syntax:min(response_processing_latency)

Response Sizeresponse_sizesum, avg, min, max

The size of the response payload returned to the client, inbytes.

API syntax:max(response_size)

Target Errorstarget_errorsum

The total number of 5xx responses from the target service. These are target service errors not caused by Apigee.

API syntax:sum(target_error)

Target Response Timetarget_response_timesum, avg, min, max

The amount of time (sum, average, minimum, or maximum), inmilliseconds, for the target server to respond to a call. This metric tells you how target servers are performing. The time starts when Edge forwards a request to the target service and ends when Edge receives the response.

Note that if an API call returns a response from cache (using the Response Cache policy, for example), the call will never reach the target service, and no target response time metrics are logged.

API syntax:avg(target_response_time)

Total Response Timetotal_response_timesum, avg, min, max

The amount of time (sum, average, minimum, or maximum), inmilliseconds, from when Edge receives a request from a client to when Edge sends the response back to the client. The time includes network overhead (such as the time it takes load balancers and routers to do their work), request processing latency, response processing latency, and target response time (if the response is served from the target service instead of cache).

Using different dimensions, you can examine processing latencies by API proxy, developer app, region, and so on.

API syntax:avg(total_response_time)

Trafficmessage_countsum

The total number of API calls processed by Edge in the specified time period.

Use dimensions to group traffic counts in ways that are most meaningful to you.

API syntax:sum(message_count)

Dimensions

Dimensions let you view metrics in meaningful groupings. For example, seeing total traffic counts becomes much more powerful when you view them for each developer app or API proxy.

Following are the dimensions Apigee provides out of the box. In addition, you can create your own dimensions, as described inAnalyze API message content using custom analytics.

Custom Reports nameName to use in the management APIDescription
Apigee entities
Access Tokenaccess_tokenThe app end user's OAuth access token.
API Productapi_product

The name of the API product containing the API proxies being called. In order to get this dimension, developer apps making the calls must be associated with one or more API products that contain the API proxies, and the proxies being called must check for an API key or OAuth token sent with the API call. The key or token is associated with an API product. For more information, seeFirst things first: How to generate complete analytics data.

If the above criteria aren't met, you'll see the value "(not set)". See alsoWhat does an analytics entity value "(not set)" mean?.

Cache Keyax_cache_key

The key containing the Response Cache value that was accessed. For more information on how the key is constructed for response cache, seeResponse Cache policy.

In theTrace tool, when you select a Response Cache policy that read from or wrote to cache, you can see this value in theresponsecache.cachekeyflow variable.

Cache Nameax_cache_name

The name of the cache containing the keys/values used by the Response Cache policy, prefixed withorgName__envName__. For example, if the org is "foo," the environment is "test," and the cache name is "myCache," the ax_cache_name is foo__test__myCache.

In theTrace tool, when you select a Response Cache policy, you can see this value in theresponsecache.cachenameflow variable.

Cache Sourceax_cache_source

The cache level ("L1" in-memory or "L2" database) from which the Response Cache was retrieved. This dimension also shows "CACHE_MISS" when the response was delivered from the target instead of cache (and response cache was refreshed with the target response); or when a cache key in the request is invalid. Cache keys are limited to 2 KB in size.

In theTrace tool, when you select the Response Cache policy, you can see this value in theresponsecache.cachesourceflow variable.

For more information on cache levels, seeCache internals.

Client IDclient_id

The consumer key (API key) of the developer app making the API calls, whether passed in the request as API keys or included in OAuth tokens.

In order to get this dimension, proxies receiving calls must be configured to check for a valid API key or OAuth token. Developer apps get API keys, which can be used to generate OAuth tokens, when the apps are registered in Edge. For more information, seeFirst things first: How to generate complete analytics data.

If the above criteria aren't met, you'll see the value "(not set)". See alsoWhat does an analytics entity value "(not set)" mean?.

Developer Appdeveloper_app

The Edge-registered developer app making API calls.

In order to get this dimension, apps must be associated with one or more API products that contain the API proxies being called, and the proxies must check for an API key or OAuth token sent with the API call. The key or token identifies the developer app. For more information, seeFirst things first: How to generate complete analytics data.

If the above criteria aren't met, you'll see the value "(not set)". See alsoWhat does an analytics entity value "(not set)" mean?.

Developer Emaildeveloper_email

The email of the Edge-registered developers whose app made the API calls.

In order to get this dimension, developers must have apps associated with one or more API products that contain the API proxies being called, and the proxies must check for an API key or OAuth token sent with the API call. The key or token identifies the developer app. For more information, seeFirst things first: How to generate complete analytics data.

If the above criteria aren't met, you'll see the value "(not set)". See alsoWhat does an analytics entity value "(not set)" mean?.

Developer IDdeveloper

The unique Edge-generated developer ID in the form oforg_name@@@unique_id.

In order to get this dimension, developers must have apps associated with one or more API products containing the API proxies being called, and the proxies must check for an API key or OAuth token sent with the API calls. The key or token identifies the developer. For more information, seeFirst things first: How to generate complete analytics data.

If the above criteria aren't met, you'll see the value "(not set)". See alsoWhat does an analytics entity value "(not set)" mean?.

EnvironmentenvironmentThe Edge environment in which the API proxies are deployed. For example, "test" or "prod".
Fault Code on Errorax_edge_execution_fault_code

Thefault code of the error. For example:messaging.adaptors.http.flow.GatewayTimeout

Flow Name on Errorax_execution_fault
  _flow_name

The namedflow in an API proxy that raised an error. For example, "PreFlow," "PostFlow," or the name of a conditional flow you created.

Note that the full name to use in the management API is ax_execution_fault_flow_name, without a line break.

Where no errors occurred, you'll see the value "(not set)".

Flow Resourceflow_resourceApigee use only. Seethis Community post if you're curious.
Flow State on Errorax_execution_fault
  _flow_state

The name of the API proxy flow states that raised errors, such as "PROXY_REQ_FLOW" or "TARGET_RESP_FLOW."

Note that the full name to use in the management API is ax_execution_fault_flow_state, without a line break.

Gateway Flow IDgateway_flow_idAs API calls move through Edge, each call gets its own gateway flow ID. Example: rrt329ea-12575-114653952-1. Gateway Flow ID is useful for distinguishing metrics in high-TPS situations where other dimensions such as organization, environment, and timestamp are identical across calls.
OrganizationorganizationThe Edge organization in which the API proxies are deployed.
Policy Name on Errorax_execution_fault
  _policy_name

The name of the policy that threw an error and caused the API call to fail.

Note that the full name to use in the management API is ax_execution_fault_policy_name, without a line break.

If a policy throws an error but the policy root attributecontinueOnError is set totrue, the API proxy flow continues without failure, and the policy failure isn't counted in this dimension.

ProxyapiproxyThe machine name (not the Display Name) of an API proxy.
Proxy Base Pathproxy_basepath

The BasePath configured on the API proxy ProxyEndpoint. Base path does not include the domain and port portion of the API proxy URL. For example, if an API proxy's base URL is https://apigeedocs-test.apigee.net/releasenotes/, the base path is /releasenotes.

The value is also stored in theproxy.basepathflow variable.

Proxy Path Suffixproxy_pathsuffix

The resource path added to the API proxy base path. For example, if an API proxy's base URL ishttps://apigeedocs-test.apigee.net/hello/, and a call is made tohttps://apigeedocs-test.apigee.net/hello/json, the pathsuffix is/json.

If no pathsuffix is used, the value is empty.

The value is also stored in theproxy.pathsuffixflow variable.

Proxy Revisionapiproxy_revisionThe revision number of the API proxy that handled API calls. This doesn't necessarily mean the latest revision of an API proxy. If an API proxy has 10 revisions, the 8th revision may currently be deployed. Also, an API may have multiple revisions deployed as long as the revisions have different Base Paths, as described inDeploying proxies in the UI.
Resolved Client IPax_resolved_client_ip

Contains the originating client IP address. The value of theax_resolved_client_ip dimension is calculated from the values in theax_true_client_ip and thex_forwarded_for_ip dimensions.

Note that when using routing products such as Akamai to capture the true IP addresses of clients, the client IP is passed to Edge in the HTTP headerTrue-Client-IP, which is then used to set theax_true_client_ip dimension.

The value of theax_resolved_client_ip dimension is calculated as follows:

  1. Ifax_true_client_ip is not null and does not contain a local IP address, then setax_resolved_client_ip toax_true_client_ip.
  2. Else, setax_resolved_client_ip to the first non-local IP address inx_forwarded_for_ip.
  3. If bothax_true_client_ip andx_forwarded_for_ip contain only local IP addresses, then setax_resolved_client_ip to the first local IP address inx_forwarded_for_ip.
  4. If bothax_true_client_ip andx_forwarded_for_ip are null, setax_resolved_client_ip to(not set).
  5. Ifax_true_client_ip is a local IP address andx_forwarded_for_ip is null, setax_resolved_client_ip to(not set).
Response Status Coderesponse_status_codeThe HTTP response status code forwarded from Apigee to the client, such as 200, 404, 503, and so on. In Edge, the response status code from the target can be overwritten with policies such asAssign Message andRaise Fault, which is why this dimension can differ fromTarget Response Code (target_response_code).
Virtual Hostvirtual_hostThe name of thevirtual host the API call was made to. For example, organizations have two virtual hosts by default:default (http) andsecure (https).
Inbound/Client
Client IP Addressclient_ipIP address of the system that hits the router, such as the original client (proxy_client_ip) or a load balancer. When there are multiple IPs in theX-Forwarded-For header, this is the last IP listed.
Device Categoryax_ua_device_categoryThe type of device from which the API call was made, such as "Tablet" or "Smartphone".
OS Familyax_ua_os_familyThe operating system family of the device making the call, such as "Android" or "iOS".
OS Versionax_ua_os_version

The operating system version of the device making the call.

It's useful to use this as a second "drill-down" dimension with OS Family (ax_ua_os_family) to see the versions of the operating systems.

Proxy Client IPproxy_client_ip

The IP address of the calling client, stored in theproxy.client.ipflow variable. This is often theX-Forwarded-For address of the inbound call, which is the IP address Edge received from the last external TCP handshake. This could be the calling client or a load balancer. When there are multiple IPs in theX-Forwarded-For header, this is the last IP listed.

Referred Client IPax_true_client_ip

When using routing products such as Akamai to capture the true IP addresses of clients, the client IPs are passed to Edge in the HTTP headerTrue-Client-IP. This dimension captures those true client IPs from that header.

To determine the original client IP Address, accessed through theax_resolved_client_ip dimension, Edge uses theax_true_client_ip and thex_forwarded_for_ip dimensions.

Request Pathrequest_path

The resource path (not including the domain) to the target service, excluding query parameters.

For example, the Apigee sample targethttp://mocktarget.apigee.net includes several resources, including/user, which returns a greeting. Regardless of how your API proxy callshttp://mocktarget.apigee.net/user, the request_path is/user.

Request URIrequest_uri

The resource path (not including the domain) to the target service, including query parameters.

For example, the Apigee sample targethttp://mocktarget.apigee.net includes several resources, including/user?user={name} resource and query parameter to return a custom greeting to the name provided. Regardless of how your API proxy callshttp://mocktarget.apigee.net/user?user=Dude, the request_uri is/user?user=Dude.

Request Verbrequest_verbThe HTTP request verb in the API requests, such as GET, POST, PUT, DELETE.
User Agentuseragent

The name of the user agent, or software agent, used to make the API call. Examples:

  • A Pixel XL making a call through Chrome:Mozilla/5.0 (Linux; Android 7.1.2; Pixel XL Build/NHG47N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.92 Mobile Safari/537.36
  • An iPad making a call through Chrome:Mozilla/5.0 (iPad; CPU OS 10_2 like Mac OS X) AppleWebKit/602.1.50 (KHTML, like Gecko) CriOS/54.0.2840.91 Mobile/14C92 Safari/602.1
  • cURL from a terminal:curl/7.51.0
User Agent Familyax_ua_agent_familyThe family of the useragent, such as "Chrome Mobile" or "cURL".
User Agent Typeax_ua_agent_typeThe useragent type, such as "Browser," "Mobile Browser," "Library," and so on.
User Agent Versionax_ua_agent_version

The version of the useragent.

It's useful to use this as a second "drill-down" dimension with User Agent Family (ax_ua_agent_family) to get the version of the agent family.

Outbound/Target
Target Base Pathtarget_basepath

The resource path (not including the domain) to the target service, excluding query parameters, that is defined in the proxy's<TargetEndpoint>.

For example, say an API proxy calls the following target:

<TargetEndpoint name="default">...<HTTPTargetConnection>  <URL>http://mocktarget.apigee.net/user?user=Dude</URL></HTTPTargetConnection>

In this example, the target_basepath is/user.

If the target were this:

<TargetEndpoint name="default">...<HTTPTargetConnection>  <URL>http://mocktarget.apigee.net</URL></HTTPTargetConnection>

the target_basepath would be null.

In theTrace tool, when you select the AX icon at the end of the flow diagram, thetarget.basepathflow variable maps to the target_basepath dimension.

Target Hosttarget_hostThe host of the target service. For example, if an API proxy callshttp://mocktarget.apigee.net/help, the target_host ismocktarget.apigee.net.
Target IP Addresstarget_ipThe IP address of the target service returning the response to the API proxy.
Target Response Codetarget_response_code

The HTTP response status code returned by the target service to the API proxy, such as 200, 404, 503, and so on.

A value of "null" means the request never reached the target service. This occurs when the response is served by the Response Cache policy or when there's a failure in request processing.

This is different than theResponse Status Code (response_status_code) dimension.

Target URLtarget_url

The full URL of the target service defined in an API proxy's TargetEndpoint.

<TargetEndpoint name="default">...<HTTPTargetConnection>  <URL>http://mocktarget.apigee.net/user?user=Dude</URL></HTTPTargetConnection>

In this example, the target_url ishttp://mocktarget.apigee.net/user?user=Dude.

Note that the URL can also be overridden during API proxy processing with thetarget.urlflow variable.

Inproxy chaining and when usingscript targets (Node.js), the target_url in the calling proxy is null.

X Forwarded Forx_forwarded_for_ip

The list of IP addresses in theX-Forwarded-For header.

To determine the original client IP Address, accessed through theax_resolved_client_ip dimension, Edge uses theax_true_client_ip and thex_forwarded_for_ip dimensions.

Time
Day of weekax_day_of_weekThe three-letter day of the week abbreviation on which the API calls were made. For example, Mon, Tue, Wed.
Monthax_month_of_yearThe numeric month in which the API calls were made. For example, "03" for March.
Time of Dayax_hour_of_day

Based on a 24-hour clock, the 2-digit hour in which API calls were made. For example, API calls made in the hour between 10pm and 11pm, the ax_hour_of_day would be 22.

The time value is in UTC.

Time Zoneax_geo_timezoneThe common names of the time zones the API calls were made from, such as America/New_York and Europe/Dublin.
Week of Monthax_week_of_monthThe numeric week of the month. For example, for API calls made in the 3rd week of a month, the ax_week_of_month is 3.
Location
Cityax_geo_cityThe city from which the API calls were made.
Continentax_geo_continentThe two-letter code of the continent from which the API calls were made. For example, NA for North America.
Countryax_geo_countryThe two-letter code of the country from which the API calls were made. For example, US for United States.
Geographical Regionax_geo_regionThe hyphenated code for the geographic region, such as STATE-COUNTRY. For example, WA-US for Washington-United States.
Regionax_dn_regionThe name of the Apigee data center where API proxies are deployed, such as us-east-1.
Monetization
Mint Transaction Ignore Messagex_apigee_mint_tx_ignoreMessageFlag that specifies whether to ignore messages related to monetization. Set tofalse for all monetization organizations.
Mint Transaction Statusx_apigee_mint_tx_statusStatus of a monetization request, such as success, failure, invalid, or none.

Filters

Filters let you limit results to metrics with specific characteristics. Following are some sample filters. Use metric and dimension API-style names when defining filters.

Note: You must put filter text between single quotes, for example,'books'. Donot use double quotes.

Returns metrics for API proxies with the name books or music:

filter=(apiproxy in 'books','music')

Returns metrics for API proxies with names that start with "m":

filter=(apiproxy like 'm%')

Returns metrics for API proxies with names that do not start with "m":

filter=(apiproxy not like 'm%')

Returns metrics for API calls with response status codes between 400 and 599:

filter=(response_status_code ge 400 and response_status_code le 599)

Returns metrics for API calls with response status code of 200 and a target response code of 404:

filter=(response_status_code eq 200 and target_response_code eq 404)

Returns metrics for API calls with a response status code of 500:

filter=(response_status_code eq 500)

Returns metrics for API calls that didn't result in errors:

filter=(is_error eq 0)

Following are operators you can use to build report filters.

OperatorDescription
inInclude in list
notinExclude from list
eqEquals,==
neNot equal to,!=
gtGreater than,>
ltLess than,<
geGreater than or equal to,>=
leLess than or equal to,<=
likeReturns true if the string pattern matches the supplied pattern.
not likeReturns false if the string pattern matches the supplied pattern.
similar toReturns true or false depending on whether its pattern matches the given string. It is similar tolike except that it interprets the pattern using the SQL standard's definition of a regular expression.
not similar toReturns false or true depending on whether its pattern matches the given string. It is similar tonot like, except that it interprets the pattern using the SQL standard's definition of a regular expression.
andLets you use 'and' logic to include more than one filter expression. The filter includes data that meets all the conditions.
orLets you use 'or' logic to evaluate different possible filter expressions. The filter includes data that meets at least one of the conditions.

Except as otherwise noted, the content of this page is licensed under theCreative Commons Attribution 4.0 License, and code samples are licensed under theApache 2.0 License. For details, see theGoogle Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates.

Last updated 2026-02-02 UTC.