Skip to content
Kumquat
Esc
↑↓navigate↵open⌘Jpreview

Tasks Board Columns

The kanban’s opening request: the first limit cards of every status, each column’s next_cursor, and every column’s total — one round trip and one batch of included instead of one request per column.

Columns are returned for every status in the workflow, empty ones included, so the board renders the same shape whatever the filter matches. Continue any single column with GET /tasks/board?cursor=… and that column’s status in query.

GET/api/v1/tasks/board/columns
Authorization
AuthorizationBearer token · headerrequired
or
AuthorizationOAuth2 access token · headerrequired
Query parameters
querystring | any
react-querybuilder rule group as a JSON string
sortstring | any
Sort as JSON string: {"field": ..., "direction": 1|-1}
limitinteger
cards per column
min 1 · max 50 · default: 10
searchstring | any
case-insensitive match on name / generated_name; an all-digit term matches the task number
Responses
200Successful Response
successboolean
default: true
dataTasksBoardColumns | any
Show properties
Any of:
TasksBoardColumns
columnsBoardColumn[]required
Show properties
Array of BoardColumn
statusTaskStatusrequired
Notion "Status" for a task — the workflow-status source rolled up onto each Creative. Grouped in Notion as To-do / In progress / Complete; see the `*_STATUSES` frozensets below. **Declaration order is the board's column order**, front to back — `/tasks/board/columns` answers in it, and the frontend builds both the kanban's columns and the Status select from it (`STATUS_OPTIONS`). So this reads as the workflow does: a task passes In Progress before either check. Reordering a member here moves a column on the board.
Allowed:backlogready_for_productionin_progresstech_checkcreative_checkdonearchived
tasksTaskCard[]required
Show properties
Array of TaskCard
idstringrequired
namestringrequired
numberinteger | any
Show properties
Any of:
integer
integer
any
any
generated_namestring | any
Show properties
Any of:
string
string
any
any
statusTaskStatus
Notion "Status" for a task — the workflow-status source rolled up onto each Creative. Grouped in Notion as To-do / In progress / Complete; see the `*_STATUSES` frozensets below. **Declaration order is the board's column order**, front to back — `/tasks/board/columns` answers in it, and the frontend builds both the kanban's columns and the Status select from it (`STATUS_OPTIONS`). So this reads as the workflow does: a task passes In Progress before either check. Reordering a member here moves a column on the board.
Allowed:backlogready_for_productionin_progresstech_checkcreative_checkdonearchived
test_statusTestStatus
Allowed:not_testedin_testtestedpaused
task_typeTaskType | any
Show properties
Any of:
TaskType
string
any
any
work_streamWorkStream | any
Show properties
Any of:
WorkStream
string
any
any
product_idstring | any
Show properties
Any of:
string
string
any
any
media_typeMediaType | any
Show properties
Any of:
MediaType
string
any
any
sourceSource | any
Show properties
Any of:
Source
string
any
any
creation_complexityinteger | any
Show properties
Any of:
integer
integer
any
any
execution_complexityinteger | any
Show properties
Any of:
integer
integer
any
any
priorityinteger | any
Show properties
Any of:
integer
integer
any
any
assignee_idstring | any
Show properties
Any of:
string
string
any
any
task_owner_idstring | any
Show properties
Any of:
string
string
any
any
deadline_atstring<date-time> | any
Show properties
Any of:
string<date-time>
string<date-time>
any
any
manual_launchboolean
default: false
launched_atstring<date-time> | any
Show properties
Any of:
string<date-time>
string<date-time>
any
any
countinteger | any
Show properties
Any of:
integer
integer
any
any
resolutionResolution | any
Show properties
Any of:
Resolution
string
any
any
geoGeo | any
Show properties
Any of:
Geo
string
any
any
languageLanguage | any
Show properties
Any of:
Language
string
any
any
varied_elementsVariedElement[]
subjectstring | any
Show properties
Any of:
string
string
any
any
topicstring | any
Show properties
Any of:
string
string
any
any
primary_anchorPrimaryAnchor | any
Show properties
Any of:
PrimaryAnchor
string
any
any
audiencestring | any
Show properties
Any of:
string
string
any
any
awareness_stageAwarenessStage | any
Show properties
Any of:
AwarenessStage
string
any
any
messaging_angleMessagingAngle | any
Show properties
Any of:
MessagingAngle
string
any
any
hook_triggerHookTrigger | any
Show properties
Any of:
HookTrigger
string
any
any
hook_typeHookType | any
Show properties
Any of:
HookType
string
any
any
ad_formatAdFormat | any
Show properties
Any of:
AdFormat
string
any
any
traffic_flowTrafficFlow | any
Show properties
Any of:
TrafficFlow
string
any
any
started_atstring<date-time> | any
Show properties
Any of:
string<date-time>
string<date-time>
any
any
submitted_atstring<date-time> | any
Show properties
Any of:
string<date-time>
string<date-time>
any
any
completed_atstring<date-time> | any
Show properties
Any of:
string<date-time>
string<date-time>
any
any
comment_countinteger
default: 0
creatives_totalinteger
default: 0
creatives_doneinteger
default: 0
automationTaskCardAutomation
Trimmed `TaskAutomation` for the board feed. `started_at` is here so the board can answer "is this run still alive?" the same way the detail page does — from `AUTOMATION_RUN_TIMEOUT` against the moment the run was enqueued. Without it the board had to time pending cards itself, from the moment it first *saw* them, against a threshold of its own.
Show properties
stateAutomationState | any
Show properties
Any of:
AutomationState
string
any
any
errorstring | any
Show properties
Any of:
string
string
any
any
started_atstring<date-time> | any
Show properties
Any of:
string<date-time>
string<date-time>
any
any
created_atstring<date-time>required
updated_atstring<date-time>required
deleted_atstring<date-time> | any
Show properties
Any of:
string<date-time>
string<date-time>
any
any
creation_pointsnumber | any
Show properties
Any of:
number
number
any
any
execution_pointsnumber | any
Show properties
Any of:
number
number
any
any
next_cursorstring | any
Show properties
Any of:
string
string
any
any
totalinteger
default: 0
includedTaskIncludes
Related entities referenced by the payload's tasks, keyed by id — same contract as `CreativeIncludes`. `creatives` covers the lineage refs (`origin_creative_id`, `source_creative_ids`), so the detail page renders them without a request per id. It is empty for the board feed, whose `TaskCard` is trimmed of those fields. The UI edits lineage as draft state, so ids added before a save are the client's to label — it already holds the picked creative.
Show properties
usersobject
productsobject
creativesobject
task_creativesCreativeItem[]
Show properties
Array of CreativeItem
idstringrequired
namestringrequired
variation_numinteger | any
Show properties
Any of:
integer
integer
any
any
in_work_atstring<date-time> | any
Show properties
Any of:
string<date-time>
string<date-time>
any
any
assignee_idstring | any
Show properties
Any of:
string
string
any
any
task_owner_idstring | any
Show properties
Any of:
string
string
any
any
any
any
messagestring | any
Show properties
Any of:
string
string
any
any
errorsstring[] | any
Show properties
Any of:
string[]
Array of string
string
any
any
422Validation Error
detailValidationError[]
Show properties
Array of ValidationError
locstring | integer[]required
Show properties
Array of string | integer
Any of:
string
string
integer
integer
msgstringrequired
typestringrequired
inputany
ctxobject
Request
curl -X GET "/api/v1/tasks/board/columns" \
  -H "Authorization: Bearer YOUR_TOKEN"
