List candidates
GET/api/v1/candidates
Filterable on stage, status, reliability, bggId and isExpansion, e.g. stage==INTERPRETED;status==PENDING for the review queue.
Authorizations
Section titled “Authorizations”Parameters
Section titled “ Parameters ”Query Parameters
Section titled “Query Parameters”Maximum number of items to return
Opaque cursor from a previous response’s nextCursor. Omit to fetch the first page. Clients must treat this value as opaque and only pass back what was previously returned.
RSQL filter expression evaluated against this resource’s filterable fields. Combine multiple conditions with ; (AND) or , (OR), e.g. gameId==3fa85f64-...;playedAt=gt=2026-01-01T00:00:00Z. The set of filterable fields is documented per endpoint in the API reference; filtering on a field that isn’t in that whitelist returns 400 Bad Request.
Sort order. Format: field:direction. Direction is ASC or DESC (default ASC if omitted).
Use a comma-separated list for multi-column sorting; priority follows the parameter order.
Examples
Sort by a single column
playedAt:DESCSort by multiple columns
playedAt:DESC,status:ASCOmitted direction defaults to ASC
status,playedAt:DESCResponses
Section titled “ Responses ”List of candidates
object
Maximum number of items returned in this page
Opaque cursor to pass as the cursor query parameter to fetch the previous page. Null when there is no previous results. Clients must not parse or construct this value.
Opaque cursor to pass as the cursor query parameter to fetch the next page. Null when there are no more results. Clients must not parse or construct this value.
Candidates in this page
object
Name of a game or expansion (game.display_name, candidate.display_name)
Free text
Number of players; the maximum is never below the minimum
Number of players; the maximum is never below the minimum
Playing time in minutes
At most 500 characters (the column it is stored in); a longer URL is refused with 400. Not declared as maxLength: the services read a uri as a URI type, which length validation does not apply to, so they check the length themselves.
BGG id of the base game, for an expansion
How a game is won: by score (SCORE), time (TIME) or number of turns (TURNS), each with a win condition, or by winning and losing (WIN_LOSS), which never has a win condition. The engine (chk_game_win_condition) and the game catalog (chk_candidate_win_condition) enforce the same rule.
Whether the highest or the lowest score wins; required unless the score type is WIN_LOSS, absent then
How far the automatic pipeline got: PENDING_RULES (created from BGG data), RULES_COLLECTED (rulebook sources found), INTERPRETED (ready for review), FAILED (see failureReason).
Review status: PENDING (awaiting review), APPROVED (queued for publication to the engine), PUBLISHED (in the engine), REJECTED. A PUBLISHED candidate that is approved again with new values is APPROVED until the pipeline has updated the engine’s game or expansion.
How well the LLM’s reading of the rules agrees with the BGG data: HIGH (at least three fields compared, all equal), MEDIUM (all compared fields equal, fewer than three), LOW (at least one mismatch), UNVERIFIED (nothing to compare).
One field compared between BGG and the LLM.
object
E.g. minPlayers, maxPlayers, yearPublished, playingTime, minAge
Why the pipeline or the last publication attempt failed
The engine game: the published game itself, or the base game of a published or approved expansion
The engine expansion, once published
Date-time (ISO 8601)
Date-time (ISO 8601)
Request validation failed
object
Canonical error type identifier (URI). The values are the problem types of stratastax-http’s problem-core; stratastax-codegen fails the build of a service when the two disagree.
Short, human-readable summary
HTTP status code
Human-readable explanation
URI of the request that caused the error
object
Field or property that failed validation
Machine-readable validation error code, e.g. REQUIRED, VALUE_TOO_LONG, INVALID_FORMAT, OUT_OF_RANGE. Canonical list is maintained per resource in the documentation.
Human readable validation message
The actual value that failed validation. Omitted if the value is sensitive.
Examples
{ "type": "https://errors.stratastax.dev/validation", "title": "Bad Request", "status": 400, "detail": "Received invalid request data", "errors": [ { "field": "displayName", "code": "REQUIRED", "message": "missing required field" } ]}{ "type": "https://errors.stratastax.dev/validation", "title": "Bad Request", "status": 400, "detail": "Received invalid request data", "errors": [ { "field": "participants[2].ghostPlayerId", "code": "DUPLICATE_GHOST_PLAYER", "message": "the ghost player already takes part in this match" } ]}{ "type": "https://errors.stratastax.dev/validation", "title": "Bad Request", "status": 400, "detail": "Request validation failed", "errors": [ { "field": "query", "code": "INVALID_SEARCH", "message": "'nonsense' is not a filterable field" } ]}Authentication required or token invalid
object
Canonical error type identifier (URI). The values are the problem types of stratastax-http’s problem-core; stratastax-codegen fails the build of a service when the two disagree.
Short, human-readable summary
HTTP status code
Human-readable explanation
URI of the request that caused the error
Examples
{ "type": "https://errors.stratastax.dev/authentication", "title": "Unauthorized", "status": 401, "detail": "Authentication required"}Insufficient permissions
object
Canonical error type identifier (URI). The values are the problem types of stratastax-http’s problem-core; stratastax-codegen fails the build of a service when the two disagree.
Short, human-readable summary
HTTP status code
Human-readable explanation
URI of the request that caused the error
Examples
{ "type": "https://errors.stratastax.dev/authorization", "title": "Access denied", "status": 403, "detail": "Insufficient permissions"}Unexpected server error
object
Canonical error type identifier (URI). The values are the problem types of stratastax-http’s problem-core; stratastax-codegen fails the build of a service when the two disagree.
Short, human-readable summary
HTTP status code
Human-readable explanation
URI of the request that caused the error
Examples
{ "type": "https://errors.stratastax.dev/internal", "title": "Oops! Something went wrong.", "status": 500, "detail": "Try again later."}