List channels
const url = 'https://api.keliplay.com/v1/channels';const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request GET \ --url https://api.keliplay.com/v1/channels \ --header 'Authorization: Bearer <token>'Lists every channel, oldest first, with a summary of what each one is running.
Permission: campaigns.read.
Authorizations
Section titled “Authorizations”Responses
Section titled “Responses”Your channels.
object
A channel with a summary of what it runs.
object
Plays allowed per player across every campaign on this channel.
Plays allowed per player per day across every campaign on this channel.
How many different games the channel’s campaigns use.
The campaign live now, if any.
The game to show for this channel. The live campaign’s, else the next to start, else the newest.
When the next scheduled campaign starts.
Example
{ "channels": [ { "id": "0192f3a1-0000-7000-8000-00000000c001", "name": "Homepage banner", "status": "active", "betweenCampaigns": { "title": "Back soon", "body": "Our next game starts on Monday." }, "maxPlaysPerParticipant": null, "maxPlaysPerParticipantPerDay": 3, "playLimitTimezone": "Europe/London", "createdAt": "2026-09-01T09:00:00.000Z", "campaignCount": 2, "gameCount": 1, "liveCampaignId": "0192f3a1-0000-7000-8000-0000000ca001", "liveCampaignName": "Autumn wheel", "liveCampaignUntil": "2026-10-31T23:59:59.000Z", "previewGameSlug": "spin-wheel", "previewCampaignName": "Autumn wheel", "previewCampaignStatus": "active", "nextLiveFrom": null } ]}The API key is missing, malformed or revoked.
object
object
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 withconfirm=true. Folder deletion only.rate_limited(429): wait forRetry-Afterseconds.internal_error(500) andservice_unavailable(503): try again later.
Written for a person. May change; do not parse it.
object
The failing field, dot separated, such as prize.label.
object
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.
object
object
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 withconfirm=true. Folder deletion only.rate_limited(429): wait forRetry-Afterseconds.internal_error(500) andservice_unavailable(503): try again later.
Written for a person. May change; do not parse it.
object
The failing field, dot separated, such as prize.label.
object
Example
{ "error": { "code": "forbidden", "message": "Your role does not allow this (draws.run)." }}