Introducción a la API
La API REST pública de Digital Signage RDS te permite integrar terceros con tu cuenta, automatizar tareas o construir tu propio panel de control.
- Base URL:
https://rds.digitalsignagerds.com/api/v1 - Versión:
v1(estable) - Formato: JSON sobre HTTPS
1. Empezar en 3 pasos
- Entra en tu Perfil y abre la pestaña API.
- Crea una nueva clave dándole un nombre (p. ej.
Zapier), eligiendo la caducidad y los permisos (solo lectura o lectura- escritura).
- Copia el token (
rds_live_…). No se vuelve a mostrar. Si lo pierdes, tendrás que crear otro.
2. Autenticación
Pasa el token en la cabecera Authorization como Bearer token:
curl -H "Authorization: Bearer rds_live_xxxxx" \
https://rds.digitalsignagerds.com/api/v1/me
Un buen primer test es GET /me: te devuelve la clave y la empresa
asociada.
Permisos (scopes)
Cada clave tiene un conjunto de permisos:
| Permiso | Qué permite |
|---|---|
read |
Listar y leer recursos (GET) |
write |
Subir contenido y modificar recursos (POST) |
Las claves de solo lectura no pueden subir imágenes/vídeos ni
modificar nada. Devolverán 403 insufficient_scope.
Caducidad y revocación
Las claves pueden caducar automáticamente (30 días, 90 días, 1 año o
"Sin caducidad"). También puedes revocarlas manualmente desde tu
perfil. Una clave caducada o revocada devuelve 401 Token has expired
o 401 Token has been revoked.
3. Límite de tasa
60 peticiones por minuto por token. Cuando lo superes, recibirás un
429 Too Many Requests con una cabecera Retry-After: <segundos> que
indica cuánto esperar.
4. Respuestas
Recurso único
{
"object": "device",
"id": 1138,
"code": "RDSDF25",
"...": "..."
}
Listas (paginación con cursor)
{
"object": "list",
"url": "/api/v1/devices",
"data": [ { ... }, { ... } ],
"has_more": true,
"next_cursor": "1142"
}
Para obtener la siguiente página, pasa el next_cursor como
starting_after:
GET /api/v1/devices?starting_after=1142&limit=20
Parámetros aceptados en listas:
| Parámetro | Valor | Por defecto |
|---|---|---|
limit |
1–100 | 20 |
starting_after |
id entero | 0 (primer resultado) |
Errores
{
"error": {
"type": "unauthorized",
"message": "Invalid token"
}
}
Tipos de error frecuentes:
| Código | Type | Cuándo |
|---|---|---|
| 401 | unauthorized |
Token ausente, malformado, desconocido, revocado o caducado |
| 403 | insufficient_scope |
La clave no tiene el permiso necesario |
| 403 | quota_exceeded |
Has alcanzado el cupo de la empresa (devices, images, videos) |
| 404 | not_found |
El recurso no existe o no es visible para tu empresa |
| 405 | method_not_allowed |
Método HTTP no admitido en esa ruta |
| 413 | file_too_large |
Archivo subido excede el límite |
| 415 | unsupported_media_type |
Extensión o contenido del archivo no admitido |
| 429 | rate_limited |
Has superado las 60 peticiones por minuto |
| 500 | server_error |
Error inesperado del servidor |
5. Endpoints disponibles
Cuenta
| Método | Ruta | Descripción |
|---|---|---|
| GET | /me |
Datos de la clave (test rápido de auth) |
| GET | /account |
Empresa: dirección, contacto, límites, uso y suscripción |
| GET | /subscription |
Suscripción: ciclo actual, contadores y próximo pago |
| GET | /invoices |
Facturas (Stripe), más recientes primero |
Dispositivos
| Método | Ruta | Descripción |
|---|---|---|
| GET | /devices |
Lista de dispositivos (excluye los retirados) |
| GET | /devices/{id_o_codigo} |
Un dispositivo (admite id entero o código RDSxxx) |
| GET | /devices?code=RDSF8B8 |
Filtrar lista por código exacto |
Cada dispositivo expone is_online, last_seen_at, playlist_id +
playlist_name, workspace_id + workspace_name (+ padre si es
sub-sede), kiosk_mode, kiosk_whitelist, branch_*, fechas de
contrato y más.
Sedes (workspaces)
| Método | Ruta | Descripción |
|---|---|---|
| GET | /workspaces |
Lista (sedes y sub-sedes) |
| GET | /workspaces/{id} |
Una sede con etiquetas, contenido por defecto y mapa |
Playlists
| Método | Ruta | Descripción |
|---|---|---|
| GET | /playlists |
Lista de playlists |
| GET | /playlists/{id} |
Playlist con conteo de dispositivos / imágenes / vídeos |
Imágenes
| Método | Ruta | Descripción |
|---|---|---|
| GET | /images |
Lista |
| GET | /images/{id} |
Una imagen (incluye url para descargar el binario) |
| POST | /images |
Subir (requiere scope write) |
Vídeos
| Método | Ruta | Descripción |
|---|---|---|
| GET | /videos |
Lista |
| GET | /videos/{id} |
Un vídeo (incluye url para descargar el binario) |
| POST | /videos |
Subir (requiere scope write) |
6. Subir contenido
Los endpoints POST /images y POST /videos aceptan multipart/form-data
con dos partes: file (binario, obligatorio) y name (texto opcional con
el título visible para el cliente).
curl -X POST https://rds.digitalsignagerds.com/api/v1/images \
-H "Authorization: Bearer rds_live_xxxxx" \
-F "name=Cartel Navidad" \
-F "file=@/ruta/al/cartel.png"
Restricciones de imágenes:
- Extensiones admitidas:
jpg,jpeg,png,gif,webp,avif,bmp - Tamaño máximo: 256 MB
- Validación por contenido (magic bytes), no por la cabecera MIME del cliente
- Cuota por empresa: ver
account.limits.max_images
Restricciones de vídeos:
- Extensiones admitidas:
mp4,mkv,webm,mov,avi - Tamaño máximo:
account.limits.max_video_size_mb(por defecto 200 MB) - Cuota por empresa: ver
account.limits.max_videos
La respuesta de un POST exitoso es 201 Created con el recurso recién
creado (incluye id, filename, url y crc).
7. Referencia interactiva
Para probar cada endpoint en directo, ver los esquemas exactos de respuesta y descargar el OpenAPI YAML, ve a la página Referencia (Swagger).