Statistics

Ably provides statistics at one minute intervals. They are aggregated by minute, hour, day and month. The most recent statistics can be delayed by up to six seconds.

Statistics are available as:

Account statistics

Account statistics aggregate metrics from all applications in your account with additional account-only metrics relating to peak rates monitored and enforced at an account level.

Account statistics via API

You can retrieve account statistics using the Control API by making a call to the accounts endpoint using your accountId and accessToken. For example, to retrieve the last two minutes of account statistics:

curl --request GET \
  --url 'https://control.ably.net/v1/accounts/${ACCOUNT_ID}/stats?unit=minute&limit=2' \
  --header 'Authorization: Bearer ${ACCESS_TOKEN}' \
  --header 'Content-Type: application/json'

This endpoint returns a statistics response type including account-only metrics.

curl 'https://control.ably.net/v1/me' \
--header 'Authorization: Bearer ${ACCESS_TOKEN}'

Account statistics from the dashboard

Your account statistics are available as graphs, tabular data, and for download from your account dashboard.

App statistics

App statistics provide metrics scoped to each application. You can retrieve account statistics:

App statistics via Control API

You can retrieve app statistics using the Control API by making a call to the apps endpoint using your APP_ID and ACCESS_TOKEN:

curl 'https://control.ably.net/v1/apps/${APP_ID}/stats' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer ${ACCESS_TOKEN}' \
--data-raw '{
    "unit": "hour",
    "limit": 1
}'

This endpoint returns a statistics response type.

App statistics via SDK

App-level statistics are also available programmatically using an Ably SDK at one minute intervals, or aggregated up to the hour, day or month. Whilst it is possible to obtain statistics via the SDKs, this API is not actively maintained and may be deprecated in future. We recommend using app-level stats via the Control API.

The following is an example of querying app-level statistics using the Ably SDK stats method.

Realtime

1

2

3

const realtime = new Ably.Realtime('demokey:*****');
const resultPage = await realtime.stats({ unit: 'hour' });
console.log(resultPage.items[0]);
API key:
DEMO ONLY

Subscribe to app statistics

You can subscribe to app statistics using the [meta]stats:minute metachannel. Events are published at one minute intervals and contain the statistics for the previous minute.

The following is an example of subscribing to the [meta]stats:minute channel:

Realtime

1

2

3

4

5

const channel = ably.channels.get("[meta]stats:minute");

await channel.subscribe('update', event => {
  console.log(JSON.stringify(event, undefined, 2));
});

App statistics from the dashboard

App statistics are available as graphs, tabular data, and for download from each application dashboard in your account.

Statistics response

Statistic API and SDK requests return an array of Statistics entry types.

An example simplified response with one stats entry is shown below:

JSON

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

[
  {
    entries: {
      'messages.all.all.count': 245,
      'messages.all.all.data': 58654,
      'messages.all.all.uncompressedData': 58654,
      'messages.all.all.billableCount': 245,
      'messages.all.messages.count': 245,
      'messages.all.messages.data': 58654,
      'messages.all.messages.uncompressedData': 58654,
      'messages.all.messages.billableCount': 245,
      'messages.inbound.realtime.all.count': 145,
      'messages.inbound.realtime.all.data': 29127,
      'messages.inbound.realtime.all.uncompressedData': 29127,
      'messages.inbound.realtime.messages.count': 145,
      ...
    },
    schema: 'https://schemas.ably.com/json/app-stats-0.0.5.json',
    appId: '<appId>',
    inProgress: '2025-01-20:15:11',
    unit: 'hour',
    intervalId: '2025-01-20:15'
  }
]

Statistics entry type

The following metadata is returned for each entry:

PropertyDescription
appIdThe ID of the Ably application the statistics are for. Only present when querying app statistics.
accountIdThe ID of the Ably account the statistics are for. Only present when querying account statistics.
intervalIdStart time for the stats entry. Format is yyyy-mm-dd:hh:mm for unit=minute, and yyyy-mm-dd:hh for unit=hour,day,month.
unitUnit of time that the stats entry covers. One of minute, hour, day or month.
schemaURI of the stats schema.
inProgressThe last sub-interval included in this entry in the format yyyy-mm-dd:hh:mm:ss, else undefined. For entries that are still in progress, such as the current month.

All messages

All messages metrics include all messages types, such as those sent and received by Ably and clients, messages delivered via integrations and push notifications delivered to devices.

