---
title: "List the API key scopes."
method: GET
path: "/api/api-keys/scopes"
tags: ["API Keys"]
---

# List the API key scopes.

`GET /api/api-keys/scopes`

## Request

- Base URL: `/` (relative, and the document was published on a file host, not at the API’s origin)
- URL: `/api/api-keys/scopes`
- Auth: HTTP bearer

Returns every scope an API key can carry, with what it allows, in the order Philter declares them, so a client offering scopes to choose from need not hard-code them. Any key may call it, whatever its scopes, since it describes the API rather than any account.

## Headers

- `Authorization` string, required

## Response `200`

Every scope.

- ApiKeyScopesResponse
  - `scopes` ApiKeyScopeDescription[]
    - `description` string: What the scope allows, including any requirement for an administrator.
    - `name` string: The scope as an API key carries it, for example policies:read.

## Other responses

- `400`: Bad Request
- `401`: The Authorization header is absent or the API key is not recognized.
- `404`: Not Found
- `406`: No representation matches Accept.
- `413`: Content Too Large
- `415`: Unsupported Media Type
- `500`: Internal Server Error
- `503`: Service Unavailable

## Changes

- **2026-10-10** `c4f85daa9208`: 13 info
  - added the non-success response with the status `404`
  - added the optional property `field` to the response with the `400` status
  - added the optional property `field` to the response with the `401` status
  - added the optional property `field` to the response with the `413` status
  - …9 more
- **2026-10-06** `564ae7a9e5f6`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/philterd/apis/philter-api/changes/api/api-keys/scopes/get.md)

---

[API](https://skmtc.dev/philterd/apis/philter-api.md) - [All operations](https://skmtc.dev/philterd/apis/philter-api/llms.txt) - [OpenAPI document](https://skmtc.dev/philterd/apis/philter-api/revisions/aa3d7ad1aab4?raw)
