Generate a compliance report.
curl --request POST \ --url https://auth.example.com/api/admin/compliance/reports \ --header 'Authorization: Bearer <token>' \ --header 'Content-Type: application/json' \ --data '{ "type": "access_review", "name": "example", "parameters": { "review_id": "example", "from": "2026-04-15T12:00:00Z", "to": "2026-04-15T12:00:00Z" } }'Generates a report now and keeps its file encrypted for 30 days (downloadable once its generation is audited: generating until then): access_review (an access review’s items, decisions and what applying them did; CSV), mfa_coverage (each admin and active user and their factors; CSV), compliance_status (the status API’s answer at this moment; JSON), audit_log (audit log entries of a period of up to 366 days from the queryable audit store; CSV). Rows identify people by their IDs, never adding names or email addresses; the reasons reviewers wrote are included as written. A report of more than 10,000 rows is not cut short: it is recorded as failed (too_large) and answered 422. Generating is audited.
Authorizations
Section titled “Authorizations ”Request Body required
Section titled “Request Body required ”object
Review_id for access_review; from and to (date-times, to after from, at most 366 days apart) for audit_log.
object
Responses
Section titled “ Responses ”The generated report.
object
Generating (stored, its generation not audited yet; not downloadable), failed (error says why), expired (its download period ended; its file is deleted).
object
object
Null for self-service subjects that cannot inspect tenant delivery counts.
Pipeline and local staging-only views remain false even when no pending deliveries are known.
The file’s SHA-256, checked on every download.
Example
{ "type": "access_review", "status": "generating", "parameters": { "log_coverage": { "consistency": "snapshot" } }, "format": "csv"}Headers
Section titled “Headers ”Snapshot for the remote scheduled view; eventual when Pipeline visibility can lag ingestion; local_hot_only for local scheduled staging without a remote Catalog.
Tenant deliveries not yet confirmed visible. Omitted for self-service subjects. Zero does not guarantee immediate Pipeline visibility.
True only for a complete bounded snapshot query. Pipeline responses remain false; incomplete reads return 503.
Error response.
object
Example generated
{ "error": "example", "message": "example", "error_description": "example"}Error response.
object
Example generated
{ "error": "example", "message": "example", "error_description": "example"}Error response.
object
Example generated
{ "error": "example", "message": "example", "error_description": "example"}The access review does not exist.
The tenant keeps no audit log that can be queried (audit_log_not_queryable).
More rows than one report holds; the report is recorded as failed.
object
object
Generating (stored, its generation not audited yet; not downloadable), failed (error says why), expired (its download period ended; its file is deleted).
object
object
Null for self-service subjects that cannot inspect tenant delivery counts.
Pipeline and local staging-only views remain false even when no pending deliveries are known.
The file’s SHA-256, checked on every download.
Example
{ "error": "report_too_large", "report": { "type": "access_review", "status": "generating", "parameters": { "log_coverage": { "consistency": "snapshot" } }, "format": "csv" }}Report storage is unavailable, generation cannot complete, or required retained log data cannot be read (log_query_incomplete, complete: false). No partial audit report is published.
object
Example
{ "complete": false}