---
title: "Power Index board"
method: GET
path: "/v1/power-index/{org}"
tags: ["Power Index"]
---

# Power Index board

`GET /v1/power-index/{org}`

## Request

- Base URL: `https://api.ufcalendar.com`
- URL: `https://api.ufcalendar.com/v1/power-index/{org}`
- Auth: HTTP bearer

The UFCalendar Power Index (our own rating engine, hourly refresh) for one org, in three views:

- `current` (default): top-rated fighters whose latest bout was in this org.
- `peaks`: the highest ratings ever reached, keyed on the org where the peak was set.
- `movers`: the biggest rating change over the last `days` (default 365), among fighters with at least two bouts in the window and five rated overall, whose latest bout in the window was in this org. Rows carry `start_rating`, `delta` and `fights_in_window` instead of peak fields.

Every row carries `division` (slug from the fighter's latest bout, `null` for a catchweight). `division=` narrows any view; the filter runs before `limit`. Unknown `view` 400s `invalid_view`, unknown `division` 400s `invalid_division`.

## Path parameters

- `org` 'ufc' | 'pfl' | 'oktagon' | 'bkfc' | 'rizin', required

## Query parameters

- `view` 'current' | 'movers' | 'peaks'
- `division` string
- `days` integer
- `limit` integer

## Response `200`

Board rows

- PowerIndexBoardResponse: Row shape follows `meta.view`: `current` / `peaks` rows carry peak fields, `movers` rows carry `start_rating` / `delta` / `fights_in_window`.
  - `data` union[], required
    - union
      - PowerIndexBoardRow: `view=current` / `view=peaks` row.
        - `position` integer, required
        - `fighter` object, required
          - `id` integer, required
          - `slug` string, required
          - `name` string, required
          - `nationality` string, nullable, required
          - `country_code` string, nullable, required
        - `rating` integer, required: Rounded.
        - `peak` integer, required: Rounded.
        - `peak_at` string, date, nullable, required
        - `last_fought_at` string, date, nullable, required
        - `fights_rated` integer, required
        - `division` string, nullable, required: Division slug from the fighter's latest bout; null for a catchweight.
      - PowerIndexMoverRow: `view=movers` row.
        - `position` integer, required
        - `fighter` object, required
          - `id` integer, required
          - `slug` string, required
          - `name` string, required
          - `nationality` string, nullable, required
          - `country_code` string, nullable, required: ISO-2 derived from `nationality`.
        - `rating` integer, required: Rating at the end of the window, rounded.
        - `start_rating` integer, required: Rating going into the window, rounded.
        - `delta` integer, required: `rating` − `start_rating`.
        - `fights_in_window` integer, required
        - `division` string, nullable, required
  - `meta` object, required
    - `org` string, required
    - `view` 'current' | 'movers' | 'peaks', required: Which board view a row belongs to.
    - `division` string, nullable, required: The `division=` filter applied.
    - `days` integer: `view=movers` only: the window actually used (snapped to 30/90/180/365/730/1825/3650).
    - `note` string, required
    - `ignored_params` string[]: Present only when the request carried query parameters this endpoint does not take — they were ignored. Same list as the `X-UFCalendar-Ignored-Params` header. Sorted, unique.

## Other responses

- `304`: Not Modified — `If-None-Match` matched the current weak `ETag`. Empty body.
- `400`: Invalid input (`invalid_view`, `invalid_division`).
- `401`: Missing/invalid API key (`unauthorized`).
- `403`: No active plan on the key's account (`subscription_required`) — choose a plan or start the free 1-day trial at https://www.ufcalendar.com/account/api.
- `404`: Not found (`not_found`; staged-org data 404s until the org is promoted).
- `429`: Rate limited (`rate_limited`) or monthly quota reached (`quota_exceeded`). Honor `Retry-After`.
- `500`: Something broke on our side (`internal_error`). It has been logged under the `request_id`.

---

[API](https://skmtc.dev/ufcalendar/apis/ufcalendar-fight-api.md) · [All operations](https://skmtc.dev/ufcalendar/apis/ufcalendar-fight-api/llms.txt) · [OpenAPI document](https://skmtc.dev/ufcalendar/apis/ufcalendar-fight-api/revisions/9623cc8fb70b?raw)
