apiGrowth plan-Funktion

API-Endpunkte

Vollständige Referenz für alle Screenzzie REST API-Endpunkte

docs.apiCtaBanner.title

docs.apiCtaBanner.description

API-Endpunkte-Referenz

Vollständige Dokumentation für alle verfügbaren REST API-Endpunkte.

Organisation & Introspektion

Erhalten Sie Informationen über Ihren aktuellen API-Kontext und Ihre Organisation.

Aktuellen Kontext abrufen

GET /api/v1/me

Gibt Informationen über Ihren API-Schlüssel, Organisation, Rate Limits und verfügbare Funktionen zurück. Dieser Endpunkt zählt nicht gegen Ihr Rate Limit.

Beispielanfrage:

curl -X GET "https://www.screenzzie.com/api/v1/me" \
  -H "Authorization: Bearer sk_live_xxx"

Beispielantwort:

{
  "success": true,
  "data": {
    "apiKey": {
      "id": "uuid",
      "name": "Mein API-Schlüssel",
      "keyPrefix": "sk_live_abc123",
      "scopes": ["screens:read", "screens:write", "playlists:read"],
      "expiresAt": null,
      "lastUsedAt": "2024-01-15T10:30:00Z"
    },
    "organization": {
      "id": "uuid",
      "name": "Meine Firma",
      "planId": "growth",
      "subscriptionStatus": "active",
      "trialEndsAt": null,
      "maxScreensAllowed": 50,
      "activeScreensCount": 12
    },
    "rateLimits": {
      "limit": 100000,
      "used": 45,
      "remaining": 99955,
      "resetAtMs": 1704153600000
    },
    "features": {
      "sequences": true,
      "schedules": true,
      "api": true
    }
  }
}

Organisationen auflisten

GET /api/v1/organizations

Gibt die Organisationen zurück, die mit Ihrem API-Schlüssel zugänglich sind. Derzeit gehört jeder API-Schlüssel zu genau einer Organisation.

Query-Parameter:

ParameterTypBeschreibung
pagenumberSeitennummer (Standard: 1)
limitnumberElemente pro Seite (Standard: 20, max: 100)

Beispielanfrage:

curl -X GET "https://www.screenzzie.com/api/v1/organizations" \
  -H "Authorization: Bearer sk_live_xxx"

Beispielantwort:

{
  "success": true,
  "data": {
    "items": [
      {
        "id": "uuid",
        "name": "Meine Firma",
        "planId": "growth",
        "subscriptionStatus": "active",
        "maxScreensAllowed": 50,
        "activeScreensCount": 12,
        "createdAt": "2024-01-01T00:00:00Z"
      }
    ],
    "pagination": {
      "page": 1,
      "limit": 20,
      "total": 1,
      "totalPages": 1,
      "hasMore": false
    }
  }
}

Bildschirme

Verwalten Sie Ihre Digital Signage-Bildschirme.

Bildschirme auflisten

GET /api/v1/screens

Query-Parameter:

ParameterTypBeschreibung
pagenumberSeitennummer (Standard: 1)
limitnumberElemente pro Seite (Standard: 20, max: 100)
isActivebooleanNach Aktivstatus filtern
isOnlinebooleanNach Online-Status filtern
screenGroupIduuidNach Bildschirmgruppe filtern
workspaceIduuidNach Arbeitsbereich filtern

Beispielanfrage:

curl -X GET "https://www.screenzzie.com/api/v1/screens?isOnline=true&limit=10" \
  -H "Authorization: Bearer sk_live_xxx"

Beispielantwort:

{
  "success": true,
  "data": {
    "items": [
      {
        "id": "uuid",
        "name": "Lobby-Display",
        "description": "Haupteingangs-Bildschirm",
        "isActive": true,
        "isOnline": true,
        "lastSeenAt": "2024-01-01T12:00:00Z",
        "orientation": "landscape",
        "rotation": "0",
        "timezone": "Europe/Berlin",
        "location": "Gebäude A, Erdgeschoss",
        "cityName": "Frankfurt",
        "latitude": 50.1109,
        "longitude": 8.6821,
        "workspaceId": "uuid",
        "screenGroupId": null,
        "currentPlaylistId": "uuid",
        "currentSequenceId": null,
        "defaultPlaylistId": "uuid",
        "defaultSequenceId": null,
        "createdAt": "2024-01-01T00:00:00Z",
        "updatedAt": "2024-01-01T12:00:00Z"
      }
    ],
    "pagination": {
      "page": 1,
      "limit": 10,
      "total": 25,
      "totalPages": 3,
      "hasMore": true
    }
  }
}

