Connect your game to horizOn
Pick a path below and be live in minutes, no long setup required.
Use https://horizon.pm as the base URL for the examples above. App endpoints require X-API-Key.
/api/v1/app/user-management/signupAnonymous or email player creation
/api/v1/app/user-management/signinPlayer sign-in and session validation
/api/v1/app/leaderboard/submitSubmit a score
/api/v1/app/cloud-save/saveSave player data
/api/v1/app/cloud-save/loadLoad player data
/api/v1/app/remote-config/allRead all live configuration values
/api/v1/app/user-feedback/submitCollect player bug reports and ideas
Create an account-scoped key in Dashboard, then API Keys, paste it into your MCP client config, and ask the assistant for SDK quickstarts or live API operations.
{
"mcpServers": {
"horizOn": {
"command": "npx",
"args": ["-y", "horizon-mcp"],
"env": {
"HORIZON_ACCOUNT_API_KEY": "hzn_acc_YOUR_ACCOUNT_KEY",
"HORIZON_BASE_URL": "https://horizon.pm"
}
}
}
} View the MCP server on GitHub Apple requires every iOS build that offers a third-party sign-in option to also offer Sign in with Apple (App Store Review Guideline 4.8). horizOn User Management supports Apple Sign-In natively. Paste three identifiers from your Apple Developer account into the dashboard, drop the SDK snippet into your game, and you're compliant — no extra backend needed.
Read the full API referenceThe horizOn simpleServer exposes a REST API that mirrors the horizOn Cloud feature set. All endpoints require the X-API-Key header for authentication.
Why PHP? For maximum simplicity — horizOn's main backend uses Spring/Kotlin for enterprise performance. The Simple Server is intentionally built in PHP so developers can easily understand, modify, and self-host it.
View on GitHubSDKs, Plugins & Tools
Everything you need to integrate horizOn into your game. Download SDKs for your favorite engine and get started in minutes.
New to horizOn?
Follow our step-by-step quickstart guide to set up your first project and integrate the SDK.
SDK Resources
Download SDKs, plugins, and access documentation for your game engine.
Unity2
Unreal Engine2
Godot2
Other Resources2
Each client is limited to 10 requests per minute. Design your API calls efficiently.
Cache data locally Load all configs at startup Submit scores only on improvements Use the useCache parameter Make repeated identical requests Fetch individual configs repeatedly Submit scores every frame Always bypass the cache
Efficient startup pattern: Load only what you need at startup, then rely on caching for the rest.
Read the full API referenceHave a question or found a bug? Open a ticket from the dashboard if you have an account, or use the guest ticket form on horizon.pm. You can also join the Discord community for quick help.
Open a support ticketSee HorizOn in Action
Explore how real applications integrate HorizOn features to solve common challenges
Mobile Shopping List App
Shopping List with Sync
A mobile shopping list app where users can save their lists to the cloud, receive news about deals and discounts, and access their data across devices.
HorizOn Features Used
ShopSync
Welcome back!
Code Examples
// Register user with email
await UserManager.Instance.SignUpEmail(
"user@example.com",
"securePassword123",
"John Doe"
);
// Sign in existing user
await UserManager.Instance.SignInEmail(
"user@example.com",
"securePassword123"
);// Define shopping list structure
[System.Serializable]
public class ShoppingList
{
public List<string> Items;
public DateTime LastUpdated;
}
// Save list to cloud
var list = new ShoppingList {
Items = new List<string> { "Milk", "Eggs", "Bread" },
LastUpdated = DateTime.Now
};
await CloudSaveManager.Instance.SaveObject(list);
// Load from cloud
var saved = await CloudSaveManager.Instance.LoadObject<ShoppingList>();// Fetch latest deals and offers
var news = await NewsManager.Instance.LoadNews(limit: 5);
foreach (var deal in news)
{
Debug.Log($"{deal.Title}: {deal.Message}");
// Display in UI: "50% off milk this week!"
}# REST API Alternative
# Register user
POST https://horizon.pm/user/signup/email
Content-Type: application/json
X-API-Key: YOUR_API_KEY
{
"email": "user@example.com",
"password": "securePassword123",
"displayName": "John Doe"
}
# Save cloud data
POST https://horizon.pm/cloud-save
Content-Type: application/json
X-API-Key: YOUR_API_KEY
Authorization: Bearer USER_TOKEN
{
"data": {
"items": ["Milk", "Eggs", "Bread"],
"lastUpdated": "2025-02-07T10:00:00Z"
}
} Why This Works
Perfect for consumer apps that need user accounts and cross-device sync. Cloud Save ensures lists sync seamlessly, News keeps users informed about deals, and Login provides secure account management.
Car Manufacturer Audit App
Quality Control & Compliance
A business app for automotive auditors to perform quality inspections using remote checklists that can be updated centrally without redeploying the app.
HorizOn Features Used
AutoCorp Quality Control
Code Examples
// Secure login for auditor
await UserManager.Instance.SignInEmail(
"auditor@company.com",
"securePassword"
);
// Check authentication status
if (UserManager.Instance.IsSignedIn)
{
var user = UserManager.Instance.CurrentUser;
Debug.Log($"Auditor: {user.DisplayName}");
}// Load audit checklist from remote config
var checklistJson = await RemoteConfigManager.Instance.GetString(
"audit_checklist_v2",
defaultValue: "{}"
);
// Parse checklist
var checklist = JsonUtility.FromJson<AuditChecklist>(checklistJson);
// Load compliance rules (updated without app deployment)
bool requiresPhotos = await RemoteConfigManager.Instance.GetBool(
"photos_required",
true
);// Fetch compliance updates and audit changes
var updates = await NewsManager.Instance.LoadNews(limit: 10);
foreach (var update in updates)
{
// Display critical compliance changes
Debug.Log($"[{update.Title}] {update.Message}");
}# REST API Alternative
# Login
POST https://horizon.pm/user/signin/email
Content-Type: application/json
X-API-Key: YOUR_API_KEY
{
"email": "auditor@company.com",
"password": "securePassword"
}
# Get remote config
GET https://horizon.pm/remote-config/audit_checklist_v2
X-API-Key: YOUR_API_KEY
Authorization: Bearer USER_TOKEN Why This Works
Ideal for enterprise apps requiring secure authentication and updatable configurations. Remote Config allows instant checklist updates across all devices, News broadcasts compliance changes, and Login ensures only authorized personnel access the system.
Steam Roguelike Game
Indie Game on Steam
A roguelike game on Steam with no registration barriers, cloud save progress, remote game balance updates, and integrated bug reporting.
HorizOn Features Used
DUNGEON DEPTHS
A Roguelike Adventure
Code Examples
// No registration required - instant play
await UserManager.Instance.SignUpAnonymous("Player_" + Random.Range(1000, 9999));
// Token is cached automatically for session restore
if (UserManager.Instance.IsSignedIn)
{
Debug.Log("Ready to play!");
}// Load game balance values (updatable without patch)
int maxHealth = await RemoteConfigManager.Instance.GetInt("max_health", 100);
float enemyDamage = await RemoteConfigManager.Instance.GetFloat("enemy_damage", 15.0f);
bool eventActive = await RemoteConfigManager.Instance.GetBool("halloween_event", false);
// Apply to gameplay
player.MaxHealth = maxHealth;
enemy.Damage = enemyDamage;// Define save structure
[System.Serializable]
public class GameProgress
{
public int Level;
public int Gold;
public List<string> UnlockedCharacters;
}
// Save progress
var progress = new GameProgress {
Level = 12,
Gold = 5000,
UnlockedCharacters = new List<string> { "Knight", "Mage" }
};
await CloudSaveManager.Instance.SaveObject(progress);
// Load on startup
var saved = await CloudSaveManager.Instance.LoadObject<GameProgress>();// Bug report with automatic device info
await FeedbackManager.Instance.ReportBug(
title: "Crash in level 5",
message: "Game freezes when boss spawns"
);
// Feature request
await FeedbackManager.Instance.RequestFeature(
title: "New character class",
message: "Please add Necromancer class"
);# REST API Alternative
# Anonymous signup
POST https://horizon.pm/user/signup/anonymous
Content-Type: application/json
X-API-Key: YOUR_API_KEY
{
"displayName": "Player_1234"
}
# Get remote config
GET https://horizon.pm/remote-config/max_health
X-API-Key: YOUR_API_KEY
Authorization: Bearer USER_TOKEN
# Submit feedback
POST https://horizon.pm/feedback/bug
Content-Type: application/json
X-API-Key: YOUR_API_KEY
Authorization: Bearer USER_TOKEN
{
"title": "Crash in level 5",
"message": "Game freezes when boss spawns"
} Why This Works
Perfect for games that need instant player onboarding and flexible balance tuning. Anonymous Login removes registration friction, Remote Config enables live game balance changes, Cloud Save preserves progress, and Feedback captures bug reports with automatic device info.
Ready to Build Your Own?
Start integrating HorizOn into your project today with our step-by-step quickstart guide