Skip to content
Open Markdown

Publish a game in the store ​

Prerequisites: store.read and store.write, existing lookup records as needed, a configured runtime app, and apiRequest. This workflow changes catalog data; it does not provision a playable runtime app by itself.

Create a draft and configure launch mappings ​

ts
const game = await apiRequest("/v1/admin/store/games", {
  method: "POST",
  body: JSON.stringify({ slug: "example-game", title: "Example Game", status: "draft" }),
});
await apiRequest(`/v1/admin/store/games/${game.id}/runtime-apps`, {
  method: "PUT",
  body: JSON.stringify({ apps: [{ runtime_app_id: runtimeAppId, is_enabled: true, is_default: true }] }),
});

runtimeAppId is an existing ID from the runtime app list. createStoreGame returns the saved game. replaceStoreGameRuntimeApps replaces the mapping list; use saveStoreGameRuntimeApp for a single mapping. Disabled mappings cannot be the default, duplicate runtime IDs are rejected, and there is at most one enabled default.

Genre/developer/publisher arrays use numeric IDs from listStoreLookup. Game IDs are numeric; runtime IDs are opaque strings and mapping IDs can be UUIDs. Do not substitute one kind of ID for another.

Add artwork and publish ​

Follow Uploads and media for artwork slots and screenshots. Update descriptive fields using updateStoreGame. Set publication status with setStoreGameStatus:

ts
await apiRequest(`/v1/admin/store/games/${game.id}/status`, {
  method: "PATCH", body: JSON.stringify({ status: "published" }),
});

Verify anonymously using getPublicStoreGame with the slug, or listPublicStoreGames. Public reads are cached for 60 seconds, so allow for cache expiry before diagnosing stale content. Draft/hidden records do not become publicly visible simply because a staff detail endpoint returns them.

If launching fails with app_not_found, check enabled mappings. plan_required, credit eligibility and pool configuration are separate launch prerequisites; publishing a game does not grant eligibility. Changing the game to hidden removes public visibility. Catalog achievement and referral-rule endpoints have separate schemas and should be configured only when that feature is needed.

Built for developers. Ready for agents.