---
title: "Everything a judge has scored"
method: GET
path: "/v1/judges/{id}/scorecards"
tags: ["Scorecards"]
---

# Everything a judge has scored

`GET /v1/judges/{id}/scorecards`

## Request

- Base URL: `https://api.ufcalendar.com`
- URL: `https://api.ufcalendar.com/v1/judges/{id}/scorecards`
- Auth: HTTP bearer

This judge's card for every launch-org bout they worked, newest first — the bout, its event, the decision type, and their own card, with where it sat on the panel: `lone_dissent` (three known verdicts and this judge alone differs from both others), `split` (three known verdicts that do not all agree) — both `null` when the panel is not three judges or a verdict is unknown — and `colleagues`, the other judges' totals and verdicts (the full round-by-round panel is on `/v1/fights/{id}/scorecards`). Cursor-paginated.

## Path parameters

- `id` integer, required

## Query parameters

- `cursor` string
- `limit` integer

## Response `200`

Cards, newest first

- JudgeScorecardsResponse
  - `data` JudgeScorecardEntry[], required
    - `fight_id` integer, required
    - `event` object, required
      - `id` integer, required
      - `slug` string, required
      - `title` string, required
      - `org` string, required
      - `starts_at` string, date-time, nullable, required
    - `fighter_a_id` integer, nullable, required
    - `fighter_b_id` integer, nullable, required
    - `decision_type` string, nullable, required
    - `card` JudgeCard, required: One judge's card for one bout.
      - `judge_id` integer, nullable, required: Null on PFL's US results-post cards (no judge identity published).
      - `judge_name` string, nullable, required
      - `total_a` integer, nullable, required: Oriented to the bout's `fighter_a_id`.
      - `total_b` integer, nullable, required: Oriented to the bout's `fighter_b_id`.
      - `winner_fighter_id` integer, nullable, required: Who THIS judge gave it to.
      - `is_draw` boolean, required
      - `scores_known` boolean, required: false ⇒ the commission published the outcome only; totals are a 1-0 / 1-1 / 0-0 placeholder and `rounds` is empty.
      - `rounds` ScoreRound[], required
        - `round` integer, required
        - `a` integer, nullable, required
        - `b` integer, nullable, required
    - `lone_dissent` boolean, nullable, required: true = three known verdicts and this judge alone differs from both others; null = not a three-judge panel, or a verdict is unknown.
    - `split` boolean, nullable, required: true = three known verdicts that do not all agree; null as above.
    - `colleagues` Colleague[], required
      - `judge_id` integer, nullable, required
      - `judge_name` string, nullable, required
      - `total_a` integer, nullable, required
      - `total_b` integer, nullable, required
      - `winner_fighter_id` integer, nullable, required
      - `is_draw` boolean, required
  - `meta` object, required
    - `judge` Judge, required
      - `id` integer, required
      - `name` string, required
      - `fights` integer, required: Bouts scored in launch scope.
      - `rounds_scored` integer, required
      - `wide_rounds` integer, required: Rounds scored 10-8 or wider.
      - `split_fights` integer, required: Three-judge cards of theirs where the panel did not agree.
      - `three_judge_fights` integer, required
      - `lone_dissents` integer, required: Three-judge cards where this judge alone picked the other corner.
      - `first_scored` string, date, nullable, required
      - `last_scored` string, date, nullable, required
      - `orgs` string[], required
    - `pagination` Pagination, required
      - `next_cursor` string, nullable, required: Opaque; pass as `?cursor=`. Null on the last page.
      - `has_more` boolean, required
      - `limit` integer, required: The page size actually applied (out-of-range `limit` values are clamped).
    - `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_cursor`).
- `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)