Bildschirm abrufen

GET /api/v1/screens/:screenId

Pfad-Parameter:

ParameterTypBeschreibung
screenIduuidDie Bildschirm-ID

Beispielantwort:

Gibt ein einzelnes Bildschirmobjekt mit der gleichen Struktur wie die Listenantwort zurück.

Bildschirm erstellen

POST /api/v1/screens

Request Body:

FeldTypErforderlichBeschreibung
namestringJaBildschirmname (max. 100 Zeichen)
descriptionstringNeinBildschirmbeschreibung (max. 500 Zeichen)
orientationstringNeinlandscape oder portrait (Standard: landscape)
rotationstringNein0, 90, 180 oder 270 (Standard: 0)
timezonestringNeinIANA-Zeitzone (z.B. Europe/Berlin)
locationstringNeinPhysischer Standort (max. 200 Zeichen)
screenGroupIduuidNeinBildschirmgruppen-Mitgliedschaft
workspaceIduuidNeinArbeitsbereich-Zuweisung

Playlist- und Sequenz-Zuweisungen können bei der Erstellung nicht festgelegt werden. Verwenden Sie den Bildschirm-Aktualisieren-Endpunkt, um Inhalte nach der Erstellung zuzuweisen.

Beispielanfrage:

curl -X POST "https://www.screenzzie.com/api/v1/screens" \
  -H "Authorization: Bearer sk_live_xxx" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Konferenzraum A",
    "orientation": "landscape",
    "rotation": "0",
    "timezone": "Europe/Berlin",
    "location": "Gebäude B, Raum 101"
  }'

Beispielantwort:

{
  "success": true,
  "data": {
    "id": "uuid",
    "name": "Konferenzraum A",
    "description": null,
    "isActive": true,
    "isOnline": false,
    "lastSeenAt": null,
    "orientation": "landscape",
    "rotation": "0",
    "timezone": "Europe/Berlin",
    "location": "Gebäude B, Raum 101",
    "cityName": null,
    "latitude": null,
    "longitude": null,
    "workspaceId": null,
    "screenGroupId": null,
    "currentPlaylistId": null,
    "currentSequenceId": null,
    "defaultPlaylistId": null,
    "defaultSequenceId": null,
    "createdAt": "2024-01-01T00:00:00Z",
    "updatedAt": "2024-01-01T00:00:00Z"
  }
}

Bildschirm aktualisieren

PATCH /api/v1/screens/:screenId

Alle Felder sind optional. Nur Felder einschließen, die Sie aktualisieren möchten.

Request Body:

FeldTypBeschreibung
namestringNeuer Bildschirmname (max. 100 Zeichen)
descriptionstringNeue Beschreibung (null zum Löschen)
orientationstringlandscape oder portrait
rotationstring0, 90, 180 oder 270
timezonestringIANA-Zeitzone
locationstringPhysischer Standort (null zum Löschen)
workspaceIduuidArbeitsbereich-ID (null zum Entfernen)
screenGroupIduuidBildschirmgruppen-ID (null zum Entfernen)
currentPlaylistIduuidAktuelle Playlist (null zum Entfernen)
currentSequenceIduuidAktuelle Sequenz (null zum Entfernen)
defaultPlaylistIduuidStandard-Playlist (null zum Entfernen)
defaultSequenceIduuidStandard-Sequenz (null zum Entfernen)

Beispielanfrage:

curl -X PATCH "https://www.screenzzie.com/api/v1/screens/abc123" \
  -H "Authorization: Bearer sk_live_xxx" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Aktualisierter Display-Name",
    "currentPlaylistId": "playlist-uuid"
  }'

Playlists

Verwalten Sie Inhalts-Playlists für Ihre Bildschirme.

Playlists auflisten

GET /api/v1/playlists

Query-Parameter:

ParameterTypBeschreibung
pagenumberSeitennummer (Standard: 1)
limitnumberElemente pro Seite (Standard: 20, max: 100)
workspaceIduuidNach Arbeitsbereich filtern

Beispielantwort:

{
  "success": true,
  "data": {
    "items": [
      {
        "id": "uuid",
        "name": "Hauptinhalt",
        "description": "Primäre Playlist für Lobby-Bildschirme",
        "itemCount": 5,
        "totalDuration": 120,
        "workspaceId": null,
        "createdBy": "user-uuid",
        "createdAt": "2024-01-01T00:00:00Z",
        "updatedAt": "2024-01-01T12:00:00Z"
      }
    ],
    "pagination": { ... }
  }
}

