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 provide information about all applications in your account.

You can retrieve account statistics from:

You can retrieve account statistics from the Control API or the REST 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 --location --request POST 'https://control.ably.net/v1/accounts/${ACCOUNT_ID}/stats' \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer ${ACCESS_TOKEN}' \ --data-raw '{ "unit": "minute", "limit": 2 }'
Copied!

Use the /me endpoint to find your accountId, or alternatively find it in the Settings page of your account dashboard:

curl --location --request GET 'https://control.a...' \ --header 'Authorization: Bearer ${ACCESS_TOKEN}'
Copied!

You can use the REST API to retrieve account statistics by making a GET request to the stats endpoint. For example, to retrieve account statistics aggregated by hour:

curl https://rest.ably.io/stats?unit=hour \ -u "<loading API key, please wait>"
Demo Only
Copied!

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

App statistics provide information about a specific application.

You can retrieve account statistics:

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

curl --location --request POST '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 }'
Copied!

Your appId can be found in the Settings tab of an application within your application dashboard.

App-level statistics are also available programmatically using an Ably SDK at one minute intervals, or aggregated up to the hour, day or month.

The following is an example of querying app-level statistics:

Select...
const realtime = new Ably.Realtime('<loading API key, please wait>'); const resultPage = await realtime.stats({ unit: 'hour' }); console.log(resultPage.items[0]);
Demo Only
Copied!

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 channel:

Select...
const channel = ably.channels.get("[meta]stats:minute"); await channel.subscribe('update', event => { console.log(JSON.stringify(event, undefined, 2)); });
Copied!

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

Statistics responses are sparse to reduce the size of the JSON and improve performance.

This means that if a metric is empty, or contains only zero values then the metric will be omitted completely from the response.

{ entries: { 'messages.all.all....': 245, 'messages.all.all....': 58654, 'messages.all.all....': 58654, 'messages.all.all....': 245, 'messages.all.mess...': 245, 'messages.all.mess...': 58654, 'messages.all.mess...': 58654, 'messages.all.mess...': 245, 'messages.inbound....': 145, 'messages.inbound....': 29127, 'messages.inbound....': 29127, 'messages.inbound....': 145, ... }, schema: 'https://schemas.a...', appId: '<appId>', inProgress: '2025-01-20:15:11', unit: 'hour', intervalId: '2025-01-20:15' }
Copied!

The following metadata is returned for each request:

Property Description
appId The ID of the Ably application the statistics are for. Only present when querying app statistics.
accountId The ID of the Ably account the statistics are for. Only present when querying account statistics.
intervalId Start 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.
unit Unit of time that the stats entry covers. One of minute, hour, day or month.
schema URI of the stats schema.
inProgress The 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.

The following metrics can be returned for all messages. ‘All messages’ includes totals for all messages sent and received by Ably and clients.

Metric Description
messages.all.all.count Total number of messages that were successfully sent, summed over all message types and transports.
messages.all.all.billableCount Total number of billable messages that were successfully sent, summed over all message types and transports.
messages.all.all.data Total message size of all messages that were successfully sent, summed over all message types and transports.
messages.all.all.uncompressedData Total uncompressed message size, excluding delta compression.
messages.all.all.failed Total 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.refused Total number of messages that were refused by Ably. For example, due to rate limiting, malformed messages, or incorrect client permissions.
messages.all.messages.count Total message count, excluding presence and state messages.
messages.all.messages.billableCount Total billable message count, excluding presence and state messages.
messages.all.messages.data Total message size, excluding presence and state messages.
messages.all.messages.uncompressedData Total 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.failed Total number of messages excluding presence and state 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.refused Total number of messages excluding presence and state messages that were refused by Ably. For example, due to rate limiting, malformed messages, or incorrect client permissions.
messages.all.presence.count Total presence message count.
messages.all.presence.billableCount Total billable presence message count.
messages.all.presence.data Total presence message size.
messages.all.presence.uncompressedData Total uncompressed presence message size, excluding delta compression.
messages.all.messages.failed Total number of presence messages excluding presence and state 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.refused Total number of presence messages excluding presence and state messages that were refused by Ably. For example, due to rate limiting, malformed messages, or incorrect client permissions.

