Skip to content

Games Endpoints

All games endpoints require the game_owner scope.

GET /api/v1/games

Returns all games owned by the authenticated user (cursor-paginated).

ParameterTypeDefaultDescription
limitinteger20Max 100
cursorstringPagination cursor
Terminal window
curl -H "Authorization: Bearer wpg_sk_..." \
"https://app.weplaytestgames.com/api/v1/games"
{
"data": {
"games": [
{
"id": "a1b2c3d4-...",
"name": "Dungeon Crawlers",
"description": "A roguelike dungeon crawler with pixel art",
"instructions": "Play through the first 3 levels",
"buildUrl": "https://store.steampowered.com/app/123456",
"coverImageUrl": "https://example.com/cover.jpg",
"externalUrl": "https://dungeoncrawlers.com",
"status": "active",
"createdAt": "2026-01-15T10:00:00.000Z",
"updatedAt": "2026-02-01T14:00:00.000Z",
"categories": [
{ "id": "cat-uuid-1", "name": "Roguelike", "slug": "roguelike" },
{ "id": "cat-uuid-2", "name": "Pixel Art", "slug": "pixel-art" }
],
"devices": ["PC", "Mac"],
"platforms": ["Steam", "itch.io"]
}
]
},
"meta": {
"requestId": "req_abc123def456",
"timestamp": "2026-03-02T12:00:00.000Z",
"cursor": "eyJpZCI6ImFiYzEyMyJ9",
"hasMore": false
}
}

POST /api/v1/games

FieldTypeRequiredDescription
namestringYesGame name (max 200 chars)
descriptionstringNoGame description (max 5000 chars)
instructionsstringNoInstructions for playtesters (max 5000 chars)
buildUrlstringYesDownload/access URL (must be a valid URL)
coverImageUrlstringNoCover image URL
externalUrlstringNoExternal website URL
devicesstring[]NoTarget devices: PC, Mac, Linux, iOS, Android
platformsstring[]NoDistribution platforms: Steam, Epic Games, GOG, itch.io, Other
tagsstring[]NoArray of category UUIDs (from GET /api/v1/info/categories)
Terminal window
curl -X POST https://app.weplaytestgames.com/api/v1/games \
-H "Authorization: Bearer wpg_sk_..." \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{
"name": "Dungeon Crawlers",
"description": "A roguelike dungeon crawler with pixel art",
"buildUrl": "https://store.steampowered.com/app/123456",
"devices": ["PC", "Mac"],
"platforms": ["Steam"],
"tags": ["category-uuid-1", "category-uuid-2"]
}'
{
"data": {
"game": {
"id": "a1b2c3d4-...",
"ownerId": "owner-uuid",
"name": "Dungeon Crawlers",
"description": "A roguelike dungeon crawler with pixel art",
"instructions": null,
"buildUrl": "https://store.steampowered.com/app/123456",
"coverImageUrl": null,
"externalUrl": null,
"status": "active",
"createdAt": "2026-03-02T12:00:00.000Z",
"updatedAt": "2026-03-02T12:00:00.000Z"
}
},
"meta": {
"requestId": "req_abc123def456",
"timestamp": "2026-03-02T12:00:00.000Z"
}
}

GET /api/v1/games/:id

Returns details for a specific game including categories, devices, and platforms.

{
"data": {
"game": {
"id": "a1b2c3d4-...",
"name": "Dungeon Crawlers",
"description": "A roguelike dungeon crawler with pixel art",
"instructions": "Play through the first 3 levels",
"buildUrl": "https://store.steampowered.com/app/123456",
"coverImageUrl": "https://example.com/cover.jpg",
"externalUrl": null,
"status": "active",
"createdAt": "2026-01-15T10:00:00.000Z",
"updatedAt": "2026-02-01T14:00:00.000Z",
"categories": [
{ "id": "cat-uuid-1", "name": "Roguelike", "slug": "roguelike" }
],
"devices": ["PC", "Mac"],
"platforms": ["Steam"]
}
},
"meta": {
"requestId": "req_abc123def456",
"timestamp": "2026-03-02T12:00:00.000Z"
}
}

PATCH /api/v1/games/:id

Update game details. All fields are optional.

FieldTypeDescription
namestringGame name (max 200 chars)
descriptionstringGame description (max 5000 chars)
instructionsstringInstructions for playtesters (max 5000 chars)
buildUrlstringDownload/access URL
coverImageUrlstring|nullCover image URL (set to null to remove)
externalUrlstring|nullExternal website URL (set to null to remove)
devicesstring[]Replaces existing devices
platformsstring[]Replaces existing platforms
tagsstring[]Array of category UUIDs (replaces existing tags)

Returns the updated game object (raw database fields, without categories/devices/platforms relations).


GET /api/v1/games/:id/builds

Returns the build history for a game (cursor-paginated).

ParameterTypeDefaultDescription
limitinteger20Max 100
cursorstringPagination cursor
{
"data": {
"builds": [
{
"id": "build-uuid",
"gameId": "game-uuid",
"buildUrl": "https://...",
"createdAt": "2026-02-15T10:00:00.000Z"
}
]
},
"meta": {
"requestId": "req_abc123def456",
"timestamp": "2026-03-02T12:00:00.000Z",
"hasMore": false
}
}