MetricDescription
messages.all.all.countTotal number of messages that were successfully sent, summed over all message types and transports.
messages.all.all.billableCountTotal number of billable messages that were successfully sent, summed over all message types and transports.
messages.all.all.dataTotal message size of all messages that were successfully sent, summed over all message types and transports.
messages.all.all.uncompressedDataTotal uncompressed message size, excluding delta compression.
messages.all.all.failedTotal number of messages that failed. These are messages which did not succeed for some reason other than Ably explicitly refusing them, such as they were rejected by an external integration target, or a service issue on Ably's side.
messages.all.all.refusedTotal number of messages that were refused by Ably. For example, due to rate limiting, malformed messages, or incorrect client permissions.
messages.all.messages.countTotal message count, excluding presence and object messages.
messages.all.messages.billableCountTotal billable message count, excluding presence and object messages.
messages.all.messages.dataTotal message size, excluding presence and object messages.
messages.all.messages.uncompressedDataTotal number of messages that failed. These are messages which did not succeed for some reason other than Ably explicitly refusing them, such as they were rejected by an external integration target, or a service issue on Ably's side.
messages.all.messages.failedTotal number of messages excluding presence and object messages that failed. These are messages which did not succeed for some reason other than Ably explicitly refusing them, such as they were rejected by an external integration target, or a service issue on Ably's side.
messages.all.messages.refusedTotal number of messages excluding presence and object messages that were refused by Ably. For example, due to rate limiting, malformed messages, or incorrect client permissions.
messages.all.presence.countTotal presence message count.
messages.all.presence.billableCountTotal billable presence message count.
messages.all.presence.dataTotal presence message size.
messages.all.presence.uncompressedDataTotal uncompressed presence message size, excluding delta compression.
messages.all.objects.countTotal objects message count.
messages.all.objects.billableCountTotal billable objects message count.
messages.all.objects.dataTotal objects message size.
messages.all.objects.uncompressedDataTotal uncompressed objects message size, excluding delta compression.
messages.all.messages.failedTotal number of presence messages excluding presence and object messages that failed. These are messages which did not succeed for some reason other than Ably explicitly refusing them, such as they were rejected by an external integration target, or a service issue on Ably's side.
messages.all.messages.refusedTotal number of presence messages excluding presence and object messages that were refused by Ably. For example, due to rate limiting, malformed messages, or incorrect client permissions.

Inbound messages

Inbound messages metrics include those messages that are sent by clients and received inbound from those clients by Ably.

