Skip to content
  • There are no suggestions because the search field is empty.

Verkada Command Integration

Import cameras from Verkada Command for inventory and budgeting, and optionally use K12Panel as the system of record for Verkada access-control users.

Verkada Command Integration

K12Panel integrates with Verkada Command in two ways. You can use one or both:

  • Import cameras from Verkada Command for inventory management and budgeting. This requires a read-only API key.
  • Provision and deprovision access-control users in Verkada Command, letting K12Panel act as the system of record for the Verkada access-control user list. This requires a read/write API key.

Before You Start

  • If you plan to import cameras, create an Asset Class for cameras (Settings → Asset Classes & Service Duration).
  • Create a Verkada API key with the right scopes (see below).
  • Configure the Verkada integration in K12Panel for camera import, user provisioning, or both.

Create a Verkada API Key

  • Sign in to Verkada Command as an organization admin.
  • Go to Admin → Org Settings → Verkada API and create a new API key. Copy it somewhere temporary.
  • Choose the scopes based on what you want to do:
    • Importing cameras only: read-only access to Cameras.
    • Provisioning users: read access to Access Control and read/write access to Core Command.

A single key can carry both camera-read and user-provisioning scopes if you intend to do both.

Configure the Integration in K12Panel

  • In K12Panel, open Integrations and select Verkada.
  • Enter the API Key you generated.

Use user provisioning carefully. Creating and removing access-control users is powerful. Test with a small People Group before expanding to larger populations.

Option A: Import Cameras

How cameras map to Sites

An imported camera is placed in the K12Panel Site whose name matches its Verkada Site. If no matching Site exists, the camera lands in your root organizational Site. Recommended practices:

  • Give every Verkada Site a unique name (e.g., “High School Gym” and “Middle School Gym,” not two “Gym” sites).
  • Create matching K12Panel Sites so cameras import into the right place.
  • A camera sitting in the K12Panel root can be relocated automatically by a future sync once a matching Site exists — so create the Site and re-sync.
  • A camera already in a K12Panel subsite is never moved automatically by later syncs. To relocate it, move it by hand, or return it to the root Site and re-sync.

Option B: Provision Access-Control Users

The user provision/deprovision feature is currently disabled. The Verkada API does not properly honor disabling staff, so this feature is paused until Verkada’s API correctly handles disabling and re-enabling users. The information below describes how it works when enabled.

Once a K12Panel person is matched to a Verkada user, K12Panel controls provisioning and deprovisioning for that person (while the corresponding checkboxes are enabled). You can confirm a match on the Person record in K12Panel: matched People show a Verkada ID attribute holding the matched Verkada user UUID.

Related

If a sync returns an API error (401, 403, or 500), see the FAQ article on Verkada API response errors.

Common Questions

Can I import cameras without provisioning users?
Yes. Camera import needs only a read-only Cameras API key.

Why did my cameras land in the root site?
No K12Panel Site matched the Verkada Site name. Create matching Sites and re-sync.

Is user provisioning available?
It is currently disabled until Verkada's API correctly handles disabling and re-enabling users.

What API scopes do I need?
Read Cameras to import; Read Access Control plus Read/Write Core Command to provision users.

Will a future sync move a camera I placed in a subsite?
No. Cameras already in a subsite are never relocated automatically.