Manage Shop Items Workflow
Overview
This skill guides you through creating, managing, and integrating shop items for games on the Remix platform.
Prerequisites
- A game must be created on the Remix platform (you need a game ID).
- The
REMIX_API_KEYenvironment variable must be set.
Steps
1. Check for Existing Game ID
Read .remix-settings.json in the current directory. If it exists and contains
a gameId, use that value.
Only if .remix-settings.json does not exist or has no gameId should you
follow the upload-game workflow to create one.
2. Manage Shop Items
List All Items
GET https://api.remix.gg/v1/games/{gameId}/items
Authorization: Bearer $REMIX_API_KEY
Create an Item
POST https://api.remix.gg/v1/games/{gameId}/items
Authorization: Bearer $REMIX_API_KEY
Content-Type: application/json
{
"name": "Speed Boost",
"description": "Doubles player speed for 30 seconds",
"price": 100,
"type": "consumable",
"imageUrl": "https://asset-url.png",
"metadata": { "duration": 30 }
}
typecan be"consumable"(can be purchased multiple times) or"permanent"(one-time purchase)imageUrlandmetadataare optional
Update an Item
POST https://api.remix.gg/v1/games/{gameId}/items/{itemId}
Authorization: Bearer $REMIX_API_KEY
Content-Type: application/json
{ "price": 150 }
Accepts a partial body -- only include fields you want to change.
Delete an Item
DELETE https://api.remix.gg/v1/games/{gameId}/items/{itemId}
Authorization: Bearer $REMIX_API_KEY
3. Integrate Shop Items in Game Code
Add the RemixSDK shop integration to your game:
const sdk = window.RemixSDK
// Check if player has a permanent item
const hasItem = sdk.hasItem('item-id')
// Get purchase count for a consumable item
const count = sdk.getItemPurchaseCount('item-id')
// Trigger the purchase flow (opens platform purchase UI)
sdk.singlePlayer.actions.purchase({ item: { id: 'item-id' } })
// Listen for purchase completion
sdk.onPurchaseComplete(({ item }) => {
// Grant the item in-game
})
Wrong Patterns
Do NOT do any of the following:
Granting items without listening to
onPurchaseComplete. Always wait for the callback before giving the player anything. The purchase may fail or be cancelled.Using
localStorageto track purchases. The platform handles purchase state. UsehasItem()andgetItemPurchaseCount()to check ownership.Hardcoding prices in game code. Always read prices from the API. If you change a price on the server, hardcoded values in the game will be wrong.
Tips
- Use
"consumable"for items players buy repeatedly (lives, boosts, ammo). - Use
"permanent"for one-time unlocks (characters, levels, cosmetics). - Always check
hasItem()on game load to restore permanent purchases.