List folders
GET
/v1/tenant/asset-folders
const url = 'https://api.keliplay.com/v1/tenant/asset-folders';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/tenant/asset-folders \ --header 'Authorization: Bearer <token>'Lists every media folder with how many files each holds, directly and including subfolders. Folders nest up to 8 levels, and an account can have up to 500.
Permission: assets.read.
Authorizations
Section titled “Authorizations”Responses
Section titled “Responses”All folders.
Media typeapplication/json
object
folders
required
Array
object
id
required
string
parentId
required
The folder it sits in. Null at the top level.
string | null
name
required
string
createdAt
required
string format: date-time
updatedAt
string format: date-time
assetCount
required
Files directly in this folder.
integer
descendantAssetCount
required
Files in this folder and every folder inside it.
integer
total
required
integer
unfiledAssetCount
required
Files in no folder.
integer
maxDepth
required
integer
maxFolders
required
integer
Example
{ "folders": [ { "id": "0192f3a1-0000-7000-8000-0000000f1001", "parentId": null, "name": "Autumn campaign", "createdAt": "2026-09-20T09:00:00.000Z", "updatedAt": "2026-09-20T09:00:00.000Z", "assetCount": 4, "descendantAssetCount": 9 } ], "total": 1, "unfiledAssetCount": 12, "maxDepth": 8, "maxFolders": 500}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 withconfirm=true. Folder deletion only.rate_limited(429): wait forRetry-Afterseconds.internal_error(500) andservice_unavailable(503): try again later.
string
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
object
key
additional properties
any
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 withconfirm=true. Folder deletion only.rate_limited(429): wait forRetry-Afterseconds.internal_error(500) andservice_unavailable(503): try again later.
string
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
object
key
additional properties
any
Example
{ "error": { "code": "forbidden", "message": "Your role does not allow this (draws.run)." }}