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.
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.