---
title: Verkada API Integration on Truto
slug: verkada
category: Device Management
canonical: "https://truto.one/integrations/detail/verkada/"
---

# Verkada API Integration on Truto



**Category:** Device Management  
**Status:** Beta

## MCP-ready AI tools

Truto exposes 135 tools for Verkada that AI agents can call directly.

- **create_a_verkada_helix_event** — Create a new Helix event in Verkada Command by specifying attribute values for a previously defined Event Type. Returns: attribute_filters, keywords. Required: camera_id, event_type_uid, time_ms. Not all attribute keys tied to the Event Type need to be provided.
- **verkada_helix_events_search** — Search for Helix events in Verkada Command by camera, event type, time range, keywords, or attribute filters. Returns matching events with camera_id, event_type_uid, time_ms, attributes, and flagged for each result. No required parameters beyond authentication.
- **verkada_helix_events_bulk_create** — Create multiple Helix events in a single asynchronous batch request in Verkada Command. Returns: attribute_filters, keywords. Required: items. Maximum 1,000 events per batch; events are processed asynchronously and the 202 response signals the job is queued, not completed.
- **list_all_verkada_helix_events** — Retrieve a single Verkada Helix Event posted to Command by specifying its camera, event type, and exact event timestamp. Returns: attribute_filters, keywords. Required: camera_id, time_ms, event_type_uid.
- **verkada_helix_events_bulk_delete** — Delete a Helix event from Verkada Command. Returns an empty 200 response on success. Required: camera_id, time_ms, event_type_uid.
- **verkada_helix_events_bulk_update** — Update an existing Helix event in Verkada Command, useful for adding or changing attribute keys and values on a posted event. Returns: attribute_filters, keywords. Required: camera_id, time_ms, event_type_uid.
- **list_all_verkada_helix_event_types** — List all Verkada Helix Event Types in a Command organization, optionally filtered by event type UID or name. Returns: event_type_uid, name, event_schema.
- **create_a_verkada_helix_event_type** — Create a new Verkada Helix Event Type by defining its name and event schema. This is the required first step for using Verkada Helix. Returns: attribute_filters, keywords. Required: name, event_schema.
- **verkada_helix_event_types_bulk_delete** — Delete a Verkada Helix Event Type from Command by event_type_uid. All Helix Events linked to that Event Type UID are also deleted from Command. Returns an empty 200 response on success. Required: event_type_uid.
- **verkada_helix_event_types_bulk_update** — Update a Verkada Helix Event Type — add attribute keys to the event schema or change its name. Returns: attribute_filters, keywords. Required: event_type_uid.
- **get_single_verkada_batch_job_by_id** — Get the status of an asynchronous Verkada Helix batch job by id. Returns: status, failed_items, failure_file_url. Required: id.
- **list_all_verkada_camera_alerts** — List Verkada camera alert notifications (events) generated within a Command organization, ordered by time. Returns: camera_id, created, crowd_threshold, image_url, notification_type, objects, person_label, video_url. Optional filters: start_time, end_time, notification_type, include_image_url. Default time range is the last hour; max page_size is 200.
- **verkada_camera_analytics_get_max_object_counts** — Get the maximum concurrent people and vehicle detection counts for a Verkada camera at a specific timestamp or over a time range. Returns: time, people_count, vehicle_count. Required: camera_id. Only supported for 2nd and 3rd generation Verkada cameras.
- **verkada_camera_analytics_get_object_counts** — Get time-stamped people and vehicle detection counts for a Verkada camera over a time range. Returns: time, people_count, vehicle_count. Required: camera_id. Counts are derived from periodic thumbnails and may under-represent actual counts in high-traffic areas.
- **list_all_verkada_occupancy_trends** — List Verkada occupancy trend data points for a specific camera and preset. Returns: time, count. Required: camera_id, preset_id. The camera must have Occupancy Trends enabled in Command. The type parameter is deprecated; use preset_id instead.
- **verkada_occupancy_trends_list_cameras** — List Verkada cameras that have Occupancy Trends enabled in Command. Returns: camera_id, name.
- **verkada_dashboard_widgets_query_trends** — Query Verkada operational dashboard widget trends by dashboard id with optional time range, interval, site, and widget filters. Returns: data. Required: dashboard_id.
- **verkada_mqtt_configs_set** — Set the MQTT broker configuration for a Verkada camera to publish real-time Object Position Events (people and vehicle detections) to an MQTT server. Returns: camera_id, broker_host_port, broker_cert, client_username. Required: broker_cert, broker_host_port, camera_id. Only ports 443, 123, and 53 are supported.
- **list_all_verkada_mqtt_configs** — Get the MQTT broker configuration currently set for a Verkada camera's Object Position Events. Returns: camera_id, broker_host_port, broker_cert, client_username. Required: camera_id. The configured password is never returned in the response.
- **list_all_verkada_lpr_images** — List detected license plate numbers, timestamps, and images from a Verkada LPR camera. Returns: camera_id, created, detected, license_plate_number, confidence, crop, image_url, license_plate_state. Required: camera_id. Max page_size is 200 (defaults to 100); retrieval is limited to one camera per request.
- **delete_a_verkada_license_plates_of_interest_by_id** — Delete a License Plate of Interest (LPOI) from a Verkada Command organization. The `license_plate` value must be an exact match of the LPOI profile in Command, otherwise the plate will not be deleted. Required: license_plate. Returns an empty 200 response on success.
- **list_all_verkada_license_plates_of_interest** — List all active License Plates of Interest (LPOI) in a Verkada Command organization. Returns: license_plate, description, created_at. Deleted LPOI profiles are excluded from the response.
- **create_a_verkada_license_plates_of_interest** — Create a License Plate of Interest (LPOI) in Verkada Command by providing the exact license plate number and a description. Returns: license_plate, description, created_at. Required: license_plate, description.
- **verkada_license_plates_of_interest_bulk_delete** — Delete multiple License Plates of Interest (LPOI) in Verkada Command by uploading a CSV file containing the license plates to remove. The CSV file must include a "License Plate" column header. Returns an empty 200 response on success. Required: file.
- **verkada_license_plates_of_interest_bulk_create** — Bulk create License Plates of Interest in Verkada by uploading a CSV file. The CSV column headers must be "License Plate" and "Name" for creating LPOIs. Returns a 200 OK response on success. Required: file.
- **verkada_license_plates_of_interest_bulk_update** — Update the description of an existing License Plate of Interest (LPOI) in Verkada Command. Returns: license_plate, description. Required: license_plate, description.
- **list_all_verkada_lpr_timestamps** — List detection timestamps for a specific license plate on a single Verkada LPR camera. Returns an array of Unix timestamps, one per detection of the requested plate. Required: camera_id, license_plate. Only one camera can be queried per request.
- **list_all_verkada_lpr_zones** — List all LPR Zones in your Verkada Command organization. Returns: zone_id, zone_name, created_at, updated_at, preview_camera_id.
- **verkada_lpr_zones_get_metrics** — Get top-level metrics for a Verkada LPR Zone within a specified time range. Returns: occupancy, entries, exits, unique_visitors, median_time_in_zone, max_time_in_zone, avg_time_in_zone. Required: zone_id, start_time, end_time.
- **verkada_lpr_zones_list_records** — List all visit records for a Verkada LPR Zone within a specified time range. Returns: license_plate, entry_time, entry_camera_id, exit_time, exit_camera_id, dwell_time, vehicle_status, plate_thumbnail_url, vehicle_thumbnail_url, invalid. Required: zone_id. Defaults to the last 24 hours if no time range is specified.
- **verkada_camera_audio_set** — Set the audio status (enabled or disabled) for a Verkada camera. Returns: camera_id, enabled. Required: camera_id, enabled.
- **list_all_verkada_camera_audio** — Get the audio status for a Verkada camera. Returns: camera_id, enabled. Required: camera_id.
- **verkada_cloud_backup_set** — Configure cloud backup settings for a Verkada camera, including upload schedule, retention days, video quality, and footage type. Returns: camera_id, days_to_preserve, enabled, time_to_preserve, upload_timeslot, video_quality, video_to_upload. Required: camera_id, days_to_preserve, enabled, time_to_preserve, upload_timeslot, video_quality, video_to_upload.
- **list_all_verkada_cloud_backup** — Get cloud backup settings for a Verkada camera. Returns: camera_id, days_to_preserve, enabled, time_to_preserve, upload_timeslot, video_quality, video_to_upload. Required: camera_id.
- **list_all_verkada_cameras** — List all cameras in your Verkada Command organization. Returns: camera_id, cloud_retention, date_added, device_retention, firmware, firmware_update_schedule, last_online, local_ip, location, location_angle, location_lat, location_lon, mac, model, name, people_history_enabled, serial, site, site_id, status, timezone, vehicle_history_enabled. Supports pagination (max 200 per page, defaults to 100).
- **verkada_footage_get_link** — Get a Verkada footage viewing link for a specific camera. If no timestamp is provided, a live link is returned; otherwise a historical footage link is returned. Returns: url. Required: camera_id. The link expires after 30 days.
- **verkada_footage_get_token** — Get a Verkada streaming token for viewing live or historical camera footage. Returns: jwt, accessibleCameras, accessibleSites. The accessibleCameras and accessibleSites fields can be omitted from the response via the exclude_accessible_resources parameter.
- **verkada_footage_stream** — Stream live or historical Verkada camera footage. Returns the HLS playlist or video segment binary stream. Required: stream_id, org_id, camera_id, jwt. For live footage, set start_time and end_time to 0; for historical footage, the time range must not exceed 3600 seconds.
- **verkada_thumbnails_get_image** — Get a thumbnail image from a Verkada camera at an approximate timestamp, retrieved from the cloud-based cache. Returns the raw binary data of a JPEG image for the closest available thumbnail. Required: camera_id. High-resolution thumbnails are only generated for cameras that have the timelapse feature enabled in Command.
- **verkada_thumbnails_get_latest** — Get the most recent thumbnail image captured by a Verkada camera, automatically retrieved from the cloud backend. Returns the raw binary data of a JPEG image for the latest available thumbnail. Required: camera_id.
- **verkada_thumbnails_get_link** — Get a time-limited link to a Verkada camera thumbnail at an approximate timestamp, retrieved from the cloud backend. Returns: url. Required: camera_id. The returned link corresponds to the closest available thumbnail, with up to a 5-minute variance when no motion is detected.
- **list_all_verkada_persons_of_interest** — List all Persons of Interest active in a Verkada Command organization. Returns: person_id, label.
- **create_a_verkada_persons_of_interest** — Create a new Verkada Person of Interest from a base64-encoded face image. Returns: person_id, label. Required: base64_image, label.
- **verkada_persons_of_interest_bulk_delete** — Delete a Verkada Person of Interest by person_id. Returns an empty 204 response on success. Required: person_id.
- **verkada_persons_of_interest_bulk_update** — Update the label of a Verkada Person of Interest. Returns: person_id, label. Required: person_id, label.
- **list_all_verkada_access_groups** — List Verkada access groups. Returns: group_id, name, external_id.
- **get_single_verkada_access_group_by_id** — Get a Verkada access group by group_id. Returns: name, door_status, weekday. Required: group_id.
- **create_a_verkada_access_group** — Create a new access group in Verkada. Returns: name, door_status, weekday. Required: name.
- **verkada_access_groups_remove_user** — Remove a user from a Verkada access group. Returns an empty 200 response on success. Required: group_id.
- **verkada_access_groups_add_user** — Add a user to a Verkada access group by providing the group identifier and either the Verkada user_id or an external_id. Returns an empty 200 response on success. Required: group_id. Either user_id or external_id must be supplied to identify the user.
- **verkada_access_groups_bulk_delete** — Delete a Verkada access group by group_id. Returns an empty 204 response on success. Required: group_id.
- **list_all_verkada_access_users** — List Verkada access users (members) for the organization. Returns each user with user_id, email, first_name, last_name, middle_name, phone, external_id, employee_id, company_name, department, department_id, employee_title, employee_type, and name. Set include_visitors to true to include visitor users in the response.
- **get_single_verkada_access_user_by_id** — Get a single Verkada access user by user_id, external_id, email, or employee_id. Returns: user_id, email, first_name, last_name, name, phone, door_status, weekday.
- **verkada_access_users_activate_ble** — Activate Bluetooth Low Energy (BLE) access for a Verkada access user. The user must be identified by providing one of user_id, external_id, email, or employee_id. Returns a 200 OK response on success.
- **verkada_access_users_deactivate_ble** — Deactivate the BLE (Bluetooth) access method for a Verkada access user. Returns a 200 OK response on success. Identify the target user with one of user_id, external_id, email, or employee_id.
- **verkada_access_users_set_end_date** — Set the end date controlling when a Verkada access user's credentials become inactive. The target user is identified by one of user_id, external_id, email, or employee_id. Required: end_date (Unix timestamp in seconds). Returns an empty 200 response on success.
- **verkada_access_users_delete_entry_code** — Delete the keypad entry code (PIN) for a Verkada access user identified by one of user_id, external_id, email, or employee_id. Returns an empty 200 response on success.
- **verkada_access_users_set_entry_code** — Set the keypad entry code (PIN) for a Verkada access user identified by one of user_id, external_id, email, or employee_id. The entry_code must be a string of 4–16 digits unique within the organization. Returns an empty 200 response on success. Required: entry_code.
- **verkada_access_users_send_pass_invite** — Send a Verkada Pass app invite to an access user identified by one of user_id, external_id, email, or employee_id. Returns an empty 200 response on success.
- **verkada_access_users_activate_remote_unlock** — Activate remote unlock for a Verkada access user identified by one of user_id, external_id, email, or employee_id, enabling them to unlock doors remotely via the Pass app. Returns an empty 200 response on success.
- **verkada_access_users_deactivate_remote_unlock** — Deactivate remote unlock for a Verkada access user identified by one of user_id, external_id, email, or employee_id, disabling their ability to unlock doors remotely via the Pass app. Returns an empty 200 response on success.
- **verkada_access_users_set_start_date** — Set the start date for a Verkada access user, controlling when the user's credentials become active. Identify the user by providing one of user_id, external_id, email, or employee_id. Returns an empty 200 response on success. Required: start_date (Unix timestamp in seconds).
- **verkada_access_profile_photos_upload** — Upload a profile photo for a Verkada access user identified by user_id or external_id. Set overwrite to true to replace an existing photo. Returns an empty 200 response on success. Required: file.
- **list_all_verkada_access_profile_photos** — Get the profile photo for a Verkada access user identified by user_id or external_id. Set original to true to retrieve the original uncropped image instead of the cropped version. Returns the profile photo image data (binary response).
- **verkada_access_profile_photos_bulk_delete** — Delete the profile photo for a Verkada access user identified by user_id or external_id. Returns an empty 200 response on success.
- **create_a_verkada_access_card** — Create a new Verkada access card credential for a user with a specified card type and encoding parameters. Returns: door_status, weekday. Required: type.
- **verkada_access_cards_activate** — Activate a Verkada access card credential by setting its active status to true. Returns: door_status, weekday. Required: card_id.
- **verkada_access_cards_deactivate** — Deactivate a Verkada access card credential by setting its active status to false. Returns: door_status, weekday. Required: card_id.
- **verkada_access_cards_bulk_delete** — Delete a Verkada access card credential. Returns an empty 200 response on success. Required: card_id.
- **create_a_verkada_access_license_plate** — Create a Verkada license plate credential for a user. Returns the created credential including license_plate_number, active, external_id, user_id, and name. Required: license_plate_number.
- **verkada_access_license_plates_activate** — Activate a Verkada license plate credential. Returns the updated credential including license_plate_number, active, and user_id. Required: license_plate_number.
- **verkada_access_license_plates_deactivate** — Deactivate a Verkada license plate credential. Returns the updated credential including license_plate_number, active, and user_id. Required: license_plate_number.
- **verkada_access_license_plates_bulk_delete** — Delete a Verkada license plate credential. Returns an empty 200 response on success. Required: license_plate_number.
- **create_a_verkada_access_mfa_code** — Create an MFA code credential for a Verkada access user. Returns a 200 OK response on success with no documented response body. Required: code. Provide external_id or user_id to identify the user.
- **verkada_access_mfa_codes_bulk_delete** — Delete an MFA code credential for a Verkada access user. Returns a 200 OK response on success with no documented response body. Required: code. Provide external_id or user_id to identify the user.
- **verkada_face_unlock_external_users_disable** — Disable face unlock for a Verkada external access user. Returns: org_id, webhook_type, created_at, webhook_id, data. Required: external_id.
- **verkada_face_unlock_external_users_enable_with_photo** — Enable face unlock for a Verkada external access user by copying their profile photo as the face credential. Returns: org_id, webhook_type, created_at, webhook_id, data. Required: external_id.
- **verkada_face_unlock_external_users_invite** — Send a face unlock invitation to a Verkada external access user via email and/or SMS. Returns: org_id, webhook_type, created_at, webhook_id, data. Required: external_id.
- **verkada_face_unlock_external_users_upload_photo** — Upload a photo to create a face unlock credential for a Verkada external access user. Returns: org_id, webhook_type, created_at, webhook_id, data. Required: external_id.
- **verkada_face_unlock_users_disable** — Disable face unlock for a Verkada access user by removing their face credential. Returns an empty 200 response on success. Required: user_id.
- **verkada_face_unlock_users_enable_with_photo** — Enable face unlock for a Verkada access user by copying their existing profile photo as the face credential. Returns an empty 201 response on success. Required: user_id.
- **verkada_face_unlock_users_invite** — Send a face unlock invitation to a Verkada access user through email and/or SMS. Returns an empty 201 response on success. Required: user_id.
- **verkada_face_unlock_users_upload_photo** — Upload a photo to create a face unlock credential for a Verkada access user. Returns an empty 201 response on success. Required: user_id.
- **list_all_verkada_access_levels** — List Verkada Access Levels for the organization. Returns: access_level_id, name, access_groups, access_schedule_events, doors, sites.
- **create_a_verkada_access_level** — Create a new Verkada Access Level granting door access to specified Access Groups across designated sites and doors. Returns: name, door_status, weekday. Required: name, access_groups, access_schedule_events, doors, sites.
- **delete_a_verkada_access_level_by_id** — Delete a Verkada access level by id. Returns an empty response on success. Required: id.
- **get_single_verkada_access_level_by_id** — Get a specific Verkada access level by id. Returns the access level detail including access_level_id, name, access_groups, doors, sites, and access_schedule_events. Required: id.
- **update_a_verkada_access_level_by_id** — Update a Verkada door access level by id. Returns the updated access level including its name, access_groups, doors, sites, and access_schedule_events. Required: id, name, access_groups, access_schedule_events, doors, sites.
- **create_a_verkada_access_schedule_event** — Create a Verkada access schedule event for a door access level, specifying the weekday and time window during which access is granted. Returns: door_status, weekday. Required: access_level_id, start_time, end_time, weekday.
- **delete_a_verkada_access_schedule_event_by_id** — Delete a Verkada access schedule event by id within a door access level. Returns an empty 204 response on success. Required: access_level_id, id.
- **get_single_verkada_access_schedule_event_by_id** — Get a single Verkada access schedule event by id within a door access level. Returns: door_status, weekday. Required: access_level_id, id.
- **update_a_verkada_access_schedule_event_by_id** — Update a Verkada access schedule event by id within a door access level, modifying the weekday, time window, or door status. Returns: door_status, weekday. Required: access_level_id, id, start_time, end_time, weekday.
- **verkada_doors_admin_unlock** — Admin-unlock a Verkada door by providing its door UUID. No user information is required in the request body. Required: door_id. Returns an empty 200 response on success.
- **verkada_doors_user_unlock** — Unlock a Verkada door on behalf of a specific user, evaluating that user's permission to unlock the door. Required: door_id, and either user_id or external_id to identify the user. Returns an empty 200 response on success.
- **list_all_verkada_doors** — List Verkada doors, optionally filtered by specific door IDs or site IDs. Returns each door with its door_id, name, acu_name, acu_id, site, api_control_enabled, and camera_info.
- **list_all_verkada_door_exception_calendars** — List Verkada door exception calendars, optionally filtered by last update time. Returns: calendar_id, name, doors, exceptions, last_updated_at.
- **create_a_verkada_door_exception_calendar** — Create a new Verkada door exception calendar with a name, applied door IDs, and door exceptions. Returns: name, door_status, weekday. Required: name.
- **delete_a_verkada_door_exception_calendar_by_id** — Delete a Verkada door exception calendar by id. Returns an empty 200 response on success. Required: id.
- **get_single_verkada_door_exception_calendar_by_id** — Get a Verkada door exception calendar by id. Returns the calendar object including calendar_id, name, doors (door IDs the calendar's exceptions apply to), and exceptions (door exception entries with date, door_status, start_time, end_time, all_day_default, double_badge, and first_person_in settings). Required: id.
- **update_a_verkada_door_exception_calendar_by_id** — Update a Verkada door exception calendar by id, replacing its name, applied doors, and door exceptions. Returns: name, door_status, weekday. Required: id, name.
- **create_a_verkada_door_exception** — Create a door exception in a Verkada exception calendar. Returns: id, all_day_default, door_status, double_badge, first_person_in. Required: calendar_id, date, start_time, end_time. If all_day_default is TRUE, door_status must be access_controlled and start_time/end_time are auto-set to 00:00:00 and 23:59:59.
- **delete_a_verkada_door_exception_by_id** — Delete a door exception from a Verkada exception calendar by id. Returns an empty 204 response on success. Required: calendar_id, id.
- **get_single_verkada_door_exception_by_id** — Get a specific Verkada door exception by id within an exception calendar. Returns: id, all_day_default, door_status, double_badge, first_person_in. Required: calendar_id, id.
- **update_a_verkada_door_exception_by_id** — Update a Verkada door exception by id within an exception calendar. Returns: id, all_day_default, door_status, double_badge, first_person_in. Required: calendar_id, id, date, start_time, end_time.
- **list_all_verkada_access_events** — List Verkada access control events within a configurable time range, filterable by event type, site, device, or user. Returns: event_id, notification_type, device_id, created, device_type, door_id, direction, input_value, aux_info, user_info, lockdown_info, door_info. Max 200 per page.
- **list_all_verkada_access_scenarios** — List Verkada access scenarios with optional filtering by scenario IDs, site IDs, and scenario types. Returns: scenario_id, scenario_type, site_id. The types parameter is deprecated; use scenario_types instead.
- **verkada_access_scenarios_activate** — Activate a Verkada access scenario by scenario_id, triggering the scenario (e.g., lockdown or evacuate) across its scoped sites. Returns an empty 200 response on success. Required: scenario_id.
- **verkada_access_scenarios_release** — Release an access scenario in Verkada to trigger a door unlock. Returns an empty 200 response on success. Required: scenario_id.
- **list_all_verkada_audit_logs** — List Verkada audit logs within a specified time range. Returns: timestamp, processed_timestamp. Supports filtering by start_time and end_time as Unix timestamps in seconds, with an option to filter by processed_timestamp instead of timestamp for regular polling. Max 200 items per page.
- **create_a_verkada_user** — Create a new Verkada user with profile and organizational attributes. Returns: user_id, external_id, name, email, first_name, middle_name, last_name, phone, company_name, department, department_id, employee_id, employee_title, employee_type.
- **list_all_verkada_users** — List Verkada users, optionally filtered to a specific user by user_id or external_id. Returns: user_id, external_id, name, email, first_name, middle_name, last_name, phone, company_name, department, department_id, employee_id, employee_title, employee_type.
- **verkada_users_bulk_delete** — Delete a Verkada user identified by user_id or external_id. Returns an empty 200 response on success. At least one of user_id or external_id must be provided.
- **verkada_users_bulk_update** — Update an existing Verkada user's profile and organizational attributes. Returns: user_id, external_id, name, email, first_name, middle_name, last_name, phone, company_name, department, department_id, employee_id, employee_title, employee_type. Identify the user with user_id or external_id; at least one must be provided.
- **list_all_verkada_sensor_alerts** — List Verkada sensor alert events for specified sensor devices within a time range. Returns alert event records with id and attributes containing sensor-type-specific alert fields. Required: device_ids. Max 200 per page.
- **list_all_verkada_sensor_data** — List Verkada environment sensor data readings for a device within a specified time range. Returns: time, humidity, motion, noise_level, pm_2_5, pm_4_0, pm_1_0_0, tamper, temperature, tvoc, usa_air_quality_index, vape_index, carbon_dioxide, carbon_monoxide, barometric_pressure, formaldehyde, ambient_light, tvoc_index, heat_index. Required: device_id. Max 200 per page; data stored at 1s intervals…
- **list_all_verkada_guest_events** — List Verkada guest events for a site within a specified time range. Returns: id, event_name, event_address, event_description, event_times, guest_type_id, host_id, invitees, rsvp_enabled, site_id, walk_in_enabled. Required: site_id, start_time, end_time. Max 200 per page.
- **create_a_verkada_guest_event** — Create a new Verkada guest event with specified times, host, and guest type. Returns: id, event_name, event_times, rsvp_enabled, walk_in_enabled. Required: site_id, event_times, guest_type_id, host_id. Up to 30 event time spans allowed, must be within 1 year in the future.
- **delete_a_verkada_guest_event_by_id** — Delete a Verkada guest event by id. Returns an empty 200 response on success. Required: id.
- **get_single_verkada_guest_event_by_id** — Get a single Verkada guest event by id. Returns: id, event_name, event_times, rsvp_enabled, walk_in_enabled. Required: id.
- **list_all_verkada_guest_hosts** — List Guest hosts for a Verkada Guest site, optionally filtered by email. Returns: host_id, full_name, email, student_id, student_number. Required: site_id. Maximum 200 hosts per page.
- **list_all_verkada_approved_lists** — List Verkada guest approved lists, optionally filtered by site. Returns: approved_list_id, site_id. Max 1000 per page.
- **verkada_approved_lists_add_people** — Add people to one or more Verkada guest approved lists. Returns the people array with each person's approved_list_ids, full_name, email, and person_id. Required: people. Max 100 people per request, up to 10 approved list IDs per person.
- **verkada_approved_lists_remove_people** — Remove people from Verkada guest approved lists by person_id or external_id. Returns the people array with approved_list_ids. Required: people. Max 100 people per request.
- **verkada_approved_lists_get_members** — List members of a Verkada guest approved list. Returns: person_id, full_name, email, address, date_of_birth, phone_number, external_id, expiration_timestamp, approved_list_ids. Required: approved_list_id.
- **verkada_approved_lists_reset** — Reset a Verkada guest approved list, removing all its members. Returns: approved_list_id. Required: approved_list_id.
- **create_a_verkada_guest_deny_list** — Create or replace the deny list for a Verkada Guest site by uploading a base64-encoded CSV. Returns a 200 OK response on success with no documented response body fields. Required: site_id, base64_ascii_deny_list_csv.
- **verkada_guest_deny_lists_bulk_delete** — Delete the deny list for a Verkada Guest site. Returns an empty 204 response on success. Required: site_id.
- **list_all_verkada_guest_sites** — List Guest sites in Verkada. Returns each site's site_id and name. No required parameters.
- **list_all_verkada_guest_visits** — List Verkada Guest visits within a time range for a specific site. Returns: visit_id, visit_type, checked_in_time, full_name, email, phone_number, hosts, device_name, is_contactless, site_id. Required: site_id, start_time, end_time. start_time and end_time must be at most one day apart.
- **list_all_verkada_guest_types** — List guest types for a Verkada Guest site. Returns: guest_type_id. Required: site_id. Max 200 per page.
- **list_all_verkada_alarm_devices** — List Verkada Classic Alarm devices for a site. Returns: device_id, device_type, device_name, site_id, site_name, partition_id, partition_name. Required: site_id. Only supported for Classic Alarm devices.
- **list_all_verkada_alarm_sites** — List Verkada Classic Alarm sites, optionally filtered by a comma-delimited set of site IDs. Returns: site_id, site_name. Only supported for Classic Alarm sites.
- **list_all_verkada_viewing_station_devices** — List all viewing station devices in Verkada. Returns a collection of viewing station device records from the organization's Command platform. No required parameters.
- **list_all_verkada_events** — List Verkada events across camera and access control products within a configurable time range. Returns items with event_id, device_id, created, notification_type, and device_type. Filter by product_types, device_ids, event_types, and site_ids. Defaults to the last hour if no time range is specified. Max 200 per page.
- **list_all_verkada_api_token** — Generate a short-lived Verkada API token using the configured API key. Returns: token. The token is valid for 30 minutes and is used to authenticate subsequent Verkada API calls.

## How it works

1. **Link your customer's Verkada account.** Use Truto's frontend SDK; we handle every OAuth and API key flow so you don't need to create the OAuth app.
2. **Authentication is automatic.** Truto refreshes tokens, stores credentials securely, and injects them into every API request.
3. **Call Truto's API to reach Verkada.** The Proxy API is a 1-to-1 mapping of the Verkada API.
4. **Get a unified response format.** Every response uses a single shape, with cursor-based pagination and data in the `result` field.

## Use cases

- **Overlay SaaS events onto Verkada video with Helix** — Retail, manufacturing, and support platforms can push their own transactional or operational events into Verkada Command, making video footage searchable by business context like POS voids, machine faults, or ticket IDs.
- **Automate visitor and workforce access provisioning** — HRIS, IdP, and visitor management platforms can create Verkada users, assign entry codes, activate BLE credentials, and revoke access on offboarding — eliminating manual keycard workflows for facilities teams.
- **Power space utilization analytics with real occupancy data** — Workplace and real estate SaaS platforms can pull camera-based people counts and occupancy trends from Verkada to give customers objective utilization data across their portfolio.
- **Automate yard and gate management with LPR** — Logistics and fleet platforms can consume Verkada LPR zone records to log truck arrivals and dwell times, then trigger gate unlocks programmatically when authorized plates are detected.
- **Centralize GSOC dispatch and emergency response** — Public safety and mass notification platforms can pull camera alerts, sensor alerts, and access events from Verkada — and programmatically activate lockdown or evacuation scenarios during incidents.

## What you can build

- **Bi-directional Helix event sync** — Push, search, update, and delete custom events in Verkada Command so your platform's data becomes a native filter inside the customer's video timeline.
- **Automated credential lifecycle management** — Provision Verkada access users, assign entry codes, activate/deactivate BLE and remote unlock, issue access cards, and enroll Face Unlock — all triggered by lifecycle events in your product.
- **Programmatic door and scenario control** — Ship a remote unlock feature and one-click emergency lockdown by wiring your UI to Verkada's door unlock and access scenario activation endpoints.
- **Real-time occupancy and environmental dashboards** — Embed live people counts, occupancy trends, and sensor readings (temperature, PM2.5, CO2, vape index, noise) from Verkada cameras and sensors directly inside your product.
- **LPR-driven automation workflows** — Manage plates of interest, read LPR zone records with dwell times, and pull plate images to build automated yard, parking, and fleet workflows.
- **Unified physical security audit feed** — Stream access events, guest visits, camera alerts, sensor alerts, and audit logs into your platform to give compliance and security teams a single source of truth.

## FAQs

### How does authentication work for Verkada through Truto?

Verkada uses API key authentication scoped per organization. Your end users provide their Verkada API key during the connection flow in Truto, and Truto handles token exchange, storage, and rotation so you never touch raw credentials.

### Which Verkada products are covered by the available tools?

The integration covers Verkada Command across Cameras (footage, thumbnails, analytics, alerts), Access Control (users, credentials, doors, schedules, scenarios), Helix (custom events), Guest, Alarms, Sensors, LPR, Viewing Stations, and Audit Logs.

### Can I push custom event data into Verkada video timelines?

Yes. Using the Helix event tools you can create single or bulk events, define custom event types with your own fields, and update or delete them later — enabling searchable overlays on Verkada footage.

### How fresh is the data I can pull — is it real-time or polled?

Most Verkada endpoints are REST-based and polled on your schedule (access events, LPR records, sensor data, occupancy trends). For lower-latency device state, Verkada also supports MQTT configuration, which is exposed via the MQTT config tools.

### How does Truto handle pagination and rate limits for Verkada?

Truto normalizes Verkada's cursor-based pagination across list endpoints and manages retries and backoff when Verkada's per-endpoint rate limits are hit, so you receive complete result sets without writing that logic yourself.

### Can I retrieve live video or just metadata?

Both. In addition to metadata (events, alerts, analytics), you can retrieve footage streaming URLs, generate footage tokens and shareable links, and fetch camera thumbnails or the latest thumbnail image on demand.

## Related reading

- [Connect Verkada to ChatGPT: Analyze Security Footage & Event Data](https://truto.one/blog/connect-verkada-to-chatgpt-analyze-security-footage-event-data/) — Learn how to securely connect Verkada to ChatGPT using a managed MCP server. Automate physical security ops, query sensor data, and analyze LPR events with AI.
- [Connect Verkada to Claude: Orchestrate Site Access & Entry Control](https://truto.one/blog/connect-verkada-to-claude-orchestrate-site-access-entry-control/) — Learn how to connect Verkada to Claude using a managed MCP server. Automate site access, review LPR data, and handle video footage with AI tool calling.
- [Connect Verkada to AI Agents: Automate Guest Management & Sensor Logs](https://truto.one/blog/connect-verkada-to-ai-agents-automate-guest-management-sensor-logs/) — Learn how to safely connect Verkada to AI agents using Truto's /tools endpoint. Automate physical security, sensor logs, and guest management workflows.
