---
title: "Spin a follow-up off a task"
method: POST
path: "/v1/tasks/{id}/follow-ups"
---

# Spin a follow-up off a task

`POST /v1/tasks/{id}/follow-ups`

## Request

- Base URL: `https://app.takibibase.com`
- URL: `https://app.takibibase.com/v1/tasks/{id}/follow-ups`
- Auth: HTTP bearer

Requires task:create and tasks capabilities plus a whole-collection grant on the source card's project. Creates a fresh todo card in the source card's project linked back to it; the source card is never modified. No blocked, escalation, review-note, or artifact state carries over. The link is set once at creation and cannot be edited.

## Path parameters

- `id` string, uuid, required

## Request body

- object
  - `title` string, required
  - `body` string
  - `assigneeProfileId` string, uuid, nullable
  - `dueAt` string, nullable

## Response `201`

Follow-up created.

- object
  - `task` Task, required
    - `id` string, uuid
    - `projectId` string, uuid
    - `title` string
    - `body` string
    - `status` 'todo' | 'in_progress' | 'review' | 'done'
    - `blocked` boolean
    - `blockedReason` string, nullable
    - `reviewNote` string, nullable
    - `previousReviewNote` string, nullable
    - `followsUpOnId` string, uuid, nullable
    - `followsUpOn` object, nullable
      - `id` string, uuid
      - `title` string
      - `status` 'todo' | 'in_progress' | 'review' | 'done'
      - `archivedAt` string, nullable
    - `followups` object[]
      - `id` string, uuid
      - `title` string
      - `status` 'todo' | 'in_progress' | 'review' | 'done'
      - `archivedAt` string, nullable
      - `assigneeProfileId` string, nullable
      - `assigneeName` string, nullable
    - `escalationReason` string, nullable
    - `escalationRaisedAt` string, nullable
    - `escalationRaisedByProfileId` string, nullable
    - `reviewEnteredByProfileId` string, nullable
    - `reviewVerdict` 'accepted' | 'rejected' | 'null', nullable
    - `reviewVerdictAt` string, nullable
    - `lastFeedbackArtifactId` string, uuid, nullable
    - `assigneeProfileId` string, nullable
    - `assigneeName` string, nullable
    - `dueAt` string, nullable
    - `archivedAt` string, nullable
    - `createdByProfileId` string, nullable
    - `createdAt` string
    - `updatedAt` string
    - `artifacts` Artifact[]
      - `id` string, uuid
      - `kind` 'link' | 'markdown'
      - `url` string, nullable: Link target; null on markdown notes.
      - `title` string, nullable: Markdown display title as stored; null on links and untitled notes.
      - `note` string, nullable
      - `assertedSize` integer, nullable
      - `assertedHash` string, nullable
      - `createdByProfileId` string, nullable
      - `createdAt` string

## Other responses

- `400`: Invalid request.
- `401`: Missing, invalid, paused or revoked key, or human-only route.
- `403`: Capability or access denied.
- `404`: Resource not found or not visible.
- `422`: Secret blocked or unprocessable state.
- `429`: Rate or daily budget limit.

---

[API](https://skmtc.dev/takibibase/apis/takibi-agent-api.md) · [All operations](https://skmtc.dev/takibibase/apis/takibi-agent-api/llms.txt) · [OpenAPI document](https://skmtc.dev/takibibase/apis/takibi-agent-api/revisions/5eacec570cba?raw)
