Airbotics is an API-first product and exposes the majority of its functionalities through a RESTful API.

Base URL

HTTPS is enforced on every request, requests over HTTP are not supported.

The base URL for all endpoints is:


The current version of the REST API is 2023-07-18. Any breaking changes will bump the version, all non-breaking changes will be added to the current version.

Versions are specified on a per-request basis by setting the air-api-version header. If no header is provided the most recent version of the API is used.

HTTP methods

Airbotics uses the following methods:

POSTCreate a resource.
PATCHConfigure a resource.
GETRetrieve a resource.
DELETEDelete a resource.


The following headers may be sent with every request:

content-typeapplication/jsonYesUsed to specify the content type.
air-api-key<string>YesYour API key. Used for authentication.
air-api-version<string>NoThe version of the API to use.



All requests must be authenticated by including a valid API key in the air-api-key header, like so:

curl -H "air-api-key: <aak_000...>"

Requests that do not include an air-api-key header, or include one that is not valid, will return a 401 - Unauthorized HTTP status code and an error.


Each API key has a set of permissions associated with it that determine which actions the bearer can perform in Airbotics. You can see the list of available permissions in API keys.

Requests that include valid API keys but that do not have the required permissions will return a 403 - Forbidden HTTP status code and an error.


All responses will be returned in JSON format.

Status codes

The following status codes are used:

200 - OKThe request succeeded.
401 - UnauthorizedThere was no valid API key provided.
403 - ForbiddenThe API key provided doesn’t have the required permission.
404 - Not FoundThe resource could not be found.
500 - Internal Server ErrorSomething went wrong with the request.


Any error will return a HTTP status code in the range 4xx or 5xx. The response body for an error will always be in the form of:

    "error_code": "some_error_code",
    "message": "A description of the error."

The error_code will depend on the endpoint that was called and what error occurred.