Getting started

Pagination and filters

Lists (/tvs, /files and /playlists) are paginated. Items come in data and the page information in meta.

NameTypeDescription
pageintegerPage, starting at 1. Default: 1.
per_pageintegerItems per page, from 1 to 100. Default: 50.

meta fields

page integer
Current page.
per_page integer
Items per page.
total integer
Total number of items found, across all pages.
total_pages integer
Total number of pages.

To fetch everything, start at page=1 and move forward until you reach total_pages. A page after the last one returns an empty data.

Filters

Filters can be combined with each other and with pagination. The total in meta already takes the filters into account.

NameTypeDescription
organizationstringuid of an organization, to return only its items (see /organizations).
qstringPart of the name, up to 100 characters.
typestringFile type, such as image or video. Only in /files.
archivedinteger1 for archived files only or 0 for non-archived files only. Only in /files.

Order

TVs and playlists come in alphabetical order; files, from newest to oldest.

Request
curl "https://api.on-cloud.live/v1/tvs?per_page=2" \
  -H "X-API-Key: $API_KEY"
<?php
$ch = curl_init('https://api.on-cloud.live/v1/tvs?per_page=2');
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER => ['X-API-Key: ' . getenv('API_KEY')],
]);
$response = json_decode(curl_exec($ch), true);
const res = await fetch('https://api.on-cloud.live/v1/tvs?per_page=2', {
  headers: { 'X-API-Key': process.env.API_KEY }
});
const { data, meta } = await res.json();
Response200
{
  "data": [
    {
      "uid": "d3d9446802a44259755d38e6d163e820",
      "name": "Caixa 2",
      "description": "",
      "organization": {
        "uid": "1679091c5a880faf6fb5e6087eb1b2dc",
        "name": "Loja Shopping Norte"
      },
      "playlist": null,
      "status": "offline",
      "last_seen_at": "2026-11-01T18:04:51-03:00",
      "activated_at": "2025-03-12T09:41:05-03:00",
      "app_version": "3.12.83",
      "os": "android",
      "device": {
        "brand": "Philco",
        "model": "PTV32G70"
      },
      "timezone": "America/Sao_Paulo"
    },
    {
      "uid": "c98cb8f9cc62887d1f6cf5693df9219c",
      "name": "Recepção",
      "description": "TV da entrada",
      "organization": {
        "uid": "8f14e45fceea167a5a36dedd4bea2543",
        "name": "Loja Centro"
      },
      "playlist": {
        "uid": "e4da3b7fbbce2345d7772b0674a318d5",
        "name": "Lista principal"
      },
      "status": "online",
      "last_seen_at": "2026-11-03T14:32:10-03:00",
      "activated_at": "2025-03-12T09:41:05-03:00",
      "app_version": "3.12.84",
      "os": "android",
      "device": {
        "brand": "TCL",
        "model": "43P635"
      },
      "timezone": "America/Sao_Paulo"
    }
  ],
  "meta": {
    "page": 1,
    "per_page": 2,
    "total": 3,
    "total_pages": 2
  }
}
Invalid parameter400
GET /v1/tvs?per_page=500

{
  "error": {
    "code": "invalid_parameter",
    "message": "per_page must be a number between 1 and 100."
  }
}