The following metrics can be returned for inbound messages. Inbound messages are messages that are sent by clients and received by Ably.

Metric Description
messages.inbound.realtime.all.count Total inbound realtime message count, received by Ably from clients.
messages.inbound.realtime.all.data Total inbound realtime message size, received by Ably from clients.
messages.inbound.realtime.all.uncompressedData Total uncompressed inbound realtime message size, excluding delta compression, received by Ably from clients.
messages.inbound.realtime.all.failed Total 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.refused Total 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.count Total inbound realtime message count, excluding presence and state messages, received by Ably from clients.
messages.inbound.realtime.messages.data Total inbound realtime message size, excluding presence and state messages, received by Ably from clients.
messages.inbound.realtime.messages.uncompressedData Total uncompressed inbound realtime message size, received by Ably from clients. This excludes delta compression, and presence and state messages.
messages.inbound.realtime.messages.failed Total number of inbound realtime messages excluding presence and state 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.refused Total number of inbound realtime messages excluding presence and state messages that were refused by Ably. For example, due to rate limiting, malformed messages, or incorrect client permissions.
messages.inbound.realtime.presence.count Total inbound realtime presence message count, received by Ably from clients.
messages.inbound.realtime.presence.data Total inbound realtime presence message size, received by Ably from clients.
messages.inbound.realtime.presence.uncompressedData Total uncompressed inbound realtime presence message size, excluding delta compression, received by Ably from clients.
messages.inbound.realtime.presence.failed Total 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.refused Total 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.state.count Total inbound realtime state message count, received by Ably from clients.
messages.inbound.realtime.state.data Total inbound realtime state message size, received by Ably from clients.
messages.inbound.realtime.state.uncompressedData Total uncompressed inbound realtime state message size received by Ably from clients.
messages.inbound.realtime.state.failed Total number of inbound realtime state 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.state.refused Total number of inbound realtime state messages that were refused by Ably. For example, due to rate limiting, malformed messages, or incorrect client permissions.
messages.inbound.rest.all.count Total inbound REST message count, received by Ably from clients.
messages.inbound.rest.all.data Total inbound REST message size, received by Ably from clients.
messages.inbound.rest.all.uncompressedData Total uncompressed inbound REST message size, excluding delta compression, received by Ably from clients.
messages.inbound.rest.all.failed Total 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.refused Total 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.count Total inbound REST message count, excluding presence and state messages, received by Ably from clients.
messages.inbound.rest.messages.data Total inbound REST message size, excluding presence and state messages, received by Ably from clients.
messages.inbound.rest.messages.uncompressedData Total uncompressed inbound REST message size, received by Ably from clients. This excludes delta compression, and presence and state messages.
messages.inbound.rest.messages.failed Total 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 state messages.
messages.inbound.rest.messages.refused Total 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 state messages.
messages.inbound.rest.presence.count Total inbound REST presence message count, received by Ably from clients.
messages.inbound.rest.presence.data Total inbound REST presence message size, received by Ably from clients.
messages.inbound.rest.presence.uncompressedData Total uncompressed inbound REST presence message size, excluding delta compression, received by Ably from clients.
messages.inbound.rest.presence.failed Total 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.refused Total 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.state.count Total inbound REST state message count, received by Ably from clients.
messages.inbound.rest.state.data Total inbound REST state message size, received by Ably from clients.
messages.inbound.rest.state.uncompressedData Total uncompressed inbound REST state message size, excluding delta compression received by Ably from clients.
messages.inbound.rest.state.failed Total number of inbound REST state 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.state.refused Total number of inbound REST state messages that were refused by Ably. For example, due to rate limiting, malformed messages, or incorrect client permissions.
messages.inbound.all.all.count Total inbound message count, received by Ably from clients.
messages.inbound.all.all.data Total inbound message size, received by Ably from clients.
messages.inbound.all.all.uncompressedData Total uncompressed inbound message size, excluding delta compression, received by Ably from clients.
messages.inbound.all.all.failed Total 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.refused Total 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.count Total inbound message count, excluding presence and state messages, received by Ably from clients.
messages.inbound.all.messages.data Total inbound message size, excluding presence and state messages, received by Ably from clients.
messages.inbound.all.messages.uncompressedData Total uncompressed inbound message size, received by Ably from clients. This excludes delta compression, and presence and state messages.
messages.inbound.all.messages.failed Total number of inbound messages excluding presence and state 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.count Total inbound presence message count, received by Ably from clients.
messages.inbound.all.presence.data Total inbound presence message size, received by Ably from clients.
messages.inbound.all.presence.uncompressedData Total uncompressed inbound presence message size, excluding delta compression, received by Ably from clients.
messages.inbound.all.presence.failed Total 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.refused Total number of inbound presence messages that were refused by Ably. For example, due to rate limiting, malformed messages, or incorrect client permissions.

