Skip to content

List entries

GET
/v1/game-instances/{campaignId}/entries
curl --request GET \
--url 'https://api.keliplay.com/v1/game-instances/example/entries?limit=500&offset=0&sort=createdAt&dir=asc&eligible=true' \
--header 'Authorization: Bearer <token>'

Lists the campaign’s entries, one per finished play. Paged with limit and offset. Without limit you get up to 500.

Permission: results.read.

campaignId
required
string

The campaign’s id.

limit
integer
default: 500 >= 1 <= 500

Items per page.

offset
integer
0

Items to skip before the page starts.

search
string
<= 200 characters

Match part of a participantRef, ignoring case.

sort
string
default: createdAt
Allowed values: createdAt score participantRef

Field to sort by. Entries without a score sort last.

dir
string
default: desc
Allowed values: asc desc

Sort direction.

eligible
string
Allowed values: true false

Only eligible (true) or only ineligible (false) entries. Leave out for both.

A page of entries.

Media typeapplication/json
object
entries
required
Array<object>

One finished play, which draws pick winners from.

object
id
required
string
gameInstanceId
required
string
sessionId
string | null
participantRef
required
string
score

The play’s score, for games that keep one.

number | null
predictionValue

What the player predicted, on a prediction campaign, such as { "optionId": "home-win" }.

object | null
weight
required

The entry’s relative chance in a random_weighted draw.

number
eligible
required

Whether this entry can win.

boolean
createdAt
required
string format: date-time
total
required

Matching entries across all pages.

integer
Example
{
"entries": [
{
"id": "0192f3a1-0000-7000-8000-0000000f0001",
"gameInstanceId": "0192f3a1-0000-7000-8000-0000000ca001",
"sessionId": "0192f3a1-0000-7000-8000-000000050001",
"participantRef": "user_48213",
"score": 1840,
"predictionValue": null,
"weight": 1,
"eligible": true,
"createdAt": "2026-10-12T14:03:22.000Z"
}
],
"total": 412
}

The request is not valid. details lists each field that failed, where there is one.

Media typeapplication/json
object
error
required
object
code
required

Stable and safe to branch on.

  • invalid_request (400): the request is not valid.
  • unauthorized (401): missing, malformed or revoked API key.
  • upgrade_required (402): not in your plan, or a plan limit is reached.
  • forbidden (403): the key lacks a permission, or the action is not allowed.
  • not_found (404): nothing with that id in your account.
  • conflict (409): clashes with the current state.
  • confirmation_required (409): repeat with confirm=true. Folder deletion only.
  • rate_limited (429): wait for Retry-After seconds.
  • internal_error (500) and service_unavailable (503): try again later.
string
Allowed values: invalid_request unauthorized upgrade_required forbidden not_found conflict confirmation_required rate_limited internal_error service_unavailable
message
required

Written for a person. May change; do not parse it.

string
details
One of:
Array<object>
object
path
required

The failing field, dot separated, such as prize.label.

string
message
required
string
Example
{
"error": {
"code": "invalid_request",
"message": "Invalid request json.",
"details": [
{
"path": "name",
"message": "Too small, expected string to have >=1 characters"
}
]
}
}

The API key is missing, malformed or revoked.

Media typeapplication/json
object
error
required
object
code
required

Stable and safe to branch on.

  • invalid_request (400): the request is not valid.
  • unauthorized (401): missing, malformed or revoked API key.
  • upgrade_required (402): not in your plan, or a plan limit is reached.
  • forbidden (403): the key lacks a permission, or the action is not allowed.
  • not_found (404): nothing with that id in your account.
  • conflict (409): clashes with the current state.
  • confirmation_required (409): repeat with confirm=true. Folder deletion only.
  • rate_limited (429): wait for Retry-After seconds.
  • internal_error (500) and service_unavailable (503): try again later.
string
Allowed values: invalid_request unauthorized upgrade_required forbidden not_found conflict confirmation_required rate_limited internal_error service_unavailable
message
required

Written for a person. May change; do not parse it.

string
details
One of:
Array<object>
object
path
required

The failing field, dot separated, such as prize.label.

string
message
required
string
Example
{
"error": {
"code": "unauthorized",
"message": "Invalid or revoked API key."
}
}

The API key does not carry the permission this needs, or the request is not allowed.

Media typeapplication/json
object
error
required
object
code
required

Stable and safe to branch on.

  • invalid_request (400): the request is not valid.
  • unauthorized (401): missing, malformed or revoked API key.
  • upgrade_required (402): not in your plan, or a plan limit is reached.
  • forbidden (403): the key lacks a permission, or the action is not allowed.
  • not_found (404): nothing with that id in your account.
  • conflict (409): clashes with the current state.
  • confirmation_required (409): repeat with confirm=true. Folder deletion only.
  • rate_limited (429): wait for Retry-After seconds.
  • internal_error (500) and service_unavailable (503): try again later.
string
Allowed values: invalid_request unauthorized upgrade_required forbidden not_found conflict confirmation_required rate_limited internal_error service_unavailable
message
required

Written for a person. May change; do not parse it.

string
details
One of:
Array<object>
object
path
required

The failing field, dot separated, such as prize.label.

string
message
required
string
Example
{
"error": {
"code": "forbidden",
"message": "Your role does not allow this (draws.run)."
}
}

Nothing with that id exists in your account.

Media typeapplication/json
object
error
required
object
code
required

Stable and safe to branch on.

  • invalid_request (400): the request is not valid.
  • unauthorized (401): missing, malformed or revoked API key.
  • upgrade_required (402): not in your plan, or a plan limit is reached.
  • forbidden (403): the key lacks a permission, or the action is not allowed.
  • not_found (404): nothing with that id in your account.
  • conflict (409): clashes with the current state.
  • confirmation_required (409): repeat with confirm=true. Folder deletion only.
  • rate_limited (429): wait for Retry-After seconds.
  • internal_error (500) and service_unavailable (503): try again later.
string
Allowed values: invalid_request unauthorized upgrade_required forbidden not_found conflict confirmation_required rate_limited internal_error service_unavailable
message
required

Written for a person. May change; do not parse it.

string
details
One of:
Array<object>
object
path
required

The failing field, dot separated, such as prize.label.

string
message
required
string
Example
{
"error": {
"code": "not_found",
"message": "Channel 0192f3a1-0000-7000-8000-00000000c009 not found."
}
}