MetricDescription
messages.inbound.realtime.all.countTotal inbound realtime message count, received by Ably from clients.
messages.inbound.realtime.all.dataTotal inbound realtime message size, received by Ably from clients.
messages.inbound.realtime.all.uncompressedDataTotal uncompressed inbound realtime message size, excluding delta compression, received by Ably from clients.
messages.inbound.realtime.all.failedTotal number of inbound realtime messages that failed. These are messages which did not succeed for some reason other than Ably explicitly refusing them, such as a service issue on Ably's side.
messages.inbound.realtime.all.refusedTotal number of inbound realtime messages that were refused by Ably. For example, due to rate limiting, malformed messages, or incorrect client permissions.
messages.inbound.realtime.messages.countTotal inbound realtime message count, excluding presence and object messages, received by Ably from clients.
messages.inbound.realtime.messages.dataTotal inbound realtime message size, excluding presence and object messages, received by Ably from clients.
messages.inbound.realtime.messages.uncompressedDataTotal uncompressed inbound realtime message size, received by Ably from clients. This excludes delta compression, and presence and object messages.
messages.inbound.realtime.messages.failedTotal number of inbound realtime messages excluding presence and object messages that failed These are messages which did not succeed for some reason other than Ably explicitly refusing them, such as they were rejected by an external integration target, or a service issue on Ably's side.
messages.inbound.realtime.messages.refusedTotal number of inbound realtime messages excluding presence and object messages that were refused by Ably. For example, due to rate limiting, malformed messages, or incorrect client permissions.
messages.inbound.realtime.presence.countTotal inbound realtime presence message count, received by Ably from clients.
messages.inbound.realtime.presence.dataTotal inbound realtime presence message size, received by Ably from clients.
messages.inbound.realtime.presence.uncompressedDataTotal uncompressed inbound realtime presence message size, excluding delta compression, received by Ably from clients.
messages.inbound.realtime.presence.failedTotal number of inbound realtime presence messages that failed. These are messages which did not succeed for some reason other than Ably explicitly refusing them, such as a service issue on Ably's side.
messages.inbound.realtime.presence.refusedTotal number of inbound realtime presence messages that were refused by Ably. For example, due to rate limiting, malformed messages, or incorrect client permissions.
messages.inbound.realtime.objects.countTotal inbound realtime object message count, received by Ably from clients.
messages.inbound.realtime.objects.dataTotal inbound realtime object message size, received by Ably from clients.
messages.inbound.realtime.objects.uncompressedDataTotal uncompressed inbound realtime object message size received by Ably from clients.
messages.inbound.realtime.objects.failedTotal number of inbound realtime object messages that failed. These are messages which did not succeed for some reason other than Ably explicitly refusing them, such as a service issue on Ably's side.
messages.inbound.realtime.objects.refusedTotal number of inbound realtime object messages that were refused by Ably. For example, due to rate limiting, malformed messages, or incorrect client permissions.
messages.inbound.rest.all.countTotal inbound REST message count, received by Ably from clients.
messages.inbound.rest.all.dataTotal inbound REST message size, received by Ably from clients.
messages.inbound.rest.all.uncompressedDataTotal uncompressed inbound REST message size, excluding delta compression, received by Ably from clients.
messages.inbound.rest.all.failedTotal number of inbound REST messages that failed. These are messages which did not succeed for some reason other than Ably explicitly refusing them, such as a service issue on Ably's side.
messages.inbound.rest.all.refusedTotal number of inbound REST messages that were refused by Ably. For example, due to rate limiting, malformed messages, or incorrect client permissions.
messages.inbound.rest.messages.countTotal inbound REST message count, excluding presence and object messages, received by Ably from clients.
messages.inbound.rest.messages.dataTotal inbound REST message size, excluding presence and object messages, received by Ably from clients.
messages.inbound.rest.messages.uncompressedDataTotal uncompressed inbound REST message size, received by Ably from clients. This excludes delta compression, and presence and object messages.
messages.inbound.rest.messages.failedTotal number of inbound REST messages that failed. These are messages which did not succeed for some reason other than Ably explicitly refusing them, such as a service issue on Ably's side. This excludes presence and object messages.
messages.inbound.rest.messages.refusedTotal number of inbound REST messages that were refused by Ably. For example, due to rate limiting, malformed messages, or incorrect client permissions. This excludes presence and object messages.
messages.inbound.rest.presence.countTotal inbound REST presence message count, received by Ably from clients.
messages.inbound.rest.presence.dataTotal inbound REST presence message size, received by Ably from clients.
messages.inbound.rest.presence.uncompressedDataTotal uncompressed inbound REST presence message size, excluding delta compression, received by Ably from clients.
messages.inbound.rest.presence.failedTotal number of inbound REST presence messages that failed. These are messages which did not succeed for some reason other than Ably explicitly refusing them, such as a service issue on Ably's side.
messages.inbound.rest.presence.refusedTotal number of inbound REST presence messages that were refused by Ably. For example, due to rate limiting, malformed messages, or incorrect client permissions.
messages.inbound.rest.objects.countTotal inbound REST object message count, received by Ably from clients.
messages.inbound.rest.objects.dataTotal inbound REST object message size, received by Ably from clients.
messages.inbound.rest.objects.uncompressedDataTotal uncompressed inbound REST object message size, excluding delta compression received by Ably from clients.
messages.inbound.rest.objects.failedTotal number of inbound REST object messages that failed. These are messages which did not succeed for some reason other than Ably explicitly refusing them, such as a service issue on Ably's side.
messages.inbound.rest.objects.refusedTotal number of inbound REST object messages that were refused by Ably. For example, due to rate limiting, malformed messages, or incorrect client permissions.
messages.inbound.all.all.countTotal inbound message count, received by Ably from clients.
messages.inbound.all.all.dataTotal inbound message size, received by Ably from clients.
messages.inbound.all.all.uncompressedDataTotal uncompressed inbound message size, excluding delta compression, received by Ably from clients.
messages.inbound.all.all.failedTotal number of inbound messages that failed. These are messages which did not succeed for some reason other than Ably explicitly refusing them, such as a service issue on Ably's side.
messages.inbound.all.all.refusedTotal number of inbound messages that were refused by Ably. For example, due to rate limiting, malformed messages, or incorrect client permissions.
messages.inbound.all.messages.countTotal inbound message count, excluding presence and object messages, received by Ably from clients.
messages.inbound.all.messages.dataTotal inbound message size, excluding presence and object messages, received by Ably from clients.
messages.inbound.all.messages.uncompressedDataTotal uncompressed inbound message size, received by Ably from clients. This excludes delta compression, and presence and object messages.
messages.inbound.all.messages.failedTotal number of inbound messages excluding presence and object messages that failed. These are messages which did not succeed for some reason other than Ably explicitly refusing them, such as a service issue on Ably's side.
messages.inbound.all.presence.countTotal inbound presence message count, received by Ably from clients.
messages.inbound.all.presence.dataTotal inbound presence message size, received by Ably from clients.
messages.inbound.all.presence.uncompressedDataTotal uncompressed inbound presence message size, excluding delta compression, received by Ably from clients.
messages.inbound.all.presence.failedTotal number of inbound presence messages that failed. These are messages which did not succeed for some reason other than Ably explicitly refusing them, such as a service issue on Ably's side.
messages.inbound.all.presence.refusedTotal number of inbound presence messages that were refused by Ably. For example, due to rate limiting, malformed messages, or incorrect client permissions.

Outbound messages

Outbound message metrics include those messages that are sent outbound from Ably to either clients that subscribe or request messages (such as history requests), to integrations, or to push notification targets.