The following metrics can be returned for outbound messages. Outbound messages are messages that are sent from Ably to a client.

Metric Description
messages.outbound.realtime.all.count Total outbound realtime message count, sent from Ably to clients.
messages.outbound.realtime.all.billableCount Total billable outbound realtime message count, sent from Ably to clients.
messages.outbound.realtime.all.data Total outbound realtime message size, sent from Ably to clients.
messages.outbound.realtime.all.uncompressedData Total uncompressed outbound realtime message size, excluding delta compression, sent from Ably to clients.
messages.outbound.realtime.all.failed Total 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.refused Total number of outbound realtime messages that were refused by Ably. This is generally due to rate limiting.
messages.outbound.realtime.messages.count Total outbound realtime message count, excluding presence and state messages, sent from Ably to clients.
messages.outbound.realtime.messages.billableCount Total billable outbound realtime message count, excluding presence and state messages, sent from Ably to clients.
messages.outbound.realtime.messages.data Total outbound realtime message size, excluding presence and state messages, sent from Ably to clients.
messages.outbound.realtime.messages.uncompressedData Total uncompressed outbound realtime message size, sent from Ably to clients. This excludes delta compression, and presence and state messages.
messages.outbound.realtime.messages.failed Total number of outbound realtime messages excluding presence and state 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.refused Total number of outbound realtime messages excluding presence and state messages that were refused by Ably. This is generally due to rate limiting.
messages.outbound.realtime.presence.count Total outbound realtime presence message count, sent from Ably to clients.
messages.outbound.realtime.presence.billableCount Total billable outbound realtime presence message count, sent from Ably to clients.
messages.outbound.realtime.presence.data Total outbound realtime presence message size, sent from Ably to clients.
messages.outbound.realtime.presence.uncompressedData Total uncompressed outbound realtime presence message size, excluding delta compression, sent from Ably to clients.
messages.outbound.realtime.presence.failed Total 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.refused Total number of outbound realtime presence messages that were refused by Ably. This is generally due to rate limiting.
messages.outbound.realtime.state.count Total outbound realtime state message count, sent from Ably to clients.
messages.outbound.realtime.state.billableCount Total billable outbound realtime state message count, sent from Ably to clients.
messages.outbound.realtime.state.data Total outbound realtime state message size, sent from Ably to clients.
messages.outbound.realtime.state.uncompressedData Total uncompressed outbound realtime presence message size, sent from Ably to clients.
messages.outbound.rest.all.count Total outbound REST message count, sent from Ably to clients.
messages.outbound.rest.all.data Total outbound REST message size, sent from Ably to clients.
messages.outbound.rest.all.uncompressedData Total uncompressed outbound REST message size, excluding delta compression, sent from Ably to clients.
messages.outbound.rest.all.refused Total 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.count Total outbound REST message count, excluding presence and state messages, sent from Ably to clients.
messages.outbound.rest.messages.data Total outbound REST message size, excluding presence and state messages, sent from Ably to clients.
messages.outbound.rest.messages.uncompressedData Total uncompressed outbound REST message size, sent from Ably to clients. This excludes delta compression, and presence and state messages.
messages.outbound.rest.messages.refused Total 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 state messages.
messages.outbound.rest.presence.count Total outbound REST presence message count, sent from Ably to clients.
messages.outbound.rest.presence.data Total outbound REST presence message size, sent from Ably to clients.
messages.outbound.rest.presence.uncompressedData Total uncompressed outbound REST presence message size, excluding delta compression, sent from Ably to clients.
messages.outbound.rest.state.count Total outbound REST state message count, sent from Ably to clients.
messages.outbound.rest.state.data Total outbound REST state message size, sent from Ably to clients.
messages.outbound.rest.state.uncompressedData Total uncompressed outbound REST state message size, excluding delta compression, sent from Ably to clients.
messages.outbound.rest.state.refused Total number of state 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.count Total outbound webhook message count, sent from Ably to clients using webhooks.
messages.outbound.webhook.all.data Total outbound webhook message size, sent from Ably to clients using webhooks.
messages.outbound.webhook.all.uncompressedData Total uncompressed outbound webhook message size, excluding delta compression, sent from Ably to clients using webhooks.
messages.outbound.webhook.all.failed Total 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.refused Total number of outbound webhook messages that were refused by Ably. This is generally due to rate limiting.
messages.outbound.webhook.messages.count Total outbound webhook message count, sent from Ably to clients using webhooks. This excludes presence and state messages.
messages.outbound.webhook.messages.data Total outbound webhook message size, sent from Ably to clients using webhooks. This excludes presence and state messages.
messages.outbound.webhook.messages.uncompressedData Total uncompressed outbound webhook message size, sent from Ably to clients using webhooks. This excludes delta compression, and presence and state messages.
messages.outbound.webhook.messages.failed Total number of outbound webhook messages excluding presence and state 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.refused Total number of outbound webhook messages excluding presence and state messages that were refused by Ably. This is generally due to rate limiting.
messages.outbound.webhook.presence.count Total outbound webhook presence message count, sent from Ably to clients using webhooks.
messages.outbound.webhook.presence.data Total outbound webhook presence message size, sent from Ably to clients using webhooks.
messages.outbound.webhook.presence.uncompressedData Total uncompressed outbound webhook presence message size, excluding delta compression, sent from Ably to clients using webhooks.
messages.outbound.webhook.presence.failed Total 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.refused Total number of outbound webhook presence messages that were refused by Ably. This is generally due to rate limiting.
messages.outbound.sharedQueue.all.count Total Ably Queue message count, sent from Ably to an Ably Queue using an integration rule.
messages.outbound.sharedQueue.all.data Total Ably Queue message size, sent from Ably to an Ably Queue using an integration rule.
messages.outbound.sharedQueue.all.uncompressedData Total uncompressed Ably Queue message size, excluding delta compression, sent from Ably to an Ably Queue using an integration rule.
messages.outbound.sharedQueue.all.failed Total number of Ably Queue messages that failed because they were rejected by RabbitMQ for some reason.
messages.outbound.sharedQueue.all.refused Total number of Ably Queue messages that Ably refused to send. This is generally due to rate limiting.
messages.outbound.sharedQueue.messages.count Total Ably Queue message count, sent from Ably to an Ably Queue using an integration rule. This excludes presence and state messages.
messages.outbound.sharedQueue.messages.data Total Ably Queue message size, sent from Ably to an Ably Queue using an integration rule. This excludes presence and state messages.
messages.outbound.sharedQueue.messages.uncompressedData Total uncompressed Ably Queue message size, sent from Ably to an Ably Queue using an integration rule. This excludes delta compression, and presence and state messages.
messages.outbound.sharedQueue.messages.failed Total number of Ably Queue messages, excluding presence and state messages, that failed because they were rejected by RabbitMQ for some reason.
messages.outbound.sharedQueue.messages.refused Total number of Ably Queue messages, excluding presence and state messages, that Ably refused to send.
messages.outbound.sharedQueue.presence.count Total Ably Queue presence message count, sent from Ably to an Ably Queue using an integration rule.
messages.outbound.sharedQueue.presence.data Total Ably Queue presence message size, sent from Ably to an Ably Queue using an integration rule.
messages.outbound.sharedQueue.presence.uncompressedData Total uncompressed Ably Queue presence message size, excluding delta compression, sent from Ably to an Ably Queue using an integration rule.
messages.outbound.sharedQueue.presence.failed Total number of Ably Queue presence messages that failed because they were rejected by RabbitMQ for some reason.
messages.outbound.sharedQueue.presence.refused Total number of Ably Queue presence messages that Ably refused to send. This is generally due to rate limiting.
messages.outbound.externalQueue.all.count Total Firehose message count, sent from Ably to an external target using a Firehose integration rule.
messages.outbound.externalQueue.all.data Total Firehose message size, sent from Ably to an external target using a Firehose integration rule.
messages.outbound.externalQueue.all.uncompressedData Total uncompressed Firehose message size, excluding delta compression, sent from Ably to an external target using a Firehose integration rule.
messages.outbound.externalQueue.all.failed Total number of Firehose messages that failed because they were rejected by the external integration target for some reason.
messages.outbound.externalQueue.all.refused Total number of Firehose messages that Ably refused to send. This is generally due to rate limiting.
messages.outbound.externalQueue.messages.count Total Firehose message count, sent from Ably to an external target using a Firehose integration rule. This excludes presence and state messages.
messages.outbound.externalQueue.messages.data Total Firehose message size, sent from Ably to an external target using a Firehose integration rule. This excludes presence and state messages.
messages.outbound.externalQueue.messages.uncompressedData Total uncompressed Firehose message size, sent from Ably to an external target using a Firehose integration rule. This excludes delta compression, and presence and state messages.
messages.outbound.externalQueue.messages.failed Total number of Firehose messages, excluding presence and state messages, that failed because they were rejected by the external integration target for some reason.
messages.outbound.externalQueue.messages.refused Total number of Firehose messages, excluding presence and state messages, that Ably refused to send. This is generally due to rate limiting.
messages.outbound.externalQueue.presence.count Total Firehose presence message count, sent from Ably to an external target using a Firehose integration rule.
messages.outbound.externalQueue.presence.data Total Firehose presence message size, sent from Ably to an external target using a Firehose integration rule.
messages.outbound.externalQueue.presence.uncompressedData Total 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.failed Total number of Firehose presence messages that failed, because they were rejected by the external integration target for some reason.
messages.outbound.externalQueue.presence.refused Total number of Firehose presence messages that Ably refused to send. This is generally due to rate limiting.
messages.outbound.httpEvent.all.count Total 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.data Total 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.uncompressedData Total 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.failed Total 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.refused Total number of messages sent by a HTTP trigger that Ably refused to send. This is generally due to rate limiting.
messages.outbound.httpEvent.messages.count Total 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 state messages.
messages.outbound.httpEvent.messages.data Total 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 state messages.
messages.outbound.httpEvent.messages.uncompressedData Total 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 state messages.
messages.outbound.httpEvent.messages.failed Total number of messages sent by a HTTP trigger, excluding presence and state messages, that failed because they were rejected by the external endpoint for some reason.
messages.outbound.httpEvent.messages.refused Total number of messages sent by a HTTP trigger, excluding presence and state messages, that Ably refused to send. This is generally due to rate limiting.
messages.outbound.httpEvent.presence.count Total 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.data Total 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.uncompressedData Total 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.failed Total 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.refused Total 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.count Total count of push messages, sent to devices via a push notifications transport such as FCM or APNS.
messages.outbound.push.all.data Total size of push messages, sent to devices via a push notifications transport such as FCM or APNS.
messages.outbound.push.all.uncompressedData Total uncompressed push message size, excluding delta compression, pushed to devices via a push notifications transport such as FCM or APNS.
messages.outbound.push.all.failed Total 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.refused Total number of push messages that were refused by Ably. For example, due to rate limiting.
messages.outbound.push.messages.count Total push message count, excluding delta compression, and presence and state messages, pushed to devices via a push notifications transport such as FCM or APNS.
messages.outbound.push.messages.data Total push message size, excluding delta compression, and presence and state messages, pushed to devices via a push notifications transport such as FCM or APNS.
messages.outbound.push.messages.uncompressedData Total uncompressed push message size, excluding delta compression, and presence and state messages, pushed to devices via a push notifications transport such as FCM or APNS.
messages.outbound.push.messages.failed Total number of push messages, excluding presence and state 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.refused Total number of push messages, excluding presence and state messages, that were refused by Ably. For example due to rate limiting.
messages.outbound.push.presence.count Total push presence message count, sent to devices via a push notifications transport such as FCM or APNS.
messages.outbound.push.presence.data Total push presence message size, sent to devices via a push notifications transport such as FCM or APNS.
messages.outbound.push.presence.uncompressedData Total 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.failed Total 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.refused Total number of push presence messages that were refused by Ably. For example due to rate limiting.
messages.outbound.all.all.count Total outbound message count, sent from Ably to clients.
messages.outbound.all.all.billableCount Total billable outbound message count, sent from Ably to clients.
messages.outbound.all.all.data Total outbound message size, sent from Ably to clients.
messages.outbound.all.all.uncompressedData Total uncompressed outbound message size, excluding delta compression, sent from Ably to clients.
messages.outbound.all.all.failed Total 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.refused Total number of outbound messages that were refused by Ably. This is generally due to rate limiting.
messages.outbound.all.messages.count Total outbound message count, excluding presence and state messages, sent from Ably to clients.
messages.outbound.all.messages.billableCount Total billable outbound message count, excluding presence and state messages, sent from Ably to clients.
messages.outbound.all.messages.data Total outbound message size, excluding presence and state messages, sent from Ably to clients.
messages.outbound.all.messages.uncompressedData Total uncompressed outbound message size, excluding delta compression, and presence and state messages, sent from Ably to clients.
messages.outbound.all.messages.failed Total number of outbound messages excluding presence and state 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.refused Total number of outbound messages excluding presence and state messages that were refused by Ably. This is generally due to rate limiting.
messages.outbound.all.presence.count Total outbound presence message count, sent from Ably to clients.
messages.outbound.all.presence.billableCount Total billable outbound presence message count, sent from Ably to clients.
messages.outbound.all.presence.data Total outbound presence message size, sent from Ably to clients.
messages.outbound.all.presence.uncompressedData Total uncompressed outbound presence message size, excluding delta compression, sent from Ably to clients.
messages.outbound.all.presence.failed Total 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.refused Total number of outbound presence messages that were refused by Ably. This is generally due to rate limiting.

