Wir verwirklichen Ihre Ideen!Raum Heilbronn · info@appproject.de
AppProjectApp-Entwicklung · Smart Home · 3D-Druck
Integration API

UniFi Protect-Kameras per URL steuern

UniFi Protect-Kameras haben mit Integration API eine lokale Schnittstelle. Du steuerst sie direkt im Heimnetz per HTTP-Befehl – aus dem Browser, per curl oder aus einem Programm deiner Homematic-Zentrale. Hier findest du alle Befehle, die wir belegen konnten, sortiert nach Funktion.

Befehl für meine UniFi Protect erzeugen

Schnittstelle
UniFi Protect Integration API (REST/JSON, OpenAPI 3.1) über den Protect-Controller
Anmeldung
Token / API-Key
Standard
https://…:443
Funktionen
4 von 21
Stand
November 2026

Gut zu wissen

  • Kameras werden nicht direkt angesprochen, sondern über den Protect-Controller (UNVR, Cloud Key, Dream Machine): https://{ip}/proxy/protect/integration/v1/… (HTTPS, Port 443). Diese lokale Basis-URL zeigen die offiziellen curl-Beispiele (Verbindungstyp „Local“); die OpenAPI-Spezifikation selbst nennt nur „/integration“.
  • Authentifizierung: API-Key im Header X-API-Key: {token} (so in den offiziellen curl-Beispielen). Den Key legt man lokal in der Konsole im Bereich „Integrations“ über „Create New API Key“ an; er wird nur einmal angezeigt, also sicher wie ein Passwort aufbewahren. curl-Beispiel: curl -k -H "X-API-Key: {token}" https://{ip}/proxy/protect/integration/v1/cameras
  • Das -k braucht man nur, solange die Konsole ihr selbstsigniertes Zertifikat verwendet. Die CCU muss HTTPS und frei definierbare Header können, z. B. CUxD oder ein Skript mit curl.
Alle Hinweise (6)
  • {kanal} ist die Geräte-ID (24 Hex-Zeichen), nicht die Kanalnummer. Kamera-IDs liefert GET /v1/cameras, Lichter /v1/lights, Sirenen /v1/sirens.
  • Laut offizieller Spezifikation (v7.3.74) gibt es kein Feld für Aufnahmemodus, Privatsphäre-Maske, IR/Nachtsicht, Bewegungserkennung oder Benachrichtigungen. Per PATCH /v1/cameras/{kanal} änderbar sind nur name, osdSettings, ledSettings (isEnabled, welcomeLed, floodLed), lcdMessage, micVolume, videoMode, hdrType und smartDetectSettings. Neustart und manuelle PTZ-Bewegung gibt es ebenfalls nicht.
  • Ebenfalls dokumentiert: Scharf/Unscharf des Alarm-Managers per POST /v1/arm-profiles/enable bzw. /disable, Relais-Ausgänge per POST /v1/relays/{id}/outputs/{outputId}/activate und Alarm-Hub-Ausgänge per POST /v1/alarm-hubs/{id}/outputs/{outputId}/trigger.

Position anfahren

Im Generator öffnen

Bewegungsmelder an der Einfahrt löst aus → Kamera schwenkt auf die gespeicherte Position

Laut HerstellerdokuUniFi Protect PTZ-Kameras (G4 PTZ, G5 PTZ, AI PTZ)· Protect-API v7.3.74

curl
curl -s -k -X POST -H 'X-API-Key: TOKEN' 'https://KAMERA-IP/proxy/protect/integration/v1/cameras/KAMERA-ID/ptz/goto/1'

Header X-API-Key: {token}. {preset} = Slot: -1 = Home-Position, ab 0 = gespeicherte Presets. Kein Body. Patrouille: POST …/ptz/patrol/start/{slot} (Slot 0–4) bzw. …/ptz/patrol/stop.

Erwartete Antwort: HTTP 204

Als Homematic-Skript (CCU3/OpenCCU)
HM-Skript
dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("curl -s -m 10 -k -X POST -H 'X-API-Key: TOKEN' 'https://KAMERA-IP/proxy/protect/integration/v1/cameras/KAMERA-ID/ptz/goto/1'");

Quelle: developer.ui.com

Schnappschuss (Bild-URL)

Im Generator öffnen

Klingel gedrückt → aktuelles Bild abrufen und per Push oder Telegram verschicken

Laut Herstellerdokualle Modelle· Protect-API v7.3.74

curl
curl -s -k -H 'X-API-Key: TOKEN' 'https://KAMERA-IP/proxy/protect/integration/v1/cameras/KAMERA-ID/snapshot?highQuality=true'

Header X-API-Key: {token}. {kanal} = Kamera-ID aus GET …/v1/cameras. highQuality=true erzwingt ≥1080p; channel=package (Werte main/package) für Paketkamera. 503 = Kamera offline.

Erwartete Antwort: HTTP 200, image/jpeg

Als Homematic-Skript (CCU3/OpenCCU)
HM-Skript
dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("curl -s -m 10 -k -H 'X-API-Key: TOKEN' 'https://KAMERA-IP/proxy/protect/integration/v1/cameras/KAMERA-ID/snapshot?highQuality=true'");

Quelle: developer.ui.com

Sirene / Alarmton auslösen