Response
{
  "success": true,
  "data": {
    "columns": [
      {
        "status": "backlog",
        "tasks": [
          {
            "id": "string",
            "name": "string",
            "number": 0,
            "generated_name": "string",
            "status": "backlog",
            "test_status": "not_tested",
            "task_type": "NEW",
            "work_stream": "Performance",
            "product_id": "string",
            "media_type": "VID",
            "source": "META",
            "creation_complexity": 0,
            "execution_complexity": 0,
            "priority": 0,
            "assignee_id": "string",
            "task_owner_id": "string",
            "deadline_at": "2019-08-24T14:15:22Z",
            "manual_launch": false,
            "launched_at": "2019-08-24T14:15:22Z",
            "count": 0,
            "resolution": "1080x1920",
            "geo": "US",
            "language": "EN",
            "varied_elements": [
              "hook"
            ],
            "subject": "string",
            "topic": "string",
            "primary_anchor": "pain_led",
            "audience": "string",
            "awareness_stage": "unaware",
            "messaging_angle": "pattern_interrupt",
            "hook_trigger": "pattern_interrupt",
            "hook_type": "pattern_interrupt",
            "ad_format": "animation",
            "traffic_flow": "W2A",
            "started_at": "2019-08-24T14:15:22Z",
            "submitted_at": "2019-08-24T14:15:22Z",
            "completed_at": "2019-08-24T14:15:22Z",
            "comment_count": 0,
            "creatives_total": 0,
            "creatives_done": 0,
            "automation": {
              "state": "pending",
              "error": "string",
              "started_at": "2019-08-24T14:15:22Z"
            },
            "created_at": "2019-08-24T14:15:22Z",
            "updated_at": "2019-08-24T14:15:22Z",
            "deleted_at": "2019-08-24T14:15:22Z",
            "creation_points": 0,
            "execution_points": 0
          }
        ],
        "next_cursor": "string",
        "total": 0
      }
    ],
    "included": {
      "users": {
        "property1": {
          "id": "string",
          "name": "string",
          "email": "string",
          "image_url": "string"
        },
        "property2": {
          "id": "string",
          "name": "string",
          "email": "string",
          "image_url": "string"
        }
      },
      "products": {
        "property1": {
          "id": "string",
          "name": "string"
        },
        "property2": {
          "id": "string",
          "name": "string"
        }
      },
      "creatives": {
        "property1": {
          "id": "string",
          "name": "string",
          "variation_num": 0,
          "in_work_at": "2019-08-24T14:15:22Z",
          "assignee_id": "string",
          "task_owner_id": "string"
        },
        "property2": {
          "id": "string",
          "name": "string",
          "variation_num": 0,
          "in_work_at": "2019-08-24T14:15:22Z",
          "assignee_id": "string",
          "task_owner_id": "string"
        }
      },
      "task_creatives": [
        {
          "id": "string",
          "name": "string",
          "variation_num": 0,
          "in_work_at": "2019-08-24T14:15:22Z",
          "assignee_id": "string",
          "task_owner_id": "string"
        }
      ]
    }
  },
  "message": "string",
  "errors": [
    "string"
  ]
}