Pricing
This page explains how Agora calculates your monthly bill for Signaling.
How Signaling usage is measured
Signaling is priced based on the following metrics:
- Number of messages: The total number of messages sent and received by all users in a calendar month.
- Storage occupancy: The weighted sum of all cloud space occupied by business data storage in a calendar month.
- Peak connections: The maximum number of concurrent online users or devices during a calender month.
Number of messages
In Signaling, message count is the total number of instructions and data interactions between users and Signaling servers through the SDKs, RESTful APIs, webhooks, or serverless services. It is important to note that one message in Signaling is measured in units of 1 KB. This means that if you send a 2.5 KB message or instruction, it counts as three messages. Use of Signaling features contributes to the message count as follows:
- General
- Channels
- Topics
- Messaging
- Presence
- Storage
- Locks
Each of the following constitutes one message:
- A login request
- A logout request
- Updating an expiring token
- Receiving a connection status change notification
- Receiving a token expiry notification
Each of the following constitutes one message:
- Subscribing to a message channel
- Unsubscribing from a message channel
- Creating a stream channel instance
- Joining a stream channel
- Leaving a stream channel
Each of the following constitutes one message:
- Joining a topic
- Leaving a topic
- Subscribing to a topic
- Unsubscribing from a topic
- Receiving a topic change notification
Each of the following constitutes one message:
- Publishing a message to a message channel
- Receiving a message in a message channel For example, if a client sends a message to a message channel, and 10 people are subscribed to this channel, this counts as 1 sent message and 10 received messages, for a total of 11 messages.
- Publishing to a topic in a stream channel
- Receiving a message in a stream channel topic For example, if a client sends a message to a topic in a stream channel, and 10 people are subscribed to this topic, this counts as 1 sent message and 10 received messages, for a total of 11 messages.
- The asynchronous callback generated by publishing a message in the message channel or stream channel is not counted in the number of messages.
- Messages sent using the RESTful API are also counted as messages.
- If a client is not subscribed to a channel or topic, it does not receive any messages.
Each of the following constitutes one message:
- A
whoNow
query - A
whereNow
query - Each
setState
,getState
, orremoveState
call to manage temporary user state - Each triggered presence event notification, such as a client entering a channel, leaving a channel, timing out, or changing status.
- Each received presence event notification. For example, if a client enters a channel and 10 other clients are subscribed to the channel, it sends 1 presence event notification, and the other 10 clients each receive 1 presence event notification, totaling in 11 messages.
- If a client joins or subscribes to a channel and disables presence event notifications, it does not receive any such notifications. However, since Signaling still sends these notifications to the client, the notifications still count as messages.
- If a client does not join or subscribe to a channel, it does not receive presence event notifications from that channel. Therefore, no messages are added to the count.
If you turn off the storage module in Agora Console, no storage message count is generated. If storage is enabled, each of the following counts as one message:
Channel metadata
- Setting channel metadata using
setChannelMetadata
- Querying channel metadata using
getChannelMetadata
- Updating channel metadata using
updateChannelMetadata
- Deleting channel metadata using
removeChannelMetadata
- Receiving a channel metadata change event notification. For example, if a client sets metadata in a channel, and the channel is subscribed to by 10 users, it sends 1 storage event notification, and the other 10 clients each receive 1 storage event notification, for a total of 11 messages.
- If a client joins or subscribes to a channel and disables storage event notifications, it does not receive any such notifications. However, since Signaling still sends these notifications to the client, the notifications still count as messages.
- If a client does not join or subscribe to a channel, it does not receive storage event notifications from that channel. Therefore, no messages are added to the count.
User metadata
- Setting user metadata using
setUserMetadata
- Querying user metadata using
getUserMetadata
- Updating user metadata using
updateUserMetadata
- Deleting user metadata using
removeUserMetadata
- Receiving a user metadata change event notification. For example, if a client sets user metadata, and 10 other users are subscribed to this user's metadata, it sends 1 storage event notification, and the other 10 users each receive 1 storage event notification, for a total of 11 messages.
If a client does not subscribe to user metadata, it does not receive user metadata change notifications. Therefore, no messages are added to the count.
Each of the following constitutes one message:
-
setLock
-
acquireLock
-
getLocks
-
releaseLock
-
revokeLock
-
removeLock
-
Receiving a lock change event notification. For example, if a client sets a lock on a channel, and 10 other users subscribe to this channel, it sends 1 lock event notification, and 10 users each receive 1 lock event notification, for a total of 11 messages.
Storage occupancy
Storage in Signaling generates cloud storage occupancy. Agora measures the total storage occupancy and bills the amount for the month by sampling the customer's actual storage use at 1-hour intervals during a calendar month. At the end of the month, the average storage occupancy is calculated by dividing the sum of all sample values by the number of samples. The average occupancy is then multiplied by the monthly unit price to calculate the monthly charge. The following formula mathematically represents this calculation process:
Peak connections
Peak connection usage (PCU) is the maximum number of clients simultaneously connected to Signaling at any point during a calendar month. For example, if you have 10,000 customers, and a maximum of 500 clients connected to Signaling simultaneously during the month, the PCU value is 500. This means you only pay for 500 peak connections. The total number of clients or devices that connect to Signaling during a month does not affect billing.
Signaling 2.x pricing plans
Signaling 2.x is an enhanced version of 1.x with a wide range of new features and a new pricing structure. Choose from the following packages:
Signaling 2.x package | Description | Package price per month (USD) |
---|---|---|
Free Package | Up to 100 peak concurrent users 3M Monthly message volume 1GB Storage | Free |
Starter Package | Up to 500 peak concurrent users 30M Monthly message volume 2GB Storage | $59 |
Pro Package | Up to 5K peak concurrent users 300M Monthly message volume 5GB Storage | $399 |
Business Package | Up to 10K peak concurrent users 600M Monthly message volume 10GB Storage | $820 |
Enterprise Package | Pay–as-you-go | Contact sales |
Additional usage cost over and above the fixed package limits:
- $15 per 1000 PCU
- $1.5 per 1 million messages
- $7.5 per 1 GB storage per month
Costing examples
Example 1 - Fixed package: Suppose your number of peak concurrent users is less than 5K, monthly message volume is less than 10M, and storage use is less than 5GB. Based on the Pro package, the monthly billing will be $399.
Example 2 - Pay-as-you-go: Suppose your number of peak concurrent users is 20K, monthly message volume is 800M, and storage use is 10GB. The monthly billing will be as follows:
- PCU: 20K
PCU cost = 20000/1000 x $15 = $300 ($15 for every thousand peak concurrent users) - Message count: 800M
Message cost = 800 x $1.5 = $1,200 ($1.5 for every million messages) - Storage: 10GB
Storage cost = 10 x $7.5 = $75 ($7.5 for every GB of storage) - Total cost: $300 + $1,200 + $75 = $1,575 (PCU + Messages + Storage)
Reference
This section contains content that completes the information on this page, or points you to documentation that explains other aspects to this product.
Clean up storage
Depending on the features you enable for your project and your actual usage, Signaling stores the relevant data and you incur the corresponding storage charges. To avoid unintended charges, delete stored data that is no longer needed as follows:
Function | Storage API | Stored Data | How to delete |
---|---|---|---|
Presence | setState | Temporary user status | removeState |
Storage | setChannelMetadata setUserMetadata | Channel Metadata and User Metadata |
|
Lock | setLock | Lock settings and status |
|