---
title: "Retire Task"
method: POST
path: "/api/v1/tasks/{task_id}/retire"
tags: ["tasks"]
---

# Retire Task

`POST /api/v1/tasks/{task_id}/retire`

## Request

- Base URL: `https://api.badgeia.com`
- URL: `https://api.badgeia.com/api/v1/tasks/{task_id}/retire`
- Auth: none declared

One-way operator retire: set ``is_active = false`` — nothing else.

The catalog deliberately has no general mutation endpoint (contents and
secret-ness are set at create time), but a mislabeled task — e.g. a
"Holdout" authored with ``is_secret=false``, its answer key publicly
readable — must be removable over HTTP: SSH is forbidden and ops are
HTTP-driven (UX-AUDIT A3). Retiring only deactivates: it never edits,
un-retires, or deletes, so recorded runs/scores keep their history.
Idempotent — retiring a retired task reports ``was_active=false``.

## Path parameters

- `task_id` string, uuid, required

## Response `200`

Successful Response

- TaskRetireResult: Result of the one-way admin retire (UX-AUDIT A3). ``was_active`` lets an operator distinguish a fresh retire from an idempotent replay.
  - `task_id` string, uuid, required
  - `title` string, required
  - `was_active` boolean, required
  - `is_active` boolean, required

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/badgeia/apis/badge.md) · [All operations](https://skmtc.dev/badgeia/apis/badge/llms.txt) · [OpenAPI document](https://skmtc.dev/badgeia/apis/badge/revisions/7e7f7fee8b77?raw)