Im Generator öffnen

Einbruchalarm der Homematic-Alarmanlage → Sirene der Kamera auslösen

Laut HerstellerdokuUniFi Protect Sirene (eigenes Siren-Gerät)· Protect-API v7.3.74

curl
curl -s -k -X POST -H 'X-API-Key: TOKEN' -H 'Content-Type: application/json' --data-binary '{"duration":10}' 'https://KAMERA-IP/proxy/protect/integration/v1/sirens/KAMERA-ID/play'

Header X-API-Key: {token}. {kanal} = Sirenen-ID aus GET …/v1/sirens (eigenes Gerät, nicht die Kamera). duration 5, 10, 20 oder 30 s (Body optional, Standard 5). Vorzeitig stoppen: POST …/sirens/{kanal}/stop.

Erwartete Antwort: HTTP 204

Als Homematic-Skript (CCU3/OpenCCU)
HM-Skript
dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("printf '{\042duration\042:10}' | curl -s -m 10 -k -X POST -H 'X-API-Key: TOKEN' -H 'Content-Type: application/json' --data-binary @- 'https://KAMERA-IP/proxy/protect/integration/v1/sirens/KAMERA-ID/play'");

Quelle: developer.ui.com

Videostream (RTSP)

Im Generator öffnen

Live-Bild in Dashboard, NAS oder Tablet einbinden

Laut Herstellerdokualle Modelle· Protect-API v7.3.74

curl
curl -s -k -X POST -H 'X-API-Key: TOKEN' -H 'Content-Type: application/json' --data-binary '{"qualities":["high"]}' 'https://KAMERA-IP/proxy/protect/integration/v1/cameras/KAMERA-ID/rtsps-stream'

Header X-API-Key: {token}. Legt RTSPS-Freigabe an (qualities: high, medium, low; package nur bei Paketkamera) und liefert die Stream-URLs (Port 7441). Entfernen: DELETE auf denselben Pfad mit Pflicht-Query ?qualities=high (Antwort 204).

Erwartete Antwort: HTTP 200, JSON z. B. {"high":"rtsps://{ip}:7441/…?enableSrtp"}

Als Homematic-Skript (CCU3/OpenCCU)
HM-Skript
dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("printf '{\042qualities\042:[\042high\042]}' | curl -s -m 10 -k -X POST -H 'X-API-Key: TOKEN' -H 'Content-Type: application/json' --data-binary @- 'https://KAMERA-IP/proxy/protect/integration/v1/cameras/KAMERA-ID/rtsps-stream'");

Quelle: developer.ui.com

Laut Herstellerdokualle Modelle· Protect-API v7.3.74

curl
curl -s -k -H 'X-API-Key: TOKEN' 'https://KAMERA-IP/proxy/protect/integration/v1/cameras/KAMERA-ID/rtsps-stream'

Header X-API-Key: {token}. Liest bereits freigegebene RTSPS-URLs aus; nicht freigegebene Qualitäten = null.

Erwartete Antwort: HTTP 200, JSON mit high/medium/low/package (URL oder null)

Als Homematic-Skript (CCU3/OpenCCU)
HM-Skript
dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("curl -s -m 10 -k -H 'X-API-Key: TOKEN' 'https://KAMERA-IP/proxy/protect/integration/v1/cameras/KAMERA-ID/rtsps-stream'");

Quelle: developer.ui.com

Was per URL nicht geht

Aufnahme an, Aufnahme aus, Bewegungserkennung an, Bewegungserkennung aus, Push-Benachrichtigung an, Push-Benachrichtigung aus, E-Mail-Alarm an, E-Mail-Alarm aus, Schwenken / Neigen, Nachtsicht (IR) an, Nachtsicht (IR) aus, Nachtsicht (IR) automatisch, Privatsphäre-Modus an, Privatsphäre-Modus aus, Neustart – laut Dokumentation gibt es dafür keinen URL-Befehl.

Modellreihen

  • UniFi Protect G3-SerieUVC-G3
  • UniFi Protect G4-Serie (inkl. G4 Doorbell)UVC-G4, UVC-G4-DB
  • UniFi Protect G5-SerieUVC-G5
  • UniFi Protect G6-SerieUVC-G6
  • UniFi Protect AI-SerieUVC-AI
  • UniFi Protect PTZ-Kameras (G4 PTZ, G5 PTZ, AI PTZ)UVC-G4-PTZ, UVC-G5-PTZ, UVC-AI-PTZ, PTZ
  • UniFi Protect Floodlight (eigenes Light-Gerät)UP-FloodLight, Floodlight
  • UniFi Protect Sirene (eigenes Siren-Gerät)Siren

Häufige Fragen

Wie melde ich mich bei UniFi Protect-Befehlen an?

UniFi Protect nutzt Token / API-Key. Im Generator wird die passende Anmeldung automatisch in den curl- und CCU-Befehl eingebaut.

Funktionieren die Befehle mit jedem UniFi Protect-Modell?

Nicht immer. Je Befehl steht dabei, für welche Modellreihe und Firmware er dokumentiert ist. Im Zweifel den Befehl einmal im Browser oder per curl testen und die Antwort der Kamera prüfen.

Quellen

Etwas funktioniert bei dir anders? Gib uns Bescheid – wir prüfen jede Meldung.