remix-rest-snippets
Installation
SKILL.md
TypeScript (REST)
const baseUrl = 'https://api.remix.gg'
const headers = {
Authorization: `Bearer ${process.env.REMIX_API_KEY!}`,
'Content-Type': 'application/json',
}
const openApiSpec = await fetch(`${baseUrl}/docs/json`, {
method: 'GET',
headers,
}).then((r) => r.json())
const createRes = await fetch(`${baseUrl}/v1/games`, {
method: 'POST',
headers,
body: JSON.stringify({ name: 'Neon Dash' }),
})
const createJson = await createRes.json()
if (!createJson.success) throw new Error(createJson.error.message)
const gameId = createJson.data.game.id as string
const versionId = createJson.data.game.version.id as string
const updateRes = await fetch(
`${baseUrl}/v1/games/${gameId}/versions/${versionId}/code`,
{
method: 'POST',
headers,
body: JSON.stringify({ code: html }),
},
)
const updateJson = await updateRes.json()
if (!updateJson.success) throw new Error(updateJson.error.message)
const validateRes = await fetch(
`${baseUrl}/v1/games/${gameId}/versions/${versionId}/validate`,
{ method: 'GET', headers },
)
const validateJson = await validateRes.json()
if (!validateJson.success) throw new Error(validateJson.error.message)
if (!validateJson.data.valid) {
throw new Error(`Blocked: ${validateJson.data.blockers.map((b: { code: string }) => b.code).join(', ')}`)
}
const statusRes = await fetch(
`${baseUrl}/v1/games/${gameId}/versions/${versionId}/status`,
{ method: 'GET', headers },
)
const statusJson = await statusRes.json()
if (!statusJson.success) throw new Error(statusJson.error.message)
const readinessRes = await fetch(
`${baseUrl}/v1/games/${gameId}/launch-readiness?versionId=${versionId}`,
{ method: 'GET', headers },
)
const readinessJson = await readinessRes.json()
if (!readinessJson.success) throw new Error(readinessJson.error.message)
const leaderboardRes = await fetch(
`${baseUrl}/v1/games/${gameId}/analytics/leaderboard?startDate=2026-03-01&endDate=2026-03-15`,
{ method: 'GET', headers },
)
const leaderboardJson = await leaderboardRes.json()
if (!leaderboardJson.success) throw new Error(leaderboardJson.error.message)
Image Generation
const imageRes = await fetch(
`${baseUrl}/v1/games/${gameId}/images/generate`,
{
method: 'POST',
headers,
body: JSON.stringify({ prompt: 'A neon cityscape background' }),
},
)
const imageJson = await imageRes.json()
if (!imageJson.success) throw new Error(imageJson.error.message)
Sprite Generation
const spriteRes = await fetch(
`${baseUrl}/v1/games/${gameId}/sprites/generate`,
{
method: 'POST',
headers,
body: JSON.stringify({ prompt: 'A pixel art character running' }),
},
)
const spriteJson = await spriteRes.json()
if (!spriteJson.success) throw new Error(spriteJson.error.message)
Shop Items
// List items
const itemsRes = await fetch(
`${baseUrl}/v1/games/${gameId}/items`,
{ method: 'GET', headers },
)
const itemsJson = await itemsRes.json()
// Create item
const createItemRes = await fetch(
`${baseUrl}/v1/games/${gameId}/items`,
{
method: 'POST',
headers,
body: JSON.stringify({
name: 'Speed Boost',
slug: 'speed-boost',
itemType: 'CONSUMABLE',
bitsCost: 100,
}),
},
)
const createItemJson = await createItemRes.json()
// Delete item
const itemId = createItemJson.data.item.id
const deleteItemRes = await fetch(
`${baseUrl}/v1/games/${gameId}/items/${itemId}`,
{ method: 'DELETE', headers },
)
Asset Upload
const formData = new FormData()
formData.append('file', fileBlob, 'icon.png')
const assetRes = await fetch(
`${baseUrl}/v1/games/${gameId}/assets`,
{
method: 'POST',
headers: { Authorization: `Bearer ${process.env.REMIX_API_KEY!}` },
body: formData,
},
)
const assetJson = await assetRes.json()
if (!assetJson.success) throw new Error(assetJson.error.message)
Game Update
const gameUpdateRes = await fetch(
`${baseUrl}/v1/games/${gameId}`,
{
method: 'POST',
headers,
body: JSON.stringify({ name: 'Neon Dash Deluxe' }),
},
)
const gameUpdateJson = await gameUpdateRes.json()
if (!gameUpdateJson.success) throw new Error(gameUpdateJson.error.message)
Related skills
More from farworld-labs/remix-skills
remix-upload-asset
Upload images, audio, or 3D models as hosted game assets
30remix-submission-rules
Validation and publish constraints for Remix game submissions
30remix-save-game
Add save and load game state functionality via RemixSDK
29remix-api-reference
OpenAPI-first endpoint reference for Remix game publishing REST routes
29remix-cli
Use the official Remix CLI for authentication, config inspection, game creation, uploads, and analytics. Trigger this skill when a task involves `remix login`, `remix whoami`, `.remix-cli.json`, `REMIX_API_KEY`, or terminal-based game management on Remix.
18remix-api-key-auth
Configure and verify bearer API key authentication for Remix agent publishing workflows.
8