Rate Limits & Disabled Apps

Safety measures for end users

Our rate limits are extremely generous and are meant to trigger as a safety measure in case customers accidentally make an error when integrating with the OneSignal API that causes excessive notifications.

Rate limiting is designed solely as a solution to prevent end users from getting spammed with notifications that the customer did not know they were sending, and is not intended to affect customers in other cases.

What are the Rate Limits?

LimitDetails
Requests Per SecondOnly applies to the Create notification API.

6,000 requests/second for all paid plans
150 requests/second for free plans.
Targeting Subscribed UsersCannot message more than 10x amount of Subscribed Users within 15 minutes.

If your app has over 1,000 subscribers, you cannot send each subscriber more than 10 notifications in a 15 minute period. Similarly, you cannot send a single subscriber 10,000 notifications within a 15 minute period.

📘

Subscribed Users

Subscribers are users in an app that can receive push notifications. This excludes users that have a) unsubscribed from or otherwise disabled push notifications, b) uninstalled the app, or c) cleared their browser settings.

How do I know if I reached a limit?

If you hit the Requests Per Second limit, our API will return an HTTP 429 response. After about a minute, you will not get blocked on new API calls.

If you hit the Targeting Subscribed Users limit, we will inform you in 3 ways. In extremely rare cases, OneSignal may automatically disable an app due to a rate limit.

  • An email will be sent to all App Administrators associated with the app.
  • An error will be shown in the API response:
{
  errors: ['API rate limit exceeded. See the RateLimit response headers for more details.']
}
  • An alert banner will appear above the interface anywhere in the app's OneSignal dashboard, which also includes a button to re-enable the app.
2226

Scenarios where the Targeting Subscribed Users Limit Triggers

The following are scenarios where rate limiting may or may not be triggered, based on an app with exactly 1000 subscribed users:

ScenarioRate limit reached?
Sending 1 notification to 1,000 recipients?No, rate limit not reached.

If your app has 1000 messageable users, you can send up to 9,999 notifications within a 15 minute period. However, sending to one more recipient would trigger the rate limit.
Sending 10 notifications to 1,000 recipient each ?Yes, rate limit is reached.

The rate limit is 10 x messageable users within 15 minutes.

10 x 1,000 = 10,000 you should not be sending 10 notifications per user within 15 minute periods.
Sending 10,000 notifications to 1 recipient each in a 15-minute period?Yes, rate limit is reached.

Ten times the number of messageable recipients have been delivered to.
Sending 9 notifications to 1,000 recipients each in a 14-minute period, and then sending 1 notification to 1,000 recipients after 1 minute?No.

The last notification is counted using a new 15-minute window.
Sending 9 notifications to 1,000 recipients each in a 14-minute period, and then sending another 9 notification to 1,000 recipients after 1 minute?No.

The 15-minute window is static and does not roll over from minute to minute.

FAQ

Do apps get disabled if the Requests Per Second limit is reached?

No, they will be allowed to send again after some time passes.

Will I be notified when my app is disabled?

Yes, an email is sent to all app administrators any time an app is disabled or re-enabled with the date and time each event occurred.

When will my app be automatically re-enabled?

Apps are not automatically re-enabled.

Instead, you can manually re-enable them from our dashboard. Be sure to check your app for any errors that caused it to exceed our rate limit.

How can I manually re-enable my app?

First, please check your code to make sure there aren't any bugs that would cause a large increase in the number of sent notifications.

When you've finished reviewing your code for bugs, re-enable the app by logging into our dashboard, visiting any page inside the app, and click the link on the top red notice.