curl --request GET \
--url https://acusight.io/api/core/devices \
--header 'Authorization: Bearer <token>'import requests
url = "https://acusight.io/api/core/devices"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://acusight.io/api/core/devices', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://acusight.io/api/core/devices",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://acusight.io/api/core/devices"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://acusight.io/api/core/devices")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://acusight.io/api/core/devices")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body[
{
"auto_assign_to": 123,
"compose_file_path": "<string>",
"config_last_sync": "<string>",
"created_at": "<string>",
"device_id": "<string>",
"device_type": "<string>",
"edge_key": "<string>",
"hls_port": 123,
"id": 123,
"ip_address": "<string>",
"last_seen": "<string>",
"last_snapshot_at": "<string>",
"name": "<string>",
"organization_id": "<string>",
"pipelines": [
{
"auto_assign_to": 123,
"config": [
123
],
"config_synced_at": "<string>",
"created_at": "<string>",
"current_config": [
123
],
"current_topology": [
123
],
"description": "<string>",
"desired_config": [
123
],
"device": "<unknown>",
"device_id": "<string>",
"hls_port": 123,
"id": 123,
"last_snapshot_at": "<string>",
"name": "<string>",
"organization_id": "<string>",
"pipeline_id": "<string>",
"running_model_version_id": 123,
"status": "<string>",
"stream_path": "<string>",
"target_model_version_id": 123,
"updated_at": "<string>",
"video_source_type": "<string>",
"video_source_url": "<string>",
"webrtc_port": 123
}
],
"portainer_endpoint_id": 123,
"provisioned_at": "<string>",
"provisioned_by": "<string>",
"running_model": {
"alias": "<string>",
"archived_at": "<string>",
"artifact_uri": "<string>",
"class_labels": [
123
],
"created_at": "<string>",
"display_name": "<string>",
"format": "<string>",
"framework": "<string>",
"id": 123,
"is_reference": true,
"model_type": "<string>",
"project_id": 123,
"source_model_version_id": 123,
"updated_at": "<string>",
"version": 123,
"version_id": 123
},
"running_model_version_id": 123,
"status": "<string>",
"stream_path": "<string>",
"target_model": {
"alias": "<string>",
"archived_at": "<string>",
"artifact_uri": "<string>",
"class_labels": [
123
],
"created_at": "<string>",
"display_name": "<string>",
"format": "<string>",
"framework": "<string>",
"id": 123,
"is_reference": true,
"model_type": "<string>",
"project_id": 123,
"source_model_version_id": 123,
"updated_at": "<string>",
"version": 123,
"version_id": 123
},
"target_model_version_id": 123,
"updated_at": "<string>",
"virtual_device_config": {
"active_track_count": 123,
"batch_size": 123,
"created_at": "<string>",
"current_image_index": 123,
"dataset_format": "<string>",
"dataset_path": "<string>",
"dataset_version_id": 123,
"device_id": "<string>",
"event_frequency": 123,
"event_types": "<string>",
"id": 123,
"loop": true,
"max_concurrent_tracks": 123,
"random_order": true,
"simulation_mode": "<string>",
"simulation_status": "<string>",
"total_events_sent": 123,
"total_images": 123,
"total_images_uploaded": 123,
"track_max_duration": 123,
"track_min_duration": 123,
"updated_at": "<string>",
"upload_frequency": 123
},
"webrtc_port": 123
}
]{}List devices
List all registered devices with optional filtering and pagination
curl --request GET \
--url https://acusight.io/api/core/devices \
--header 'Authorization: Bearer <token>'import requests
url = "https://acusight.io/api/core/devices"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://acusight.io/api/core/devices', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://acusight.io/api/core/devices",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://acusight.io/api/core/devices"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://acusight.io/api/core/devices")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://acusight.io/api/core/devices")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body[
{
"auto_assign_to": 123,
"compose_file_path": "<string>",
"config_last_sync": "<string>",
"created_at": "<string>",
"device_id": "<string>",
"device_type": "<string>",
"edge_key": "<string>",
"hls_port": 123,
"id": 123,
"ip_address": "<string>",
"last_seen": "<string>",
"last_snapshot_at": "<string>",
"name": "<string>",
"organization_id": "<string>",
"pipelines": [
{
"auto_assign_to": 123,
"config": [
123
],
"config_synced_at": "<string>",
"created_at": "<string>",
"current_config": [
123
],
"current_topology": [
123
],
"description": "<string>",
"desired_config": [
123
],
"device": "<unknown>",
"device_id": "<string>",
"hls_port": 123,
"id": 123,
"last_snapshot_at": "<string>",
"name": "<string>",
"organization_id": "<string>",
"pipeline_id": "<string>",
"running_model_version_id": 123,
"status": "<string>",
"stream_path": "<string>",
"target_model_version_id": 123,
"updated_at": "<string>",
"video_source_type": "<string>",
"video_source_url": "<string>",
"webrtc_port": 123
}
],
"portainer_endpoint_id": 123,
"provisioned_at": "<string>",
"provisioned_by": "<string>",
"running_model": {
"alias": "<string>",
"archived_at": "<string>",
"artifact_uri": "<string>",
"class_labels": [
123
],
"created_at": "<string>",
"display_name": "<string>",
"format": "<string>",
"framework": "<string>",
"id": 123,
"is_reference": true,
"model_type": "<string>",
"project_id": 123,
"source_model_version_id": 123,
"updated_at": "<string>",
"version": 123,
"version_id": 123
},
"running_model_version_id": 123,
"status": "<string>",
"stream_path": "<string>",
"target_model": {
"alias": "<string>",
"archived_at": "<string>",
"artifact_uri": "<string>",
"class_labels": [
123
],
"created_at": "<string>",
"display_name": "<string>",
"format": "<string>",
"framework": "<string>",
"id": 123,
"is_reference": true,
"model_type": "<string>",
"project_id": 123,
"source_model_version_id": 123,
"updated_at": "<string>",
"version": 123,
"version_id": 123
},
"target_model_version_id": 123,
"updated_at": "<string>",
"virtual_device_config": {
"active_track_count": 123,
"batch_size": 123,
"created_at": "<string>",
"current_image_index": 123,
"dataset_format": "<string>",
"dataset_path": "<string>",
"dataset_version_id": 123,
"device_id": "<string>",
"event_frequency": 123,
"event_types": "<string>",
"id": 123,
"loop": true,
"max_concurrent_tracks": 123,
"random_order": true,
"simulation_mode": "<string>",
"simulation_status": "<string>",
"total_events_sent": 123,
"total_images": 123,
"total_images_uploaded": 123,
"track_max_duration": 123,
"track_min_duration": 123,
"updated_at": "<string>",
"upload_frequency": 123
},
"webrtc_port": 123
}
]{}Authorizations
JWT access token. Paste the token only; the Bearer prefix is added automatically.
Query Parameters
Filter by device status
Filter by device type ('physical' or 'virtual')
Filter by deployed model version ID (use 'null' for devices without models)
Number of results to return (default 50, max 500)
Number of results to skip (default 0)
Sort order: 'asc' or 'desc' (default 'desc')
Response
List of devices with metadata
Auto-assign to ProjectID
Path to docker-compose.yml on device
When config was last extracted
"physical" | "virtual"
Temporary storage for Portainer edge key (cleared after deployment)
Edge service configuration (auto-discovered or manual override)
Network configuration for live streaming (WebRTC)
Heartbeat and model tracking
Timestamp of most recent snapshot upload
Multi-tenant fields
Show child attributes
Show child attributes
Links to Portainer endpoint
When device was provisioned via token
Token ID that provisioned this device
Show child attributes
Show child attributes
Actual state — reported by agent
pending, approved, deployed, rejected
Stream path on MediaMTX (default: "sp")
Show child attributes
Show child attributes
Desired state — set on deploy
Relationships
Show child attributes
Show child attributes
MediaMTX WebRTC port (default: 8889)
Was this page helpful?