Skip to content

List matches

GET
/api/v1/matches

Soft-deleted matches are never listed. Filterable on id, gameId, gameName, playsetId, playsetName, communityId, communityName, recorderId, recorderName, playedAt, finalizedAt, editRequestsEnabled, lastEditedAt, lastEditedById, createdAt, expansionsId, expansionsName; sortable on id, playedAt, editRequestsEnabled, createdAt.

limit
integer
>= 1 <= 100

Maximum number of items to return

cursor
string

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.

filter
string

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
string
/^([a-zA-Z0-9_]+(:(ASC|DESC))?)(,([a-zA-Z0-9_]+(:(ASC|DESC))?))*$/

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:DESC

List of matches

object
limit
required

Maximum number of items returned in this page

integer format: int32
prevCursor

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.

string | null
nextCursor

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.

string | null
items
required

Matches in this page

Array<object>
object
id
required
string format: uuid
game
required
object
id
required
string format: uuid
displayName
required
string
playset
object
id
required
string format: uuid
displayName
required
string
community
object
id
required
string format: uuid
displayName
required
string
recorder
required
object
id
required
string format: uuid
displayName
required
string
status
required

DRAFT matches are freely mutable directly via PATCH. Once a match is finalized it becomes immutable except through the match-edit proposal and approval workflow.

string
Allowed values: DRAFT FINALIZED
playedAt
required

Date-time (ISO 8601)

string format: date-time
editRequestsEnabled
required
boolean
finalizedAt

When the match was finalized; absent while it is a DRAFT.

string format: date-time
lastEditedAt

Date-time (ISO 8601)

string format: date-time
lastEditedBy
object
id
required
string format: uuid
displayName
required
string
createdAt
required

Date-time (ISO 8601)

string format: date-time
updatedAt

Date-time (ISO 8601)

string format: date-time
expansions
Array<object>
object
id
required
string format: uuid
displayName
required
string
participants
required
Array<object>
>= 1 items
object
id
required
string format: uuid
ghostPlayer
required
object
id
required
string format: uuid
displayName
required
string
score

Score of a participant: points (SCORE), seconds (TIME) or turns (TURNS), with at most two decimals; a value with more decimals is refused with 400.

number
>= -99999999.99 <= 99999999.99
rank

Position in the match, 1 for the winner; tied participants share a rank

integer format: int32
>= 1
outcome
string
Allowed values: WIN LOSS
loadout
object
id
required
string format: uuid
attributes
required
object
key
additional properties
any
createdAt
required

Date-time (ISO 8601)

string format: date-time
updatedAt

Date-time (ISO 8601)

string format: date-time
disputeReason

Why the player disagrees with the recorded result

string
>= 1 characters <= 1000 characters
disputedAt

Date-time (ISO 8601)

string format: date-time
disputedBy
object
id
required
string format: uuid
displayName
required
string
createdAt
required

Date-time (ISO 8601)

string format: date-time
updatedAt

Date-time (ISO 8601)

string format: date-time

Request validation failed

object
type
required

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.

string
Allowed values: https://errors.stratastax.dev/authentication https://errors.stratastax.dev/authorization https://errors.stratastax.dev/validation https://errors.stratastax.dev/not-found https://errors.stratastax.dev/conflict https://errors.stratastax.dev/precondition-failed https://errors.stratastax.dev/internal
title
required

Short, human-readable summary

string
status
required

HTTP status code

integer format: int32
detail
required

Human-readable explanation

string
instance

URI of the request that caused the error

string format: uri
errors
Array<object>
object
field
required

Field or property that failed validation

string
code
required

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.

string
message
required

Human readable validation message

string
rejectedValue

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"
}
]
}

Authentication required or token invalid

object
type
required

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.

string
Allowed values: https://errors.stratastax.dev/authentication https://errors.stratastax.dev/authorization https://errors.stratastax.dev/validation https://errors.stratastax.dev/not-found https://errors.stratastax.dev/conflict https://errors.stratastax.dev/precondition-failed https://errors.stratastax.dev/internal
title
required

Short, human-readable summary

string
status
required

HTTP status code

integer format: int32
detail
required

Human-readable explanation

string
instance

URI of the request that caused the error

string format: uri
Examples
{
"type": "https://errors.stratastax.dev/authentication",
"title": "Unauthorized",
"status": 401,
"detail": "Authentication required"
}

Insufficient permissions

object
type
required

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.

string
Allowed values: https://errors.stratastax.dev/authentication https://errors.stratastax.dev/authorization https://errors.stratastax.dev/validation https://errors.stratastax.dev/not-found https://errors.stratastax.dev/conflict https://errors.stratastax.dev/precondition-failed https://errors.stratastax.dev/internal
title
required

Short, human-readable summary

string
status
required

HTTP status code

integer format: int32
detail
required

Human-readable explanation

string
instance

URI of the request that caused the error

string format: uri
Examples
{
"type": "https://errors.stratastax.dev/authorization",
"title": "Access denied",
"status": 403,
"detail": "Insufficient permissions"
}

Unexpected server error

object
type
required

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.

string
Allowed values: https://errors.stratastax.dev/authentication https://errors.stratastax.dev/authorization https://errors.stratastax.dev/validation https://errors.stratastax.dev/not-found https://errors.stratastax.dev/conflict https://errors.stratastax.dev/precondition-failed https://errors.stratastax.dev/internal
title
required

Short, human-readable summary

string
status
required

HTTP status code

integer format: int32
detail
required

Human-readable explanation

string
instance

URI of the request that caused the error

string format: uri
Examples
{
"type": "https://errors.stratastax.dev/internal",
"title": "Oops! Something went wrong.",
"status": 500,
"detail": "Try again later."
}