Playlist abrufen

GET /api/v1/playlists/:playlistId

Gibt die Playlist mit ihren Elementen zurück. Elemente sind immer in der Antwort enthalten.

Pfad-Parameter:

ParameterTypBeschreibung
playlistIduuidDie Playlist-ID

Beispielantwort:

{
  "success": true,
  "data": {
    "id": "uuid",
    "name": "Hauptinhalt",
    "description": "Primäre Playlist für Lobby-Bildschirme",
    "itemCount": 2,
    "totalDuration": 45,
    "workspaceId": null,
    "createdBy": "user-uuid",
    "createdAt": "2024-01-01T00:00:00Z",
    "updatedAt": "2024-01-01T12:00:00Z",
    "items": [
      {
        "id": "item-uuid-1",
        "position": 0,
        "duration": 15,
        "itemType": "media",
        "mediaId": "media-uuid",
        "config": null,
        "createdAt": "2024-01-01T00:00:00Z"
      },
      {
        "id": "item-uuid-2",
        "position": 1,
        "duration": 30,
        "itemType": "website",
        "mediaId": null,
        "config": { "url": "https://example.com" },
        "createdAt": "2024-01-01T00:00:00Z"
      }
    ]
  }
}

Playlist erstellen

POST /api/v1/playlists

Request Body:

FeldTypErforderlichBeschreibung
namestringJaPlaylistname (max. 100 Zeichen)
descriptionstringNeinPlaylistbeschreibung (max. 500 Zeichen)
workspaceIduuidNeinArbeitsbereich-Zuweisung

Beispielanfrage:

curl -X POST "https://www.screenzzie.com/api/v1/playlists" \
  -H "Authorization: Bearer sk_live_xxx" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Weihnachtsaktionen",
    "description": "Saisonale Inhalte für Dezember"
  }'

Playlist aktualisieren

PATCH /api/v1/playlists/:playlistId

Request Body:

FeldTypBeschreibung
namestringNeuer Playlistname
descriptionstringNeue Beschreibung (null zum Löschen)
workspaceIduuidArbeitsbereich-ID (null zum Entfernen)

Playlist löschen

DELETE /api/v1/playlists/:playlistId

Gibt 204 No Content bei Erfolg zurück.


Medien

Zugriff auf Mediendateien in Ihrer Bibliothek und Registrierung neuer Medien.

Medien auflisten

GET /api/v1/media

Query-Parameter:

ParameterTypBeschreibung
pagenumberSeitennummer (Standard: 1)
limitnumberElemente pro Seite (Standard: 20, max: 100)
typestringNach Typ filtern: image oder video
folderIduuidNach Ordner filtern
workspaceIduuidNach Arbeitsbereich filtern

Beispielantwort:

{
  "success": true,
  "data": {
    "items": [
      {
        "id": "uuid",
        "name": "promo-video.mp4",
        "type": "video",
        "fileUrl": "https://...",
        "thumbnailUrl": "https://...",
        "fileSize": 15728640,
        "duration": 30,
        "folderId": null,
        "workspaceId": null,
        "uploadedBy": "user-uuid",
        "createdAt": "2024-01-01T00:00:00Z",
        "updatedAt": "2024-01-01T00:00:00Z"
      }
    ],
    "pagination": { ... }
  }
}

Medium abrufen

GET /api/v1/media/:mediaId

Gibt ein einzelnes Medienobjekt mit der gleichen Struktur wie die Listenantwort zurück.

Medium registrieren

POST /api/v1/media

Registriert eine Mediendatei, die bereits in den Speicher hochgeladen wurde. Dieser Endpunkt verarbeitet keine Datei-Uploads direkt - verwenden Sie das Web-Dashboard für Datei-Uploads.

Request Body:

FeldTypErforderlichBeschreibung
namestringJaMedienname (max. 200 Zeichen)
typestringJaimage oder video
fileUrlstringJaURL der hochgeladenen Datei
thumbnailUrlstringNeinURL des Thumbnails
fileSizenumberNeinDateigröße in Bytes
durationnumberNeinDauer in Sekunden (für Videos)
folderIduuidNeinOrdner-Zuweisung
workspaceIduuidNeinArbeitsbereich-Zuweisung

Beispielanfrage:

curl -X POST "https://www.screenzzie.com/api/v1/media" \
  -H "Authorization: Bearer sk_live_xxx" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Firmenlogo",
    "type": "image",
    "fileUrl": "https://ihr-speicher.com/logo.png",
    "thumbnailUrl": "https://ihr-speicher.com/logo-thumb.png",
    "fileSize": 102400
  }'

