
Simple, transparent pricing
Fixed monthly price. All core features on every tier. Free to try, no credit card.
No credit card. Live in ~2 minutes.
Full Feature Comparison
Every feature across all pricing tiers
| Features | FREE | BASIC | Most Popular PLUS | PRO |
|---|---|---|---|---|
Users Maximum users | 5,000 | 25,000 | 100,000 | 200,000 |
How many players (user accounts) all API keys of your account can register. You get an email at 80 % and at 100 %. Above the limit, new players still sign up into the player buffer of your plan. If your account is still above its limit after 7 days, the newest players are deleted until it is back at the limit, and you get an email. Upgrading in time keeps them. Once the buffer is full too, new sign-ups are refused with HTTP 403. Players who already have an account keep playing. | ||||
Player Buffer Temporary sign-ups above the user limit | +500 | +2,500 | +2,500 | +2,500 |
How many players can still sign up after the user limit is reached. They are kept for 7 days. If your account is still above its limit then, the newest players are deleted down to the limit. An upgrade within these days keeps them. When the buffer is full, further sign-ups are refused with HTTP 403. | ||||
Players per day (estimate) At about 72 requests per player and day | ~200 | ~1,000 | ~4,000 | ~10,000 |
An estimate, not a limit. Your plan has a request budget (the soft rate limit). Spread over one day at about 72 requests per player, it fits this many players. How many players really fit depends on how your game uses horizOn: a game that loads a save at start, saves at the end and submits one score per session sends far fewer requests, so several times as many players fit. A game that calls the backend every few seconds fits fewer. | ||||
Leaderboard Scores Leaderboard slots per account (one per user and leaderboard) | 5,000 | 25,000 | 200,000 | 1,000,000 |
Each player can have one score per leaderboard. All leaderboards and API keys of your account share these slots. When they are full, a new score replaces the oldest entry or the lowest score of the leaderboard, as set per leaderboard. With lowest score, a new score that is not better is refused. | ||||
Leaderboards Named leaderboards per API key | 1 | 2 | 5 | 10 |
Named leaderboards you can create per API key. Use separate boards for global, regional, weekly or seasonal rankings. When the limit is reached, a new leaderboard is refused. | ||||
Player Profile Cosmetics Avatars, frames and badges per API key | 50 | 200 | 350 | 500 |
A catalog of avatars, frames and badges per API key that players show next to their name in leaderboards. Locked cosmetics are unlocked with gift codes or granted in the dashboard. Each player shows one avatar, one frame and up to 3 badges and can own up to 25 unlocks. When the catalog is full, new cosmetics are refused. | ||||
Validated Actions Run tickets per account and hour | 300 | 3,000 | 10,000 | 20,000 |
Validated Actions give each game run a signed, single-use ticket and check the result against your server-only rules before a score is written. This is how many run tickets all API keys of your account can start per hour (UTC). When they are used up, new runs are refused with HTTP 429 and a Retry-After header until the next full hour (UTC). | ||||
Server-owned Values Server-owned values per API key | 8 | 16 | 24 | 32 |
Currencies and counters such as gold or opened chests that only validated runs change. The server stores and checks them instead of the game client. This is how many different values one API key can define. A rule set with more values is refused. | ||||
API Keys Number of API keys | 2 | 10 | 15 | 20 |
Number of active API keys. Use different keys for different platforms or environments (development, staging, production). When all are in use, a new key can only be created after you revoke one. | ||||
Rate Limit (Soft) Sustained requests per minute (account) | 10 | 50 | 200 | 500 |
Requests per minute that all players of your account can send on average, counted across all regions. 10 per minute (Free) is about 14,400 requests a day: enough for a casual or puzzle game where each player signs in, loads a save, saves and submits a score a few times per session. It is not enough for real-time multiplayer or polling every few seconds. Going above it is fine for a while: an hour (UTC) in which your account goes above it counts as a violation hour. From the third violation hour on one UTC day, the soft limit becomes your cap until midnight UTC, and you get an email. | ||||
Rate Limit (Hard) Peak requests per minute (account) | 100 | 500 | 2,000 | 5,000 |
The most requests your account can send within one minute, shared by all players and regions. It absorbs spikes such as a launch or a sale. Only the requests above it are refused, with HTTP 429 and a Retry-After header that says how many seconds to wait. Everything below it still goes through. | ||||
Gift Codes Redeemable gift/coupon codes | 10 | 50 | 75 | 100 |
Promotional codes that grant rewards, items or premium features to players. When the limit is reached, a new code can only be created after you remove one. Codes you already created keep working. | ||||
Remote Config Values / Characters per value | 100 / 256 | 500 / 512 | 750 / 512 | 1,000 / 512 |
Store game configuration remotely. Update game settings, feature flags or A/B test values without a new release. Format: max values / max characters per value. When the limit is reached, existing values can still be changed, but new keys are refused. | ||||
Localization Keys / characters per language value | 50 / 150 | 500 / 300 | 1,250 / 400 | 2,500 / 500 |
Manage your game's UI texts in 15 languages and update them live without a new release. Format: max keys per API key / max characters per language value. When the limit is reached, existing keys can still be edited, but new keys are refused. | ||||
User Logs Log entries retained | 200 | 2,000 | 3,500 | 5,000 |
Send debug logs from your game to horizOn, as INFO, WARN or ERROR, with metadata and stack traces. When the limit is reached, the oldest logs are deleted automatically about once a minute, so new logs keep arriving. Only if logs arrive faster than that are new ones refused until the cleanup has run. | ||||
User Feedback Feedback submissions | 50 | 250 | 375 | 500 |
Collect bug reports, feature requests and general feedback from players. Device info is included automatically. When the limit is reached, new submissions are refused with HTTP 403 until older ones are deleted. | ||||
Crash Reports Crash reports stored | 100 | 5,000 | 7,500 | 10,000 |
Capture crashes, ANR events and non-fatal errors automatically, with stack traces, device info, breadcrumbs and custom metadata. When the limit is reached, new crash reports are refused until older ones are removed, by you or by the retention period. | ||||
Crash Report Retention Crash report retention | 7 days | 30 days | 60 days | 90 days |
How long crash reports are kept. Older reports are deleted automatically, checked every 6 hours. Longer retention helps you track regressions across several releases. | ||||
Cloud Save KB storage per user | 1 | 5 | 10 | 15 |
Cloud storage for player progress, settings and game state, synced across devices. The limit is the size of one player's save in KB. A save above it is refused with HTTP 403, and the previous save stays. | ||||
News Number of news articles | 20 | 150 | 225 | 300 |
In-game announcements and news articles, each with a 200-character title and a 5,000-character message. When the limit is reached, new entries are refused until you delete older ones. | ||||
Email Templates Email templates per API key | 1 | 3 | 6 | 10 |
Reusable HTML email templates with variables, per API key, for transactional emails to your players. When the limit is reached, a new template is refused. | ||||
Supported Languages Supported languages (News & Email) | 15 | 15 | 15 | 15 |
Number of languages supported for News items and Email Templates. Use manual translation, your own OpenAI/Gemini key, or local LLM (Ollama/LM Studio) with up to 8000 char prompts and 32000 tokens. | ||||
Translation Providers Custom LLM API key support | ||||
Connect your own LLM API keys (OpenAI, Google Gemini) or local models (Ollama, LM Studio) for automatic news translation. Keeps translation costs under your control. | ||||
SDK Languages Programming language support | C#, GDScript, C++, REST | C#, GDScript, C++, REST | C#, GDScript, C++, REST | C#, GDScript, C++, REST |
Official SDKs in C# for Unity, GDScript for Godot and C++ with Blueprints for Unreal. Every other language calls the REST API directly, the API reference shows request examples for many languages. | ||||
SDK Platforms Platform SDK availability | Unity, Godot, Unreal, REST | Unity, Godot, Unreal, REST | Unity, Godot, Unreal, REST | Unity, Godot, Unreal, REST |
SDKs for Unity, Godot and Unreal Engine. Other engines and tools use the documented REST API. | ||||
Backup Frequency How often backups run | Daily | Daily | Daily | Daily |
The database of every account is backed up once a day. | ||||
Backup Retention How long backups are kept | Up to 12 months | Up to 12 months | Up to 12 months | Up to 12 months |
Daily backups are kept for 14 days, weekly backups for 8 weeks and monthly backups for 12 months. On request we restore a single account from one of these backups. There is no point-in-time recovery. | ||||
Server Regions Global server regions | EU, US, Asia | EU, US, Asia | EU, US, Asia | EU, US, Asia |
Every project runs in all three regions: Helsinki, Finland (EU), Virginia (US) and Singapore (Asia). A request goes to the nearest region, and the server there reads your data from its nearest copy. Writes go to the primary database in Helsinki and are copied to the US and Asia, so a save from far away takes longer than a read. If a region fails, its requests move to the next region. | ||||
Data Protection (GDPR) Data protection under the GDPR | ||||
Operated by a company in Germany. Every account has its own database. A data processing agreement under Art. 28 GDPR is published as a template at horizon.pm/legal/dpa-template.html. Data processing agreement (template) | ||||
Support level Response time by plan | Best effort | Priority | Priority | 1 business day |
Free: best effort with the lowest priority, through Discord and support tickets. Basic and Plus: your tickets are answered before Free tickets, usually within 2 business days. Pro: guaranteed first response within 1 business day and personal support directly from the developer. Business days are Monday to Friday except public holidays in Germany. Enterprise: response times are agreed individually. | ||||
How many players (user accounts) all API keys of your account can register. You get an email at 80 % and at 100 %. Above the limit, new players still sign up into the player buffer of your plan. If your account is still above its limit after 7 days, the newest players are deleted until it is back at the limit, and you get an email. Upgrading in time keeps them. Once the buffer is full too, new sign-ups are refused with HTTP 403. Players who already have an account keep playing.
How many players can still sign up after the user limit is reached. They are kept for 7 days. If your account is still above its limit then, the newest players are deleted down to the limit. An upgrade within these days keeps them. When the buffer is full, further sign-ups are refused with HTTP 403.
An estimate, not a limit. Your plan has a request budget (the soft rate limit). Spread over one day at about 72 requests per player, it fits this many players. How many players really fit depends on how your game uses horizOn: a game that loads a save at start, saves at the end and submits one score per session sends far fewer requests, so several times as many players fit. A game that calls the backend every few seconds fits fewer.
Each player can have one score per leaderboard. All leaderboards and API keys of your account share these slots. When they are full, a new score replaces the oldest entry or the lowest score of the leaderboard, as set per leaderboard. With lowest score, a new score that is not better is refused.
Named leaderboards you can create per API key. Use separate boards for global, regional, weekly or seasonal rankings. When the limit is reached, a new leaderboard is refused.
A catalog of avatars, frames and badges per API key that players show next to their name in leaderboards. Locked cosmetics are unlocked with gift codes or granted in the dashboard. Each player shows one avatar, one frame and up to 3 badges and can own up to 25 unlocks. When the catalog is full, new cosmetics are refused.
Validated Actions give each game run a signed, single-use ticket and check the result against your server-only rules before a score is written. This is how many run tickets all API keys of your account can start per hour (UTC). When they are used up, new runs are refused with HTTP 429 and a Retry-After header until the next full hour (UTC).
Currencies and counters such as gold or opened chests that only validated runs change. The server stores and checks them instead of the game client. This is how many different values one API key can define. A rule set with more values is refused.
Number of active API keys. Use different keys for different platforms or environments (development, staging, production). When all are in use, a new key can only be created after you revoke one.
Requests per minute that all players of your account can send on average, counted across all regions. 10 per minute (Free) is about 14,400 requests a day: enough for a casual or puzzle game where each player signs in, loads a save, saves and submits a score a few times per session. It is not enough for real-time multiplayer or polling every few seconds. Going above it is fine for a while: an hour (UTC) in which your account goes above it counts as a violation hour. From the third violation hour on one UTC day, the soft limit becomes your cap until midnight UTC, and you get an email.
The most requests your account can send within one minute, shared by all players and regions. It absorbs spikes such as a launch or a sale. Only the requests above it are refused, with HTTP 429 and a Retry-After header that says how many seconds to wait. Everything below it still goes through.
Promotional codes that grant rewards, items or premium features to players. When the limit is reached, a new code can only be created after you remove one. Codes you already created keep working.
Store game configuration remotely. Update game settings, feature flags or A/B test values without a new release. Format: max values / max characters per value. When the limit is reached, existing values can still be changed, but new keys are refused.
Manage your game's UI texts in 15 languages and update them live without a new release. Format: max keys per API key / max characters per language value. When the limit is reached, existing keys can still be edited, but new keys are refused.
Send debug logs from your game to horizOn, as INFO, WARN or ERROR, with metadata and stack traces. When the limit is reached, the oldest logs are deleted automatically about once a minute, so new logs keep arriving. Only if logs arrive faster than that are new ones refused until the cleanup has run.
Collect bug reports, feature requests and general feedback from players. Device info is included automatically. When the limit is reached, new submissions are refused with HTTP 403 until older ones are deleted.
Capture crashes, ANR events and non-fatal errors automatically, with stack traces, device info, breadcrumbs and custom metadata. When the limit is reached, new crash reports are refused until older ones are removed, by you or by the retention period.
How long crash reports are kept. Older reports are deleted automatically, checked every 6 hours. Longer retention helps you track regressions across several releases.
Cloud storage for player progress, settings and game state, synced across devices. The limit is the size of one player's save in KB. A save above it is refused with HTTP 403, and the previous save stays.
In-game announcements and news articles, each with a 200-character title and a 5,000-character message. When the limit is reached, new entries are refused until you delete older ones.
Reusable HTML email templates with variables, per API key, for transactional emails to your players. When the limit is reached, a new template is refused.
Number of languages supported for News items and Email Templates. Use manual translation, your own OpenAI/Gemini key, or local LLM (Ollama/LM Studio) with up to 8000 char prompts and 32000 tokens.
Connect your own LLM API keys (OpenAI, Google Gemini) or local models (Ollama, LM Studio) for automatic news translation. Keeps translation costs under your control.
Official SDKs in C# for Unity, GDScript for Godot and C++ with Blueprints for Unreal. Every other language calls the REST API directly, the API reference shows request examples for many languages.
SDKs for Unity, Godot and Unreal Engine. Other engines and tools use the documented REST API.
The database of every account is backed up once a day.
Daily backups are kept for 14 days, weekly backups for 8 weeks and monthly backups for 12 months. On request we restore a single account from one of these backups. There is no point-in-time recovery.
Every project runs in all three regions: Helsinki, Finland (EU), Virginia (US) and Singapore (Asia). A request goes to the nearest region, and the server there reads your data from its nearest copy. Writes go to the primary database in Helsinki and are copied to the US and Asia, so a save from far away takes longer than a read. If a region fails, its requests move to the next region.
Operated by a company in Germany. Every account has its own database. A data processing agreement under Art. 28 GDPR is published as a template at horizon.pm/legal/dpa-template.html. Data processing agreement (template)
Free: best effort with the lowest priority, through Discord and support tickets. Basic and Plus: your tickets are answered before Free tickets, usually within 2 business days. Pro: guaranteed first response within 1 business day and personal support directly from the developer. Business days are Monday to Friday except public holidays in Germany. Enterprise: response times are agreed individually.