MetricDescription
messages.outbound.realtime.all.countTotal outbound realtime message count, sent from Ably to clients.
messages.outbound.realtime.all.billableCountTotal billable outbound realtime message count, sent from Ably to clients.
messages.outbound.realtime.all.dataTotal outbound realtime message size, sent from Ably to clients.
messages.outbound.realtime.all.uncompressedDataTotal uncompressed outbound realtime message size, excluding delta compression, sent from Ably to clients.
messages.outbound.realtime.all.failedTotal number of outbound realtime messages that failed. These are messages which did not succeed for some reason other than Ably rejecting them, such as rejection by an external integration target.
messages.outbound.realtime.all.refusedTotal number of outbound realtime messages that were refused by Ably. This is generally due to rate limiting.
messages.outbound.realtime.messages.countTotal outbound realtime message count, excluding presence and object messages, sent from Ably to clients.
messages.outbound.realtime.messages.billableCountTotal billable outbound realtime message count, excluding presence and object messages, sent from Ably to clients.
messages.outbound.realtime.messages.dataTotal outbound realtime message size, excluding presence and object messages, sent from Ably to clients.
messages.outbound.realtime.messages.uncompressedDataTotal uncompressed outbound realtime message size, sent from Ably to clients. This excludes delta compression, and presence and object messages.
messages.outbound.realtime.messages.failedTotal number of outbound realtime messages excluding presence and object messages that failed. These are messages which did not succeed for some reason other than Ably explicitly refusing them, such as a service issue on Ably's side.
messages.outbound.realtime.messages.refusedTotal number of outbound realtime messages excluding presence and object messages that were refused by Ably. This is generally due to rate limiting.
messages.outbound.realtime.presence.countTotal outbound realtime presence message count, sent from Ably to clients.
messages.outbound.realtime.presence.billableCountTotal billable outbound realtime presence message count, sent from Ably to clients.
messages.outbound.realtime.presence.dataTotal outbound realtime presence message size, sent from Ably to clients.
messages.outbound.realtime.presence.uncompressedDataTotal uncompressed outbound realtime presence message size, excluding delta compression, sent from Ably to clients.
messages.outbound.realtime.presence.failedTotal number of outbound realtime presence messages that failed. These are messages which did not succeed for some reason other than Ably explicitly refusing them, such as a service issue on Ably's side.
messages.outbound.realtime.presence.refusedTotal number of outbound realtime presence messages that were refused by Ably. This is generally due to rate limiting.
messages.outbound.realtime.objects.countTotal outbound realtime object message count, sent from Ably to clients.
messages.outbound.realtime.objects.billableCountTotal billable outbound realtime object message count, sent from Ably to clients.
messages.outbound.realtime.objects.dataTotal outbound realtime object message size, sent from Ably to clients.
messages.outbound.realtime.objects.uncompressedDataTotal uncompressed outbound realtime presence message size, sent from Ably to clients.
messages.outbound.rest.all.countTotal outbound REST message count, sent from Ably to clients.
messages.outbound.rest.all.dataTotal outbound REST message size, sent from Ably to clients.
messages.outbound.rest.all.uncompressedDataTotal uncompressed outbound REST message size, excluding delta compression, sent from Ably to clients.
messages.outbound.rest.all.refusedTotal number of messages that would have been broadcast to realtime subscribers as a result of a REST publish attempt that was refused for breaching account-wide message rate limits.
messages.outbound.rest.messages.countTotal outbound REST message count, excluding presence and object messages, sent from Ably to clients.
messages.outbound.rest.messages.dataTotal outbound REST message size, excluding presence and object messages, sent from Ably to clients.
messages.outbound.rest.messages.uncompressedDataTotal uncompressed outbound REST message size, sent from Ably to clients. This excludes delta compression, and presence and object messages.
messages.outbound.rest.messages.refusedTotal number of messages that would have been broadcast to realtime subscribers as a result of a REST publish attempt that was refused for breaching account-wide message rate limit. This excludes presence and object messages.
messages.outbound.rest.presence.countTotal outbound REST presence message count, sent from Ably to clients.
messages.outbound.rest.presence.dataTotal outbound REST presence message size, sent from Ably to clients.
messages.outbound.rest.presence.uncompressedDataTotal uncompressed outbound REST presence message size, excluding delta compression, sent from Ably to clients.
messages.outbound.rest.objects.countTotal outbound REST object message count, sent from Ably to clients.
messages.outbound.rest.objects.dataTotal outbound REST object message size, sent from Ably to clients.
messages.outbound.rest.objects.uncompressedDataTotal uncompressed outbound REST object message size, excluding delta compression, sent from Ably to clients.
messages.outbound.rest.objects.refusedTotal number of object messages that would have been broadcast to realtime subscribers as a result of a REST publish attempt that was refused for breaching account-wide message rate limit.
messages.outbound.webhook.all.countTotal outbound webhook message count, sent from Ably to clients using webhooks.
messages.outbound.webhook.all.dataTotal outbound webhook message size, sent from Ably to clients using webhooks.
messages.outbound.webhook.all.uncompressedDataTotal uncompressed outbound webhook message size, excluding delta compression, sent from Ably to clients using webhooks.
messages.outbound.webhook.all.failedTotal number of outbound webhook messages that failed. These are messages which did not succeed for some reason other than Ably explicitly refusing them, such as rejection by an external integration target.
messages.outbound.webhook.all.refusedTotal number of outbound webhook messages that were refused by Ably. This is generally due to rate limiting.
messages.outbound.webhook.messages.countTotal outbound webhook message count, sent from Ably to clients using webhooks. This excludes presence and object messages.
messages.outbound.webhook.messages.dataTotal outbound webhook message size, sent from Ably to clients using webhooks. This excludes presence and object messages.
messages.outbound.webhook.messages.uncompressedDataTotal uncompressed outbound webhook message size, sent from Ably to clients using webhooks. This excludes delta compression, and presence and object messages.
messages.outbound.webhook.messages.failedTotal number of outbound webhook messages excluding presence and object messages that failed. These are messages which did not succeed for some reason other than Ably explicitly refusing them such as rejection by an external integration target.
messages.outbound.webhook.messages.refusedTotal number of outbound webhook messages excluding presence and object messages that were refused by Ably. This is generally due to rate limiting.
messages.outbound.webhook.presence.countTotal outbound webhook presence message count, sent from Ably to clients using webhooks.
messages.outbound.webhook.presence.dataTotal outbound webhook presence message size, sent from Ably to clients using webhooks.
messages.outbound.webhook.presence.uncompressedDataTotal uncompressed outbound webhook presence message size, excluding delta compression, sent from Ably to clients using webhooks.
messages.outbound.webhook.presence.failedTotal number of outbound webhook presence messages that failed. These are messages which did not succeed for some reason other than Ably explicitly refusing them, such as rejection by an external integration target.
messages.outbound.webhook.presence.refusedTotal number of outbound webhook presence messages that were refused by Ably. This is generally due to rate limiting.
messages.outbound.sharedQueue.all.countTotal Ably Queue message count, sent from Ably to an Ably Queue using an integration rule.
messages.outbound.sharedQueue.all.dataTotal Ably Queue message size, sent from Ably to an Ably Queue using an integration rule.
messages.outbound.sharedQueue.all.uncompressedDataTotal uncompressed Ably Queue message size, excluding delta compression, sent from Ably to an Ably Queue using an integration rule.
messages.outbound.sharedQueue.all.failedTotal number of Ably Queue messages that failed because they were rejected by RabbitMQ for some reason.
messages.outbound.sharedQueue.all.refusedTotal number of Ably Queue messages that Ably refused to send. This is generally due to rate limiting.
messages.outbound.sharedQueue.messages.countTotal Ably Queue message count, sent from Ably to an Ably Queue using an integration rule. This excludes presence and object messages.
messages.outbound.sharedQueue.messages.dataTotal Ably Queue message size, sent from Ably to an Ably Queue using an integration rule. This excludes presence and object messages.
messages.outbound.sharedQueue.messages.uncompressedDataTotal uncompressed Ably Queue message size, sent from Ably to an Ably Queue using an integration rule. This excludes delta compression, and presence and object messages.
messages.outbound.sharedQueue.messages.failedTotal number of Ably Queue messages, excluding presence and object messages, that failed because they were rejected by RabbitMQ for some reason.
messages.outbound.sharedQueue.messages.refusedTotal number of Ably Queue messages, excluding presence and object messages, that Ably refused to send.
messages.outbound.sharedQueue.presence.countTotal Ably Queue presence message count, sent from Ably to an Ably Queue using an integration rule.
messages.outbound.sharedQueue.presence.dataTotal Ably Queue presence message size, sent from Ably to an Ably Queue using an integration rule.
messages.outbound.sharedQueue.presence.uncompressedDataTotal uncompressed Ably Queue presence message size, excluding delta compression, sent from Ably to an Ably Queue using an integration rule.
messages.outbound.sharedQueue.presence.failedTotal number of Ably Queue presence messages that failed because they were rejected by RabbitMQ for some reason.
messages.outbound.sharedQueue.presence.refusedTotal number of Ably Queue presence messages that Ably refused to send. This is generally due to rate limiting.
messages.outbound.externalQueue.all.countTotal Firehose message count, sent from Ably to an external target using a Firehose integration rule.
messages.outbound.externalQueue.all.dataTotal Firehose message size, sent from Ably to an external target using a Firehose integration rule.
messages.outbound.externalQueue.all.uncompressedDataTotal uncompressed Firehose message size, excluding delta compression, sent from Ably to an external target using a Firehose integration rule.
messages.outbound.externalQueue.all.failedTotal number of Firehose messages that failed because they were rejected by the external integration target for some reason.
messages.outbound.externalQueue.all.refusedTotal number of Firehose messages that Ably refused to send. This is generally due to rate limiting.
messages.outbound.externalQueue.messages.countTotal Firehose message count, sent from Ably to an external target using a Firehose integration rule. This excludes presence and object messages.
messages.outbound.externalQueue.messages.dataTotal Firehose message size, sent from Ably to an external target using a Firehose integration rule. This excludes presence and object messages.
messages.outbound.externalQueue.messages.uncompressedDataTotal uncompressed Firehose message size, sent from Ably to an external target using a Firehose integration rule. This excludes delta compression, and presence and object messages.
messages.outbound.externalQueue.messages.failedTotal number of Firehose messages, excluding presence and object messages, that failed because they were rejected by the external integration target for some reason.
messages.outbound.externalQueue.messages.refusedTotal number of Firehose messages, excluding presence and object messages, that Ably refused to send. This is generally due to rate limiting.
messages.outbound.externalQueue.presence.countTotal Firehose presence message count, sent from Ably to an external target using a Firehose integration rule.
messages.outbound.externalQueue.presence.dataTotal Firehose presence message size, sent from Ably to an external target using a Firehose integration rule.
messages.outbound.externalQueue.presence.uncompressedDataTotal uncompressed Firehose presence message size, sent from Ably to an external target using a Firehose integration rule. This excludes delta compression.
messages.outbound.externalQueue.presence.failedTotal number of Firehose presence messages that failed, because they were rejected by the external integration target for some reason.
messages.outbound.externalQueue.presence.refusedTotal number of Firehose presence messages that Ably refused to send. This is generally due to rate limiting.
messages.outbound.httpEvent.all.countTotal messages sent by a HTTP trigger. Typically a serverless function on a service such as AWS Lambda, Google Cloud Functions, or Azure Functions.
messages.outbound.httpEvent.all.dataTotal size of messages sent by a HTTP trigger. Typically a serverless function on a service such as AWS Lambda, Google Cloud Functions, or Azure Functions.
messages.outbound.httpEvent.all.uncompressedDataTotal uncompressed size of messages sent by a HTTP trigger. Typically a serverless function on a service such as AWS Lambda, Google Cloud Functions, or Azure Functions. This excludes delta compression.
messages.outbound.httpEvent.all.failedTotal number of messages sent by a HTTP trigger that failed, because they were rejected by the external endpoint for some reason.
messages.outbound.httpEvent.all.refusedTotal number of messages sent by a HTTP trigger that Ably refused to send. This is generally due to rate limiting.
messages.outbound.httpEvent.messages.countTotal messages sent by a HTTP trigger. Typically a serverless function on a service such as AWS Lambda, Google Cloud Functions, or Azure Functions. This excludes presence and object messages.
messages.outbound.httpEvent.messages.dataTotal size of messages sent by a HTTP trigger. Typically a serverless function on a service such as AWS Lambda, Google Cloud Functions, or Azure Functions. This excludes presence and object messages.
messages.outbound.httpEvent.messages.uncompressedDataTotal uncompressed size of messages sent by a HTTP trigger. Typically a serverless function on a service such as AWS Lambda, Google Cloud Functions, or Azure Functions. This excludes delta compression, and presence and object messages.
messages.outbound.httpEvent.messages.failedTotal number of messages sent by a HTTP trigger, excluding presence and object messages, that failed because they were rejected by the external endpoint for some reason.
messages.outbound.httpEvent.messages.refusedTotal number of messages sent by a HTTP trigger, excluding presence and object messages, that Ably refused to send. This is generally due to rate limiting.
messages.outbound.httpEvent.presence.countTotal presence messages sent by a HTTP trigger. Typically a serverless function on a service such as AWS Lambda, Google Cloud Functions, or Azure Functions.
messages.outbound.httpEvent.presence.dataTotal size of presence messages sent by a HTTP trigger. Typically a serverless function on a service such as AWS Lambda, Google Cloud Functions, or Azure Functions.
messages.outbound.httpEvent.presence.uncompressedDataTotal uncompressed size of presence messages sent by a HTTP trigger. Typically serverless functions on a service such as AWS Lambda, Google Cloud Functions, or Azure Functions. This excludes delta compression.
messages.outbound.httpEvent.presence.failedTotal number of presence messages sent by a HTTP trigger that failed because they were rejected by the external endpoint for some reason.
messages.outbound.httpEvent.presence.refusedTotal number of presence messages sent by a HTTP trigger that Ably refused to send. This is generally due to rate limiting.
messages.outbound.push.all.countTotal count of push messages, sent to devices via a push notifications transport such as FCM or APNS.
messages.outbound.push.all.dataTotal size of push messages, sent to devices via a push notifications transport such as FCM or APNS.
messages.outbound.push.all.uncompressedDataTotal uncompressed push message size, excluding delta compression, pushed to devices via a push notifications transport such as FCM or APNS.
messages.outbound.push.all.failedTotal number of push messages that failed. These are messages which did not succeed for some reason other than Ably explicitly refusing them, such as rejection by APNS or FCM, or a service issue on Ably's side.
messages.outbound.push.all.refusedTotal number of push messages that were refused by Ably. For example, due to rate limiting.
messages.outbound.push.messages.countTotal push message count, excluding delta compression, and presence and object messages, pushed to devices via a push notifications transport such as FCM or APNS.
messages.outbound.push.messages.dataTotal push message size, excluding delta compression, and presence and object messages, pushed to devices via a push notifications transport such as FCM or APNS.
messages.outbound.push.messages.uncompressedDataTotal uncompressed push message size, excluding delta compression, and presence and object messages, pushed to devices via a push notifications transport such as FCM or APNS.
messages.outbound.push.messages.failedTotal number of push messages, excluding presence and object messages, that failed. These are messages which did not succeed for some reason other than Ably explicitly refusing them, such as rejection by APNS or FCM, or a service issue on Ably's side.
messages.outbound.push.messages.refusedTotal number of push messages, excluding presence and object messages, that were refused by Ably. For example due to rate limiting.
messages.outbound.push.presence.countTotal push presence message count, sent to devices via a push notifications transport such as FCM or APNS.
messages.outbound.push.presence.dataTotal push presence message size, sent to devices via a push notifications transport such as FCM or APNS.
messages.outbound.push.presence.uncompressedDataTotal uncompressed push presence message size, excluding delta compression, sent to devices via a push notifications transport such as FCM or APNS.
messages.outbound.push.presence.failedTotal number of push presence messages that failed. These are messages which did not succeed for some reason other than Ably explicitly refusing them, such as rejection by APNS or FCM, or a service issue on Ably's side.
messages.outbound.push.presence.refusedTotal number of push presence messages that were refused by Ably. For example due to rate limiting.
messages.outbound.all.all.countTotal outbound message count, sent from Ably to clients.
messages.outbound.all.all.billableCountTotal billable outbound message count, sent from Ably to clients.
messages.outbound.all.all.dataTotal outbound message size, sent from Ably to clients.
messages.outbound.all.all.uncompressedDataTotal uncompressed outbound message size, excluding delta compression, sent from Ably to clients.
messages.outbound.all.all.failedTotal number of outbound messages that failed. These are messages which not succeed for some reason other than Ably explicitly refusing them, such as rejection by an external integration target, or a service issue on Ably's side.
messages.outbound.all.all.refusedTotal number of outbound messages that were refused by Ably. This is generally due to rate limiting.
messages.outbound.all.messages.countTotal outbound message count, excluding presence and object messages, sent from Ably to clients.
messages.outbound.all.messages.billableCountTotal billable outbound message count, excluding presence and object messages, sent from Ably to clients.
messages.outbound.all.messages.dataTotal outbound message size, excluding presence and object messages, sent from Ably to clients.
messages.outbound.all.messages.uncompressedDataTotal uncompressed outbound message size, excluding delta compression, and presence and object messages, sent from Ably to clients.
messages.outbound.all.messages.failedTotal number of outbound messages excluding presence and object messages that failed. These are messages which did not succeed for some reason other than Ably explicitly refusing them, such as rejection by an external integration target, or a service issue on Ably's side.
messages.outbound.all.messages.refusedTotal number of outbound messages excluding presence and object messages that were refused by Ably. This is generally due to rate limiting.
messages.outbound.all.presence.countTotal outbound presence message count, sent from Ably to clients.
messages.outbound.all.presence.billableCountTotal billable outbound presence message count, sent from Ably to clients.
messages.outbound.all.presence.dataTotal outbound presence message size, sent from Ably to clients.
messages.outbound.all.presence.uncompressedDataTotal uncompressed outbound presence message size, excluding delta compression, sent from Ably to clients.
messages.outbound.all.presence.failedTotal number of outbound presence messages that failed. These are messages which not succeed for some reason other than Ably explicitly refusing them, such as rejection by an external integration target, or a service issue on Ably's side.
messages.outbound.all.presence.refusedTotal number of outbound presence messages that were refused by Ably. This is generally due to rate limiting.

