# OpenGame > Put a browser game on OpenGame from your terminal or your agent, and give it players, leaderboards and multiplayer. - [Quickstart](https://docs.opengame.io/quickstart.md): Upload a browser game and get a private preview link that only you can open. - [For agents](https://docs.opengame.io/for-agents.md): Install the CLI, sign in with the creator and deploy their game to a private preview, then submit it only when they ask. - [Host a Three.js game](https://docs.opengame.io/guides/hosting-threejs.md): Deploy a Three.js build to a private preview, play it, and send it for review. - [Packaging](https://docs.opengame.io/guides/packaging.md): Shape your game folder and opengame.json so the build passes the checks before review. - [Optimise your assets](https://docs.opengame.io/guides/assets.md): Cut what a player downloads before the first playable frame without making the game look or sound worse. - [The repair loop](https://docs.opengame.io/guides/repair-loop.md): Read a failed check and act on it, by hand or through an agent, without guessing. - [Connect the SDK](https://docs.opengame.io/guides/identity.md): Start the SDK, identify players and guests, and handle sign-in, pause, mute, events and capabilities. - [Draw the player's OG](https://docs.opengame.io/guides/characters.md): Put the player's OpenGame character in your game, with head, body and outfit, and show it well in first person, third person, menus, cinematics and the HUD. - [Add a leaderboard](https://docs.opengame.io/guides/leaderboards.md): Declare a board in opengame.json, submit scores from your game and show the results. - [Add multiplayer](https://docs.opengame.io/guides/multiplayer.md): Let players host and join rooms by code, browser to browser, with the host's game as the authority and no server of your own. - [Enter a jam](https://docs.opengame.io/guides/jams.md): Submit a release to the current jam, pick a track, and certify that you have the rights to it. - [Update a live game](https://docs.opengame.io/guides/updating.md): Deploy and review a new release while the live one keeps serving, and keep edits made on the website. - [CLI reference](https://docs.opengame.io/reference/cli.md): Every opengame command, flag, exit code and JSON event. - [SDK reference](https://docs.opengame.io/reference/sdk.md): Look up every SDK export, its signature, and the types its signature uses. - [Runtimes and contracts](https://docs.opengame.io/reference/runtimes.md): Look up the runtime contract a release is served under, the platform runtimes an export can select, and what their hashes and notices grant. - [Limits](https://docs.opengame.io/reference/limits.md): Look up each limit your game, your deploys and your agent meet, and why it exists. - [Changelog](https://docs.opengame.io/changelog.md): See what changed in the CLI, SDK, API and packaging contract in each internal build. - [Engine support](https://docs.opengame.io/engines/overview.md): Check upload requirements, recorded engine tests and the export guide for your game. - [Export, check and preview](https://docs.opengame.io/engines/workflow.md): Take an engine export through the CLI, play it locally, fix what fails and submit the release you played. - [Services from any engine](https://docs.opengame.io/engines/services.md): Add sign-in, scores, events and rooms to a game from any engine, through the SDK or the native bridge. - [SDK packages](https://docs.opengame.io/engines/packages.md): Install the OpenGame package for your engine, and keep its companion files together. - [Threads and WebGPU](https://docs.opengame.io/engines/threads.md): Check what the hosted page supports before you choose a threaded or WebGPU export. - [Memory and runtime diagnostics](https://docs.opengame.io/engines/memory.md): Measure an exported game's memory, and tell downloaded bytes, wasm memory, browser heap and renderer failures apart. - [Three.js](https://docs.opengame.io/engines/threejs.md): Export, package and check a Three.js browser game. - [Three.js SDK](https://docs.opengame.io/engines/threejs/sdk.md): Add the OpenGame SDK to a Three.js game, report ready, and use player, pause, sound and score services. - [Three.js multiplayer](https://docs.opengame.io/engines/threejs/multiplayer.md): Host or join an OpenGame room from a Three.js game, and send inputs and snapshots through it. - [Three.js troubleshooting](https://docs.opengame.io/engines/threejs/troubleshooting.md): Fix missing files, decoders, CDN scripts, memory and service failures in a hosted Three.js game. - [Phaser](https://docs.opengame.io/engines/phaser.md): Export, package and check a Phaser browser game. - [PixiJS](https://docs.opengame.io/engines/pixijs.md): Export, package and check a PixiJS browser game. - [React](https://docs.opengame.io/engines/react.md): Export, package and check a React browser game. - [Babylon.js](https://docs.opengame.io/engines/babylonjs.md): Export, package and check a Babylon.js browser game. - [PlayCanvas](https://docs.opengame.io/engines/playcanvas.md): Export, package and check a PlayCanvas browser game. - [Excalibur](https://docs.opengame.io/engines/excalibur.md): Export, package and check an Excalibur browser game. - [KAPLAY](https://docs.opengame.io/engines/kaplay.md): Export, package and check a KAPLAY browser game. - [LittleJS](https://docs.opengame.io/engines/littlejs.md): Export, package and check a LittleJS browser game. - [melonJS](https://docs.opengame.io/engines/melonjs.md): Export, package and check a melonJS browser game. - [Unity](https://docs.opengame.io/engines/unity.md): Export, package and check a Unity browser game. - [Unity SDK](https://docs.opengame.io/engines/unity/sdk.md): Install the OpenGame Unity package, report ready, and use player, pause, sound and score services from C#. - [Unity multiplayer](https://docs.opengame.io/engines/unity/multiplayer.md): Host or join an OpenGame room from Unity, and run Netcode for GameObjects or Mirror over it. - [Unity troubleshooting](https://docs.opengame.io/engines/unity/troubleshooting.md): Fix loading, compression, memory and Editor-only service failures in a hosted Unity build. - [Godot](https://docs.opengame.io/engines/godot.md): Export, package and check a Godot browser game. - [Godot SDK](https://docs.opengame.io/engines/godot/sdk.md): Install the OpenGame Godot addon, report ready, and use player, pause, sound and score services from GDScript. - [Godot multiplayer](https://docs.opengame.io/engines/godot/multiplayer.md): Host or join an OpenGame room from Godot, and run Godot's high-level multiplayer over it. - [Godot troubleshooting](https://docs.opengame.io/engines/godot/troubleshooting.md): Fix export template, C#, export plugin, memory and service failures in a hosted Godot export. - [ct.js](https://docs.opengame.io/engines/ctjs.md): Export, package and check a ct.js browser game. - [Construct](https://docs.opengame.io/engines/construct.md): Export, package and check a Construct browser game. - [GDevelop](https://docs.opengame.io/engines/gdevelop.md): Export, package and check a GDevelop browser game. - [RPG Maker](https://docs.opengame.io/engines/rpgmaker.md): Export, package and check an RPG Maker MZ or MV browser game. - [Cocos Creator](https://docs.opengame.io/engines/cocos.md): Export, package and check a Cocos Creator browser game. - [Defold](https://docs.opengame.io/engines/defold.md): Export, package and check a Defold browser game. - [GameMaker](https://docs.opengame.io/engines/gamemaker.md): Export, package and check a GameMaker browser game. - [Bevy](https://docs.opengame.io/engines/bevy.md): Export, package and check a Bevy browser game. - [Heaps.io](https://docs.opengame.io/engines/heaps.md): Export, package and check a Heaps.io browser game. - [raylib](https://docs.opengame.io/engines/raylib.md): Export, package and check a raylib browser game. - [LÖVE](https://docs.opengame.io/engines/love2d.md): Export, package and check a LÖVE browser game built with love.js. - [Ren'Py](https://docs.opengame.io/engines/renpy.md): Export, package and check a Ren'Py browser game. - [Solar2D](https://docs.opengame.io/engines/solar2d.md): Export, package and check a Solar2D browser game. - [Kaigen](https://docs.opengame.io/engines/kaigen.md): Export, package and check a Kaigen browser game. - [Ebitengine](https://docs.opengame.io/engines/ebiten.md): Export, package and check an Ebitengine browser game. - [KNI](https://docs.opengame.io/engines/kni.md): Export, package and check a KNI browser game. - [Flame](https://docs.opengame.io/engines/flame.md): Export, package and check a Flame browser game built with Flutter. - [js-dos](https://docs.opengame.io/engines/jsdos.md): Export, package and check a js-dos browser game. - [Ruffle](https://docs.opengame.io/engines/ruffle.md): Export, package and check a Ruffle browser game. - [GB Studio](https://docs.opengame.io/engines/gbstudio.md): Export, package and check a GB Studio browser game. - [PICO-8](https://docs.opengame.io/engines/pico8.md): Export, package and check a PICO-8 browser game. - [Python](https://docs.opengame.io/engines/python.md): Build a Python game for the browser on Pyodide and upload it to OpenGame. - [Lua](https://docs.opengame.io/engines/lua.md): Build a Lua game for the browser on wasmoon and upload it to OpenGame. - [JavaScript](https://docs.opengame.io/engines/javascript.md): Build a JavaScript game for the browser, with or without a bundler, and upload it to OpenGame. - [TypeScript](https://docs.opengame.io/engines/typescript.md): Build a TypeScript game for the browser with Vite and upload it to OpenGame. - [C](https://docs.opengame.io/engines/c.md): Build a C game for the browser with Emscripten and upload it to OpenGame. - [C++](https://docs.opengame.io/engines/cpp.md): Build a C++ game for the browser with Emscripten and upload it to OpenGame. - [C#](https://docs.opengame.io/engines/csharp.md): Build a C# game for the browser with .NET WebAssembly and upload it to OpenGame. - [Go](https://docs.opengame.io/engines/go.md): Build a Go game for the browser as WebAssembly and upload it to OpenGame. - [Haxe](https://docs.opengame.io/engines/haxe.md): Build a Haxe game for the browser with the JavaScript target and upload it to OpenGame. - [Rust](https://docs.opengame.io/engines/rust.md): Build a Rust game for the browser as WebAssembly and upload it to OpenGame. - [Swift](https://docs.opengame.io/engines/swift.md): Build a Swift game for the browser with a Swift WebAssembly SDK and upload it to OpenGame. - [Zig](https://docs.opengame.io/engines/zig.md): Build a Zig game for the browser as wasm32-freestanding and upload it to OpenGame. - [Stride](https://docs.opengame.io/engines/stride.md): Port a Stride game to a browser engine before you upload it to OpenGame. - [MonoGame](https://docs.opengame.io/engines/monogame.md): Port a MonoGame game to KNI, then export, package and check it. - [Custom engine](https://docs.opengame.io/engines/custom.md): Export, package and check a browser game from an engine OpenGame does not recognise. - [API reference](https://docs.opengame.io/api-reference/introduction.md): Deploy from your own tool or CI with the creator API, or connect a running game to OpenGame services through the SDK. - [Start a device login](https://docs.opengame.io/api-reference/auth/start-a-device-login.md): RFC 8628 device authorization. Returns a code the person types into the approval page at `/cli`. The request lives 10 minutes; poll `/api/v1/auth/token` no faster than `interval`. Limited to 10 requests per address every 10 minutes. Answers 404 where the platform is switched off. - [Exchange an approved device code for a token](https://docs.opengame.io/api-reference/auth/exchange-an-approved-device-code-for-a-token.md): Poll until the person approves. Approval and redemption are single use. The token is returned once and is never shown again; store it in the OS keychain or a file only you can read. Answers 404 where the platform is switched off. - [Revoke the calling token](https://docs.opengame.io/api-reference/auth/revoke-the-calling-token.md): A token can revoke itself and nothing else. It works even when the account has lost platform access, and the call is not counted against the token's allowance. Token administration happens in the browser. Answers 404 where the platform is switched off. - [Read who this credential belongs to](https://docs.opengame.io/api-reference/auth/read-who-this-credential-belongs-to.md): Returns the account behind the credential and, for a token, its scopes and game pin. Answers 404 where the platform is switched off. - [Read the private agent guide](https://docs.opengame.io/api-reference/documentation/read-the-private-agent-guide.md): Requires a current creator member's session or valid token, with the same identity policy as bootstrap. Game-pinned and deploy-only tokens can read shared documentation. The full guide is generated from the canonical For agents page; public onboarding does not contain this procedure. Answers 404 whe… - [Read limits, account usage and CLI package metadata](https://docs.opengame.io/api-reference/limits/read-limits-account-usage-and-cli-package-metadata.md): Requires a current member's creator token or browser session. The CLI reads this once per command. A server without this route answers 404, and the CLI then reads `GET /api/v1/limits` instead. - [Read current limits and the minimum CLI version](https://docs.opengame.io/api-reference/limits/read-current-limits-and-the-minimum-cli-version.md): The same body as bootstrap without `package` and `capabilities`. A CLI reads it only when the server has no bootstrap route. A CLI older than `minimumCliVersion` exits with code 6. - [Read the minimum CLI version](https://docs.opengame.io/api-reference/limits/read-the-minimum-cli-version.md): Legacy metadata endpoint during bootstrap migration; the CLI calls it when it has no token. Anybody gets the API version and minimum CLI. `package` is set only for a request with the `ogt_` token of a current member, and only when the server has a CLI package configured. Otherwise it is null, and a… - [Start a deploy](https://docs.opengame.io/api-reference/deploys/start-a-deploy.md): Declares an archive by size, file count and SHA-256, creates the operation, and returns a presigned create-only upload. Requires the `deploy` scope. Omit `gameId` to create a game. Limited to 30 deploys an hour per account and 30 per token. Retrying with the same `Idempotency-Key` returns the same o… - [Start a deploy with a file manifest](https://docs.opengame.io/api-reference/deploys/start-a-deploy-with-a-file-manifest.md): Requires the deploy scope and per-file processing on this server. Bootstrap currently reports `capabilities.incrementalUpload: false`, so the CLI keeps ordinary builds on ZIP uploads. The internal server can process direct per-file requests; on Vercel it also needs an enabled compute price contract.… - [Read the next page of missing files](https://docs.opengame.io/api-reference/deploys/read-the-next-page-of-missing-files.md): For a file deploy started with `POST /api/v1/deploys/files`. Requires the deploy scope for this operation. Each page covers at most 32 distinct content hashes. Send the returned nextCursor even when missing is empty; cached hashes also occupy page positions. A null nextCursor ends pagination. Readin… - [Verify one uploaded file](https://docs.opengame.io/api-reference/deploys/verify-one-uploaded-file.md): For a file deploy. Call after the storage PUT succeeds. Send no file bytes or JSON body here. The server reads the stored bytes and verifies their hash and size before marking the file verified. Requires the deploy scope. - [Assemble the archive and queue checks](https://docs.opengame.io/api-reference/deploys/assemble-the-archive-and-queue-checks.md): For a file deploy. Call after every missing hash has been uploaded and confirmed. The server assembles the canonical STORE ZIP and checks its declared size and SHA-256, then uses the existing scan and review pipeline. Send no JSON body. Safe to repeat; a queued operation continues its checks. Requir… - [Start a Unity deploy with large data assets](https://docs.opengame.io/api-reference/deploys/start-a-unity-deploy-with-large-data-assets.md): Requires per-file processing on the server. Internal servers support this flow; on Vercel it also needs an enabled compute price contract. When unavailable, returns 503 `temporarily_unavailable` with `retry` set to `later` after sign-in and body checks. A Unity build within the archive limit can als… - [Start a deploy with large external assets, for any plan kind](https://docs.opengame.io/api-reference/deploys/start-a-deploy-with-large-external-assets-for-any-plan-kind.md): The same request and response as /api/v1/deploys/unity-assets, with delivery naming the plan kind: unity-assets-v1, kaigen-assets-v1 or large-game-v1. kaigen-assets-v1 and large-game-v1 are admitted only for an account an OpenGame reviewer has given large-asset access to, refused before any upload U… - [Read the next page of missing large assets](https://docs.opengame.io/api-reference/deploys/read-the-next-page-of-missing-large-assets.md): For a large-asset deploy of any supported plan kind. Requires the deploy scope for this operation. Send nextCursor even when missing is empty; cached content also occupies page positions. A null nextCursor ends pagination. Reading a page signs fresh URLs for missing files whose URLs have expired, an… - [Verify one uploaded large asset](https://docs.opengame.io/api-reference/deploys/verify-one-uploaded-large-asset.md): For a large-asset deploy of any supported plan kind. Call after the storage PUT succeeds. Send no body. The server reads the stored bytes and checks their hash and size, as for a file deploy. While asset processing is off, even an operation that has left uploading answers 503 here. - [Assemble the boot archive and queue checks](https://docs.opengame.io/api-reference/deploys/assemble-the-boot-archive-and-queue-checks.md): For a large-asset deploy of any supported plan kind. Call after every missing boot file and asset is uploaded and verified. Assembles the boot archive with the plan and uses the existing scan and review pipeline. Send no body. Safe to repeat. - [Follow a deploy](https://docs.opengame.io/api-reference/deploys/follow-a-deploy.md): Without query parameters this returns immediately. Every answer carries `waitCursor`; reconnect with `after` and `waitMs` to wait for a change for at most 20000 ms. The wait ends at once unless the state is `queued` or `checking` and the cursor still matches, and when nothing changes you get 200 wit… - [Confirm the upload and queue checks](https://docs.opengame.io/api-reference/deploys/confirm-the-upload-and-queue-checks.md): Call after the PUT succeeds. The server reads the object's real size before queuing the scan. Answers 202 when it queues checks, and 200 with the current operation when it is no longer `uploading`, so it is safe to repeat. - [Get a fresh upload URL](https://docs.opengame.io/api-reference/deploys/get-a-fresh-upload-url.md): Signs a fresh PUT for an interrupted upload. The first URL from `POST /api/v1/deploys` counts as one of 3 attempts. A call while the previous URL is still valid re-signs without spending another. When the bytes already arrived, the answer is `uploaded: true` with no new URL, and an operation that ha… - [List your games](https://docs.opengame.io/api-reference/games/list-your-games.md): 12 games a page, each with its latest deploy. Requires the `read` or `deploy` scope. A game-pinned token sees only its game. - [Read one of your games](https://docs.opengame.io/api-reference/games/read-one-of-your-games.md): Returns one game you own, found by its UUID or its public ID, with its latest deploy and publication. Requires the `read` or `deploy` scope. With a browser session or the `read` or `submit` scope, `submission` is the newest standing review submission, or null when there is none or the game was remov… - [List a game's deployments](https://docs.opengame.io/api-reference/games/list-a-games-deployments.md): Every deploy of one game you own, newest first, at most thirty: its state and the label the website shows, when it started and ended, the archive's size and file count, the name of the token that started it, the leading finding's sentence and fix for one that did not end ready, its page, and its pre… - [Read the website's metadata for a game](https://docs.opengame.io/api-reference/games/read-the-websites-metadata-for-a-game.md): What `opengame pull` writes into opengame.json. Website edits raise `revision`. Requires the `read` or `deploy` scope for this game. - [Download the game's cover](https://docs.opengame.io/api-reference/games/download-the-games-cover.md): Served as an attachment with `x-opengame-sha256`, so a client can verify the bytes before writing them. Read `revision` and the path from the metadata first. Requires the `read` or `deploy` scope for this game. - [Open a private preview](https://docs.opengame.io/api-reference/games/open-a-private-preview.md): Browser session only: the private game page calls this, and a token is refused with 403 `forbidden`. Mints an unguessable `p-` host that serves one exact release for up to 24 hours, and a preview session whose scores never show publicly. When the release's manifest declares p2p multiplayer, the gran… - [Revoke a private preview](https://docs.opengame.io/api-reference/games/revoke-a-private-preview.md): Browser session only. Ends one private preview grant you issued. A token is refused with 403 `forbidden`. - [List files a release's previews asked for and did not have](https://docs.opengame.io/api-reference/games/list-files-a-releases-previews-asked-for-and-did-not-have.md): Each path the running preview asked for that the release does not contain, with the path it does contain when the two differ only in letter case. A case mismatch is the usual cause, because the machine the game was built on ignores case. Requires the `read` scope for this game. - [Read daily plays and the game's own events](https://docs.opengame.io/api-reference/games/read-daily-plays-and-the-games-own-events.md): The Stats report for one complete ISO week, which `opengame stats` reads, with the older `plays` rows beside it. Plays, players, playtime and returning players come from the platform's own counter; `events` are the game's claims. No figure describes fewer than 5 players: such a day is absent and suc… - [Read the full Stats report for one game](https://docs.opengame.io/api-reference/games/read-the-full-stats-report-for-one-game.md): What the Stats page draws for one ISO week: totals, a comparison with the week before, daily rows, breakdowns, the game's own events, retention, survival, performance by build and coverage. Requires the `read` scope; a game-pinned token reads only its game. Any active creator can call this; the inte… - [Download the Stats report as CSV](https://docs.opengame.io/api-reference/games/download-the-stats-report-as-csv.md): The same report as `/stats/report`, one row per figure, with the week, timezone and days on every row. The file is named `analytics-week-.csv`, such as `analytics-week-2026-W43.csv`. Withheld figures are empty cells. Cells that a spreadsheet would run as a formula are prefixed with an apostr… - [Read discovery, source quality and diagnostics](https://docs.opengame.io/api-reference/games/read-discovery-source-quality-and-diagnostics.md): Requires the `read` scope; a game-pinned token reads only its game. The internal platform flag does not apply. The `insights` of the week's report, as they were kept with it: the same figures every later read of the week answers with, and none while the report's own figures are withheld. Needs retai… - [List the achievements a game declares](https://docs.opengame.io/api-reference/games/list-the-achievements-a-game-declares.md): Requires the `read` scope for this game. Includes inactive ones, sorted by ID. Answers 404 where the platform is switched off. - [Declare or change one achievement](https://docs.opengame.io/api-reference/games/declare-or-change-one-achievement.md): Requires the `deploy` scope for this game. Creates the achievement or replaces its title, description and active flag; an existing one keeps its `created_at`. A game can declare 100; one more is refused as `invalid_request`. `opengame deploy` calls this for each achievement `opengame.json` declares,… - [Read where this game may be embedded](https://docs.opengame.io/api-reference/games/read-where-this-game-may-be-embedded.md): Requires the `read` scope. Any active creator can call this; the internal platform flag does not apply. Embedding is off until at least one origin is listed. Each listed origin gets its own address and iframe code, and the addresses play only while the game has a live version. - [Replace the embed origins](https://docs.opengame.io/api-reference/games/replace-the-embed-origins.md): Requires the `deploy` scope. A token also needs the `read` scope, because the answer is read back with it after the save. Send the whole list and the `revision` you read; if the settings changed since, nothing is saved and the answer is `embed_conflict`. At most 20 origins. Each one must be exactly… - [List this game's experiments](https://docs.opengame.io/api-reference/games/list-this-games-experiments.md): Requires the `read` scope. Any active creator can call this; the internal platform flag does not apply. Lists every experiment, newest first, with its outcome, and the versions that can take part in one, newest first. While experiment results are turned off on this deployment, every experiment carri… - [Create an experiment](https://docs.opengame.io/api-reference/games/create-an-experiment.md): Requires the `deploy` scope, and the game must be published. Creates a draft that compares the live version with an approved candidate. A game can have one draft or running experiment at a time. Nothing is served differently until it is started. - [Start, stop, promote or evaluate an experiment](https://docs.opengame.io/api-reference/games/start-stop-promote-or-evaluate-an-experiment.md): Requires the `deploy` scope. Send the `revision` you last read. `stop` works on a draft or running experiment, `start` on a draft, `promote` on a running or stopped one, and `evaluate` in any state. `start` answers 503 `experiments_unavailable` and changes nothing unless this deployment has turned e… - [Start a new game from a remixable one](https://docs.opengame.io/api-reference/games/start-a-new-game-from-a-remixable-one.md): Requires the `deploy` scope on an account-wide token or a browser session. The source game must be published with remixing turned on under a supported license. Creates a draft game of yours and deploys a copy of the source's licensed version through the ordinary deploy, so the copy goes through ever… - [Let others remix this game](https://docs.opengame.io/api-reference/games/let-others-remix-this-game.md): Requires the `deploy` scope for this game. Names the live version others may copy and the license it is shared under: MIT, Apache-2.0, BSD-2-Clause, BSD-3-Clause, ISC, CC0-1.0, CC-BY-4.0. A game has one remix license; saving replaces it. The version you name stays the remix source after you publish… - [Read last week's activity for your published games](https://docs.opengame.io/api-reference/analytics/read-last-weeks-activity-for-your-published-games.md): No sign-in and no parameters. Covers the last complete ISO week, 7 days from Monday 00:00 UTC, frozen the first time it is read, for every published game listed in the gallery. A game with at least one and fewer than 5 players shows null figures. Games are ordered by a quality score built only from… - [Read report mail and alert settings for one game](https://docs.opengame.io/api-reference/analytics/read-report-mail-and-alert-settings-for-one-game.md): Reads the mail and alert settings for one of your games, with a browser session or a token with the `read` scope. Defaults come back until the settings are first saved. - [Save report mail and alert settings](https://docs.opengame.io/api-reference/analytics/save-report-mail-and-alert-settings.md): Browser session only. Send every field; this replaces the settings for this game. - [List saved reports for one game](https://docs.opengame.io/api-reference/analytics/list-saved-reports-for-one-game.md): Newest first, at most 100, from the last 90 days, with a browser session or a token with the `read` scope. Read one by ID for its figures. - [Ask for a snapshot report](https://docs.opengame.io/api-reference/analytics/ask-for-a-snapshot-report.md): Browser session only. Queues a snapshot of the Stats report for this week and funnel, read at the week's own receipt cutoff. It appears in the report list once it is built. Retrying with the same `Idempotency-Key` queues it once. Refused while 20 reports, exports and deliveries for this account are… - [Read one saved report](https://docs.opengame.io/api-reference/analytics/read-one-saved-report.md): Reads one saved report and its figures, with a browser session or a token with the `read` scope. Reports are kept 90 days. After that the answer is 410 `report_expired` until the report is deleted, and 404 `not_found` afterwards. - [Export a saved report](https://docs.opengame.io/api-reference/analytics/export-a-saved-report.md): Queues a file of the report in the chosen format, with a browser session or a token with the `read` scope. Asking again for the same report and format answers with the same export and extends how long it is kept. Download it from `downloadUrl`. Exports are kept 7 days. - [Download an export](https://docs.opengame.io/api-reference/analytics/download-an-export.md): With a browser session or a token with the `read` scope. JSON and CSV come back as an attachment; the JSON export is `{ snapshotId, window, watermark, insight, report }`. Parquet is a redirect to a private download address that works for 60 seconds, or that address as JSON when the request sends `Ac… - [List where this game's reports are sent](https://docs.opengame.io/api-reference/analytics/list-where-this-games-reports-are-sent.md): Browser session only. A game has at most one endpoint per account, and it is listed even when turned off. - [Send this game's reports to an address](https://docs.opengame.io/api-reference/analytics/send-this-games-reports-to-an-address.md): Browser session only. A game has one endpoint per account, and saving turns it on. A new address, an endpoint that was turned off, or `rotateSecret: true` gets a new signing secret, shown in this answer and never again. Saving the same address otherwise keeps the secret your receiver already has and… - [Stop sending reports to an endpoint](https://docs.opengame.io/api-reference/analytics/stop-sending-reports-to-an-endpoint.md): Browser session only. The endpoint is turned off, not deleted, so its delivery history stays readable. Turning off an endpoint that is already off answers the same. - [List recent webhook deliveries for one game](https://docs.opengame.io/api-reference/analytics/list-recent-webhook-deliveries-for-one-game.md): Browser session only. Newest first, at most 100. - [Read one delivery and its attempts](https://docs.opengame.io/api-reference/analytics/read-one-delivery-and-its-attempts.md): Browser session only. A delivery is tried up to 8 times. This answer leaves out `next_attempt_at`. - [Send a delivery again](https://docs.opengame.io/api-reference/analytics/send-a-delivery-again.md): Browser session only. Queues a new delivery of the same report, which must still be kept, to an endpoint that is turned on. A report that already reached the webhook is not sent again, and asking while one is on its way answers with that one. Replaying to an endpoint that is turned off answers 503 t… - [Read report changes since a cursor](https://docs.opengame.io/api-reference/analytics/read-report-changes-since-a-cursor.md): For keeping a copy of this game's reports in sync, with a browser session or a token with the `read` scope. Each page holds up to 20 changes in order. Start without `cursor`, then pass `nextCursor` until `hasMore` is false; keep the last cursor to read later changes. A cursor works only for the game… - [List drain batches the webhook did not accept](https://docs.opengame.io/api-reference/analytics/list-drain-batches-the-webhook-did-not-accept.md): Browser session only. Newest first, at most 100. A batch with `blocking` true has stopped this game's feed: nothing newer is sent until it is delivered. Send it again with `POST /api/v1/analytics/drains/{id}/replay`. - [Read one drain batch and its attempts](https://docs.opengame.io/api-reference/analytics/read-one-drain-batch-and-its-attempts.md): Reads one batch of drain changes sent to this game's webhook, in any state, with every attempt. Takes a browser session or a token with the `read` scope. - [Send a drain batch again](https://docs.opengame.io/api-reference/analytics/send-a-drain-batch-again.md): Browser session only. Queues the same changes to the webhook again. Changes that already reached it are not sent again, and asking while they are on their way answers with that batch. - [Read your own play history](https://docs.opengame.io/api-reference/audience/read-your-own-play-history.md): Browser session only; a token is not read. Any signed-in account can read its own history, whether or not it has platform access, and the platform flag does not apply. Covers the signed-in account and nobody else. - [Erase your play history](https://docs.opengame.io/api-reference/audience/erase-your-play-history.md): Browser session only, from the OpenGame site. Deletes your measured play time, turns off both sharing settings, and takes you out of any overlap a creator has already been shown. Achievements unlocked before now stop appearing. Reviews you wrote stay up without the play time measured beside them, an… - [Choose what your play history shares](https://docs.opengame.io/api-reference/audience/choose-what-your-play-history-shares.md): Browser session only, from the OpenGame site. Send both settings. - [Count signed-in players across all your games](https://docs.opengame.io/api-reference/audience/count-signed-in-players-across-all-your-games.md): Requires the `read` scope on an account-wide token or a browser session; a game-pinned token is refused. Reads the same complete UTC weeks as game stats, and filters are refused as `filters_removed`. Counts only signed-in players whose play was measured, and none smaller than 5. A week's totals are… - [Compare players before and after one of your updates](https://docs.opengame.io/api-reference/audience/compare-players-before-and-after-one-of-your-updates.md): Same access as the audience totals. Compares signed-in players in the ISO week before and the ISO week after the week a version was published, leaving out the release week itself, so both sides are windows a creator can also read on their own. The week after is counted once it has settled. `availabl… - [Send a release to review](https://docs.opengame.io/api-reference/submissions/send-a-release-to-review.md): Needs the `submit` scope on the release's game and an `Idempotency-Key`. A retry with the same key and body returns the stored submission with 200. The server chooses the destination, a jam or the marketplace, and you cannot override it; `GET /api/v1/jams` says which. When statements still need cert… - [Read a submission](https://docs.opengame.io/api-reference/submissions/read-a-submission.md): Needs `read` or `submit` on the submission's game. Each read also advances review and publication, so poll this to follow a submission. - [List open jams](https://docs.opengame.io/api-reference/jams/list-open-jams.md): Any member credential can call this; no scope is needed. Returns up to 10 jams that are upcoming, open or judging, newest start first, with only the tracks they offer, and where a new submission goes. - [Read the entry form for one jam](https://docs.opengame.io/api-reference/jams/read-the-entry-form-for-one-jam.md): Returns what an entry to this jam must name: a genre track, the models used, and any sponsor tracks with the evidence each asks for. `opengame submit` reads it before it enters a release in a jam. Take the slug from `GET /api/v1/jams`. Any member credential can call this; no scope is needed. - [Record the game's own events](https://docs.opengame.io/api-reference/events/record-the-games-own-events.md): A batch of named events with allowlisted properties. Each event counts against per-session (60 a minute), per-player and per-address budgets; events over budget are counted in `limited` and not stored. String values that look like contact details are dropped. A malformed event is counted in `refused… - [List the player's achievements in this game](https://docs.opengame.io/api-reference/achievements/list-the-players-achievements-in-this-game.md): Every active achievement the game declared, and whether this player has unlocked it. Reading also counts this player as seen in the game, which is what rarity is measured against. Only for a published, live game: unavailable in a private preview or a review build. Rate limited per session, player an… - [Unlock an achievement](https://docs.opengame.io/api-reference/achievements/unlock-an-achievement.md): Who and which game come from the session token. Unlocking twice is harmless: the first unlock is kept and `firstUnlock` says whether this call made it. The unlock is the game's claim. Not offered in a private preview or a review build. - [Read a leaderboard](https://docs.opengame.io/api-reference/scores/read-a-leaderboard.md): `top` needs no session, is cached 30 seconds, and is readable in a browser only from a live game host. `me` returns the player's own entry and `around` returns 10 entries either side of it; both need the game's session from that game's own host and are not cached. `limit` applies to `top` only. Only… - [Submit a score](https://docs.opengame.io/api-reference/scores/submit-a-score.md): Call it from a live game frame with the session token. Who, which game and which version all come from the token. The body carries the board, the value and optional `meta`; any other top-level key is dropped and named in `ignored`. One best score is kept per player per board. A value above the board… - [Read the player's country](https://docs.opengame.io/api-reference/geo/read-the-players-country.md): From Cloudflare's own request properties. Country only: never region, city or address. Not cached and not rate limited. A browser can read it only from a live game host or a live private preview. - [OpenAPI source](https://docs.opengame.io/api-reference/openapi-source.md) ## OpenAPI Specs - [openapi](/api-reference/openapi.json) This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.