---
title: "List recent governance decisions"
method: GET
path: "/api/v1/decisions"
tags: ["Decisions & Overrides"]
---

# List recent governance decisions

`GET /api/v1/decisions`

## Request

- Base URL: `https://orchestrator.getaxonflow.com`
- URL: `https://orchestrator.getaxonflow.com/api/v1/decisions`
- Auth: none declared. Required headers: `X-Tenant-ID`
- TypeScript: <https://skmtc.dev/getaxonflow/apis/axonflow-orchestrator-api/docs/api/v1/decisions/get.ts> (a function with typed inputs; its response is checked against the schema)

Lists recent decisions for the tenant, newest first. The lookback
window and maximum page size are **tier-gated**: Community/Free sees
the last 5 decisions in 24h; Evaluation 100 decisions in 14 days;
Enterprise up to 1000 with an unbounded window. Requesting a `limit`
above the tier cap returns **429** with the upgrade envelope
(`error`, `limit_type: decision_list_size`, `tier`, `limit`,
`remaining`, `upgrade{tier, wording, compare_url, buy_url}`) plus the
`X-Axonflow-Tier-Limit` and `X-Axonflow-Upgrade-URL` headers. A
`since` earlier than the tier window is silently clamped to the
window.

**Role-scoped reads (#2922):** `admin`/`owner` list every user's
decisions; every other role lists only their own (rows attributed to
their identity). A caller with no resolvable per-user identity gets an
empty list. The role/scope is trusted only over the internal
proxy-auth channel. `DEPLOYMENT_MODE=community` lists tenant-wide, and
`community-saas` lists tenant-wide over the agent gateway — see
`POST /api/v1/audit/search` for the single-operator rationale (#3060).

## Query parameters

- `limit` integer
- `since` string, date-time
- `decision` 'allowed' | 'blocked' | 'redacted' | 'needs_approval' | 'error'
- `policy_id` string
- `tool_signature` string

## Headers

- `X-Tenant-ID` string, required

## Response `200`

Decision list (`decisions` is `[]` when empty, never `null`)

- DecisionListResponse
  - `decisions` DecisionListItem[]: Always an array (`[]` when empty)
    - `decision_id` string
    - `timestamp` string, date-time
    - `decision` 'allowed' | 'blocked' | 'redacted' | 'needs_approval' | 'error': Canonical verdict
    - `policy_id` string
    - `tool_signature` string
    - `context` object: Decision context, truncated to at most 5 keys (sorted)
    - `transfer_basis` string: UU PDP Pasal 56 transfer basis; Enterprise cross-border rows only
    - `data_residency` string: ISO 3166-1 alpha-2 destination country; Enterprise only

## Other responses

- `400`: Invalid limit, since (must be RFC3339), or decision value
- `401`: Missing X-Tenant-ID header
- `429`: Requested limit exceeds the tier page cap
- `500`: Internal error

---

[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)
