For developers In pilot

Your system, connected to every camera.

Enroll cameras, move them, take snapshots, record, open the live video, talk through them and manage automations from your software. Everything goes through TeroVision, with per-space keys and the same permissions as the panel.

Demo footage
Recording of the developer portal: "Getting started", the REST reference with every operation, the "API and automations" page with the control lease, and the switch to English. Recorded in the TeroVision panel, with simulated cameras on a demo database. The panel is in Spanish.

What you get

  • Per-space keys

    With scopes (cameras, PTZ, snapshots, recordings, live video, talk, events, control, automations, webhooks), a maximum role, expiry and requests per minute. Creating one requires two-factor authentication.

    In pilot
  • TypeScript and Python SDKs

    Types for every endpoint, one error per case, retries that honour Retry-After, and helpers to wait for a camera to come online or a command to finish.

    In pilot
  • Signed webhooks

    Camera events and vision results, with an HMAC signature, a 5-minute window, retries, and automatic disabling if your server stops answering.

    In pilot
  • Control lease

    Your system takes a camera for a few minutes: automations that would move it are skipped and the panel shows who holds it. An administrator can release it.

    In pilot
  • API and automations

    List, enable, disable and run automations. Every change records its actor: a person, an automation or your key.

    In pilot
  • Bilingual portal

    Getting started, keys and scopes, REST reference, SDK guides, events, limits and changelog, in English and Spanish.

    In pilot

In a few lines

TypeScript, with the SDK: enroll a camera, wait for it to connect, move it and take a snapshot.

Open the developer portal

import { TeroVision } from '@terovision/sdk';

const tv = new TeroVision({ apiKey: process.env.TEROVISION_API_KEY });
const { camera } = await tv.cameras.create({ name: 'Warehouse' });
await tv.cameras.waitOnline(camera.id);
await tv.ptz.move(camera.id, 'left');
const shot = await tv.snapshots.take(camera.id);
TypeScript, with the SDK: enroll a camera, wait for it to connect, move it and take a snapshot.

The same rules as the panel

In pilot

  • A key acts as the person who created it, with the lower of the two roles, and stops working if that person leaves the space.
  • The key goes only in the header; in the URL it is rejected.
  • Everything lands in the chained audit log, with the key’s name.
  • Your system never talks to the video server or sees its credentials.

Not yet: editing automation graphs through the API, and test keys against a sandbox space.

Shall we try it with your cameras?

We show you the panel running and build the first automations for your place together. Whatever is in pilot gets tested with you before we promise it.