- Legion API
- Video Streams
- Search video streams
Search video streams
POST
/v3/video/search
const url = 'https://api.hopper.west.prod.govcloud.legion.picogrid.com/v3/video/search?limit=10&offset=0';const options = { method: 'POST', headers: {'Content-Type': 'application/json'}, body: '{"filters":{"entity_ids":["2489E9AD-2EE2-8E00-8EC9-32D5F69181C0"],"is_active":true,"protocols":["example"]},"sort":[{"field":"created_at","order":"asc"}]}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request POST \ --url 'https://api.hopper.west.prod.govcloud.legion.picogrid.com/v3/video/search?limit=10&offset=0' \ --header 'Content-Type: application/json' \ --data '{ "filters": { "entity_ids": [ "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0" ], "is_active": true, "protocols": [ "example" ] }, "sort": [ { "field": "created_at", "order": "asc" } ] }'Search for video streams within an organization using various filters. System admins may search any organization by supplying its ID in the org context header.
Parameters
Section titled “Parameters”Query Parameters
Section titled “Query Parameters”limit
integer
Example
10offset
integer
Example
0Request Bodyrequired
Section titled “Request Bodyrequired”Media typeapplication/json
object
filters
object
entity_ids
Array<string>
is_active
boolean
protocols
Array<string>
sort
Array<object>
object
field
required
string
Example
created_atorder
required
string
Example
descResponses
Section titled “Responses”Successful response
Media typeapplication/json
object
paging
required
object
next
required
integer | null
previous
required
integer | null
results
required
Array<object>
object
created_at
required
string
entity_id
required
string format: uuid
has_recordings
required
boolean
id
required
string format: uuid
is_active
required
boolean
last_recording_at
string
metadata
object
organization_id
required
string format: uuid
playback_endpoints
object
key
additional properties
string
playback_url
string
protocol
required
string
publish_url
string
stream_name
required
string
updated_at
required
string
total_count
required
integer
Example
{ "paging": { "next": 2, "previous": null }, "results": [ { "created_at": "2024-01-15T11:00:00Z", "entity_id": "d4e5f6a1-b2c3-7890-1234-567890abcdef", "has_recordings": true, "is_active": true, "last_recording_at": "2024-03-11T16:00:00Z", "metadata": { "camera_type": "PTZ", "frame_rate": 30, "night_vision": true, "zoom_level": "10x" }, "organization_id": "550e8400-e29b-41d4-a716-446655440000", "protocol": "rtsp", "stream_name": "drone_primary_feed", "updated_at": "2024-03-11T16:00:00Z" } ], "total_count": 8}Bad Request
Media typeapplication/json
object
category
required
string
code
required
number
details
Array<object>
object
field
required
string
issue
required
string
message
required
string
status
required
string
timestamp
required
string
trace_id
required
string
Example
{ "code": 400, "details": [ { "Field": "organization_id", "Issue": "must be a valid UUID format" } ], "message": "Request cannot be processed due to invalid input", "status": "error", "timestamp": "2026-01-15T14:32:45Z", "trace_id": "req_2J9K8L7M6N5P4Q3R"}Unauthorized
Media typeapplication/json
object
category
required
string
code
required
number
details
Array<object>
object
field
required
string
issue
required
string
message
required
string
status
required
string
timestamp
required
string
trace_id
required
string
Example
{ "code": 401, "details": [ { "Field": "authorization_header", "Issue": "Bearer token is expired or malformed" } ], "message": "Authentication credentials are missing or invalid", "status": "error", "timestamp": "2026-01-15T14:32:45Z", "trace_id": "req_2J9K8L7M6N5P4Q3R"}Forbidden
Media typeapplication/json
object
category
required
string
code
required
number
details
Array<object>
object
field
required
string
issue
required
string
message
required
string
status
required
string
timestamp
required
string
trace_id
required
string
Example
{ "code": 403, "details": [ { "Field": "required_scope", "Issue": "requires 'orion:settings:write' scope, but token only has 'orion:settings:read'" } ], "message": "Access denied: insufficient permissions for this resource", "status": "error", "timestamp": "2026-01-15T14:32:45Z", "trace_id": "req_2J9K8L7M6N5P4Q3R"}Not Found
Media typeapplication/json
object
category
required
string
code
required
number
details
Array<object>
object
field
required
string
issue
required
string
message
required
string
status
required
string
timestamp
required
string
trace_id
required
string
Example
{ "code": 404, "details": [ { "Field": "organization_id", "Issue": "organization with ID 'a1b2c3d4-e5f6-7890-abcd-ef1234567890' not found" } ], "message": "The requested resource could not be found", "status": "error", "timestamp": "2026-01-15T14:32:45Z", "trace_id": "req_2J9K8L7M6N5P4Q3R"}Internal Server Error
Media typeapplication/json
object
category
required
The category of the error
string
code
required
The HTTP status code
number
details
Additional details about the error
Array<object>
object
field
The field that caused the error
string
issue
The specific issue with the field
string
message
required
A human-readable error message
string
status
required
The status of the response, always ‘error’ for error responses
string
timestamp
required
The timestamp when the error occurred
string format: date-time
trace_id
required
A unique identifier for tracing the error
string format: uuid
Example
{ "category": "server_error", "code": 500, "details": [ { "field": "field_name", "issue": "Field validation issue" } ], "message": "Internal Server Error", "status": "error", "timestamp": "2024-03-15T10:30:00Z", "trace_id": "b7c5e4d3-a2b1-4f0e-8d9c-1a2b3c4d5e6f"}Version 3.14.0 · commit 0771262
