---
title: "Download a completed compliance report"
method: GET
path: "/api/v1/compliance/reports/{id}/download"
tags: ["Compliance"]
---

# Download a completed compliance report

`GET /api/v1/compliance/reports/{id}/download`

## Request

- Base URL: `https://orchestrator.getaxonflow.com`
- URL: `https://orchestrator.getaxonflow.com/api/v1/compliance/reports/{id}/download`
- Auth: none declared
- TypeScript: <https://skmtc.dev/getaxonflow/apis/axonflow-orchestrator-api/docs/api/v1/compliance/reports/:id/download/get.ts> (a function with typed inputs; its response is checked against the schema)

Redirects to a short-lived presigned object-storage URL. There is NO
response body on success - follow the `Location` header. The response
carries `Cache-Control: no-store` because the presigned URL is a
bearer credential for the report artifact.

Returns 409 when the job exists but is not yet complete, or is complete
with no retrievable artifact; `error_code` distinguishes the two.

## Path parameters

- `id` string, required

## Other responses

- `307`: Redirect to the presigned artifact URL
- `401`: Tenant scope required
- `403`: Forbidden - insufficient permissions or enterprise license required
- `404`: Report not found
- `409`: Report not completed, or its artifact is unavailable

---

[API](https://skmtc.dev/getaxonflow/apis/axonflow-orchestrator-api.md) - [All operations](https://skmtc.dev/getaxonflow/apis/axonflow-orchestrator-api/llms.txt) - [OpenAPI document](https://skmtc.dev/getaxonflow/apis/axonflow-orchestrator-api/revisions/f408ef3ec9dd?raw)
