API changelog
The AIR HTTP API is pre-1.0 and unversioned — paths do not include a version prefix. Breaking changes are announced here before deploy.
2026-07-07 — Domain-scoped API keys
What changed
- API keys are scoped to a domain, not an entire organization.
- Service account and key management is per domain in the portal.
- Each key can access only resources in the domain where it was created.
What integrators should do
- Sign in at https://air.thalus.ai and create a new key in each domain you automate against.
- Call
GET /domains/to confirm which domain your key belongs to. - Use
GET /domains/<domainPid>/projectsto list projects — do not assume org-wide access.
See Authentication and Getting started.
2026-07-06 — API key scope enforcement
What changed
- Integrator routes check per-key scopes (
projects:read,assessments:write, etc.). - Key creation requires a non-empty
scopesarray. - Write scopes imply read on the same resource.
integrations:fullgrants all integrator scopes.
What integrators should do
- Review existing keys in the portal.
- If you receive
403withAPI key missing required scope: …, create a new key with the scopes from Recommended presets.
2026-07-06 — Service-account integrator access
What changed
- Bearer API keys can call projects, assessments, domains, search, and portfolio endpoints.
- Async work is tracked by polling document and assessment status.
What integrators should do
- Use Async jobs for upload → assess → report automation.
2026-07-06 — Initial public documentation
What changed
- Public documentation at https://air.thalus.ai/docs.
- OpenAPI at
https://api.air.thalus.ai/openapi.json.
Related
- Errors — status codes and rate limits
- API reference