Skip to content

Limits and regions

An app lives in the region you pick when you create it, and your pages, service worker and server all talk to that region’s host. It can’t be moved later; create a new app in another region instead.

Region Host
Global (Frankfurt) push-global-1.dockhive.io
United States push-us.dockhive.io
Germany push-de.dockhive.io
Portugal push-pt.dockhive.io
Singapore push-singapore.dockhive.io
Japan (Tokyo) push-tokyo.dockhive.io
Hong Kong push-hongkong.dockhive.io

Use the host shown on the app’s page. A public key only works on its own region’s host; on another one the SDK gets 401 invalid_key.

Allowances apply per account, in each region.

Plan Apps Devices Sends a day
Free 2 10,000 50,000
Developer 10 100,000 500,000
Pro 50 1,000,000 5,000,000
Scale 200 10,000,000 50,000,000

Devices are the browsers that have turned notifications on and are still active, across all your apps in the region. When you reach the limit, new browsers are refused with 403 device_limit; browsers already registered keep working.

A send is one browser delivery or one inbox item: a notification to 3 browsers of one user, with the inbox on, counts 4. The daily count resets at 00:00 UTC.

A send that would go over the daily limit is refused with 403 quota_exceeded. Scheduled notifications count on the day they go out, and are canceled with quota_exceeded if the limit has been reached by then. Upgrade your plan in Billing for more.

Limit
Server API requests 50 a second per app
Browser SDK requests 120 a minute per IP address
Live inbox connections 5 per user per app
Notification size 4096 bytes encrypted (about 3.9 KB of content)
Title / body 120 / 1000 characters
Targets per notification 1000 user ids or device ids
Buttons 2 per notification
Tags 20 per device
Scheduling Up to 30 days ahead
ttl Up to 28 days
User tokens Up to 30 days; user ids up to 200 characters
Inbox 200 items per user, kept 90 days
Notification history 30 days

Errors are JSON with a stable code and a readable error. The browser SDK throws them as HivePushError with the same code.

Status Code Meaning
400 invalid_json The body is not a JSON object
400 invalid_target to must have exactly one of users, devices, tags, all; or ids or tags are malformed
400 invalid_title, invalid_body, invalid_url, invalid_icon, invalid_image, invalid_badge, invalid_tag, invalid_data, invalid_actions A content field is missing, too long or malformed
400 invalid_ttl, invalid_urgency, invalid_topic, invalid_send_at A delivery option is out of range
400 invalid_subscription The browser’s subscription is malformed or not from a supported browser
400 unsupported_platform Only web browsers can be registered from the browser SDK
400 invalid_tags, invalid_user_id, invalid_cursor, invalid_before, invalid_type, invalid_ids A parameter is malformed
401 unauthorized No secret key sent
401 invalid_api_key Wrong secret key for this app
401 invalid_key Unknown public key (check the key and the region host)
401 invalid_user_token Missing, malformed, expired or wrongly signed user token
403 origin_not_allowed The page’s website is not in the app’s allowed origins
403 quota_exceeded The send would go over your daily send limit
403 device_limit Your account has reached its device limit
403 app_disabled The account that owns the app is suspended
404 not_found Unknown app, notification, device or path
409 not_cancelable The notification is already sending or finished
413 payload_too_large The notification doesn’t fit the 4096-byte web push limit
413 too_large The request body is too large
429 rate_limited Too many requests; wait for Retry-After seconds
429 too_many_streams The user already has 5 live inbox connections
503 over_capacity, unavailable Temporarily unavailable; retry shortly
500 internal Something went wrong on our side; retry later

The browser SDK adds unsupported, permission_denied, invalid_options and network (with status 0).