Persisted messages

Persisted messages metrics are calculated from the number of messages stored by Ably.

MetricDescription
messages.persisted.all.countTotal count of persisted messages.
messages.persisted.all.dataTotal size of persisted messages.
messages.persisted.all.uncompressedDataTotal uncompressed persisted message size, excluding delta compression.
messages.persisted.messages.countTotal count of persisted messages, excluding presence and object messages.
messages.persisted.messages.dataTotal size of persisted messages, excluding presence and object messages.
messages.persisted.messages.uncompressedDataTotal uncompressed persisted message size, excluding delta compression, and presence and object messages.
messages.persisted.presence.countTotal count of persisted presence messages.
messages.persisted.presence.dataTotal size of persisted presence messages.
messages.persisted.presence.uncompressedDataTotal uncompressed persisted presence message size, excluding delta compression.

Message deltas

Message deltas metrics are calculated from the number of messages delta generated.

MetricDescription
messages.processed.delta.xdelta.succeededTotal number of message deltas successfully generated.
messages.processed.delta.xdelta.skippedTotal number of messages on channels where delta was enabled but where Ably skipped delta generation. For example, because the payload was too small to make it worthwhile.
messages.processed.delta.xdelta.failedTotal number of messages on channels where delta generation was attempted but a delta was not successfully generated, so Ably just broadcasted the original.

