REST API endpoints for managing devices, recordings, events, rules, and alerts across your fleet. All endpoints require authentication via API key.
The Fleet API is in preview. Endpoints described on this page may change.
Base URL
All Fleet API requests use the standard Avala API base URL:
https://api.avala.ai/api/v1/fleet
Authenticate every request with your API key in the X-Avala-Api-Key header. See Authentication for details on creating and managing keys.
Devices
Register, list, and manage devices in your fleet.
List Devices
GET /api/v1/fleet/devices/
Returns all devices in your organization.
Query Parameters
Parameter Type Description statusstring Filter by device status: online, offline, maintenance typestring Filter by device type (e.g., manipulator, amr, vehicle) tagsstring Comma-separated tag filter metadatastring JSON-encoded metadata filter (e.g., {"location": "warehouse-1"}) limitinteger Results per page (default: 50, max: 200) cursorstring Pagination cursor
cURL
Python SDK
TypeScript SDK
curl "https://api.avala.ai/api/v1/fleet/devices/?status=online" \
-H "X-Avala-Api-Key: avk_your_api_key"
Response
{
"next" : "https://api.avala.ai/api/v1/fleet/devices/?cursor=eyJpZCI6MTB9" ,
"previous" : null ,
"results" : [
{
"uid" : "dev_a1b2c3d4-e5f6-7890-abcd-ef1234567890" ,
"name" : "robot-alpha-01" ,
"type" : "amr" ,
"status" : "online" ,
"tags" : [ "warehouse" , "floor-2" ],
"last_seen_at" : "2026-02-26T14:30:00Z" ,
"firmware_version" : "2.4.1" ,
"metadata" : {
"model" : "AMR-500" ,
"location" : "Building A"
},
"created_at" : "2025-11-01T08:00:00Z" ,
"updated_at" : "2026-02-26T14:30:00Z"
}
]
}
Register Device
POST /api/v1/fleet/devices/
Register a new device in your fleet.
Request Body
Field Type Required Description namestring Yes Human-readable device name typestring No Device type (e.g., manipulator, amr, drone) firmware_versionstring No Current firmware version tagsarray No Tags for organizing devices metadataobject No Arbitrary key-value metadata
cURL
Python SDK
TypeScript SDK
curl -X POST "https://api.avala.ai/api/v1/fleet/devices/" \
-H "X-Avala-Api-Key: avk_your_api_key" \
-H "Content-Type: application/json" \
-d '{
"name": "robot-alpha-02",
"tags": ["warehouse", "floor-1"],
"metadata": {
"model": "AMR-500",
"location": "Building A"
}
}'
Response 201 Created
{
"uid" : "dev_f7e8d9c0-b1a2-3456-cdef-789012345678" ,
"name" : "robot-alpha-02" ,
"status" : "offline" ,
"tags" : [ "warehouse" , "floor-1" ],
"last_seen_at" : null ,
"firmware_version" : null ,
"metadata" : {
"model" : "AMR-500" ,
"location" : "Building A"
},
"device_token" : "dtk_abc123def456..." ,
"created_at" : "2026-02-26T15:00:00Z" ,
"updated_at" : "2026-02-26T15:00:00Z"
}
The device_token is returned only in the create response. Store it securely — it cannot be retrieved again. The device uses this token to authenticate when uploading recordings.
Get Device
GET /api/v1/fleet/devices/{uid}/
Returns the full details of a single device.
cURL
Python SDK
TypeScript SDK
curl "https://api.avala.ai/api/v1/fleet/devices/dev_a1b2c3d4-e5f6-7890-abcd-ef1234567890/" \
-H "X-Avala-Api-Key: avk_your_api_key"
Update Device
PATCH /api/v1/fleet/devices/{uid}/
Update a device’s name, tags, or metadata. Only provided fields are modified.
Field Type Description namestring Updated device name statusstring Device status: online, offline, maintenance firmware_versionstring Current firmware version tagsarray Replacement tags (replaces all existing tags) metadataobject Replacement metadata (merged with existing)
cURL
Python SDK
TypeScript SDK
curl -X PATCH "https://api.avala.ai/api/v1/fleet/devices/dev_a1b2c3d4-e5f6-7890-abcd-ef1234567890/" \
-H "X-Avala-Api-Key: avk_your_api_key" \
-H "Content-Type: application/json" \
-d '{"tags": ["warehouse", "floor-3"]}'
Deregister Device
DELETE /api/v1/fleet/devices/{uid}/
Remove a device from your fleet. Recordings associated with the device are not deleted.
cURL
Python SDK
TypeScript SDK
curl -X DELETE "https://api.avala.ai/api/v1/fleet/devices/dev_a1b2c3d4-e5f6-7890-abcd-ef1234567890/" \
-H "X-Avala-Api-Key: avk_your_api_key"
Response 204 No Content
Device Fields
Field Type Description uidstring Unique device identifier namestring Human-readable name typestring Device type (e.g., manipulator, amr, drone) statusstring online, offline, or maintenancetagsarray Organization tags last_seen_atstring (ISO 8601) Last heartbeat timestamp firmware_versionstring Reported firmware version metadataobject Arbitrary key-value metadata created_atstring (ISO 8601) Registration timestamp updated_atstring (ISO 8601) Last update timestamp
Recordings
List, filter, and manage recordings uploaded by fleet devices.
List Recordings
GET /api/v1/fleet/recordings/
Returns recordings across your fleet, ordered by creation date descending.
Query Parameters
Parameter Type Description device_idstring Filter by device UID statusstring Filter by status: uploading, processing, ready, error, archived sincestring (ISO 8601) Return recordings created after this timestamp untilstring (ISO 8601) Return recordings created before this timestamp tagsstring Comma-separated tag filter limitinteger Results per page (default: 50, max: 200) cursorstring Pagination cursor
cURL
Python SDK
TypeScript SDK
curl "https://api.avala.ai/api/v1/fleet/recordings/?device_id=dev_a1b2c3d4&status=ready&since=2026-02-01T00:00:00Z" \
-H "X-Avala-Api-Key: avk_your_api_key"
Response
{
"next" : null ,
"previous" : null ,
"results" : [
{
"uid" : "rec_11223344-5566-7788-99aa-bbccddeeff00" ,
"device_id" : "dev_a1b2c3d4-e5f6-7890-abcd-ef1234567890" ,
"device_name" : "robot-alpha-01" ,
"status" : "ready" ,
"duration_seconds" : 342.5 ,
"size_bytes" : 1073741824 ,
"topic_count" : 12 ,
"tags" : [ "mission-47" , "outdoor" ],
"started_at" : "2026-02-26T10:00:00Z" ,
"ended_at" : "2026-02-26T10:05:42Z" ,
"created_at" : "2026-02-26T10:06:00Z"
}
]
}
Get Recording
GET /api/v1/fleet/recordings/{uid}/
Returns full recording details including topic list and processing metadata.
cURL
Python SDK
TypeScript SDK
curl "https://api.avala.ai/api/v1/fleet/recordings/rec_11223344-5566-7788-99aa-bbccddeeff00/" \
-H "X-Avala-Api-Key: avk_your_api_key"
Response
{
"uid" : "rec_11223344-5566-7788-99aa-bbccddeeff00" ,
"device_id" : "dev_a1b2c3d4-e5f6-7890-abcd-ef1234567890" ,
"device_name" : "robot-alpha-01" ,
"status" : "ready" ,
"duration_seconds" : 342.5 ,
"size_bytes" : 1073741824 ,
"topic_count" : 12 ,
"tags" : [ "mission-47" , "outdoor" ],
"topics" : [
{
"name" : "/camera/front/image" ,
"schema" : "sensor_msgs/Image" ,
"message_count" : 3425 ,
"frequency_hz" : 10.0
},
{
"name" : "/lidar/points" ,
"schema" : "sensor_msgs/PointCloud2" ,
"message_count" : 3425 ,
"frequency_hz" : 10.0
}
],
"started_at" : "2026-02-26T10:00:00Z" ,
"ended_at" : "2026-02-26T10:05:42Z" ,
"created_at" : "2026-02-26T10:06:00Z"
}
Update Recording
PATCH /api/v1/fleet/recordings/{uid}/
Update a recording’s tags or status.
Field Type Description tagsarray Replacement tags statusstring Set to archived to archive the recording
cURL
Python SDK
TypeScript SDK
curl -X PATCH "https://api.avala.ai/api/v1/fleet/recordings/rec_11223344-5566-7788-99aa-bbccddeeff00/" \
-H "X-Avala-Api-Key: avk_your_api_key" \
-H "Content-Type: application/json" \
-d '{"tags": ["mission-47", "outdoor", "reviewed"]}'
Delete Recording
DELETE /api/v1/fleet/recordings/{uid}/
Permanently delete a recording and all associated data.
This action is irreversible. All recording data, events, and associated files are permanently removed.
cURL
Python SDK
TypeScript SDK
curl -X DELETE "https://api.avala.ai/api/v1/fleet/recordings/rec_11223344-5566-7788-99aa-bbccddeeff00/" \
-H "X-Avala-Api-Key: avk_your_api_key"
Response 204 No Content
Recording Fields
Field Type Description uidstring Unique recording identifier device_idstring UID of the device that created the recording device_namestring Human-readable device name statusstring uploading, processing, ready, error, or archivedduration_secondsnumber Recording duration in seconds size_bytesinteger Total file size in bytes topic_countinteger Number of topics in the recording tagsarray Organization tags topicsarray Topic details (only in detail endpoint) started_atstring (ISO 8601) Recording start timestamp ended_atstring (ISO 8601) Recording end timestamp created_atstring (ISO 8601) Upload timestamp
Events
Create and query timeline events associated with recordings.
List Events
GET /api/v1/fleet/events/
Returns events across your fleet, ordered by timestamp descending.
Query Parameters
Parameter Type Description recording_idstring Filter by recording UID device_idstring Filter by device UID typestring Filter by event type: error, warning, info, state_change, anomaly, custom severitystring Filter by severity: info, warning, error, critical sincestring (ISO 8601) Return events after this timestamp untilstring (ISO 8601) Return events before this timestamp order_bystring Sort order: timestamp (ascending) or -timestamp (descending, default) metadata_filterstring JSON-encoded metadata query (e.g., {"motor_id": "joint_3"}) tagsstring Comma-separated tag filter limitinteger Results per page (default: 50, max: 200) cursorstring Pagination cursor
cURL
Python SDK
TypeScript SDK
curl "https://api.avala.ai/api/v1/fleet/events/?recording_id=rec_11223344&severity=error" \
-H "X-Avala-Api-Key: avk_your_api_key"
Response
{
"next" : null ,
"previous" : null ,
"results" : [
{
"uid" : "evt_aabbccdd-eeff-0011-2233-445566778899" ,
"recording_id" : "rec_11223344-5566-7788-99aa-bbccddeeff00" ,
"device_id" : "dev_a1b2c3d4-e5f6-7890-abcd-ef1234567890" ,
"type" : "anomaly" ,
"label" : "LiDAR topic /lidar/points dropped 15 messages in 2s window" ,
"severity" : "error" ,
"timestamp" : "2026-02-26T10:03:22Z" ,
"metadata" : {
"topic" : "/lidar/points" ,
"dropped_count" : 15 ,
"window_seconds" : 2
},
"created_at" : "2026-02-26T10:03:22Z"
}
]
}
Create Event
POST /api/v1/fleet/events/
Create a new event associated with a recording or device.
Request Body
Field Type Required Description recording_idstring Yes Recording to associate the event with typestring Yes error, warning, info, state_change, anomaly, or customlabelstring Yes Human-readable event label timestampstring (ISO 8601) Yes When the event occurred descriptionstring No Detailed description of the event duration_msnumber No Duration of the event in milliseconds (for span-like events) tagsarray No Tags for categorizing the event metadataobject No Arbitrary event metadata severitystring No Override severity: info, warning, error, critical. Defaults based on type.
cURL
Python SDK
TypeScript SDK
curl -X POST "https://api.avala.ai/api/v1/fleet/events/" \
-H "X-Avala-Api-Key: avk_your_api_key" \
-H "Content-Type: application/json" \
-d '{
"recording_id": "rec_11223344-5566-7788-99aa-bbccddeeff00",
"type": "anomaly",
"label": "CPU usage exceeded 90% threshold",
"timestamp": "2026-02-26T10:02:15Z",
"metadata": {
"cpu_percent": 93.2,
"threshold": 90
}
}'
Response 201 Created
Batch Create Events
POST /api/v1/fleet/events/batch/
Create multiple events in a single request. Accepts up to 1,000 events. Events are created atomically — if any event fails validation, none are created.
Request Body
Field Type Required Description recording_idstring Yes Recording to attach events to eventsarray Yes Array of event objects (max 1,000)
Each event object accepts the same fields as POST /api/v1/fleet/events/ (excluding recording_id, which is set at the top level).
cURL
Python SDK
TypeScript SDK
curl -X POST "https://api.avala.ai/api/v1/fleet/events/batch/" \
-H "X-Avala-Api-Key: avk_your_api_key" \
-H "Content-Type: application/json" \
-d '{
"recording_id": "rec_11223344-5566-7788-99aa-bbccddeeff00",
"events": [
{"timestamp": "2026-02-26T10:02:15Z", "type": "error", "label": "Motor overtemp"},
{"timestamp": "2026-02-26T10:02:20Z", "type": "state_change", "label": "Emergency stop"}
]
}'
Response 201 Created — Returns the array of created event objects.
Get Event
GET /api/v1/fleet/events/{uid}/
Delete Event
DELETE /api/v1/fleet/events/{uid}/
Response 204 No Content
Event Fields
Field Type Description uidstring Unique event identifier recording_idstring Associated recording UID device_idstring Device that generated the event (derived from recording) typestring error, warning, info, state_change, anomaly, or customlabelstring Human-readable event label descriptionstring Detailed event description timestampstring (ISO 8601) When the event occurred duration_msnumber Event duration in milliseconds (nullable) tagsarray Event tags metadataobject Arbitrary metadata severitystring info, warning, error, or criticalcreated_atstring (ISO 8601) Server-side creation timestamp
Rules
Recording rules define conditions that automatically trigger events, flag recordings, or start processing pipelines.
List Rules
cURL
Python SDK
TypeScript SDK
curl "https://api.avala.ai/api/v1/fleet/rules/" \
-H "X-Avala-Api-Key: avk_your_api_key"
Query parameters
Parameter Type Description enabledbooleanFilter by enabled/disabled status. condition_typestringFilter by condition type (threshold, pattern, frequency, absence, composite).
Response
{
"next" : null ,
"previous" : null ,
"results" : [
{
"uid" : "rul_00112233-4455-6677-8899-aabbccddeeff" ,
"name" : "Flag high CPU recordings" ,
"description" : "Flag any recording where CPU exceeds 90% for more than 10 seconds" ,
"enabled" : true ,
"condition" : {
"type" : "threshold" ,
"topic" : "/diagnostics/cpu" ,
"field" : "data.aggregate_percent" ,
"operator" : "gt" ,
"value" : 90 ,
"window" : "10s"
},
"actions" : [
{
"type" : "tag" ,
"value" : "high-cpu"
},
{
"type" : "create_event" ,
"event_type" : "warning" ,
"label" : "CPU exceeded 90% for >10s"
}
],
"scope" : null ,
"hit_count" : 42 ,
"last_hit_at" : "2026-02-25T18:45:00Z" ,
"created_at" : "2026-01-15T09:00:00Z" ,
"updated_at" : "2026-02-20T11:30:00Z"
}
]
}
Create Rule
POST /api/v1/fleet/rules/
Request Body
Field Type Required Description namestring Yes Human-readable rule name descriptionstring No Description of the rule’s purpose enabledboolean No Whether the rule is active (default: true) conditionobject Yes Trigger condition (see below) actionsarray Yes Actions to execute when the condition is met scopeobject No Limit rule to specific devices or groups. Contains device_ids and/or group_ids arrays.
Condition Types
Type Description Required Fields thresholdFires when a topic field exceeds a value topic, field, operator, value, optional windowpatternFires when a topic field matches a regex pattern topic, field, regexfrequencyFires when event count crosses a threshold in a time window topic, count_operator, count, windowabsenceFires when expected data is missing for a duration topic, timeoutcompositeLogical combination of other conditions operator (and or or), conditions
Action Types
Type Description Required Fields tagAdd a tag to the recording valuecreate_eventCreate a timeline event event_type, label, optional severityflag_for_reviewFlag the recording for manual review — notifySend notification to an alert channel channel_idauto_labelTrigger an auto-labeling pipeline pipeline_id
cURL
Python SDK
TypeScript SDK
curl -X POST "https://api.avala.ai/api/v1/fleet/rules/" \
-H "X-Avala-Api-Key: avk_your_api_key" \
-H "Content-Type: application/json" \
-d '{
"name": "LiDAR dropout detection",
"description": "Detect when LiDAR data is missing for more than 2 seconds",
"condition": {
"type": "absence",
"topic": "/lidar/points",
"timeout": "2s"
},
"actions": [
{"type": "create_event", "event_type": "error", "label": "LiDAR data missing for >2s"},
{"type": "tag", "value": "lidar-dropout"},
{"type": "notify", "channel_id": "ch_aabb1122"}
]
}'
Response 201 Created
Get Rule
GET /api/v1/fleet/rules/{uid}/
Update Rule
PATCH /api/v1/fleet/rules/{uid}/
Update a rule’s name, description, enabled state, condition, or actions. Only provided fields are modified.
Field Type Description namestring Updated rule name descriptionstring Updated description enabledboolean Set to false to disable the rule, true to re-enable conditionobject Updated trigger condition actionsarray Updated list of actions
Delete Rule
DELETE /api/v1/fleet/rules/{uid}/
Response 204 No Content
Rule Fields
Field Type Description uidstring Unique rule identifier namestring Human-readable name descriptionstring Rule description enabledboolean Whether the rule is active conditionobject Trigger condition actionsarray Actions to execute scopeobject Restricts rule to specific devices, groups, or tags (nullable) hit_countinteger Total number of times the rule has triggered last_hit_atstring (ISO 8601) When the rule last triggered (nullable) created_atstring (ISO 8601) Creation timestamp updated_atstring (ISO 8601) Last update timestamp
Alerts
View and manage alerts generated by recording rules and diagnostics thresholds.
List Alerts
GET /api/v1/fleet/alerts/
Returns alerts ordered by creation date descending.
Query Parameters
Parameter Type Description device_idstring Filter by device UID recording_idstring Filter by recording UID rule_idstring Filter by rule UID channel_idstring Filter by notification channel UID statusstring Filter by status: open, acknowledged, resolved severitystring Filter by severity: info, warning, error, critical sincestring (ISO 8601) Return alerts created after this timestamp untilstring (ISO 8601) Return alerts created before this timestamp limitinteger Results per page (default: 50, max: 200) cursorstring Pagination cursor
cURL
Python SDK
TypeScript SDK
curl "https://api.avala.ai/api/v1/fleet/alerts/?status=open&severity=error" \
-H "X-Avala-Api-Key: avk_your_api_key"
Response
{
"next" : null ,
"previous" : null ,
"results" : [
{
"uid" : "alt_99887766-5544-3322-1100-ffeeddccbbaa" ,
"rule_id" : "rul_00112233-4455-6677-8899-aabbccddeeff" ,
"rule_name" : "LiDAR dropout detection" ,
"device_id" : "dev_a1b2c3d4-e5f6-7890-abcd-ef1234567890" ,
"device_name" : "robot-alpha-01" ,
"recording_id" : "rec_11223344-5566-7788-99aa-bbccddeeff00" ,
"severity" : "error" ,
"status" : "open" ,
"message" : "LiDAR frequency dropped below 8 Hz" ,
"triggered_at" : "2026-02-26T10:03:22Z" ,
"acknowledged_at" : null ,
"resolved_at" : null ,
"created_at" : "2026-02-26T10:03:22Z"
}
]
}
Get Alert
GET /api/v1/fleet/alerts/{uid}/
Acknowledge Alert
POST /api/v1/fleet/alerts/{uid}/acknowledge/
Mark an alert as acknowledged. This indicates that someone is aware of the issue and is investigating.
cURL
Python SDK
TypeScript SDK
curl -X POST "https://api.avala.ai/api/v1/fleet/alerts/alt_99887766-5544-3322-1100-ffeeddccbbaa/acknowledge/" \
-H "X-Avala-Api-Key: avk_your_api_key"
Response
{
"uid" : "alt_99887766-5544-3322-1100-ffeeddccbbaa" ,
"status" : "acknowledged" ,
"acknowledged_at" : "2026-02-26T10:15:00Z" ,
"acknowledged_by" : "johndoe"
}
Resolve Alert
POST /api/v1/fleet/alerts/{uid}/resolve/
Mark an alert as resolved. Optionally include a resolution note.
Request Body
Field Type Required Description notestring No Resolution note describing what was done
cURL
Python SDK
TypeScript SDK
curl -X POST "https://api.avala.ai/api/v1/fleet/alerts/alt_99887766-5544-3322-1100-ffeeddccbbaa/resolve/" \
-H "X-Avala-Api-Key: avk_your_api_key" \
-H "Content-Type: application/json" \
-d '{"note": "LiDAR sensor recalibrated and firmware updated to v2.4.2"}'
Alert Fields
Field Type Description uidstring Unique alert identifier rule_idstring Rule that triggered the alert rule_namestring Human-readable rule name device_idstring Device associated with the alert device_namestring Human-readable device name recording_idstring Recording associated with the alert (nullable) severitystring info, warning, error, or criticalstatusstring open, acknowledged, or resolvedmessagestring Alert description triggered_atstring (ISO 8601) When the alert condition was met acknowledged_atstring (ISO 8601) When the alert was acknowledged (nullable) acknowledged_bystring User who acknowledged the alert (nullable) resolved_atstring (ISO 8601) When the alert was resolved (nullable) durationstring Computed time between triggered_at and resolved_at (nullable) created_atstring (ISO 8601) Server-side creation timestamp
Alert Channels
Configure notification destinations for alerts.
List Channels
GET /api/v1/fleet/alerts/channels/
cURL
Python SDK
TypeScript SDK
curl "https://api.avala.ai/api/v1/fleet/alerts/channels/" \
-H "X-Avala-Api-Key: avk_your_api_key"
Response
{
"next" : null ,
"previous" : null ,
"results" : [
{
"uid" : "ch_aabb1122-3344-5566-7788-99aabbccddee" ,
"name" : "Engineering Slack" ,
"type" : "slack" ,
"config" : {
"webhook_url" : "https://hooks.slack.com/services/..."
},
"created_at" : "2026-01-10T08:00:00Z"
},
{
"uid" : "ch_ffeeddcc-bbaa-9988-7766-554433221100" ,
"name" : "Ops Team Email" ,
"type" : "email" ,
"config" : {
"recipients" : [ "ops@example.com" ]
},
"created_at" : "2026-01-10T08:30:00Z"
}
]
}
Create Channel
POST /api/v1/fleet/alerts/channels/
Request Body
Field Type Required Description namestring Yes Channel display name typestring Yes Channel type: slack, email, or webhook configobject Yes Channel-specific configuration (see below)
Channel Configuration
Type Config Fields slackwebhook_url (required) — Slack incoming webhook URL; channel — Optional channel override; username — Optional display name; icon_emoji — Optional emoji iconemailrecipients (required) — Array of email addresses; subject_prefix — Optional email subject prefixwebhookurl (required) — HTTP endpoint URL; signing_secret — Optional HMAC signing secret; headers — Optional custom headers
cURL
Python SDK
TypeScript SDK
curl -X POST "https://api.avala.ai/api/v1/fleet/alerts/channels/" \
-H "X-Avala-Api-Key: avk_your_api_key" \
-H "Content-Type: application/json" \
-d '{
"name": "Engineering Slack",
"type": "slack",
"config": {
"webhook_url": "https://hooks.slack.com/services/T00/B00/xxx"
}
}'
Response 201 Created
Delete Channel
DELETE /api/v1/fleet/alerts/channels/{uid}/
Deleting a channel that is referenced by active rules does not delete the rules. The rules continue to function, but the notify action is skipped for the deleted channel.
Response 204 No Content
Channel Fields
Field Type Description uidstring Unique channel identifier namestring Display name typestring slack, email, or webhookconfigobject Channel-specific configuration created_atstring (ISO 8601) Creation timestamp
Common Patterns
All list endpoints use cursor-based pagination. Follow the next URL until it returns null to retrieve all results.
{
"next" : "https://api.avala.ai/api/v1/fleet/devices/?cursor=eyJpZCI6MTB9" ,
"previous" : null ,
"results" : [ ... ]
}
Use the limit parameter to control page size. The maximum is 200 results per page.
Error Responses
The Fleet API uses standard Avala error responses. See Error Codes for the full reference.
Status Description 400Bad Request — invalid or missing fields 401Unauthorized — missing or invalid API key 403Forbidden — insufficient permissions 404Not Found — resource does not exist 409Conflict — resource already exists (e.g., duplicate device name) 429Too Many Requests — rate limit exceeded
Rate Limits
Fleet API endpoints share the standard Avala rate limits. See Rate Limits for details.
Additional SDK Resources
The following fleet features are available through the Python and TypeScript SDKs. REST endpoint documentation will be added as these features stabilize.
Resource Description Guide Device Groups Organize devices into logical groups for scoped rules and metrics Fleet Dashboard Fleet Metrics Aggregate fleet statistics and time-series telemetry Fleet Dashboard Escalation Policies Define multi-stage alert escalation workflows Alerts & Notifications Alert Muting & Snoozing Suppress alerts during maintenance windows Alerts & Notifications
Next Steps