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). Visible to playtesters before and after claiming.
instructionsstringNoInstructions for playtesters (max 5000 chars). Only visible after claiming a slot.
buildUrlstringYesDownload/access URL (must be a valid URL)
coverImageUrlstringNoCover image URL
externalUrlstringNoExternal website URL
devicesstring[]NoTarget devices (use GET /api/v1/info/devices for available values)
platformsstring[]NoDistribution platforms (use GET /api/v1/info/platforms for available values)
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). Visible to playtesters before and after claiming.
instructionsstringInstructions for playtesters (max 5000 chars). Only visible after claiming a slot.
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 (use GET /api/v1/info/devices for available values)
platformsstring[]Replaces existing platforms (use GET /api/v1/info/platforms for available values)
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
}
}