---
title: "Get a limit policy"
method: GET
path: "/api/limit-policies/{id}/"
tags: ["Limit Policies"]
---

# Get a limit policy

`GET /api/limit-policies/{id}/`

## Request

- Base URL: `https://api.respan.ai`
- URL: `https://api.respan.ai/api/limit-policies/{id}/`
- Auth: HTTP bearer

Return the policy with its live `current_state`.

## Path parameters

- `id` string, uuid, required

## Response `200`

The policy.

- LimitPolicy: A stored cap: watch a scope, measure a metric, refill on a cadence, and fire rules at thresholds.
  - `id` string, uuid
  - `name` string: Human label.
  - `scope` string: Display category (e.g. `API Key`, `Model`). Not used for matching.
  - `scope_value` string: Identity to meter. For composites, a JSON list of values in `compose` order.
  - `compose` string[]: Empty for single-dimension policies. Members: `organization_id`, `api_key_id`, `user_id`, `customer_identifier`, `model`, `endpoint`.
  - `metric` 'cost' | 'request_count' | 'token_count': What the cap counts. `cost` is US dollars, `token_count` is total tokens, `request_count` is calls.
  - `algorithm` 'balance_fixed_window': `balance_fixed_window` is the shipped algorithm. `token_bucket` is reserved and not yet enforced.
  - `period` string, nullable: Cadence. A named bucket (`minute`, `hour`, `day`, `week`, `month`), a positive integer of seconds as a string, or `null` for a cumulative (lifetime) cap that never resets.
  - `anchor` 'calendar' | 'first_event' | 'explicit_ts': When a recurring window aligns. `calendar` resets on the boundary (e.g. the 1st of the month).
  - `anchor_at` string, date-time, nullable: Required when `anchor` is not `calendar`.
  - `effective_at` string, date-time, nullable: Active-range start. `null` = live since forever.
  - `expires_at` string, date-time, nullable: Active-range end. `null` = live until deactivated. Must be after `effective_at`.
  - `priority` integer: Higher is checked first.
  - `is_active` boolean
  - `rules` LimitPolicyRule[]: Any number of soft rules and at most one effective hard rule.
    - `trigger` object, required: Threshold condition. Common shape: `{"counter": {"operator": "gte", "value": 10000}}`.
    - `severity` 'soft' | 'hard', required: `soft` fires an alert without blocking; `hard` blocks the request with 429.
    - `description` string, nullable: Shown in events and alert payloads.
    - `is_active` boolean
    - `notification_method_id` string, nullable: Optional OrganizationNotificationMethod id to ping when this rule trips.
  - `threshold_value` number: First hard-rule threshold; falls back to the largest soft threshold.
  - `meter_definition_id` string: Stable hash of the policy identity. Same identity resolves to the same id across recreations.
  - `current_state` LimitPolicyCurrentState: Live counter for the current window instance.
    - `meter_id` string
    - `interval_start` integer, nullable: Epoch seconds, inclusive.
    - `interval_end` integer, nullable: Epoch seconds, exclusive.
    - `current_value` number: Accumulated value in this window.
  - `created_at` string, date-time
  - `updated_at` string, date-time

## Other responses

- `403`: The API key is missing, invalid or expired.
- `404`: Limit policy not found.

## Changes

- **2026-10-21** `c30bcb383ee8`: 10 breaking, 8 info
  - the response property `anchor_at` became nullable for the status `200`
  - the response property `current_state/interval_end` became nullable for the status `200`
  - the response property `current_state/interval_start` became nullable for the status `200`
  - the response property `effective_at` became nullable for the status `200`
  - …14 more
- **2026-10-02** `b830b79cfd52`: 1 breaking, 2 info
  - the response property `rules/items/description` became nullable for the status `200`
  - added the non-success response with the status `403`
  - added the non-success response with the status `404`
- **2026-09-17** `6fa8242da8c2`: 1 warning, 1 info
  - deleted the `header` request parameter `Authorization`
  - the endpoint scheme security `RespanApiKey` was added to the API
- **2026-09-12** `22b868ef3f22`: 1 info
  - api operation id `retrieve-limit-policy` removed and replaced with `limitPolicies_retrieve_limit_policy`
- **2026-09-02** `764fca4d43e4`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/keywordsai/apis/respan-api/changes/api/limit-policies/:id/get.md)

---

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