Skip to main content
Base path: /api/workspaces/{workspaceId}/tasks. Ids are UUIDs.
Method & pathDoesScope · role
POST /tasksCreate a tasktasks:write
GET /tasksList taskstasks:read
GET /tasks/reviewNext task awaiting reviewtasks:read
GET /tasks/{taskId}Full detail incl. content and commentstasks:read
PATCH /tasks/{taskId}Update a tasktasks:write · Admin
DELETE /tasks/{taskId}Soft-deletetasks:write · Admin
POST /tasks/{taskId}/approveApprove a reviewed drafttasks:write · Reviewer
POST /tasks/{taskId}/rejectReject with optional commenttasks:write · Reviewer
POST /tasks/{taskId}/publishPublish an approved tasktasks:write · Reviewer
POST /tasks/{taskId}/retryRe-run a failed tasktasks:write · Admin
GET /tasks/{taskId}/commentsList commentstasks:read
POST /tasks/{taskId}/commentsAdd a commenttasks:write

Create a task

POST /api/workspaces/{workspaceId}/tasks
{
  "title": "Post about the v2.0 launch",
  "instructions": "Write an upbeat announcement for developers.",
  "outputTypes": ["x", "linkedin"],
  "publishMode": "manual",
  "requiresReview": true,
  "skillIds": [],
  "fileIds": []
}
title is the only required field. publishMode is "immediate" | "scheduled" | "manual" (default "manual"); "scheduled" additionally requires publishAt (ISO timestamp). requiresReview defaults to true and is forced true for Viewer-role callers. Returns 201 with the bare task object.

List tasks

GET /tasks?status=review&limit=50&offset=0
Returns a bare JSON array (offset pagination, limit 1–100). Each task includes its contentItems and an isOverdue flag. The status filter accepts todo, working, review, approved, published, deleted, failed. A task’s status field can additionally be publishing while a publish is in flight (not filterable).

Approve, reject, publish

Approve requires the task to be in review. The response includes willPublishAt"immediately", "manual", or the scheduled timestamp — telling you what happens next. Reject accepts an optional { "comment": "…" }, returns the task to todo, bumps revisionCount, and keeps the assignee — the same worker revises. Rejecting an approved task also clears the approval (the “revise” flow). Publish publishes an approved task now — the manual-mode trigger.