---
title: "Add a comment"
method: POST
path: "/api/v0/tasks/{id}/comments"
tags: ["Comments"]
---

# Add a comment

`POST /api/v0/tasks/{id}/comments`

## Request

- Base URL: `https://app.vibeflow.tools`
- URL: `https://app.vibeflow.tools/api/v0/tasks/{id}/comments`
- Auth: HTTP bearer

Author semantics (L1): author preserved verbatim. Write — Phase 3.

## Path parameters

- `id` string, required

## Request body

- CommentInput
  - `author` 'user' | 'agent'
  - `text` string, required

## Response `200`

Add a comment — success

- Comment: Ledger L1: author is explicit and preserved end to end.
  - `id` string, required
  - `author` 'user' | 'agent', required
  - `text` string, required
  - `type` 'comment' | 'system'
  - `source` 'cli' | 'web'
  - `createdAt` string, date-time

## Other responses

- `400`: Malformed request (includes invalid task/comment id form)
- `401`: Missing or invalid principal
- `403`: Lacking scope or membership
- `404`: Unknown id
- `429`: Rate limited — cloud per-token quota exceeded (reads 300/min, writes 60/min, token creation 10/hour); counters are per-replica, so the effective limit is the configured value × replicas. The response carries Retry-After.

---

[API](https://skmtc.dev/vibeflow/apis/vibeflow-api-v0.md) · [All operations](https://skmtc.dev/vibeflow/apis/vibeflow-api-v0/llms.txt) · [OpenAPI document](https://skmtc.dev/vibeflow/apis/vibeflow-api-v0/revisions/efd4ba944b0b?raw)