FREE
Perfect for individuals and small teams starting out
Users:5,000 Players per day (estimate):~200 Remote Config:100 / 256 values / chars Cloud Save:1 KB/user
BASIC
Billed annually (€119.88), incl. VAT
Ideal for growing teams needing advanced features
Users:25,000 Players per day (estimate):~1,000 Remote Config:500 / 512 values / chars Cloud Save:5 KB/user
PLUS
Billed annually (€299.88), incl. VAT
For games that outgrow Basic. Four times the daily players of Basic at half the price of Pro.
Users:100,000 Players per day (estimate):~4,000 Remote Config:750 / 512 values / chars Cloud Save:10 KB/user
PRO
Billed annually (€599.88), incl. VAT
Best for teams that need a guaranteed support response
Users:200,000 Players per day (estimate):~10,000 Remote Config:1,000 / 512 values / chars Cloud Save:15 KB/user
ENTERPRISE
On request
Your own horizOn instance. Capacity and performance sized to your game, your own domain and direct support. We prepare an offer for you.
What happens at a limit
Open a row in the table above for the exact rule of each limit. The ones that matter most:
Players
Emails at 80 % and 100 %. Above the limit, the player buffer of your plan takes new sign-ups. After 7 days above the limit, the newest players are deleted unless you upgrade. Beyond the buffer, sign-ups are refused with HTTP 403.
Requests per minute
Above the hard limit, only the excess is refused with HTTP 429 and Retry-After. Going above the soft limit is fine for two hours per UTC day. From the third such hour, the soft limit is your cap until midnight UTC and you get an email.
Saves and content
A cloud save above the size limit is refused and the previous save stays. User logs make room by deleting the oldest entries. Every other content limit refuses new entries and keeps the existing ones.
Free plan
The Free plan never costs money and has no end date. It only needs activity: after three months without a login and without any request from your game, the account is deactivated after an email warning at least 7 days ahead, and deleted 14 days later (Terms 12). A game that is live keeps the account active.
Which game fits 10 requests per minute?
10 requests per minute is the soft limit of the Free plan, about 14,400 requests a day for your whole account. It fits a casual or puzzle game where each player signs in, loads a save, saves and submits a score a few times per session. It does not fit real-time multiplayer or a game that calls the backend every few seconds per player.
Where your project runs
Every project runs in all three regions: Helsinki (Finland), Virginia (US) and Singapore. A request goes to the nearest region, and the server there reads your data from its nearest copy. Writes go to the primary database in Helsinki and are copied to the US and Asia. If a region fails, its requests move to the next region.
How we measure availabilityAll core features on every tier. Capacity scales with your plan.

