Skip to content
ILY Sign

Developer Docs

ILY Sign Admin API

Manage locations, screens, groups, playlists, and assets with named API keys. Keys are created in the console and authenticated over Authorization: Bearer ilys_key_....

Overview

A small, real admin surface

Base URL: https://api.ilysign.com/v1. The public API is intentionally narrow: list locations, screens, groups, playlists, and assets; claim screens; publish playlists. Device bootstrap and player-private routes stay outside /v1.

Included endpoints

  • GET /v1/locations
  • GET /v1/screens
  • POST /v1/screens/claim
  • GET /v1/groups
  • GET /v1/playlists
  • POST /v1/playlists/{id}/publish
  • GET /v1/assets

OpenAPI

Use the machine-readable contract when building with Cursor, Claude, ChatGPT, Copilot, or your own generator.

https://ilysign.com/openapi/ilysign-admin-v1.yaml

Auth

Named API keys

Create keys in Console → Settings → Developers. The plaintext secret is shown once. Only the hash is stored server-side. Keys can be scoped per capability, and can optionally be restricted to specific locations.

Request header

Authorization: Bearer ilys_key_...

Available scopes: locations:read, screens:read, screens:write, groups:read, playlists:read, playlists:write, assets:read.

Limits

Plan gating

API access requires an active trial or paid plan. Free plans are rejected even if a key already exists. Organization members need Owner or Admin access to create and revoke keys in the console.

Assets

Library metadata + view URLs

GET /v1/assets returns your asset library with metadata and temporary signed URLs for viewing. Assets remain organization-level resources.

curl -sS https://api.ilysign.com/v1/assets \
  -H "Authorization: Bearer ilys_key_..."

Playlists

List and publish

GET /v1/playlists returns playlist definitions. Publishing is a separate action: POST /v1/playlists/{id}/publish. The response includes the updated playlist and the transfer bytes metered for that publish.

curl -sS -X POST https://api.ilysign.com/v1/playlists/PLAYLIST_ID/publish \
  -H "Authorization: Bearer ilys_key_..."

Screens

Status and claiming

GET /v1/screens includes the effective publish status for each screen: live, waiting, offline, or revoked. POST /v1/screens/claim claims a pending pairing code into the organization.

curl -sS -X POST https://api.ilysign.com/v1/screens/claim \
  -H "Authorization: Bearer ilys_key_..." \
  -H "Content-Type: application/json" \
  -d '{"code":"ABC123","name":"Lobby TV"}'

Groups

Bulk-control visibility

GET /v1/groups returns screen groups and member counts. If a key is restricted to specific locations, group membership counts are filtered to the screens that key can see.

Errors

Consistent JSON errors

Every error returns JSON with error and code. Common codes are bad_request, unauthorized, forbidden, not_found, and internal.

{
  "error": "api key missing required scope: playlists:write",
  "code": "forbidden"
}