---
title: "Follow again: the team drops its own statuses."
method: POST
path: "/teams/{id}/statuses/follow"
tags: ["teams"]
---

# Follow again: the team drops its own statuses.

`POST /teams/{id}/statuses/follow`

## Request

- Base URL: `https://restivity.ai/api/v1`
- URL: `https://restivity.ai/api/v1/teams/{id}/statuses/follow`
- Auth: OAuth 2 (authorization code, authorization URL `https://restivity.ai/oauth/authorize`, token URL `https://restivity.ai/api/oauth/token`, scopes: `projects:write`)

DESTRUCTIVE: the team's own statuses are removed and it follows the level above again. Its tasks land where the mapping says (the default maps same name + category, else the category base column); the answer carries `mapping_applied` and the counts. `already_following` (409) when it already follows. MCP sibling: `teams_statuses_follow`.

## Path parameters

- `id` string, uuid, required

## Request body

- FollowStatusesInput
  - `mapping` FollowMappingEntry[]: Where each own status that holds tasks lands: a status id of the followed list, or the category base column. Omitted, the default applies (same name and category, else the category base). An explicit mapping names every own status that holds tasks; a mapping missing one (say, a status that gained tasks since the screen was read) is refused with `mapping_missing_for_status`.
    - `from` string, uuid, required: The id of an own status — the palette the scope is leaving.
    - `to` union, required
      - object
        - `kind` 'status', required
        - `id` string, uuid, required
      - object
        - `kind` 'base', required
        - `category` 'todo' | 'in_progress' | 'completed', required

## Response `200`

The mapping applied and the counts.

- FollowStatusesResult
  - `mapping_applied` object[], required: The mapping the database applied, in the own list board order (the default, when none was sent).
    - `from` string, uuid, required
    - `to` string, uuid, nullable, required: The followed status id the tasks moved to, or null for the category base column.
  - `tasks_moved` integer, required: Tasks that were in an own status and moved to their destination.
  - `projects_affected` integer, required: Projects those tasks are in.
  - `pins_cleared` integer, required: Legacy pins to an own row that were not IN the status — cleared.
  - `views_rewritten` integer, required: Saved views whose status filter now names the destinations.
  - `statuses_removed` integer, required: Own statuses removed (the scope follows again).

## Other responses

- `400`: Invalid request shape.
- `401`: Missing or invalid access token.
- `403`: Token lacks the required scope.
- `404`: No such workspace / team / status visible to the caller — a malformed (non-UUID) id included, like every v1 route.
- `409`: The write conflicts with the palette state: `inherited_palette` (the list follows the one above it, or the status is of another level), `already_own`, `already_following`, `replacement_required` (tasks sit in the status — the problem carries `usage: {tasks, projects}`), `status_limit_reached` (15).
- `422`: Request body failed schema validation.
- `429`: Rate-limit exceeded for this tier.

---

[API](https://skmtc.dev/restivity/apis/restivity-rest-api.md) · [All operations](https://skmtc.dev/restivity/apis/restivity-rest-api/llms.txt) · [OpenAPI document](https://skmtc.dev/restivity/apis/restivity-rest-api/revisions/5764e41ebb3a?raw)
