---
title: "Get machine-readable plan request limits"
method: GET
path: "/v1/meta/limits"
tags: ["Plan Metadata"]
---

# Get machine-readable plan request limits

`GET /v1/meta/limits`

## Request

- Base URL: `https://api.oilpriceapi.com`
- URL: `https://api.oilpriceapi.com/v1/meta/limits`
- Auth: none required

Canonical, keyless source of truth for the free-tier allowance and every
paid plan's request limit and window (#5793). First-party clients — the
website, docs, SDKs, spreadsheet add-ins and the browser extension — read
this instead of hardcoding a limit, which is how "200 requests/month"
previously drifted across 229 call sites.

Unauthenticated and heavily cached. Prefer this over parsing pricing copy.

## Response `200`

Current free-tier allowance and the paid plan ladder

- object
  - `status` string
  - `data` object
    - `free` object: The free-tier allowance.
      - `limit` integer
      - `window` 'day' | 'month': The period the limit resets over.
      - `copy` string: Pre-rendered display string for UI copy.
    - `plans` object[]: Paid plan ladder, ascending by limit.
      - `plan` string
      - `limit` integer
      - `window` 'day' | 'month'
      - `copy` string

## Other responses

- `429`: Rate limited. This endpoint is keyless, so it is throttled by IP via Rack::Attack rather than by plan entitlement. Honour Retry-After.
- `500`: Unexpected server error. Retry transient failures with bounded backoff and retain the request ID when contacting support.

## Changes

- **2026-08-25** `0e79e21dee2e`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/oilpriceapi/apis/oil-price-api-v1/changes/v1/meta/limits/get.md)

---

[API](https://skmtc.dev/oilpriceapi/apis/oil-price-api-v1.md) - [All operations](https://skmtc.dev/oilpriceapi/apis/oil-price-api-v1/llms.txt) - [OpenAPI document](https://skmtc.dev/oilpriceapi/apis/oil-price-api-v1/revisions/7f8b4d763210?raw)
