/api/v1. The generated endpoint pages in this reference come directly from lib/api-spec/openapi.yaml.
Authentication
Automation sends a management key:airmux_session cookie and must also send X-Requested-With. Inference keys are not accepted by management endpoints.
Scope in URLs
org_id and workspace_ref accept the resource UUID or slug where the endpoint documents that behavior. A scoped
management key must cover the target, and its permission ceiling must include the operation.
Response envelope
Every successful management response wraps its result once:{"data": [...]}. This includes management
keys, provider credentials, data-plane status, invitations, enrollment choices, and candidate pickers. Errors retain
FastAPI’s {"detail": ...} shape and are not enveloped.
Example
Permissions
Permission names are closed strings grouped by resource:organizations.read|create|update|deleteprincipals.read|managemembers.read|manageworkspaces.read|create|update|deletecatalog.read|manageprovider-credentials.read|manageinference-keys.read|managepolicies.read|manageplayground.executebundles.readusage.read|ingestdata-planes.read|heartbeataudit.readmanagement-keys.read|issue|revoke
One-time secrets
Inference-key creation, management-key creation, invitation issue/reissue, and service-account creation actions can return a one-time secret. Store the returned value immediately; later list and get operations return metadata only.Pagination
Collections that callers browse incrementally use cursor pagination. Pagination is not added to an endpoint merely because it is scoped or returns a list; consumers of configuration and selection endpoints need the complete set. The paginated collections are organizations, usage events, and audit activity. Usage events are paginated at both organization and workspace scope, and audit activity is paginated at instance and organization scope.limitis the maximum number of results per page, defaults to 50, and accepts 1 through 200cursoris the opaquepage.next_cursorreturned by the preceding requestpage.next_cursorisnullwhen no later page exists
422 with {"detail":"invalid cursor"}. Cursors
identify a sort position, so traversal can continue if the item at the previous page boundary is deleted.