The following metrics can be returned for persisted messages. Persisted messages are messages stored by Ably.

Metric Description
messages.persisted.all.count Total count of persisted messages.
messages.persisted.all.data Total size of persisted messages.
messages.persisted.all.uncompressedData Total uncompressed persisted message size, excluding delta compression.
messages.persisted.messages.count Total count of persisted messages, excluding presence and state messages.
messages.persisted.messages.data Total size of persisted messages, excluding presence and state messages.
messages.persisted.messages.uncompressedData Total uncompressed persisted message size, excluding delta compression, and presence and state messages.
messages.persisted.presence.count Total count of persisted presence messages.
messages.persisted.presence.data Total size of persisted presence messages.
messages.persisted.presence.uncompressedData Total uncompressed persisted presence message size, excluding delta compression.

The following metrics can be returned for message deltas. Message deltas are messages that are compressed by using the delta feature.

Metric Description
messages.processed.delta.xdelta.succeeded Total number of message deltas successfully generated.
messages.processed.delta.xdelta.skipped Total 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.failed Total number of messages on channels where delta generation was attempted but a delta was not successfully generated, so Ably just broadcasted the original.

The following metrics can be returned for connections. Connections are all client connections made to Ably.

Metric Description
connections.all.peak Peak connection count.
connections.all.min Minimum connection count.
connections.all.mean Mean connection count.
connections.all.opened Total number of connections opened.
connections.all.refused Total number of connections refused, for example for exceeding the connection creation rate.

