Skip to main content

Fleet API

Manage your robot fleet including devices, device groups, and fleet operations.

Devices

List Devices

GET /organizations/{org}/projects/{project}/devices
Query Parameters:
ParameterTypeDescription
statusstringFilter by status: online, offline, maintenance
typestringFilter by device type
group_idintegerFilter by device group
pageintegerPage number (default: 1)
page_sizeintegerItems per page (default: 20, max: 100)
Response:
{
  "items": [
    {
      "id": 123,
      "name": "warehouse-robot-01",
      "dsn": "WR-001",
      "type": "robot",
      "status": "online",
      "environment": "production",
      "last_heartbeat": "2025-01-10T10:23:45Z",
      "created_at": "2024-06-15T08:00:00Z"
    }
  ],
  "total": 50,
  "page": 1,
  "page_size": 20
}

Get Device

GET /organizations/{org}/projects/{project}/devices/{device_id}
Response:
{
  "id": 123,
  "name": "warehouse-robot-01",
  "dsn": "WR-001",
  "type": "robot",
  "status": "online",
  "environment": "production",
  "last_heartbeat": "2025-01-10T10:23:45Z",
  "current_session_id": 456,
  "package_id": 10,
  "package_name": "perception-v2.1.0",
  "groups": [
    {"id": 5, "name": "Production"}
  ],
  "metrics": {
    "cpu_usage": 45.2,
    "memory_usage": 62.1,
    "disk_usage": 38.5
  },
  "created_at": "2024-06-15T08:00:00Z"
}

Register Device (Offline)

Register a device before it comes online.
POST /organizations/{org}/projects/{project}/devices/register-offline
Request Body:
{
  "name": "new-robot-01",
  "dsn": "NR-001",
  "type": "robot",
  "environment": "testing"
}

Update Device

PATCH /organizations/{org}/projects/{project}/devices/{device_id}
Request Body:
{
  "name": "updated-name",
  "environment": "production"
}

Delete Device

DELETE /organizations/{org}/projects/{project}/devices/{device_id}

Device Groups

List Groups

GET /organizations/{org}/projects/{project}/device-groups
Response:
{
  "items": [
    {
      "id": 5,
      "name": "Production",
      "description": "Production robots",
      "device_count": 10,
      "created_at": "2024-06-01T00:00:00Z"
    }
  ]
}

Create Group

POST /organizations/{org}/projects/{project}/device-groups
Request Body:
{
  "name": "Staging",
  "description": "Staging environment devices"
}

Get Group

GET /organizations/{org}/projects/{project}/device-groups/{group_id}
Response:
{
  "id": 5,
  "name": "Production",
  "description": "Production robots",
  "devices": [
    {"id": 123, "name": "warehouse-robot-01", "status": "online"},
    {"id": 124, "name": "warehouse-robot-02", "status": "online"}
  ],
  "device_count": 2,
  "created_at": "2024-06-01T00:00:00Z"
}

Update Group

PATCH /organizations/{org}/projects/{project}/device-groups/{group_id}
Request Body:
{
  "name": "Updated Name",
  "description": "Updated description"
}

Delete Group

DELETE /organizations/{org}/projects/{project}/device-groups/{group_id}

Add Devices to Group

POST /organizations/{org}/projects/{project}/device-groups/{group_id}/devices
Request Body:
{
  "device_ids": [123, 124, 125]
}

Remove Device from Group

DELETE /organizations/{org}/projects/{project}/device-groups/{group_id}/devices/{device_id}

Device Commands

Send commands to devices.

List Available Commands

GET /organizations/{org}/projects/{project}/devices/{device_id}/commands

Send Command

POST /organizations/{org}/projects/{project}/devices/{device_id}/commands
Request Body:
{
  "command": "restart",
  "parameters": {
    "delay_seconds": 5
  }
}
Response:
{
  "id": 789,
  "command": "restart",
  "status": "pending",
  "created_at": "2025-01-10T10:30:00Z"
}

Code Examples

import requests

API_KEY = "rbtk_xxx"
BASE = "https://api.roboticks.io/api/v1"
ORG = "acme"
PROJECT = "warehouse"

headers = {"Authorization": f"Bearer {API_KEY}"}

# List online devices
response = requests.get(
    f"{BASE}/organizations/{ORG}/projects/{PROJECT}/devices",
    headers=headers,
    params={"status": "online"}
)
devices = response.json()["items"]

# Get device details
device = requests.get(
    f"{BASE}/organizations/{ORG}/projects/{PROJECT}/devices/123",
    headers=headers
).json()

# Create a device group
group = requests.post(
    f"{BASE}/organizations/{ORG}/projects/{PROJECT}/device-groups",
    headers=headers,
    json={"name": "New Group"}
).json()