Navigation

Comments

Comments belong to a task and accept either plain text or structured rich-text JSON (the same shape the in-app editor produces). HTML is rejected — the editor is structured to prevent stored XSS.

GET /tasks/{taskId}/comments

List all non-deleted comments on a task, ordered by creation time ascending.

{
  "comments": [
    {
      "id": "...", "task_id": "...",
      "author_id": "...", "author_name": "Alice",
      "content": "Looking into this now",
      "content_type": "text",
      "created_at": 1735689600, "updated_at": null
    }
  ]
}

content_type is "text" for plain strings and "rich" for structured JSON.

POST /tasks/{taskId}/comments

Post a comment.

curl -H "Authorization: Bearer kdt_..." \
     -H "Content-Type: application/json" \
     -d '{"content": "Looking into this now"}' \
     https://api.konduit.work/v1/tasks/<id>/comments

For structured rich text, pass the editor's JSON output as content. The exact JSON shape mirrors what the in-app editor exports — capture it from the network tab of any comment posted from the UI to see the schema:

{
  "content": {
    "type": "doc",
    "content": [
      { "type": "paragraph", "content": [{ "type": "text", "text": "Looking into this now" }] }
    ]
  }
}

Posting on behalf of a member (comment_as)

If your API key is a service account integration, pass comment_as (a workspace member's user ID) so the comment displays as authored by that member rather than the service account:

{ "content": "Synced from Slack", "comment_as": "user_id_xxx" }

The comment_as member must be a workspace member. Useful for Slack/Teams sync, support-ticket import, etc.

PATCH /tasks/{taskId}/comments/{commentId}

Edit a comment. Body: { "content": "..." }.

Authorization:

  • Master keys (scopes = *) can edit any comment in the workspace
  • Scoped keys can only edit comments authored by the API key's creator

DELETE /tasks/{taskId}/comments/{commentId}

Soft-delete a comment. Same authorization rules as PATCH. Comments are removed from list responses but retained in the database for audit purposes.

Next