---
title: "Get Perception Leaderboard"
method: GET
path: "/api/v1/console/evals/perception-leaderboard"
tags: ["evals"]
---

# Get Perception Leaderboard

`GET /api/v1/console/evals/perception-leaderboard`

## Request

- Base URL: `https://ndi-api.nace.ai` (the document declares no server; this is the origin it was published from)
- URL: `https://ndi-api.nace.ai/api/v1/console/evals/perception-leaderboard`
- Auth: HTTP bearer
- TypeScript: <https://skmtc.dev/nace/apis/ndi-service/docs/api/v1/console/evals/perception-leaderboard/get.ts> (a function with typed inputs; its response is checked against the schema)

Every PR-versioned perception checkpoint, oldest first.

## Headers

- `x-api-key` string, nullable

## Response `200`

Successful Response

- PerceptionLeaderboard: All immutable checkpoints, oldest first.
  - `latest_version` string, required
  - `snapshots` PerceptionSnapshot[], required
    - `version` string, required
    - `published_at` string, date, required
    - `title` string, required
    - `summary` string, required
    - `dataset` DatasetReference, required: Exact corpus snapshot behind a published checkpoint.
      - `repository` string, required
      - `revision` string, nullable
      - `url` string, nullable
      - `qualification` string, nullable
    - `frontier_dataset` DatasetReference: Exact corpus snapshot behind a published checkpoint.
      - `repository` string, required
      - `revision` string, nullable
      - `url` string, nullable
      - `qualification` string, nullable
    - `verified_leaders` integer, required
    - `leaders_with_provisional` integer, required
    - `close_signals` integer, nullable
    - `lanes` PerceptionLane[], required
      - `id` string, required
      - `operation` 'parse' | 'ground' | 'split' | 'classify' | 'extract', required
      - `document_type` string, required
      - `baseline_score` number, required
      - `ndi_score` number, required
      - `official_comparator` OfficialComparator: Comparison used for the team's official SOTA decision.
        - `provider` string, required
        - `score` number, required
      - `status` 'verified_leader' | 'provisional_leader' | 'improved' | 'behind' | 'limited_evidence' | 'regressed', required
      - `median_seconds` number, nullable
      - `p95_seconds` number, nullable
      - `usage_units` integer, nullable
      - `estimated_cost_usd` number, nullable
      - `evidence` string, required
      - `frontier_references` FrontierReference[]
        - `provider` 'GPT-6 Astra' | 'Claude Fable 5.1', required
        - `score` number, required
        - `median_seconds` number, nullable
        - `p95_seconds` number, nullable
        - `captured_cost_usd` number, nullable
        - `excluded_from_official_sota` true
    - `improvements` PerceptionImprovement[]
      - `title` string, required
      - `summary` string, required
      - `result` string, required
      - `lane_ids` string[]
      - `pr_urls` string[]
    - `provider_campaigns` ProviderCampaign[]
      - `id` string, required
      - `name` string, required
      - `operation` 'parse' | 'ground' | 'split' | 'classify' | 'extract', required
      - `metric` string, required
      - `scope` string, required
      - `qualification` string, required
      - `dataset` DatasetReference: Exact corpus snapshot behind a published checkpoint.
        - `repository` string, required
        - `revision` string, nullable
        - `url` string, nullable
        - `qualification` string, nullable
      - `results` ProviderCampaignResult[], required
        - `provider` string, required
        - `score` number, nullable
        - `median_seconds` number, nullable
        - `p95_seconds` number, nullable
        - `cost_usd` number, nullable
        - `cost_kind` 'captured' | 'estimated' | 'captured_lower_bound' | 'proxy_upper_bound' | 'not_captured' | 'not_run', required
        - `qualification` string, required

## Other responses

- `400`: Bad Request
- `401`: Missing or invalid bearer token.
- `402`: Payment Required
- `403`: An API key was sent, the account is not Nace staff, or it is disabled.
- `404`: No console account for this identity — sign in first.
- `409`: Conflict
- `413`: Request Entity Too Large
- `422`: Unprocessable Entity
- `500`: Internal Server Error
- `503`: Service Unavailable

---

[API](https://skmtc.dev/nace/apis/ndi-service.md) - [All operations](https://skmtc.dev/nace/apis/ndi-service/llms.txt) - [OpenAPI document](https://skmtc.dev/nace/apis/ndi-service/revisions/d9d1f8ec2207?raw)
