Ejemplos
Los ejemplos usan curl y la variable $API_TOKEN. La URL base es https://cloud.viewneo.com/api/public/v1.
Subir un archivo
Sección titulada «Subir un archivo»Los archivos no pasan por la propia API, sino que van directamente al almacenamiento, a través de una dirección prefirmada. Así, incluso los vídeos grandes se suben rápido.
# 1. iniciar la subidacurl https://cloud.viewneo.com/api/public/v1/media/uploads -H "Authorization: Bearer $API_TOKEN" \ -H "Content-Type: application/json" \ -d '{"filename":"speisekarte.jpg","mimeType":"image/jpeg","fileSize":'"$(wc -c < speisekarte.jpg)"'}'
# 2. enviar el archivo a upload.url de la respuestacurl -X PUT "$UPLOAD_URL" -H "Content-Type: image/jpeg" --data-binary @speisekarte.jpg
# 3. finalizar, con la suma de comprobación MD5curl https://cloud.viewneo.com/api/public/v1/media/uploads/$MEDIA_ID/complete -H "Authorization: Bearer $API_TOKEN" \ -H "Content-Type: application/json" \ -d '{"md5":"'"$(openssl md5 -r speisekarte.jpg | cut -d' ' -f1)"'"}'Los archivos grandes llegan como multipart: la respuesta del paso 1 indica entonces el tamaño de las partes; las direcciones de las partes las obtienes con POST /media/uploads/{id}/parts.
Después, el contenido está listo. Los vídeos se preparan en segundo plano para la reproducción. Algunos formatos se convierten y, al hacerlo, sustituyen al contenido subido: TIFF, BMP y HEIC pasan a JPEG (o PNG si hay transparencia), y documentos como PDF o PowerPoint, a una imagen por página en una carpeta nueva. Los ID nuevos los encuentras con GET /media?folderId=….
Llevar un contenido a la pantalla
Sección titulada «Llevar un contenido a la pantalla»# añadir el contenido a una playlist, los días laborables al mediodíacurl https://cloud.viewneo.com/api/public/v1/playlists/$PLAYLIST_ID/entries \ -H "Authorization: Bearer $API_TOKEN" -H "Content-Type: application/json" \ -d '{"type":"media","mediaId":"'"$MEDIA_ID"'","durationSeconds":15, "schedule":{"rule":"scheduled","weekdays":["mon","tue","wed","thu","fri"],"startTime":"11:30","endTime":"14:30"}}'
# asignar la playlist a un dispositivo (un grupo funciona igual con /device-groups)curl -X PATCH https://cloud.viewneo.com/api/public/v1/devices/$DEVICE_ID \ -H "Authorization: Bearer $API_TOKEN" -H "Content-Type: application/json" \ -d '{"playlistId":"'"$PLAYLIST_ID"'"}'Mostrar datos de tu sistema
Sección titulada «Mostrar datos de tu sistema»Diseña una vez en el Designer una plantilla con marcadores de posición. Tu sistema crea a partir de ella un contenido y lo actualiza cada vez que cambian los datos:
# ¿qué marcadores de posición tiene la plantilla?curl https://cloud.viewneo.com/api/public/v1/templates/$TEMPLATE_ID -H "Authorization: Bearer $API_TOKEN"
# crear un contenido a partir de ella; su ID lo añades a una playlist como cualquier archivo multimediacurl https://cloud.viewneo.com/api/public/v1/templates/$TEMPLATE_ID/contents \ -H "Authorization: Bearer $API_TOKEN" -H "Content-Type: application/json" \ -d '{"name":"Mittagstisch","values":{"gericht":"Labskaus","preis":"12,50 €"}}'
# al día siguiente, cambiar los valores; los dispositivos se actualizan soloscurl -X PATCH https://cloud.viewneo.com/api/public/v1/template-contents/$CONTENT_ID \ -H "Authorization: Bearer $API_TOKEN" -H "Content-Type: application/json" \ -d '{"values":{"gericht":"Fischfrikadelle","preis":"11,90 €"}}'Los nombres de los marcadores de posición (aquí gericht y preis) proceden de tu plantilla.
Copiar una diapositiva y cambiar sus textos e imágenes
Sección titulada «Copiar una diapositiva y cambiar sus textos e imágenes»Diseña la diapositiva una vez en el diseñador y da a sus elementos un nombre de la capa claro. Tu sistema la copia y establece sus textos, imágenes y vídeos; el diseño, los colores y el tamaño se mantienen tal como se diseñaron:
# encontrar la diapositivacurl "https://cloud.viewneo.com/api/public/v1/media?type=slide" -H "Authorization: Bearer $API_TOKEN"
# copiarla: la copia tiene su propio IDcurl -X POST https://cloud.viewneo.com/api/public/v1/media/$SLIDE_ID/duplicate \ -H "Authorization: Bearer $API_TOKEN" -H "Content-Type: application/json" -d '{}'
# ¿qué elementos tiene la copia? (anota «version»)curl https://cloud.viewneo.com/api/public/v1/slides/$COPY_ID/elements -H "Authorization: Bearer $API_TOKEN"
# cambiar textos e imagen: todo o nadacurl -X PATCH https://cloud.viewneo.com/api/public/v1/slides/$COPY_ID/elements \ -H "Authorization: Bearer $API_TOKEN" -H "Content-Type: application/json" \ -d '{"ifVersion":"'"$VERSION"'","elements":[{"name":"Precio","text":"3,99 €"},{"name":"Producto","media":{"mediaId":"'"$IMAGE_ID"'"}}]}'- Te diriges a un elemento por su nombre de la capa (
name) o suid. Si un nombre aparece varias veces en la diapositiva, la respuesta indica los ID que coinciden (candidates); usa entonces elid. - Un texto con formato uniforme lo conserva; con formato mixto (p. ej. una palabra en negrita) se aplica el formato básico del cuadro de texto.
- Los relojes, contadores y campos RSS se actualizan solos y no aparecen en la lista. Una diapositiva creada a partir de una plantilla se cambia mediante sus marcadores.
Sincronizar una playlist
Sección titulada «Sincronizar una playlist»Envía el contenido completo en una sola llamada. Las entradas que envíes con su id se conservan, las nuevas se crean y todas las demás se eliminan:
curl -X PUT https://cloud.viewneo.com/api/public/v1/playlists/$PLAYLIST_ID/entries \ -H "Authorization: Bearer $API_TOKEN" -H "Content-Type: application/json" \ -d '{"entries":[{"type":"media","mediaId":"'"$ANGEBOT_1"'"},{"type":"media","mediaId":"'"$ANGEBOT_2"'"}]}'Poner en marcha un reproductor nuevo
Sección titulada «Poner en marcha un reproductor nuevo»Inicia el reproductor; muestra un código de activación de seis caracteres. Actívalo en un grupo de dispositivos (cada dispositivo pertenece a uno) y reproducirá de inmediato sus contenidos:
curl https://cloud.viewneo.com/api/public/v1/devices/activate \ -H "Authorization: Bearer $API_TOKEN" -H "Content-Type: application/json" \ -d '{"activationCode":"AB3XZ7","name":"Lobby Empfang","groupId":"'"$GROUP_ID"'"}'Cada reproductor necesita una licencia; las licencias nunca se contratan automáticamente. Sin licencia libre, la API responde con 409 LICENSE_LIMIT_REACHED.
Encontrar dispositivos sin conexión
Sección titulada «Encontrar dispositivos sin conexión»curl "https://cloud.viewneo.com/api/public/v1/devices?limit=100" -H "Authorization: Bearer $API_TOKEN" \ | jq '.data[] | select(.online == false) | {name, lastSeenAt}'Obtener la prueba de reproducción de un día
Sección titulada «Obtener la prueba de reproducción de un día»curl "https://cloud.viewneo.com/api/public/v1/reports/device-log/$DEVICE_ID?filter=playouts&from=2026-10-06T00:00:00Z&to=2026-10-07T00:00:00Z&limit=200" \ -H "Authorization: Bearer $API_TOKEN"Repite la llamada con &cursor=<nextCursor> hasta que nextCursor sea null. Para un mes completo de un contenido de una sola vez existe la exportación CSV GET /reports/media/{id}/playout-details/export.