Changelog
The API lives at /api/v1. Additions don't break what already works: new response fields, new endpoints and new scopes. A breaking change would go to /api/v2.
1.1.0 — November 8, 2026
- Control lease cap: 30 minutes in a row per key and camera (
lease.hold_ends_at), then a 5-minute wait (409lease_hold_limit). Releasing from the panel blocks that key on that camera for 10 minutes (409lease_revoked_by_user). - Control lease:
GET/POST/DELETE /cameras/{id}/lease,controlscope. While a key holds it, automations don't move or change the camera, tracking doesn't move it and no other key can either (409camera_leased). Eventscamera.lease.takenandcamera.lease.released. - Automations:
GET /automations,GET /automations/{id},POST /automations/{id}/enable|disable,POST /automations/{id}/run,GET /automations/{id}/runs/{run}. Scopesautomations:read,automations:writeandautomations:run. - Actor: commands now include
actor(api:<key name>,automation:<id>oruser:<id>), and so do audit rows and events caused by a request made with a key. - New error codes:
camera_leased,lease_held,kill_switch,automation_inactive,automation_capped,no_manual_trigger,not_started,automation_refused. - SDKs:
leases(withhold),automationsandverifyWebhook/verify_webhook. - Developer portal in Spanish and English, with a self-hosted REST reference.
openapi.json?lang=enreturns English summaries.
1.0.0 — November 7, 2026
- First release: per-space keys with a role ceiling, scopes, expiry and rate limit; cameras (QR provisioning, decommissioning, credential rotation), PTZ, snapshots, recording, live video (WebRTC and HLS), talk, events, own bucket and signed webhooks.
- TypeScript and Python SDKs.