Cisco Meraki Camera API
The camera API from Cisco Meraki — 29 operation(s) for camera.
The camera API from Cisco Meraki — 29 operation(s) for camera.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/cisco-meraki-camera-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
openapi: 3.0.1
info:
title: Meraki Dashboard API — camera
description: 'A RESTful API to programmatically manage and monitor Cisco Meraki networks at scale.
> Date: 05 August, 2026
>
> [Recent Updates](https://meraki.io/whats-new/)
---
[API Documentation](https://meraki.io/api)
[Community Support](https://meraki.io/community)
[Meraki Homepage](https://www.meraki.com)
'
contact:
name: Meraki Developer Community
url: https://meraki.io/community
version: 1.73.0
x-provenance:
method: harvested
authored_by: Cisco Meraki
harvested_by: API Evangelist
harvested_on: '2026-08-19'
first_party: true
note: Published by Cisco. Retrieved unmodified except for this x-provenance block.
provider_published: true
derived_view: Per-first-tag view of the source document, tag 'camera'. Operations and schemas are the provider's, unmodified.
x-evidence:
- type: source
url: https://github.com/meraki/openapi/blob/master/openapi/spec3.json
- type: raw
url: https://raw.githubusercontent.com/meraki/openapi/master/openapi/spec3.json
- type: alternate
url: https://api.meraki.com/api/v1/openapiSpec
servers:
- url: https://api.meraki.com/{basePath}
variables:
basePath:
default: api/v1
security:
- meraki_api_key: []
- bearerAuth: []
tags:
- name: camera
paths:
/devices/{serial}/camera/analytics/live:
get:
deprecated: true
description: Returns live state from camera analytics zones
operationId: getDeviceCameraAnalyticsLive
parameters:
- name: serial
in: path
description: Serial
schema:
type: string
required: true
responses:
'200':
description: Successful operation
content:
application/json:
schema:
type: object
properties:
ts:
type: string
description: The current time
zones:
type: object
properties:
zoneId:
type: object
properties:
person:
type: integer
description: The count per type, dynamic
description: The zone state, dynamic
description: The zones state
example:
ts: '2018-08-15T18:32:38.123Z'
zones:
zoneId:
person: 0
summary: Returns live state from camera analytics zones
tags:
- camera
- monitor
- analytics
- live
x-deprecation-notice: 'Deprecated: This operation has been marked as deprecated. For more information, visit the <a
href=''https://developer.cisco.com/meraki/api-v1/deprecated-operations/''>deprecated operations page</a>'
/devices/{serial}/camera/analytics/overview:
get:
deprecated: true
description: Returns an overview of aggregate analytics data for a timespan
operationId: getDeviceCameraAnalyticsOverview
parameters:
- name: serial
in: path
description: Serial
schema:
type: string
required: true
- name: t0
in: query
description: The beginning of the timespan for the data. The maximum lookback period is 365 days from today.
schema:
type: string
- name: t1
in: query
description: The end of the timespan for the data. t1 can be a maximum of 7 days after t0.
schema:
type: string
- name: timespan
in: query
description: The timespan for which the information will be fetched. If specifying timespan, do not specify parameters
t0 and t1. The value must be in seconds and be less than or equal to 7 days. The default is 1 hour.
schema:
type: number
format: float
maximum: 604800
- name: objectType
in: query
description: '[optional] The object type for which analytics will be retrieved. The default object type is person.
The available types are [person, vehicle].'
schema:
type: string
enum:
- person
- vehicle
responses:
'200':
description: Successful operation
content:
application/json:
schema:
type: array
items:
type: object
properties:
startTs:
type: string
format: date-time
description: The start time
endTs:
type: string
format: date-time
description: The end time
zoneId:
type: integer
description: The zone id
entrances:
type: integer
description: The number of sentrances
averageCount:
type: number
format: float
description: The average count
example:
- startTs: '2018-08-15T18:32:38.123Z'
endTs: '2018-08-15T18:33:38.123Z'
zoneId: 0
entrances: 254
averageCount: 5.0
summary: Returns an overview of aggregate analytics data for a timespan
tags:
- camera
- monitor
- analytics
- overview
x-deprecation-notice: 'Deprecated: This operation has been marked as deprecated. For more information, visit the <a
href=''https://developer.cisco.com/meraki/api-v1/deprecated-operations/''>deprecated operations page</a>'
/devices/{serial}/camera/analytics/recent:
get:
deprecated: true
description: Returns most recent record for analytics zones
operationId: getDeviceCameraAnalyticsRecent
parameters:
- name: serial
in: path
description: Serial
schema:
type: string
required: true
- name: objectType
in: query
description: '[optional] The object type for which analytics will be retrieved. The default object type is person.
The available types are [person, vehicle].'
schema:
type: string
enum:
- person
- vehicle
responses:
'200':
description: Successful operation
content:
application/json:
schema:
type: array
items:
type: object
properties:
startTs:
type: string
format: date-time
description: The start time
endTs:
type: string
format: date-time
description: The end time
zoneId:
type: integer
description: The zone id
entrances:
type: integer
description: The number of entrances
averageCount:
type: number
format: float
description: The average count
example:
- startTs: '2018-08-15T18:32:38.123Z'
endTs: '2018-08-15T18:33:38.123Z'
zoneId: 0
entrances: 10
averageCount: 2.54
summary: Returns most recent record for analytics zones
tags:
- camera
- monitor
- analytics
- recent
x-deprecation-notice: 'Deprecated: This operation has been marked as deprecated. For more information, visit the <a
href=''https://developer.cisco.com/meraki/api-v1/deprecated-operations/''>deprecated operations page</a>'
/devices/{serial}/camera/analytics/zones:
get:
deprecated: true
description: Returns all configured analytic zones for this camera
operationId: getDeviceCameraAnalyticsZones
parameters:
- name: serial
in: path
description: Serial
schema:
type: string
required: true
responses:
'200':
description: Successful operation
content:
application/json:
schema:
type: array
items:
type: object
properties:
id:
type: string
description: The zone ID
type:
type: string
description: The zone type
label:
type: string
description: The zone label
regionOfInterest:
type: object
properties:
x0:
type: string
description: The x0 coordinate
y0:
type: string
description: The y0 coordinate
x1:
type: string
description: The x1 coordinate
y1:
type: string
description: The y1 coordinate
description: The region of interest
example:
- id: '0'
type: occupancy
label: Full Frame
regionOfInterest:
x0: '0.00'
y0: '0.00'
x1: '1.00'
y1: '1.00'
security:
- oauth2:
- camera:config:read
summary: Returns all configured analytic zones for this camera
tags:
- camera
- monitor
- analytics
- zones
x-deprecation-notice: 'Deprecated: This operation has been marked as deprecated. For more information, visit the <a
href=''https://developer.cisco.com/meraki/api-v1/deprecated-operations/''>deprecated operations page</a>'
/devices/{serial}/camera/analytics/zones/{zoneId}/history:
get:
deprecated: true
description: Return historical records for analytic zones
operationId: getDeviceCameraAnalyticsZoneHistory
parameters:
- name: serial
in: path
description: Serial
schema:
type: string
required: true
- name: zoneId
in: path
description: Zone ID
schema:
type: string
required: true
- name: t0
in: query
description: The beginning of the timespan for the data. The maximum lookback period is 365 days from today.
schema:
type: string
- name: t1
in: query
description: The end of the timespan for the data. t1 can be a maximum of 14 hours after t0.
schema:
type: string
- name: timespan
in: query
description: The timespan for which the information will be fetched. If specifying timespan, do not specify parameters
t0 and t1. The value must be in seconds and be less than or equal to 14 hours. The default is 1 hour.
schema:
type: number
format: float
maximum: 50400
- name: resolution
in: query
description: 'The time resolution in seconds for returned data. The valid resolutions are: 60. The default is 60.'
schema:
type: integer
- name: objectType
in: query
description: '[optional] The object type for which analytics will be retrieved. The default object type is person.
The available types are [person, vehicle].'
schema:
type: string
enum:
- person
- vehicle
responses:
'200':
description: Successful operation
content:
application/json:
schema:
type: array
items:
type: object
properties:
startTs:
type: string
format: date-time
description: The start time
endTs:
type: string
format: date-time
description: The end time
entrances:
type: integer
description: The number of entrances
averageCount:
type: number
format: float
description: The average count
example:
- startTs: '2018-08-15T18:32:38.123Z'
endTs: '2018-08-15T18:33:38.123Z'
entrances: 5
averageCount: 1.5
summary: Return historical records for analytic zones
tags:
- camera
- monitor
- analytics
- zones
- history
x-deprecation-notice: 'Deprecated: This operation has been marked as deprecated. For more information, visit the <a
href=''https://developer.cisco.com/meraki/api-v1/deprecated-operations/''>deprecated operations page</a>'
/devices/{serial}/camera/clip:
get:
description: Generate a video clip of up to 5 minutes long.
operationId: clipDeviceCamera
parameters:
- name: serial
in: path
description: Serial
schema:
type: string
required: true
- name: startTimestamp
in: query
required: true
description: The start time for the clip. The timestamp is expected to be in ISO 8601 format.
schema:
type: string
format: date-time
- name: endTimestamp
in: query
required: true
description: The end time for the clip. The timestamp is expected to be in ISO 8601 format.
schema:
type: string
format: date-time
- name: imagerId
in: query
description: The imager ID to query. Required for multi-imager cameras (must be between 1 and the imager count). For
single-imager cameras, must be omitted or set to 0.
schema:
type: integer
responses:
'202':
description: Successful operation
content:
application/json:
schema:
type: object
properties:
url:
type: string
description: Url for the snapshot
expiry:
type: string
description: Expiration details for snapshot image access
example:
url: https://spn4.meraki.com/stream/jpeg/snapshot/b2d123asdf423qd22d2
expiry: Access to the image will expire at 2018-12-11T03:12:39Z.
security:
- oauth2:
- camera:telemetry:write
summary: Generate a video clip of up to 5 minutes long.
tags:
- camera
- monitor
/devices/{serial}/camera/customAnalytics:
get:
description: Return custom analytics settings for a camera
operationId: getDeviceCameraCustomAnalytics
parameters:
- name: serial
in: path
description: Serial
schema:
type: string
required: true
responses:
'200':
description: Successful operation
content:
application/json:
schema:
type: object
properties:
enabled:
type: boolean
description: Whether custom analytics is enabled
artifactId:
type: string
description: Custom analytics artifact ID
parameters:
type: array
items:
type: object
properties:
name:
type: string
description: Name of the parameter
value:
type: number
format: float
description: Value of the parameter
description: Parameters for the custom analytics workload
example:
enabled: true
artifactId: '1'
parameters:
- name: detection_threshold
value: 0.5
security:
- oauth2:
- camera:config:read
summary: Return custom analytics settings for a camera
tags:
- camera
- configure
- customAnalytics
put:
description: Update custom analytics settings for a camera
operationId: updateDeviceCameraCustomAnalytics
parameters:
- name: serial
in: path
description: Serial
schema:
type: string
required: true
requestBody:
content:
application/json:
schema:
type: object
properties:
enabled:
type: boolean
description: Enable custom analytics
artifactId:
type: string
description: The ID of the custom analytics artifact
parameters:
type: array
items:
type: object
properties:
name:
type: string
description: Name of the parameter
value:
type: string
description: Value of the parameter
required:
- name
- value
description: Parameters for the custom analytics workload
example:
enabled: true
artifactId: '1'
parameters:
- name: detection_threshold
value: '0.5'
required: false
responses:
'200':
description: Successful operation
content:
application/json:
schema:
type: object
properties:
enabled:
type: boolean
description: Whether custom analytics is enabled
artifactId:
type: string
description: Custom analytics artifact ID
parameters:
type: array
items:
type: object
properties:
name:
type: string
description: Name of the parameter
value:
type: number
format: float
description: Value of the parameter
description: Parameters for the custom analytics workload
example:
enabled: true
artifactId: '1'
parameters:
- name: detection_threshold
value: 0.5
security:
- oauth2:
- camera:config:write
summary: Update custom analytics settings for a camera
tags:
- camera
- configure
- customAnalytics
/devices/{serial}/camera/generateSnapshot:
post:
description: Generate a snapshot of what the camera sees at the specified time and return a link to that image.
operationId: generateDeviceCameraSnapshot
parameters:
- name: serial
in: path
description: Serial
schema:
type: string
required: true
requestBody:
content:
application/json:
schema:
type: object
properties:
timestamp:
type: string
format: date-time
description: '[optional] The snapshot will be taken from this time on the camera. The timestamp is expected
to be in ISO 8601 format. If no timestamp is specified, we will assume current time.'
fullframe:
type: boolean
description: '[optional] If set to "true" the snapshot will be taken at full sensor resolution. This will
error if used with timestamp.'
example:
timestamp: '2021-04-30T15:18:08Z'
fullframe: false
required: false
responses:
'202':
description: Successful operation
content:
application/json:
schema:
type: object
properties:
url:
type: string
description: Url for the snapshot
expiry:
type: string
description: Expiration details for snapshot image access
example:
url: https://spn4.meraki.com/stream/jpeg/snapshot/b2d123asdf423qd22d2
expiry: Access to the image will expire at 2018-12-11T03:12:39Z.
security:
- oauth2:
- camera:telemetry:write
summary: Generate a snapshot of what the camera sees at the specified time and return a link to that image.
tags:
- camera
- monitor
/devices/{serial}/camera/qualityAndRetention:
get:
description: Returns quality and retention settings for the given camera
operationId: getDeviceCameraQualityAndRetention
parameters:
- name: serial
in: path
description: Serial
schema:
type: string
required: true
responses:
'200':
description: Successful operation
content:
application/json:
schema:
type: object
properties:
profileId:
type: string
description: Quality and retention profile ID; null if not using a profile
nullable: true
motionBasedRetentionEnabled:
type: boolean
description: Whether motion-based retention is enabled
audioRecordingEnabled:
type: boolean
description: Whether audio recording is enabled
restrictedBandwidthModeEnabled:
type: boolean
description: Whether restricted bandwidth mode is enabled
quality:
type: string
description: Video quality; null when the camera's stored configuration cannot be decoded into a documented
quality value
nullable: true
resolution:
type: string
description: Video resolution; null when the camera's stored configuration cannot be decoded into a documented
resolution value
nullable: true
motionDetectorVersion:
type: integer
description: Motion detector version
example:
profileId: '1234'
motionBasedRetentionEnabled: false
audioRecordingEnabled: false
restrictedBandwidthModeEnabled: false
quality: Standard
resolution: 1280x720
motionDetectorVersion: 2
security:
- oauth2:
- camera:config:read
summary: Returns quality and retention settings for the given camera
tags:
- camera
- configure
- qualityAndRetention
put:
description: Update quality and retention settings for the given camera
operationId: updateDeviceCameraQualityAndRetention
parameters:
- name: serial
in: path
description: Serial
schema:
type: string
required: true
requestBody:
content:
application/json:
schema:
type: object
properties:
profileId:
type: string
nullable: true
description: The ID of a quality and retention profile to assign to the camera. The profile's settings will
override all of the per-camera quality and retention settings. If the value of this parameter is null,
any existing profile will be unassigned from the camera.
motionBasedRetentionEnabled:
type: boolean
description: Boolean indicating if motion-based retention is enabled(true) or disabled(false) on the camera.
audioRecordingEnabled:
type: boolean
description: Boolean indicating if audio recording is enabled(true) or disabled(false) on the camera
restrictedBandwidthModeEnabled:
type: boolean
description: Boolean indicating if restricted bandwidth is enabled(true) or disabled(false) on the camera.
This setting does not apply to MV2 cameras.
quality:
type: string
enum:
- Enhanced
- High
- Standard
- Ultra
description: Quality of the camera. Can be one of 'Standard', 'High', 'Enhanced' or 'Ultra'. Not all qualities
are supported by every camera model.
resolution:
type: string
enum:
- 1080x1080
- 1280x720
- 1920x1080
- 2112x2112
- 2688x1512
- 2880x2880
- 3840x2160
description: Resolution of the camera. Can be one of '1280x720', '1920x1080', '1080x1080', '2112x2112',
'2880x2880', '2688x1512' or '3840x2160'.Not all resolutions are supported by every camera model.
motionDetectorVersion:
type: integer
enum:
- 1
- 2
description: The version of the motion detector that will be used by the camera. Only applies to Gen 2 cameras.
Defaults to v2.
example:
profileId: '1234'
motionBasedRetentionEnabled: false
audioRecordingEnabled: false
restrictedBandwidthModeEnabled: false
quality: Standard
resolution: 1280x720
motionDetectorVersion: 2
required: false
responses:
'200':
description: Successful operation
content:
application/json:
schema:
type: object
properties:
profileId:
type: string
description: Quality and retention profile ID; null if not using a profile
nullable: true
motionBasedRetentionEnabled:
type: boolean
description: Whether motion-based retention is enabled
audioRecordingEnabled:
type: boolean
description: Whether audio recording is enabled
restrictedBandwidthModeEnabled:
type: boolean
description: Whether restricted bandwidth mode is enabled
quality:
type: string
description: Video quality; null when the camera's stored configuration cannot be decoded into a documented
quality value
nullable: true
resolution:
type: string
description: Video resolution; null when the camera's stored configuration cannot be decoded into a documented
resolution value
nullable: true
motionDetectorVersion:
type: integer
description: Motion detector version
example:
profileId: '1234'
motionBasedRetentionEnabled: false
audioRecordingEnabled: false
restrictedBandwidthModeEnabled: false
quality: Standard
resolution: 1280x720
motionDetectorVersion: 2
security:
- oauth2:
- camera:config:write
summary: Update quality and retention settings for the given camera
tags:
- camera
- configure
- qualityAndRetention
/devices/{serial}/camera/sense:
get:
description: Returns sense settings for a given camera
operationId: getDeviceCameraSense
parameters:
- name: serial
in: path
description: Serial
schema:
type: string
required: true
responses:
'200':
description: Successful operation
content:
application/json:
schema:
type: object
properties:
senseEnabled:
type: boolean
description: Whether MV Sense is enabled on the camera
mqttBrokerId:
type: string
description: ID of the MQTT broker; null if MQTT is disabled
nullable: true
mqttTopics:
type: array
items:
type: string
description: MQTT topics the camera publishes to
audioDetection:
type: object
properties:
enabled:
type: boolean
description: Whether audio detection is enabled
description: Audio detection configuration
detectionModelId:
type: string
description: ID of the object detection model
nullable: true
example:
senseEnabled: true
mqttBrokerId: '1234'
mqttTopics:
- /merakimv/Q2AA-AAAA-1111/raw_detections
- /merakimv/Q2AA-AAAA-1111/light
audioDetection:
enabled: false
detectionModelId: '1234'
security:
- oauth2:
- camera:config:read
summary: Returns sense settings for a given camera
tags:
- camera
- configure
- sense
put:
description: Update sense settings for the given camera
operationId: updateDeviceCameraSense
parameters:
- name: serial
in: path
description: Serial
schema:
type: string
required: true
requestBody:
content:
application/json:
schema:
type: object
properties:
senseEnabled:
type: boolean
description: Boolean indicating if sense(license) is enabled(true) or disabled(false) on the camera
mqttBrokerId:
type: string
nullable: true
description: The ID of the MQTT broker to be enabled on the camera. A value of null will disable MQTT on
the camera
audioDetection:
type: object
properties:
enabled:
type: boolean
description: Boolean indicating if audio detection is enabled(true) or disabled(false) on the camera
description: The details of the audio detection config.
detectionModelId:
type: string
description: The ID
# --- truncated at 32 KB (175 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/cisco-meraki/refs/heads/main/openapi/cisco-meraki-camera-api-openapi.yml