Skip to content

Task Management — Overview & Boards

Provider-agnostic API for managing tasks across Monday.com, Asana, Jira Cloud, Linear, and Notion. Use ?provider=monday when multiple providers are connected; if only one is connected it auto-resolves.

Base URL

/api/access/tasks

Authentication

Authorization: Bearer <access_token>

Rate Limits

60 requests/minute300 requests/hour

Required

taskManagementEnabled: true

Endpoints Overview

MethodEndpointDescription
GET/providersList connected task providers
GET/boardsList boards/projects
GET/boards/{boardId}Get a single board
GET/boards/{boardId}/itemsList items in a board
GET/items/{itemId}Get a single item
POST/boards/{boardId}/itemsCreate a new item
PATCH/items/{itemId}Update an item
DELETE/items/{itemId}Delete an item
POST/items/{itemId}/commentsAdd a comment

Common Errors

These can occur on any endpoint and are not repeated per-endpoint below.

StatusCodeWhen
401Invalid or missing token
403OPERATION_NOT_ALLOWEDToken lacks the required operation flag
422TASK_NOT_ENABLEDToken doesn’t have task management turned on
422NO_TASK_CONNECTIONNo provider connected, or specified provider not found
400PROVIDER_REQUIREDMultiple providers connected without ?provider=
502Upstream provider error

Note

When PROVIDER_REQUIRED is returned, the response body includes a connectedProviders array so you know which values to pass.
GET/api/access/tasks/providersBearer Token

List Providers

List connected task providers. No operation permission required — only taskManagementEnabled.

Response 200 OK

[
{
"taskProviderId": 1,
"providerCode": "MONDAY",
"providerDisplayName": "Monday.com"
}
]

Response Fields

FieldTypeDescription
taskProviderIdshortInternal provider type ID
providerCodestringCode to use in ?provider= (e.g. MONDAY, NOTION, LINEAR, ASANA, JIRA_CLOUD)
providerDisplayNamestringHuman-readable name (e.g. "Monday.com")

Tip

Returns a flat array (not wrapped). Only verified, active connections are included. The only errors possible on this endpoint are 401 and 422 (TASK_NOT_ENABLED).
GET/api/access/tasks/boardsBearer Token

List Boards

List boards/projects accessible to this token.

Required permission: ViewBoards

Query Parameters

ParameterTypeDefaultDescription
providerstringautoProvider code. Required when multiple providers are connected.
limitint25Max results (1–200)
pageint?Page number (page-based pagination: Asana, Jira)
cursorstring?Cursor from previous response’s nextCursor (cursor-based: Monday, Notion, Linear)

Response 200 OK

{
"provider": "MONDAY",
"boards": [
{
"id": "12345678",
"name": "Sprint Board",
"description": "Current sprint tasks",
"state": "active",
"groups": [
{ "id": "new_group", "title": "To Do", "color": "#579BFC" }
],
"columns": [
{ "id": "status", "title": "Status", "type": "color" },
{ "id": "person", "title": "Assignee", "type": "multiple-person" }
]
}
],
"nextCursor": "abc123",
"nextPage": null,
"accessInfo": null
}

Response Fields

FieldTypeDescription
providerstring?Provider code used
boardsBoard[]List of boards (see Board object)
nextCursorstring?Pass as ?cursor= for next page (cursor-based providers)
nextPageint?Pass as ?page= for next page (page-based providers)
accessInfostring?Restriction info for AI agents

Warning

Board access is default-deny. When the token has no boards scoped the response is still 200 with an accessInfo message directing you to configure board scoping at my.porteden.com → Access Tokens → Board Scoping.
GET/api/access/tasks/boards/{boardId}Bearer Token

Get Board

Get a single board with its groups and columns.

Required permission: ViewBoards

Path Parameters

ParameterTypeDescription
boardIdstringBoard ID from the provider

Query Parameters

ParameterTypeDefaultDescription
providerstringautoProvider code

Response 200 OK

{
"provider": "MONDAY",
"board": {
"id": "12345678",
"name": "Sprint Board",
"description": "Current sprint tasks",
"state": "active",
"groups": [
{ "id": "new_group", "title": "To Do", "color": "#579BFC" },
{ "id": "done_group", "title": "Done", "color": "#00C875" }
],
"columns": [
{ "id": "status", "title": "Status", "type": "color" },
{ "id": "person", "title": "Assignee", "type": "multiple-person" },
{ "id": "date4", "title": "Due Date", "type": "date" }
]
},
"accessInfo": null
}

Response Fields

FieldTypeDescription
providerstring?Provider code
boardBoard?Board object (see Board object), null on error
accessInfostring?Restriction info

Error Responses

StatusDescription
403Board not in token scope
404Board doesn’t exist at the provider
502Provider error

Data Types

Board Object

FieldTypeDescription
idstringBoard ID from the provider
namestringBoard name
descriptionstring?Board description
statestring?Board state (e.g. "active", "archived")
groupsGroup[]?Groups/sections within the board
columnsColumn[]?Column definitions for the board

Group Object

FieldTypeDescription
idstringGroup ID (use for ?groupId= filter and groupId in create)
titlestringGroup display name
colorstring?Group color hex code

Column Object

FieldTypeDescription
idstringColumn ID (use as key in fields for create/update)
titlestringColumn display name
typestringColumn type (provider-specific, e.g. "color", "date", "people", "numbers", "text")