Beispiele
Die Beispiele nutzen curl und die Variable $API_TOKEN. Die Basis-URL ist https://cloud.viewneo.com/api/public/v1.
Eine Datei hochladen
Abschnitt betitelt „Eine Datei hochladen“Dateien gehen nicht durch die API selbst, sondern direkt in den Speicher – über eine vorab signierte Adresse. Das macht auch große Videos schnell.
# 1. Upload startencurl 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. die Datei an upload.url aus der Antwort schickencurl -X PUT "$UPLOAD_URL" -H "Content-Type: image/jpeg" --data-binary @speisekarte.jpg
# 3. abschließen, mit der MD5-Prüfsummecurl 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)"'"}'Große Dateien kommen als multipart: Die Antwort aus Schritt 1 nennt dann die Teilgröße; die Adressen der Teile holst du mit POST /media/uploads/{id}/parts.
Danach ist der Inhalt bereit. Videos werden im Hintergrund für die Wiedergabe aufbereitet. Manche Formate werden umgewandelt und ersetzen dabei den hochgeladenen Inhalt: TIFF, BMP und HEIC werden zu JPEG (bzw. PNG bei Transparenz), Dokumente wie PDF oder PowerPoint zu einem Bild je Seite in einem neuen Ordner. Die neuen IDs findest du über GET /media?folderId=….
Inhalt auf den Bildschirm bringen
Abschnitt betitelt „Inhalt auf den Bildschirm bringen“# den Inhalt in eine Playlist legen – werktags zur Mittagszeitcurl 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"}}'
# die Playlist einem Gerät zuweisen (eine Gruppe geht genauso über /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"'"}'Daten aus deinem System zeigen
Abschnitt betitelt „Daten aus deinem System zeigen“Gestalte im Designer einmal ein Template mit Platzhaltern. Dein System erstellt daraus einen Inhalt und aktualisiert ihn, wann immer sich die Daten ändern:
# welche Platzhalter hat das Template?curl https://cloud.viewneo.com/api/public/v1/templates/$TEMPLATE_ID -H "Authorization: Bearer $API_TOKEN"
# einen Inhalt daraus erstellen – seine ID legst du wie jedes Medium in eine Playlistcurl 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 €"}}'
# am nächsten Tag die Werte ändern – die Geräte aktualisieren sich selbstcurl -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 €"}}'Die Namen der Platzhalter (hier gericht und preis) kommen aus deinem Template.
Einen Slide kopieren und Texte und Bilder ändern
Abschnitt betitelt „Einen Slide kopieren und Texte und Bilder ändern“Gestalte den Slide einmal im Designer und gib den Elementen sprechende Ebenen-Namen. Dein System kopiert ihn und setzt seine Texte, Bilder und Videos – Layout, Farben und Größe bleiben, wie gestaltet:
# den Slide findencurl "https://cloud.viewneo.com/api/public/v1/media?type=slide" -H "Authorization: Bearer $API_TOKEN"
# kopieren – die Kopie hat eine eigene 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 '{}'
# welche Elemente hat die Kopie? („version“ merken)curl https://cloud.viewneo.com/api/public/v1/slides/$COPY_ID/elements -H "Authorization: Bearer $API_TOKEN"
# Texte und Bild ändern – ganz oder gar nichtcurl -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":"Preis","text":"3,99 €"},{"name":"Produkt","media":{"mediaId":"'"$IMAGE_ID"'"}}]}'- Ein Element sprichst du über seinen Ebenen-Namen (
name) oder seineidan. Kommt ein Name im Slide mehrfach vor, nennt die Antwort die passenden IDs (candidates) – nimm dann dieid. - Ein Text mit einheitlicher Formatierung behält sie; bei gemischter Formatierung (etwa einem fetten Wort) gilt die Grundformatierung des Textfelds.
- Uhr, Zähler und RSS-Felder aktualisieren sich selbst und tauchen in der Liste nicht auf. Ein Slide aus einem Template wird über seine Platzhalter geändert.
Eine Playlist abgleichen
Abschnitt betitelt „Eine Playlist abgleichen“Schick den kompletten Inhalt in einem Aufruf. Einträge, die du mit ihrer id mitschickst, bleiben erhalten, neue werden angelegt, alle anderen entfernt:
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"'"}]}'Einen neuen Player in Betrieb nehmen
Abschnitt betitelt „Einen neuen Player in Betrieb nehmen“Starte den Player; er zeigt einen sechsstelligen Aktivierungscode. Aktiviere ihn in eine Gerätegruppe – jedes Gerät gehört zu einer – dann spielt er sofort deren Inhalte:
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"'"}'Jeder Player braucht eine Lizenz; Lizenzen werden nie automatisch dazugebucht. Ohne freie Lizenz antwortet die API mit 409 LICENSE_LIMIT_REACHED.
Offline-Geräte finden
Abschnitt betitelt „Offline-Geräte finden“curl "https://cloud.viewneo.com/api/public/v1/devices?limit=100" -H "Authorization: Bearer $API_TOKEN" \ | jq '.data[] | select(.online == false) | {name, lastSeenAt}'Abspielnachweis eines Tages abrufen
Abschnitt betitelt „Abspielnachweis eines Tages abrufen“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"Wiederhole den Aufruf mit &cursor=<nextCursor>, bis nextCursor null ist. Für einen ganzen Monat eines Inhalts am Stück gibt es den CSV-Export GET /reports/media/{id}/playout-details/export.