The following metrics can be returned for channels. Channels are used to separate messages into different topics throughout Ably.

Metric Description
channels.peak Peak active channel count.
channels.min Minimum active channel count.
channels.mean Mean active channel count.
channels.opened Total number of channels opened.
channels.refused Total number of channel creations rejected for exceeding the channel creation rate.

The following metrics can be returned for API requests. API requests are 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.

Metric Description
apiRequests.all.succeeded Total number of API requests made.
apiRequests.all.failed Total number of failed API requests.
apiRequests.all.refused Total number of API requests refused due to account limits.
apiRequests.tokenRequests.succeeded Total number of token requests made.
apiRequests.tokenRequests.failed Total number of failed token requests.
apiRequests.tokenRequests.refused Total number of token requests refused due to insufficient permissions or rate limiting.
apiRequests.push.succeeded Total number of push requests made.
apiRequests.push.failed Total number of failed push requests.
apiRequests.push.refused Total number of push requests refused.
apiRequests.other.succeeded Total number of requests made, excluding token and push requests.
apiRequests.other.failed Total number of failed requests, excluding token and push requests.
apiRequests.other.refused Total number of requests refused, excluding token and push requests.

The following metrics can be returned for push notifications. Push notifications are all notifications sent to devices via a push transport.

Metric Description
push.channelMessages Total 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.fcm Total number of push notifications successfully delivered over the FCM transport.
push.notifications.delivered.gcm Total number of push notifications successfully delivered over the GCM transport.
push.notifications.delivered.apns Total number of push notifications successfully delivered over the APNS transport.
push.notifications.delivered.web Total number of push notifications successfully delivered over the web transport.
push.notifications.delivered.total Total number of push notifications successfully delivered over any transport.
push.notifications.refused.retriable.fcm Total 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.gcm Total 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.apns Total 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.web Total 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.total Total 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.fcm Total 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.gcm Total 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.apns Total 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.web Total 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.total Total number of push notifications that Ably attempted to deliver but were refused with an error that wasn’t retriable.
push.notifications.skipped.apns Total 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.total Total 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.fcm Total number of attempts to deliver push notifications over the FCM transport, irrespective of whether they were successful, or not.
push.notifications.all.gcm Total number of attempts to deliver push notifications over the GCM transport, irrespective of whether they were successful, or not.
push.notifications.all.apns Total number of attempts to deliver push notifications over the APNS transport, irrespective of whether they were successful, or not.
push.notifications.all.web Total number of attempts to deliver push notifications over the web transport, irrespective of whether they were successful, or not.
push.notifications.all.total Total number of attempts to deliver push notifications over any transport, irrespective of whether they were successful, or not.
push.directPublishes Total 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.

The following metrics can only be returned when querying account statistics:

Metric Description
peakRates.messages ThePeak rate of messages.
peakRates.apiRequests Peak rate of api requests.
peakRates.tokenRequests Peak rate of token requests.
peakRates.connections Peak rate of opened connections.
peakRates.channels Peak rate of channels activations.
peakRates.reactor.httpEvent Peak 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.amqp Peak rate of events sent to an Ably Queue using an integration rule.
peakRates.reactor.externalQueue Peak rate of events sent to an external endpoint using a Firehose integration rule.
peakRates.reactor.webhook Peak rate of events sent to webhook configured through an integration rule.
peakRates.pushRequests Peak rate of push API requests.