Exemples
Les exemples utilisent curl et la variable $API_TOKEN. L’URL de base est https://cloud.viewneo.com/api/public/v1.
Téléverser un fichier
Section intitulée « Téléverser un fichier »Les fichiers ne passent pas par l’API elle-même, mais vont directement dans le stockage – via une adresse présignée. Même les grandes vidéos sont ainsi transférées rapidement.
# 1. démarrer le téléversementcurl 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. envoyer le fichier à upload.url indiquée dans la réponsecurl -X PUT "$UPLOAD_URL" -H "Content-Type: image/jpeg" --data-binary @speisekarte.jpg
# 3. terminer, avec la somme de contrôle 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)"'"}'Les gros fichiers sont envoyés en multipart : la réponse de l’étape 1 indique alors la taille des parties ; tu obtiens les adresses des parties avec POST /media/uploads/{id}/parts.
Le contenu est ensuite prêt. Les vidéos sont préparées en arrière-plan pour la diffusion. Certains formats sont convertis et remplacent alors le contenu téléversé : TIFF, BMP et HEIC deviennent du JPEG (ou du PNG en cas de transparence), les documents comme les PDF ou PowerPoint deviennent une image par page dans un nouveau dossier. Tu trouves les nouveaux ID via GET /media?folderId=….
Afficher un contenu à l’écran
Section intitulée « Afficher un contenu à l’écran »# placer le contenu dans une playlist – en semaine à l’heure du déjeunercurl 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"}}'
# attribuer la playlist à un appareil (pour un groupe, même principe via /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"'"}'Afficher des données de ton système
Section intitulée « Afficher des données de ton système »Conçois une fois dans le Designer un modèle avec des espaces réservés. Ton système crée un contenu à partir de celui-ci et le met à jour chaque fois que les données changent :
# quels espaces réservés le modèle comporte-t-il ?curl https://cloud.viewneo.com/api/public/v1/templates/$TEMPLATE_ID -H "Authorization: Bearer $API_TOKEN"
# en créer un contenu – tu places son ID dans une playlist comme n’importe quel médiacurl 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 €"}}'
# le lendemain, modifier les valeurs – les appareils se mettent à jour d’eux-mêmescurl -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 €"}}'Les noms des espaces réservés (ici gericht et preis) proviennent de ton modèle.
Synchroniser une playlist
Section intitulée « Synchroniser une playlist »Envoie le contenu complet en un seul appel. Les éléments que tu envoies avec leur id sont conservés, les nouveaux sont créés, tous les autres sont retirés :
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"'"}]}'Mettre en service un nouveau lecteur
Section intitulée « Mettre en service un nouveau lecteur »Démarre le lecteur ; il affiche un code d’activation à six caractères. Active-le dans un groupe d’appareils – chaque appareil appartient à un groupe – et il diffuse immédiatement les contenus de ce groupe :
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"'"}'Chaque lecteur a besoin d’une licence ; les licences ne sont jamais ajoutées automatiquement. Sans licence libre, l’API répond 409 LICENSE_LIMIT_REACHED.
Trouver les appareils hors ligne
Section intitulée « Trouver les appareils hors ligne »curl "https://cloud.viewneo.com/api/public/v1/devices?limit=100" -H "Authorization: Bearer $API_TOKEN" \ | jq '.data[] | select(.online == false) | {name, lastSeenAt}'Récupérer la preuve de diffusion d’une journée
Section intitulée « Récupérer la preuve de diffusion d’une journée »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"Répète l’appel avec &cursor=<nextCursor> jusqu’à ce que nextCursor soit null. Pour tout un mois d’un contenu d’un seul tenant, il existe l’export CSV GET /reports/media/{id}/playout-details/export.