---
title: "List active dynamic policies (legacy)"
method: GET
path: "/api/v1/policies/dynamic"
tags: ["Policies"]
deprecated: true
---

# List active dynamic policies (legacy)

`GET /api/v1/policies/dynamic`

## Request

- Base URL: `https://agent.getaxonflow.com`
- URL: `https://agent.getaxonflow.com/api/v1/policies/dynamic`
- Auth: none declared
- TypeScript: <https://skmtc.dev/getaxonflow/apis/axonflow-policy-management-api/docs/api/v1/policies/dynamic/get.ts> (a function with typed inputs; its response is checked against the schema)

> **Deprecated.**

**Legacy endpoint.** Returns the array of active dynamic policies
visible to the CALLING tenant — its own plus the shared
global/default baseline (no pagination). Policies owned by other
tenants are never returned in the same response, and requests
without a resolvable tenant are rejected with 401 (fail closed).

The tenant scope is read from the `X-Tenant-ID` header. When the
request arrives through the AxonFlow Agent, that header is set from
the validated credential and overwrites any client-supplied value,
so the caller cannot choose the scope. The orchestrator itself does
not authenticate this route, so a caller with direct network access
to the orchestrator can name a tenant — deploy the orchestrator on a
private network behind the Agent.

Prefer `GET /api/v1/dynamic-policies`.

## Response `200`

Array of active dynamic policies visible to the calling tenant

- object[]

## Other responses

- `401`: Tenant scope could not be resolved (missing gateway-stamped X-Tenant-ID); fails closed with no policy data

---

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