HTTP API
HeliOS exposes an HTTP API under the /v1 prefix.
- Base prefix:
/v1 - OpenAPI:
GET /openapi.json(orGET /v1/openapi.json)
Endpoint Index
EngineStreams
| Method | Path | Description | Responses |
|---|---|---|---|
GET | /v1/streams | List active streams | 200 |
POST | /v1/streams | Stream started | 200, 422 |
GET | /v1/streams/{id} | Stream info | 200, 404 |
DELETE | /v1/streams/{id} | Stream stopped | 204 |
POST | /v1/streams/{id}/calibration/apply | Updated stream manifest | 200 |
GET | /v1/streams/{id}/calibration/board | Calibration board PNG | 200 |
GET | /v1/streams/{id}/calibration/board.pdf | Calibration board PDF | 200 |
POST | /v1/streams/{id}/calibration/save | Updated stream manifest | 200 |
GET | /v1/streams/{id}/controls | Current controls | 200 |
POST | /v1/streams/{id}/controls/{control_id} | Control updated | 204 |
POST | /v1/streams/{id}/crop | Crop applied | 200, 400, 404, 502 |
GET | /v1/streams/{id}/format | Latest encoded payload format info | 200 |
GET | /v1/streams/{id}/frame | Latest JPEG frame | 200 |
GET | /v1/streams/{id}/metrics | Stream metrics | 200 |
POST | /v1/streams/{id}/pipeline/graph | Pipeline graph updated | 204 |
POST | /v1/streams/{id}/pipeline/layout | Pipeline layout updated | 204 |
POST | /v1/streams/{id}/pipeline/output | Pipeline output updated | 204 |
GET | /v1/streams/{id}/pipeline/outputs | Pipeline graph host outputs | 200 |
GET | /v1/streams/{id}/pipeline/outputs/{port}/sample | Latest JSON sample captured from the port | 200 |
GET | /v1/streams/{id}/pipeline/smoke | Runtime pipeline health snapshot | 200 |
PUT | /v1/streams/{id}/pose | Pose updated | 204 |
DELETE | /v1/streams/{id}/pose | Pose cleared | 204 |
GET | /v1/streams/{id}/preview | Live stream preview (MJPEG multipart or length-prefixed encoded) | 200 |
POST | /v1/streams/{id}/recording/start | Recording started | 201, 400, 502 |
POST | /v1/streams/{id}/recording/stop | Recording stopped | 204, 502 |
POST | /v1/streams/{id}/snapshot | Snapshot stored | 201, 400, 404, 502, 503 |
GET | /v1/streams/backends | Available capture backends/devices | 200 |
POST | /v1/streams/bench/formats | Benchmark results | 200 |
GET | /v1/streams/capabilities | Stream validation constraints and defaults | 200 |
GET | /v1/streams/codecs | Available codecs (encoders + decoders) | 200 |
POST | /v1/streams/validate | Validated + canonicalized stream manifest | 200, 422 |
Device
| Method | Path | Description | Responses |
|---|---|---|---|
GET | /v1/device/bootloader | Bootloader firmware status | 200 |
POST | /v1/device/bootloader/update | Bootloader firmware update staged | 200 |
GET | /v1/device/camera-layout | Camera + rig layout snapshot | 200 |
PUT | /v1/device/cameras/{camera_uid}/pose | Pose updated | 204 |
DELETE | /v1/device/cameras/{camera_uid}/pose | Pose cleared | 204 |
GET | /v1/device/console | Console placeholder | 200 |
GET | /v1/device/hostname | Device hostname | 200, 502 |
POST | /v1/device/hostname | Hostname updated | 204, 400, 502 |
GET | /v1/device/i2c | I2C inventory | 200, 400, 503 |
GET | /v1/device/ide | IDE connection information | 200 |
GET | /v1/device/ide/projects | IDE plugin projects | 200 |
POST | /v1/device/ide/projects | Created IDE plugin project | 200 |
GET | /v1/device/imu | IMU status | 200, 400, 503 |
PATCH | /v1/device/imu | Updated IMU status | 200, 400, 503 |
GET | /v1/device/ipa | IPA tuning files and current CCM | 200 |
POST | /v1/device/ipa/ccm | CCM written; restart engine to reload | 204 |
GET | /v1/device/ipa/ccm/chart | ColorChecker Classic 24 PNG | 200 |
GET | /v1/device/ipa/ccm/chart.pdf | ColorChecker Classic 24 PDF | 200 |
POST | /v1/device/ipa/ccm/solve | Solve CCM from a chart image | 200 |
GET | /v1/device/ipa/download | Download IPA JSON | 200 |
POST | /v1/device/lighting | Lighting command applied | 204, 400, 502, 503 |
GET | /v1/device/lighting/animations | Saved lighting animations | 200 |
POST | /v1/device/lighting/animations | Lighting animation saved | 204, 400 |
DELETE | /v1/device/lighting/animations/{name} | Lighting animation deleted | 204 |
GET | /v1/device/lighting/config | Lighting configuration | 200 |
POST | /v1/device/lighting/config | Lighting configuration updated | 204, 400 |
POST | /v1/device/lighting/config/reset | Lighting configuration reset | 200 |
GET | /v1/device/lighting/state | Current lighting runtime state | 200, 502, 503 |
GET | /v1/device/lighting/templates | List built-in lighting templates | 200 |
GET | /v1/device/lighting/templates/{id} | Lighting template document | 200, 404 |
GET | /v1/device/logs | Logs placeholder | 200 |
GET | /v1/device/logs/download | Log download | 200 |
GET | /v1/device/logs/sources | Available log sources | 200 |
GET | /v1/device/metrics | Device metrics | 200 |
GET | /v1/device/network | Network config | 200, 502 |
POST | /v1/device/network | Network config updated | 204, 400 |
GET | /v1/device/nt4 | NT4 settings | 200 |
POST | /v1/device/nt4 | NT4 settings updated | 204, 400 |
GET | /v1/device/os | OS release info | 200, 404 |
GET | /v1/device/power | Power status | 200, 400, 503 |
GET | /v1/device/resource-guard | Resource guard status | 200 |
POST | /v1/device/resource-guard/restore/{stream_id} | Resource guard stream restore action | 200 |
POST | /v1/device/restart | Restart queued | 200, 502 |
PATCH | /v1/device/robot-dimensions | Updated camera layout snapshot | 200 |
GET | /v1/device/team | Team number | 200 |
POST | /v1/device/team | Team updated | 204, 400 |
GET | /v1/device/usb-power | USB power settings | 200 |
POST | /v1/device/usb-power | USB power settings updated | 204, 400, 502, 503 |
GET | /v1/health | Backend is reachable | 200 |
Peripherals
| Method | Path | Description | Responses |
|---|---|---|---|
GET | /v1/peripherals | Peripherals and cameras | 200, 502 |
GET | /v1/peripherals/cameras | Discovered cameras | 200, 502 |
GET | /v1/peripherals/fan | Fan status | 200, 503 |
GET | /v1/peripherals/i2c | I2C inventory | 200, 400, 503 |
GET | /v1/peripherals/leds | Lighting presence | 200 |
GET | /v1/peripherals/usb | USB peripherals | 200 |
Media
| Method | Path | Description | Responses |
|---|---|---|---|
GET | /v1/media | List stored media assets | 200, 500 |
POST | /v1/media | Media uploaded | 201, 400, 500 |
GET | /v1/media/{name} | Media content | 200, 404 |
DELETE | /v1/media/{name} | Media deleted | 204, 404 |
POST | /v1/media/{name}/image/edits | Image updated | 200, 400 |
GET | /v1/media/{name}/imu | IMU sidecar stream | 200, 404 |
POST | /v1/media/{name}/imu | IMU sidecar attached | 200, 400 |
DELETE | /v1/media/{name}/imu | IMU sidecar detached | 200, 404 |
GET | /v1/media/{name}/label | Label file contents | 200, 404 |
POST | /v1/media/{name}/label | Label attached | 200, 400 |
PATCH | /v1/media/{name}/metadata | Metadata updated | 200, 400 |
Pipelines
| Method | Path | Description | Responses |
|---|---|---|---|
GET | /v1/pipelines/graphs | List stored graphs | 200, 500 |
POST | /v1/pipelines/graphs | Graph stored | 201, 400, 500 |
GET | /v1/pipelines/graphs/{id} | Graph document | 200, 404 |
PUT | /v1/pipelines/graphs/{id} | Graph updated | 200, 400, 404, 500 |
DELETE | /v1/pipelines/graphs/{id} | Graph deleted | 204, 404, 500 |
GET | /v1/pipelines/registry | Daedalus node registry | 200 |
GET | /v1/pipelines/templates | List template graphs | 200 |
GET | /v1/pipelines/templates/{id} | Template graph document | 200, 404 |
POST | /v1/pipelines/validate | Planner diagnostics | 200, 400, 502 |
Localization
| Method | Path | Description | Responses |
|---|---|---|---|
GET | /v1/localization/capabilities | Localization validation constraints and defaults | 200 |
GET | /v1/localization/config | Localization config | 200 |
PUT | /v1/localization/config | Updated localization config | 200, 422 |
GET | /v1/localization/external/{id}/outputs/{output_key} | Latest output sample | 200, 400, 404 |
GET | /v1/localization/external/sources | External localization sources | 200 |
PUT | /v1/localization/external/sources/{id} | Upserted external source | 200 |
DELETE | /v1/localization/external/sources/{id} | External source removed | 204 |
POST | /v1/localization/external/sources/{id}/sample | Updated sample | 200 |
GET | /v1/localization/maps | Available field maps | 200 |
GET | /v1/localization/maps/{id} | Field map document | 200, 404 |
POST | /v1/localization/maps/upload | Map uploaded | 201, 400, 413, 422 |
GET | /v1/localization/peers/{id}/outputs/{output_key} | Latest output sample | 200, 400, 404, 502 |
GET | /v1/localization/profiles/export | Exported localization profiles envelope | 200 |
POST | /v1/localization/profiles/import | Imported localization config | 200, 400, 422 |
GET | /v1/localization/solve | Localization solve outputs | 200 |
GET | /v1/localization/sources | Available localization pipeline outputs | 200 |
GET | /v1/localization/streams/{id}/outputs/{output_key} | Latest output sample | 200, 404, 502 |
POST | /v1/localization/validate | Validated + canonicalized localization config | 200, 422 |
Peers
| Method | Path | Description | Responses |
|---|---|---|---|
GET | /v1/peers | Known peers | 200 |
POST | /v1/peers | Peer registered | 201, 400 |
DELETE | /v1/peers/{id} | Peer removed | 200, 404 |
POST | /v1/peers/discover | Discovery scheduled | 200 |
POST | /v1/peers/integrations/photonvision/streams | Discovered streams | 200, 400 |
POST | /v1/peers/probe | Probe result | 200, 400 |
NT4
| Method | Path | Description | Responses |
|---|---|---|---|
POST | /v1/nt4/topics | Discovered topics | 200, 400, 502 |
POST | /v1/nt4/value | Topic value | 200, 400, 404, 502 |
OTA
| Method | Path | Description | Responses |
|---|---|---|---|
POST | /v1/ota/apply | Apply scheduled | 200, 400, 503 |
POST | /v1/ota/cancel | Update canceled | 200, 400, 503 |
POST | /v1/ota/stage | Staging removed | 410 |
GET | /v1/ota/state | Current updater state | 200, 503 |
POST | /v1/ota/upload | Image uploaded | 201, 400, 500 |
Console
| Method | Path | Description | Responses |
|---|---|---|---|
GET | /v1/console/sessions | List console sessions | 200, 500 |
POST | /v1/console/sessions | Created session | 200, 500 |
DELETE | /v1/console/sessions/{session_id} | Session deleted | 204, 404 |
Plugins
| Method | Path | Description | Responses |
|---|---|---|---|
GET | /v1/plugins | List plugins | 200 |
GET | /v1/plugins/{name} | Download plugin | 200, 404 |
DELETE | /v1/plugins/{name} | Plugin removed | 204, 404 |
POST | /v1/plugins/{name}/disable | Plugin disabled | 200, 404 |
POST | /v1/plugins/{name}/enable | Plugin enabled | 200, 404 |
GET | /v1/plugins/disabled/{name} | Download disabled plugin | 200, 404 |
POST | /v1/plugins/install | Plugin installed | 200, 400, 500 |
POST | /v1/plugins/upload | Plugin uploaded | 201, 400, 500 |
GET | /v1/plugins/uploads/{name} | Download uploaded plugin | 200, 404 |
Errors
| Method | Path | Description | Responses |
|---|---|---|---|
GET | /v1/errors | Error history | 200 |
DELETE | /v1/errors | Cleared error history | 204 |
GET | /v1/errors/export | Error history export | 200 |
Calibration
| Method | Path | Description | Responses |
|---|---|---|---|
POST | /v1/calibration/solve | Solved camera intrinsics | 200, 400, 404, 500, 502, 504 |