Metric API limits and restricted attributes

This document describes data requirements for the Metric API, including:

  • Data specifications and maximum limits
  • Restricted attributes

For instructions on sending metric data and formatting of the JSON payload, see Report metrics via the Metric API.

Endpoint requirements and maximum limits

All metric data is sent using a POST to:

https://metric-api.newrelic.com/metric/v1

If your account hosts data in New Relic's European Union data center, ensure you're using the proper API endpoints for EU region accounts.

The following default limits apply for all metric data:

Condition Limit

Age range for timestamp values

Metrics reported with a timestamp older than 48 hours ago or newer than 24 hours from the time they are reported are dropped.

Max data points per minute (DPM)

See Additional account conditions.

1 million DPM

Max unique timeseries (cardinality) per account per day

See Additional account conditions.

1 million DPM

A timeseries is a single, unique combination of a metric name and any attributes.

Max unique timeseries (cardinality) per metric name per day

100k

Max payloads per minute 50k
Max attributes per metric 100
Max metric attribute name length 255 characters
Max characters for an attribute key 255 characters
Max metric attribute value length 4096 characters
Allowed HTTP protocols HTTPS only
Numerical long values falling outside minimum or maximum Java long values

Numerical long values that fall outside of the minimum or maximum Java long value will be rejected.

  • If the number is in the common block, then the entire block will be dropped.
  • If the number is in a metric data point, then the metric data point it resides in will be dropped.
Numerical double values falling outside minimum or maximum Java double values

Numeric double values that fall outside of a the minimum or maximum Java double value will be rejected.

  • If the number is in the common block, then the entire block will be dropped.
  • If the number is in a metric data point, then the metric data point it resides in will be dropped.
Payload size Total maximum size or length: 1 MB maximum per POST. We highly recommend using compression.
Attribute naming syntax Attribute names can be a combination of alphanumeric characters, colons (:), periods (.), and underscores (_).

Additional account conditions: Metric API limits apply at the individual account level. Trial and paid accounts receive a 1M DPM and 1M cardinality limit for trial purposes, but you can request up to 15M DPM and 15M cardinality for your account. To request changes to your metric rate limits, contact your New Relic account representative, or visit our Support portal.

Rate limit violations

This section describes how the Metric API behaves when you exceed the rate limits, and how to respond if limits are exceeded.

Max data points per minute (DPM)

Data points per minute refers to the per minute rate at which individual metric values are sent to the Metric API.

When the maximum DPM limit is exceeded for an account, the New Relic Metric API returns a 429 response for the remainder of the minute. The response will include a Retry-After header indicating how long to wait in seconds before resubmitting or sending new data.

To resolve this issue, either reduce the number of data points you are sending, or request a rate limit change. Subsequent subscription changes do not impact modified rate limits. If an account change impacts your rate limit, you must notify us to adjust your rate limit.

To request rate limit changes, contact your New Relic account representative, or visit our Support portal.

Max unique timeseries per account per day

A timeseries is a single, unique combination of a metric name and any attributes assigned to that metric. For example, if a CPU utilization metric with a single attribute hostname is sent from ten different hosts, this equals ten distinct values for the hostname attribute and ten unique metric timeseries.

If the per-account, per-day unique metric timeseries (cardinality) limit is exceeded during a 24 hour period, the endpoint will continue to receive and store raw metric data. However, New Relic will stop creating additional aggregate rollups (1 minute, 5 minutes, etc.) for the remainder of the 24 hour period. (These rollups are used used by default to query time windows longer than 60 minutes.)

You can continue to query your data when such a violation occurs by specifying a 60 minute or shorter time window or specifying the RAW keyword as described in view and query your metrics. This can be helpful in identifying potential causes for the violation.

Max unique timeseries per metric name per day

A timeseries is a single, unique combination of a metric name and any attributes assigned to that metric. For example, if a CPU utilization metric with a single attribute hostname is sent from ten different hosts, this equals ten distinct values for the hostname attribute and ten unique metric timeseries.

If the per-metric name, per-day unique metric timeseries (cardinality) limit is exceeded during a 24 hour period, the endpoint will continue to receive and store raw metric data. However, New Relic will stop creating additional aggregate rollups (1 minute, 5 minutes, etc.) for the remainder of the 24 hour period. (These rollups are used used by default to query time windows longer than 60 minutes.)

You can continue to query your data when such a violation occurs by specifying a 60 minute or shorter time window or specifying the RAW keyword as described in view and query your metrics. This can be helpful in identifying potential causes for the violation.

Max payloads per minute

If you make more than 50k POST requests to the Metric API endpoint within a minute, the endpoint will return a 429 response for the remainder of the minute. The response will include a Retry-After header indicating how long to wait in seconds before resubmitting or sending new data.

In general, if you reach this limit, consider creating larger payloads. To do this, combine more data points into each request to reduce the number of POSTs that are necessary.

If this is not an option, you can request a rate limit increase by contacting your New Relic account representative or visiting our Support portal.

Restricted attributes

These attributes are restricted by the New Relic platform. Any values submitted with these keys in the attributes section of a metric data point will cause the data point to be dropped, or the value to be omitted or overwritten:

Attribute Description
newrelic.source This resets to the value metricAPI.
metricName This resets to the name value passed into each data point. This allows name to be an attribute key.
endTimestamp timestamp and interval.ms will be converted to an endTimestamp for the data point.

Additional restrictions include:

Restriction Comments
Metric and attribute names

You cannot pass the same value for metric name and attribute name.

In the following example, the metric is invalid because the metric is named service.errors.all and there is an attribute service.errors.all.

Example: Metric value used as an attribute (invalid)

[
  {
    "metrics": [
      {
        "name": "service.errors.all",
        "type": "count",
        "value": 15,
        "timestamp": 1531414060739,
        "interval.ms": 10000,
        "attributes": {
          "service.response.statuscode": "400",
          "service.errors.all": "test",
          "service.name": "foo"
        }
      }
    ]
  }
]
Reserved words

The Metric API inherits some reserved words from New Relic Insights, including accountID, appId, and eventType. Additionally, the syntax terms for NRQL are restricted unless you backtick (``) them. For a full list, see Reserved words: NRQL syntax terms.

Keys within metric JSON

All keys used within the metric JSON cannot be attribute keys. This includes interval.ms, timestamp, value, common, min, max, count, sum, and metrics.

Exception: You can use name as an attribute key.

For more help

If you need more help, check out these support and learning resources: