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:
- Message volume: The total number of messages sent and received by all users in a calendar month.
- Storage utilization: The average amount of data, measured in GB, stored on Agora's servers over the billing cycle.
- Peak Concurrent Users (PCU): The maximum number of simultaneous users connected to your Signaling service at any point during the billing cycle.
The following are key terms you need to understand pricing:
- Overage: Usage that exceeds the limits included in your fixed-rate plan is billed at the standard consumption rates.
- Normalization: The process of standardizing billing calculations to 30-day months (720 hours), regardless of the actual number of calendar days, to ensure consistent month-to-month billing.
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 |
| Free |
Starter Package |
| $59 |
Pro Package |
| $399 |
Business Package |
| $820 |
Enterprise Package | Pay–as-you-go | Contact sales |
Additional usage cost over and above the fixed package limits:
- Peak PCU: $30 per 1000 PCU
- Messages: $3 per 1 Million
- Storage: $15 per 1 GB
Billing examples
Refer to the following examples to understand how Agora calculates your bill:
Example 1: Billing calculation for the Pro package
The Pro package has a fixed monthly fee of $399, which includes:
- Up to 2,500 peak concurrent users (PCU)
- Up to 150 million monthly messages
- Up to 10GB average storage utilization. See Example 3: Storage cost calculation for details on how storage use is calculated.
If your usage stays within these thresholds, your monthly bill is the base subscription fee of $399 with no additional charges.
If you exceed these limits, additional usage is charged at the following overage rates:
Resource | Billing Unit | Rate |
---|---|---|
Peak Concurrent Users | 1,000 PCU | $30.00 |
Message Volume | 1 Million messages | $3.00 |
Storage | 1 GB | $15.00 |
Example 2: Billing calculation for the Enterprise Package (Pay-as-you-go)
The Enterprise Package follows a pure consumption-based model where you pay only for what you use.
Example Scenario: Consider a customer with the following monthly usage:
- 20,000 peak concurrent users
- 800 million messages sent
- 3.93 GB average storage utilization. See Example 3: Storage cost calculation for details on how storage use is calculated.
Detailed Billing Calculation:
-
Peak Concurrent Users (PCU)
- PCU Usage: 20,000 users (highest recorded in the month)
- PCU Rate: $30.00 per 1,000 PCU
- PCU Cost = (20,000 ÷ 1,000) × $30.00 = $600.00
-
Message Volume
- Total Messages: 800 million
- Message Rate: $3.00 per million messages
- Message Cost = 800 × $3.00 = $2,400.00
-
Storage Utilization
- Average Monthly Storage: 3.93 GB
- Storage Rate: $15.00 per GB per month
- Storage Cost = 3.93 GB × $15.00 = $58.95
-
Total Monthly Invoice
- Total Monthly Cost = PCU Cost + Message Cost + Storage Cost
- = $600.00 + $2,400.00 + $58.95
- = $3,058.95
- Total Monthly Cost = PCU Cost + Message Cost + Storage Cost
Example 3: Storage cost calculation
Storage is billed based on the average monthly utilization, calculated from hourly measurements.
Storage Calculation Process:
- Hourly measurement: Agora captures storage utilization every hour.
- Monthly normalization: For billing consistency, all months are normalized to 30 days (720 hours).
Example: For usage in March (a 31-day month):
- Week 1: 2 GB baseline storage
- Weeks 2-3: 6 GB during high usage period
- Week 4+: 2 GB returning to baseline
Calculation:
- Week 1 (7 days): 2 GB × (7 days × 24 hours) = 336 GB-hours
- Weeks 2-3 (14 days): 6 GB × (14 days × 24 hours) = 2,016 GB-hours
- Week 4+ (10 days): 2 GB × (10 days × 24 hours) = 480 GB-hours
Total GB-hours: 336 + 2,016 + 480 = 2,832 GB-hours
Normalized Monthly Average: 2,832 GB-hours ÷ 720 hours (Normalization) = 3.93 GB.
Normalization is the process of standardizing billing calculations to 30-day months (720 hours) regardless of actual calendar days which is 31 in this example.
Storage Cost = 3.93 GB × $15.00 per GB = $58.95
If you still have questions, refer to the FAQ on the recently announced package changes or contact Agora support.
Package feature comparison
The following table compares the features included in each package:
Feature | Free Package | Starter Package | Pro Package | Business Package | Enterprise Package |
---|---|---|---|---|---|
Publish/Subscribe Messaging (Message Channel) | ✔ | ✔ | ✔ | ✔ | ✔ |
Stream Channel | ✘ | ✔ | ✔ | ✔ | ✔ |
Presence | ✔ | ✔ | ✔ | ✔ | ✔ |
Storage | ✔ | ✔ | ✔ | ✔ | ✔ |
History message (Beta) | ✔ | ✔ | ✔ | ✔ | ✔ |
Lock | ✔ | ✔ | ✔ | ✔ | ✔ |
Authentication | ✔ | ✔ | ✔ | ✔ | ✔ |
Console | ✔ | ✔ | ✔ | ✔ | ✔ |
Webhooks | ✘ | ✔ | ✔ | ✔ | ✔ |
Uptime SLA | ✘ | ✔ | ✔ | ✔ | ✔ |
Geofencing | ✘ | ✘ | ✔ | ✔ | ✔ |
GDPR & HIPAA Compliance | ✔ | ✔ | ✔ | ✔ | ✔ |
Private deployment | ✘ | ✘ | ✔ | ✔ | ✔ |
If you have any questions or would like to discuss your specific needs, please contact your account manager or reach out to support@agora.io.
Reference
This section contains content that completes the information on this page, or points you to documentation that explains other aspects to this product.
FAQ on the recently announced package changes
Q. When will the changes to the Signaling packages take effect?
The changes take effect on May 1, 2025. The first invoice reflecting these changes will be generated in June 2025
Q. Why is Agora making these changes to the Signaling service packages?
These changes are being implemented to better align Agora's services with industry standards and provide more consistent global service quality.
Q. Will there be any changes to the pricing structure?
No, there are no changes to the pricing structure or the costs of our existing paid packages. The changes primarily affect capacity thresholds and feature availability across service tiers.
Q. Which customers will witness these changes?
These changes are primarily applicable for:
- Customers using Signaling 2.x on Free, Pro, and Business packages
- Customers using Signaling 1.x on the Free package
Enterprise Package customers using Signaling 1.x in the DAU model will not be affected. Similarly no changes are applicable for the Signaling 2.x starter pack.
Q. I'm using the Free package. What changes will I see?
Free package users will see revised limits:
- Peak concurrent users reduced from 100 to 20
- Monthly message volume reduced from 3M to 1M
- Storage remains at 1GB
- Some advanced features like Stream Channel will not be available with the free package
Q. I'm using the Starter package. Will I see any changes?
There are no changes to the Starter package capacity thresholds. You will continue to have access to:
- Up to 500 peak concurrent users
- 30M monthly message volume
- 2GB storage
- All standard features including Stream Channel, Presence, Storage, etc.
Q. What happens if I exceed my package limits?
Usage above your fixed plan limits will be charged as additional usage (overage) at the standard consumption rates:
- Peak PCU: $30 per 1000 PCU
- Messages: $3 per 1 Million
- Storage: $15 per 1 GB per month
Q. Will I lose access to any features with these changes?
Feature availability depends on your package:
- Free Package: Will no longer have access to Stream Channel and Webhooks
- Starter Package: No changes to feature availability
- Pro and Business Packages: No changes to feature availability
- Enterprise Package: No changes to feature availability
Q. I'm currently on the Free package but will exceed the new limits. What are my options?
If you're currently on the Free package and anticipate exceeding the new limits (20 PCU, 1M monthly messages), Agora recommends upgrading to the Starter package ($59/month), which provides:
- Up to 500 peak concurrent users
- 30M monthly message volume
- 2GB storage
- Full feature access including Stream Channel and Webhooks
Q. How can I opt for changes to my package?
You can subscribe to a new package or change the subscribed package using Agora Console.
The console shows the following messages when you attempt to upgrade, downgrade or unsubscribe a package.
-
Upgrade notice:
When upgrading your package, the new package tariffs are applied immediately. The charge will be prorated based on the remaining days of the current billing cycle.
-
Downgrade notice:
Your downgrade will take effect at the end of the current billing cycle. Until then, you will be charged at the current package rate.
-
Unsubscribe notice:
Unsubscribing will take effect at the end of the current billing cycle. Post which, your account will automatically switch to the Free Signaling 2.x package.
If you need any further assistance, contact your account manager or reach out to support@agora.io to discuss your specific needs and concerns.
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 |
|