Connections

Connection metrics include all realtime connections made to Ably.

MetricDescription
connections.all.peakPeak connection count.
connections.all.minMinimum connection count.
connections.all.meanMean connection count.
connections.all.openedTotal number of connections opened.
connections.all.refusedTotal number of connections refused, for example for exceeding the connection creation rate.

Channels

Channel metrics include all active channels that are used to separate messages into different topics throughout Ably.

MetricDescription
channels.peakPeak active channel count.
channels.minMinimum active channel count.
channels.meanMean active channel count.
channels.openedTotal number of channels opened.
channels.refusedTotal number of channel creations rejected for exceeding the channel creation rate.

API requests

API request metrics include all HTTP requests made to Ably, including those related to token authentication and push notifications. They do not include those requests made to the Control API.

MetricDescription
apiRequests.all.succeededTotal number of API requests made.
apiRequests.all.failedTotal number of failed API requests.
apiRequests.all.refusedTotal number of API requests refused due to account limits.
apiRequests.tokenRequests.succeededTotal number of token requests made.
apiRequests.tokenRequests.failedTotal number of failed token requests.
apiRequests.tokenRequests.refusedTotal number of token requests refused due to insufficient permissions or rate limiting.
apiRequests.push.succeededTotal number of push requests made.
apiRequests.push.failedTotal number of failed push requests.
apiRequests.push.refusedTotal number of push requests refused.
apiRequests.other.succeededTotal number of requests made, excluding token and push requests.
apiRequests.other.failedTotal number of failed requests, excluding token and push requests.
apiRequests.other.refusedTotal number of requests refused, excluding token and push requests.