Direkter Datei-Upload ist über die REST API nicht verfügbar. Laden Sie Dateien über das Web-Dashboard hoch, oder laden Sie in Ihren eigenen Speicher hoch und registrieren Sie die URL mit diesem Endpunkt.

Medium löschen

DELETE /api/v1/media/:mediaId

Gibt 204 No Content bei Erfolg zurück.


Zeitpläne

Zeitpläne sind nur im Growth-Plan und höher verfügbar.

Planen Sie Inhalte für bestimmte Zeiten.

Zeitpläne auflisten

GET /api/v1/schedules

Query-Parameter:

ParameterTypBeschreibung
pagenumberSeitennummer (Standard: 1)
limitnumberElemente pro Seite (Standard: 20, max: 100)
workspaceIduuidNach Arbeitsbereich filtern
screenIduuidNach Bildschirm filtern
isActivebooleanNach Aktivstatus filtern

Beispielantwort:

{
  "success": true,
  "data": {
    "items": [
      {
        "id": "uuid",
        "name": "Wochenendaktionen",
        "playlistId": "playlist-uuid",
        "sequenceId": null,
        "screenId": null,
        "screenGroupId": null,
        "targetType": "all_screens",
        "dayOfWeek": [0, 6],
        "startTime": "09:00",
        "endTime": "21:00",
        "startDate": null,
        "endDate": null,
        "priority": 10,
        "isActive": true,
        "color": "#3B82F6",
        "workspaceId": null,
        "createdAt": "2024-01-01T00:00:00Z",
        "updatedAt": "2024-01-01T00:00:00Z"
      }
    ],
    "pagination": { ... }
  }
}

Zeitplan abrufen

GET /api/v1/schedules/:scheduleId

Gibt ein einzelnes Zeitplanobjekt mit der gleichen Struktur wie die Listenantwort zurück.

Zeitplan erstellen

POST /api/v1/schedules

Request Body:

FeldTypErforderlichBeschreibung
namestringNeinZeitplanname (max. 100 Zeichen)
playlistIduuidNein*Zu planende Playlist
sequenceIduuidNein*Zu planende Sequenz
targetTypestringJascreen, screen_group, all_screens oder multiple_screens
screenIduuidBedingtErforderlich wenn targetType = screen
screenGroupIduuidBedingtErforderlich wenn targetType = screen_group
dayOfWeeknumber[]NeinWochentage (0=So, 6=Sa)
startTimestringNeinStartzeit im HH:MM-Format
endTimestringNeinEndzeit im HH:MM-Format
startDatestringNeinStartdatum im ISO-Format
endDatestringNeinEnddatum im ISO-Format
prioritynumberNeinPriorität 0-100 (Standard: 0)
isActivebooleanNeinOb aktiv (Standard: true)
colorstringNeinAnzeigefarbe (z.B. #3B82F6)
workspaceIduuidNeinArbeitsbereich-Zuweisung

*Entweder playlistId oder sequenceId sollte angegeben werden, um Inhalte zu planen.

Bedingte Anforderungen für Zieltyp:

targetTypeErforderliche Felder
screenscreenId
screen_groupscreenGroupId
all_screensKeine
multiple_screensKeine (separaten Endpunkt zum Hinzufügen von Bildschirmen verwenden)

Beispielanfrage:

curl -X POST "https://www.screenzzie.com/api/v1/schedules" \
  -H "Authorization: Bearer sk_live_xxx" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Wochenendaktionen",
    "playlistId": "abc123",
    "targetType": "all_screens",
    "dayOfWeek": [0, 6],
    "startTime": "09:00",
    "endTime": "21:00",
    "priority": 10,
    "color": "#3B82F6"
  }'

Zeitplan aktualisieren

PATCH /api/v1/schedules/:scheduleId

Alle Felder sind optional. Verwendet die gleichen Felddefinitionen wie Zeitplan erstellen.

Zeitplan löschen

DELETE /api/v1/schedules/:scheduleId

Gibt 204 No Content bei Erfolg zurück.


HTTP-Statuscodes

CodeBeschreibung
200Erfolg
201Erstellt
204Kein Inhalt (erfolgreiches Löschen)
400Ungültige Anfrage (Validierungsfehler)
401Nicht autorisiert (ungültiger API-Schlüssel)
403Verboten (unzureichende Berechtigungen oder Plan)
404Nicht gefunden
429Zu viele Anfragen (Rate-Limit überschritten)
500Interner Serverfehler