Skip to main content

REST API

Port 8080 is owned by the native Rust front (ados-control, an axum server). It serves migrated routes directly and reverse-proxies the rest to a residual FastAPI on an internal Unix socket (/run/ados/api-internal.sock). From a client’s point of view it is one HTTP API for status, telemetry, commands, configuration, video, pairing, and everything else the agent can do. The API is the backbone that the CLI, TUI, and Mission Control all talk to. The split between native and proxied routes moves over time as more routes migrate into the Rust front. Callers do not need to know which process answers a given route. A route that has not yet migrated is forwarded transparently to the FastAPI upstream; on a zero-Python build with no upstream present, an un-migrated route returns 501 rather than 404.

Base URL

On the drone itself: http://localhost:8080

Authentication

Most endpoints require the X-ADOS-Key header. The key is generated during pairing and stored at /etc/ados/pairing.json.
A few endpoints are exempt from auth (like /api/pairing/info) so that unpaired agents can still be discovered and paired.

Route domains

The API is organized by domain. The “Served by” column shows where a domain currently lives: the Rust front, the residual FastAPI (proxied through the front), or a mix while migration is in progress.

Common endpoints

Status

Response:

Configuration

Video

Response:

Parameters

Pairing

Services

Ground station

CORS

CORS is enabled by default with an allowlist, not a wildcard. The defaults cover the local Mission Control development origins (localhost:4000, localhost:4001). Add your own origins in config without dropping the defaults:
The effective allowlist is the union of the built-in defaults, cors_origins, and cors_origins_extra.

OpenAPI docs

The residual FastAPI generates interactive API documentation, served through the front. When the agent is running with the Python API present, open:
  • Swagger UI: http://localhost:8080/docs
  • ReDoc: http://localhost:8080/redoc
These pages list the FastAPI endpoints with request/response schemas and a “Try it out” button. On a zero-Python build (where the residual API is not present), these paths are not available.
The Swagger UI is a fast way to explore the proxied endpoints. It shows the available endpoints, required parameters, and response shapes, and you can send test requests directly from the browser.