Vitals API Overview
You can use the Vitals API to programmatically access app health metrics, such as crash rate, app not responding (ANR) rate, and low memory killer (LMK) rate, for your Fire TV and Fire tablet apps. These metrics are organized into metric sets, which are logical groupings of related metrics that share common attributes (freshness and granularity) and can be queried together. Each metric set supports dimensions that you can use to filter results or produce breakdowns.
Use of the Vitals API is subject to the Program Materials License Agreement.
Prerequisites
You need the following before you can call the API:
- An Amazon Developer Account with Admin level credentials
- A Security Profile mapped to the Reporting API (created through the Developer Console > My Settings > API Access)
- The Client ID and Client Secret from the profile's Web Settings tab
- Your app's package name
How it works
Data flows from raw crash logs and performance telemetry on devices into daily and hourly aggregation tables.
- Daily metrics provide one data point per day, available at T-1 day.
- Hourly metrics provide one data point per hour, available at T-2 hours. This is useful for early regression detection after a release.
Freshness
Each metric set offers a standard GET method to retrieve the timestamp of the latest available data, known as freshness. Since a metric set can support multiple granularities (daily, hourly), the operation returns one freshness value per supported granularity.
| Aggregation Period | Freshness SLA | Retention | Max Query Range |
|---|---|---|---|
| DAILY | T-1 Day | 30 days | 30 days per request |
| HOURLY | T-2 Hours | 15 days | 15 days per request |
You should always check freshness before querying to know what date range will return data.
Data queries
To access the data in a metric set, use the POST :query method. Each query must specify a granularity and a time range. Together with the metrics you want to access, you can specify dimensions to break down the aggregations or specify filters to narrow results without adding breakdowns.
The results differ depending on whether you do or don't specify dimensions with your query.
- With dimensions: You get one row per unique dimension combination per time period.
- Without dimensions: You get a single aggregate number per time period
Available metric sets
The table below lists all available metric sets and their supported metrics.
DAILY granularity. The distinctDevices metric represents an approximate count that should not be summed across time periods. The count metrics (crashCount, anrCount, lmkCount) represent total error event occurrences (one device crashing 5 times = 5).| Metric Set | Description | Supported Metrics |
|---|---|---|
crashMetricSet |
Crash rate and event counts | crashRate (Decimal): % of distinct users with at least one crash. crashRate7dUserWeighted (Decimal): 7-day user-weighted rolling average. crashRate28dUserWeighted (Decimal): 28-day user-weighted rolling average. userPerceivedCrashRate (Decimal): % of users with crash during foreground use. userPerceivedCrashRate7dUserWeighted (Decimal): 7-day rolling average of foreground crash rate. userPerceivedCrashRate28dUserWeighted (Decimal): 28-day rolling average of foreground crash rate. distinctDevices (Integer): Approximate active device count. crashCount (Integer): Total crash event occurrences. |
anrMetricSet |
ANR rate and event counts | Same structure as crash metrics, with anrRate and userPerceivedAnrRate variants, plus distinctDevices and anrCount (Integer): Total ANR event occurrences. |
lmkMetricSet |
LMK rate and event counts | Same structure as crash metrics, with lmkRate and userPerceivedLmkRate variants, plus distinctDevices and lmkCount (Integer): Total LMK event occurrences. |
issuesMetricSet |
Top crash/ANR issues by frequency | errorEventCount (Integer): Total error events for a crash signature. affectedDeviceCount (Integer): Distinct devices affected. reportText (String): Crash stacktrace or ANR trace. |
crashRate is a normalized ratio (crashed devices / active devices). crashCount is the absolute number of crash events in the period. Use rates for trend comparison across versions or devices. Use counts when you need raw volumes.issuesMetricSet aggregates over the entire requested time range and returns one row per unique crash signature, sorted by errorEventCount DESC (highest-impact issues first). It requires a reportType parameter to specify the error type (CRASH or ANR). Each row includes the crash stacktrace when available. This metric set is designed for drill-down investigation. Identify which specific crash signatures are driving a rate spike seen in the rate metric sets. LMK is not supported because LMK events are system-triggered and have no stacktrace to debug.Dimensions
Each metric set supports a common set of dimensions for filtering and breakdowns. Unless otherwise specified, all metrics can be broken down or filtered by all available dimensions.
| Dimension | Type | Description |
|---|---|---|
versionCode |
int64 | The version code of the app running on the user's device at the time data was captured. |
countryCode |
string | 2-letter ISO-3166 country code based on the user's location (for example, US). |
deviceModel |
string | Device model friendly name (for example, AFTSS, AFTSSS). |
deviceType |
string | Device form factor: AMAZON_FIRE_TV or AMAZON_TABLETS. |
deviceOS |
string | Device OS type: FIRE_OS or VEGA_OS. |
osVersion |
string | Version of the OS (for example, RS8401/2542). |
Related topics
- Vitals API Reference: Prerequisites, authentication, API endpoints, code examples, error handling, and best practices
- Reporting API: Sales, earnings, and subscription report downloads
- App Health Insights Dashboard: Visual dashboard for the same metrics
Last updated: Jun 29, 2026