Push notifications

Push notification metrics include all notifications sent to devices via one of the push transports such as APNS, FCM or web.

MetricDescription
push.channelMessagesTotal number of channel messages published over Ably that contained a push payload. Each of these may have triggered notifications to be sent to a device with a matching registered push subscription.
push.notifications.delivered.fcmTotal number of push notifications successfully delivered over the FCM transport.
push.notifications.delivered.gcmTotal number of push notifications successfully delivered over the GCM transport.
push.notifications.delivered.apnsTotal number of push notifications successfully delivered over the APNS transport.
push.notifications.delivered.webTotal number of push notifications successfully delivered over the web transport.
push.notifications.delivered.totalTotal number of push notifications successfully delivered over any transport.
push.notifications.refused.retriable.fcmTotal number of push notifications that Ably attempted to deliver to FCM but were refused with a retriable error. Ably will attempt to retry these.
push.notifications.refused.retriable.gcmTotal number of push notifications that Ably attempted to deliver to GCM but were refused with a retriable error. Ably will attempt to retry these.
push.notifications.refused.retriable.apnsTotal number of push notifications that Ably attempted to deliver to APNS but were refused with a retriable error. Ably will attempt to retry these.
push.notifications.refused.retriable.webTotal number of push notifications that Ably attempted to deliver over a web push transport but were refused with a retriable error. Ably will attempt to retry these.
push.notifications.refused.retriable.totalTotal number of push notifications that Ably attempted to deliver but were refused with a retriable error. Ably will attempt to retry these.
push.notifications.refused.final.fcmTotal number of push notifications that Ably attempted to deliver to FCM but were refused with an error that wasn't retriable.
push.notifications.refused.final.gcmTotal number of push notifications that Ably attempted to deliver to GCM but were refused with an error that wasn't retriable.
push.notifications.refused.final.apnsTotal number of push notifications that Ably attempted to deliver to APNS but were refused with an error that wasn't retriable.
push.notifications.refused.final.webTotal number of push notifications that Ably attempted to deliver over a web push transport but were refused with an error that wasn't retriable.
push.notifications.refused.final.totalTotal number of push notifications that Ably attempted to deliver but were refused with an error that wasn't retriable.
push.notifications.skipped.apnsTotal number of push notifications that Ably did not attempt to deliver to APNS. For example, APNS location push notifications sent over a channel to subscribing devices without location tokens.
push.notifications.skipped.totalTotal number of push notifications that Ably did not attempt to deliver. For example, an APNS location push notification sent over a channel to subscribing devices without location tokens.
push.notifications.all.fcmTotal number of attempts to deliver push notifications over the FCM transport, irrespective of whether they were successful, or not.
push.notifications.all.gcmTotal number of attempts to deliver push notifications over the GCM transport, irrespective of whether they were successful, or not.
push.notifications.all.apnsTotal number of attempts to deliver push notifications over the APNS transport, irrespective of whether they were successful, or not.
push.notifications.all.webTotal number of attempts to deliver push notifications over the web transport, irrespective of whether they were successful, or not.
push.notifications.all.totalTotal number of attempts to deliver push notifications over any transport, irrespective of whether they were successful, or not.
push.directPublishesTotal number of direct push publishes. These are notifications triggered by a request to /push/publish, not a message sent on a channel that contains a push payload.

Account-only metrics

The following metrics will only be returned when querying account statistics.

MetricDescription
peakRates.messagesPeak rate of messages.
peakRates.apiRequestsPeak rate of api requests.
peakRates.tokenRequestsPeak rate of token requests.
peakRates.connectionsPeak rate of opened connections.
peakRates.channelsPeak rate of channels activations.
peakRates.reactor.httpEventPeak rate of events sent to an HTTP trigger. Typically a serverless function on a service such as AWS Lambda, Google Cloud Functions, or Azure Functions.
peakRates.reactor.amqpPeak rate of events sent to an Ably Queue using an integration rule.
peakRates.reactor.externalQueuePeak rate of events sent to an external endpoint using a Firehose integration rule.
peakRates.reactor.webhookPeak rate of events sent to webhook configured through an integration rule.
peakRates.pushRequestsPeak rate of push API requests.
Select...