---
title: "A season's review queue."
method: GET
path: "/season-runs/{runId}/source-candidates"
tags: ["Integrations", "Seasons"]
---

# A season's review queue.

`GET /season-runs/{runId}/source-candidates`

## Request

- Base URL: `https://docs.sleeperhit.studio/api/v1`
- URL: `https://docs.sleeperhit.studio/api/v1/season-runs/{runId}/source-candidates`
- Auth: HTTP bearer

What connected products found for the season, newest first: NEW, WITHHELD (with the reason), ACCEPTED, REJECTED, with counts and a read-back of the season's rules. `state`, `limit` (1-200) and `cursor` query parameters. Every member reads. Scope: `story:read`. Free.

## Query parameters

- `state` 'NEW' | 'ACCEPTED' | 'REJECTED' | 'WITHHELD'
- `limit` integer
- `cursor` string

## Response `200`

The review queue.

- SeasonSourceCandidates: A season's review queue (server/integration-curation.ts `SeasonCurationView`).
  - `season` object, required
  - `policySummary` object, required
  - `counts` object, required
    - `NEW` integer
    - `ACCEPTED` integer
    - `REJECTED` integer
    - `WITHHELD` integer
  - `canCurate` boolean, required
  - `candidates` object[], required
  - `nextCursor` string, nullable, required

## Other responses

- `401`: Missing, malformed, revoked, or expired API key.
- `403`: API key is valid but lacks the scope, is blocked by IP allowlist, or the account is disabled.
- `404`: `season_run_not_found`.
- `429`: Rate limit for this API key + IP + route family was exceeded.
- `500`: The API failed unexpectedly. Safe to retry with the same Idempotency-Key.

---

[API](https://skmtc.dev/sleeperhit/apis/sleeper-hit-studio-story-api.md) · [All operations](https://skmtc.dev/sleeperhit/apis/sleeper-hit-studio-story-api/llms.txt) · [OpenAPI document](https://skmtc.dev/sleeperhit/apis/sleeper-hit-studio-story-api/revisions/4534f5d25540?raw)
