---
title: "Turn an item down for the season."
method: POST
path: "/season-runs/{runId}/source-candidates/{candidateId}/reject"
tags: ["Integrations", "Seasons"]
---

# Turn an item down for the season.

`POST /season-runs/{runId}/source-candidates/{candidateId}/reject`

## Request

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

The row stays, so the next check does not bring it back. An item already kept is refused (409). Editors, admins and owners. Scope: `story:write`. Free.

## Response `200`

Turned down.

- SourceCandidateReviewResult
  - `outcome` 'accepted' | 'withheld' | 'rejected', required
  - `candidateId` string, required
  - `sourceId` string
  - `reason` string: Why the season's rules held it back (withheld).

## 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`: `not_found` or `season_run_not_found`.
- `409`: `season_run_state_invalid`: already kept.
- `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)
