Skip to content

List folders

GET
/v1/tenant/asset-folders
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.

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
>= 1 characters <= 80 characters
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 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)."
}
}