
Cloud Saves
Sync player progress across every device so players never lose their game
Flexible Data Format
Save data is a plain string, so you can serialize any structure — JSON, MessagePack, or custom format — without schema constraints.
Instant Cross-Device Sync
The latest save is always available from any device as soon as the player authenticates with their horizOn account.
Player Retention
Players who know their progress is safe are far more likely to return after switching devices or reinstalling.
Quick Integration
Puzzle Quest
Level 47
Progress73%
Score: 128,450
Play Time: 12h 34m
// Unity C#: Cloud Saves (needs a signed in player)
using PM.horizOn.Cloud.Manager;
using UnityEngine;
[System.Serializable]
public class PlayerSave { public int Level; public int Gold; public string Checkpoint; }
// Save: the object is stored as JSON
var save = new PlayerSave { Level = 42, Gold = 1500, Checkpoint = "world_3_boss" };
bool saved = await CloudSaveManager.Instance.SaveObject(save);
// Load it again, e.g. on another device (null when nothing is saved)
var loaded = await CloudSaveManager.Instance.LoadObject<PlayerSave>();
if (loaded != null) Debug.Log($"Loaded level: {loaded.Level}");# REST API: Cloud Saves (needs the player's session token)
# Save player data
curl -X POST https://horizon.pm/api/v1/app/cloud-save/save \
-H "X-API-Key: YOUR_API_KEY" \
-H "Authorization: Bearer SESSION_TOKEN" \
-H "Content-Type: application/json" \
-d '{"saveData":"{\"level\":42,\"gold\":1500,\"checkpoint\":\"world_3_boss\"}"}'
# Load player data
curl -X POST https://horizon.pm/api/v1/app/cloud-save/load \
-H "X-API-Key: YOUR_API_KEY" \
-H "Authorization: Bearer SESSION_TOKEN" \
-H "Content-Type: application/json" \
-d '{}'These examples use the Unity SDK (C#) and the REST API. Godot and Unreal have the same calls in their own SDKs: see the quickstart
Frequently Asked Questions
Ready to Integrate?
Start building with horizOn today. Free tier included.
