Concepts
Audience
Integrators planning an AIR automation. Read this first to understand what AIR does, how resources relate, and how the assessment pipeline works.
What AIR does
AIR (AI Responsibly) helps organizations profile AI systems against governance frameworks — mapping evidence to controls, surfacing risks, and producing structured assessment reports.
Integrators use the HTTP API to automate that workflow: upload system documentation, wait for extraction, run the risk pipeline, and pull reports into CI, GRC tools, or internal dashboards.
Value chain
- Evidence — PDFs, Word docs, and similar files uploaded as project sources (
kind: document). - Extraction — Background processing parses documents into artifacts (text chunks the pipeline can cite).
- Assessment — The risk pipeline evaluates artifacts against the control catalog and produces findings.
- Report — A JSON report you fetch when the run completes (risk register, control matrix, regulatory lens views).
Prerequisites
| Requirement | Notes |
|---|---|
| Domain-scoped API key | Each key is fixed to one domain; use a separate key per domain |
| Target project | Created in the portal or via POST /domains/:domainPid/projects (domains:write) |
| Org credits | Starting an assessment consumes credits; insufficient credits return 402 |
| Matching scopes | See Authentication |
Typical automation loop
- Discover
domainPidandprojectPidviaGET /domains/andGET /domains/:domainPid/projects. - Upload documents (
upload-init→ PUT →upload-complete). - Poll
GET /projects/:projectPid/documentsuntil extraction finishes. - List
GET /projects/:projectPid/artifactsand collect artifact pids for the assessment. POST /assessments/projects/:projectPidwithnameandartifactPids.- Poll
GET /assessments/:assessmentPiduntilstatusiscompleted. GET /assessments/:assessmentPid/report.
See Integration flow for copy-paste request examples.
Read-only path
If you only pull completed reports (no uploads or new assessments):
GET /domains/→domainPidGET /domains/:domainPid/projects→projectPidGET /assessments/projects/:projectPid→ pickassessmentPidwithstatus: completedGET /assessments/:assessmentPid/report
Requires assessments:read, projects:read, and domains:read. See Authentication.
Resource hierarchy
Organization (org)
└── Domain (dom)
└── Project (prj)
├── Sources (psrc) — uploaded documents and connectors
├── Artifacts (artf) — extracted text/chunks from sources
└── Assessments (pasm) — risk pipeline runs
Service accounts and API keys live at the domain level. A key minted in one domain cannot access resources in another.
Public ids (pids)
External APIs use pids, not internal database ids. Format: a prefix, underscore, then 16 Crockford base32 characters (for example, prj_1A2B3C4D5E6F7G8H). Treat pids as opaque strings.
Common prefixes: org_, dom_, prj_, psrc_, artf_, pasm_, svc_ (service account), ak_ (API key).
Slugs vs pids
For API automation, use pids. They are returned by list and create endpoints (dom_…, prj_…). Store domainPid and projectPid in your secrets or CI variables after discovery.
Slugs are short names in portal URLs (for example, acme-corp, payments, chatbot-v2). They are not required for most integrations.
| Identifier | How integrators get it |
|---|---|
domainPid | GET /domains/ (one domain per API key) |
projectPid | GET /domains/:domainPid/projects |
| Slugs | Portal address bar, team config, or POST /search — only for optional slug lookup routes |
Optional slug lookups when you already know all three slugs: GET /orgs/:orgSlug, GET /domains/lookup/:orgSlug/:domainSlug, GET /projects/lookup/:orgSlug/:domainSlug/:projectSlug.
GET /domains/ does not return orgSlug. Slug lookup returns 404 when the project is outside the key's domain.
Discovery limits
| Limitation | Workaround |
|---|---|
| List all domains in an org | API keys see only their own domain; use one key per domain |
| Create or revoke API keys via API | Use the AIR portal |
| Org-wide portfolio dashboards | Not available with API keys; use domain portfolio or portal |
| Completion webhooks | Poll documents and assessments — see Async jobs |
Billing and credits
Assessment runs consume organization credits. When credits are exhausted, POST /assessments/projects/:projectPid may return 402 Payment Required.
Integrators cannot purchase credits via the API. Contact your organization's AIR admin or billing owner to top up. Upload and read endpoints are not credit-gated; only starting (and some retry) assessment operations are.
Assessment report structure
GET /assessments/:assessmentPid/report returns a large JSON document. Key sections integrators typically export:
| Section | Purpose |
|---|---|
overview | Counts: total risks, required/implemented/missing controls |
riskRegister | Identified risks with severity and evidence links |
controlMatrix | Control assignments and implementation status |
lensViews.euAiAct | EU AI Act–oriented rows |
lensViews.iso42001 | ISO 42001–oriented rows |
lensViews.nistAiRmf | NIST AI RMF–oriented rows |
euAiActTier | EU AI Act tier classification when available |
evidenceAppendix | Cited text chunks from source artifacts |
inputArtifacts | Artifacts included in the assessment run |
Use the API reference for every field. For stage-level debugging when status is failed, use GET /assessments/:assessmentPid/stages.
Archival vs delete
- Documents: Deleting a document archives derived artifacts that may be assessment evidence.
- Artifacts:
POST .../archivehides from default lists; hard delete returns409when cited by an assessment. - Domains / projects: Delete endpoints remove the container; see the API reference for cascade behavior.
Long-running work
Document extraction and risk assessments run asynchronously. Poll document status and assessment status rather than blocking on a single request. See Async jobs.
Time fields
API JSON uses ISO-8601 UTC strings for timestamps unless noted otherwise in the schema.
Related
- Getting started — obtain an API key and verify access
- Integration flow — end-to-end curl walkthrough
- Authentication — scopes and domain context