A versioned REST API for building integrations against your IntelliTasks data — projects, work items, comments, sprints, and members.
Every request needs an Authorization: Bearer <token> header. Create a personal access token from Settings → Integrations.
A token is created with one or more scopes: work_items (work items and comments), sprints, and members. Listing or reading projects needs no scope beyond a valid token. A legacy token with no scopes at all has full access.
120 requests per 60-second sliding window, per token. Every authenticated response carries X-RateLimit-Limit and X-RateLimit-Remaining headers; a 429 response also carries Retry-After (seconds).
List endpoints accept limit (1-100, default 50) and an opaque cursor query parameter, and return a nextCursor field (null once there are no more pages).
Errors are shaped as { "error": { "code", "message", "fieldErrors"? } }. Codes: bad_request (400), unauthorized (401), forbidden / read_only (403), not_found (404), conflict (409), validation_failed (422), rate_limited (429), and internal (500).
Full machine-readable reference: /api/v1/openapi.json (OpenAPI 3.1).
/api/v1/projectsList accessible projects.
/api/v1/projects/{project}Get a project, including its board columns and labels.
Parameters
project (path) — A project's id or key (e.g. "ENG")./api/v1/projects/{project}/work-itemsscope: work_itemsList a project's work items.
Parameters
project (path) — A project's id or key (e.g. "ENG").assigneeId (query) — Filter by assignee user id.sprintId (query) — Filter by sprint id.columnId (query) — Filter by board column id.type (query) — Filter by work item type.limit (query) — Page size, 1-100 (default 50).cursor (query) — Opaque pagination cursor from a previous response's nextCursor./api/v1/projects/{project}/work-itemsscope: work_itemsCreate a work item.
Parameters
project (path) — A project's id or key (e.g. "ENG").Request body
| Field | Type | Required | Notes |
|---|---|---|---|
type | string | Yes | one of: "epic", "story", "task", "bug" |
title | string | Yes | min length 2, max length 200 |
description | string | No | max length 5000 |
priority | string | No | one of: "low", "medium", "high", "urgent" |
sprintScope | string | No | one of: "commitment", "best_effort" |
assigneeId | string | null | No | min length 1 |
labels | string[] | No | max items 10 |
dueDate | string | null | No | date |
estimate | integer | null | No | min 0, max 999 |
estimateUnit | string | null | No | one of: "hour", "day", "week" |
parentId | string | null | No | min length 1 |
goalId | string | null | No | min length 1 |
columnId | string | null | No | min length 1 |
{
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": [
"epic",
"story",
"task",
"bug"
]
},
"title": {
"type": "string",
"minLength": 2,
"maxLength": 200
},
"description": {
"type": "string",
"maxLength": 5000
},
"priority": {
"type": "string",
"enum": [
"low",
"medium",
"high",
"urgent"
]
},
"sprintScope": {
"type": "string",
"enum": [
"commitment",
"best_effort"
]
},
"assigneeId": {
"anyOf": [
{
"type": "string",
"minLength": 1
},
{
"type": "null"
}
]
},
"labels": {
"maxItems": 10,
"type": "array",
"items": {
"type": "string"
}
},
"dueDate": {
"anyOf": [
{
"type": "string",
"format": "date",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"
},
{
"type": "null"
}
]
},
"estimate": {
"anyOf": [
{
"type": "integer",
"minimum": 0,
"maximum": 999
},
{
"type": "null"
}
]
},
"estimateUnit": {
"anyOf": [
{
"type": "string",
"enum": [
"hour",
"day",
"week"
]
},
{
"type": "null"
}
]
},
"parentId": {
"anyOf": [
{
"type": "string",
"minLength": 1
},
{
"type": "null"
}
]
},
"goalId": {
"anyOf": [
{
"type": "string",
"minLength": 1
},
{
"type": "null"
}
]
},
"columnId": {
"anyOf": [
{
"type": "string",
"minLength": 1
},
{
"type": "null"
}
]
}
},
"required": [
"type",
"title"
]
}/api/v1/work-items/{workItem}scope: work_itemsGet a work item.
Parameters
workItem (path) — A work item's id or display id (e.g. "ENG-42")./api/v1/work-items/{workItem}scope: work_itemsUpdate a work item.
Parameters
workItem (path) — A work item's id or display id (e.g. "ENG-42").Request body
| Field | Type | Required | Notes |
|---|---|---|---|
type | string | No | one of: "epic", "story", "task", "bug" |
title | string | No | min length 2, max length 200 |
description | string | No | max length 5000 |
priority | string | No | one of: "low", "medium", "high", "urgent" |
sprintScope | string | No | one of: "commitment", "best_effort" |
assigneeId | string | null | No | min length 1 |
labels | string[] | No | max items 10 |
dueDate | string | null | No | date |
estimate | integer | null | No | min 0, max 999 |
estimateUnit | string | null | No | one of: "hour", "day", "week" |
parentId | string | null | No | min length 1 |
goalId | string | null | No | min length 1 |
columnId | string | No | min length 1 |
{
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": [
"epic",
"story",
"task",
"bug"
]
},
"title": {
"type": "string",
"minLength": 2,
"maxLength": 200
},
"description": {
"type": "string",
"maxLength": 5000
},
"priority": {
"type": "string",
"enum": [
"low",
"medium",
"high",
"urgent"
]
},
"sprintScope": {
"type": "string",
"enum": [
"commitment",
"best_effort"
]
},
"assigneeId": {
"anyOf": [
{
"type": "string",
"minLength": 1
},
{
"type": "null"
}
]
},
"labels": {
"maxItems": 10,
"type": "array",
"items": {
"type": "string"
}
},
"dueDate": {
"anyOf": [
{
"type": "string",
"format": "date",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"
},
{
"type": "null"
}
]
},
"estimate": {
"anyOf": [
{
"type": "integer",
"minimum": 0,
"maximum": 999
},
{
"type": "null"
}
]
},
"estimateUnit": {
"anyOf": [
{
"type": "string",
"enum": [
"hour",
"day",
"week"
]
},
{
"type": "null"
}
]
},
"parentId": {
"anyOf": [
{
"type": "string",
"minLength": 1
},
{
"type": "null"
}
]
},
"goalId": {
"anyOf": [
{
"type": "string",
"minLength": 1
},
{
"type": "null"
}
]
},
"columnId": {
"type": "string",
"minLength": 1
}
}
}/api/v1/work-items/{workItem}scope: work_itemsDelete a work item.
Parameters
workItem (path) — A work item's id or display id (e.g. "ENG-42")./api/v1/work-items/{workItem}/commentsscope: work_itemsList a work item's comments.
Parameters
workItem (path) — A work item's id or display id (e.g. "ENG-42").limit (query) — Page size, 1-100 (default 50).cursor (query) — Opaque pagination cursor from a previous response's nextCursor./api/v1/work-items/{workItem}/commentsscope: work_itemsAdd a comment to a work item.
Parameters
workItem (path) — A work item's id or display id (e.g. "ENG-42").Request body
| Field | Type | Required | Notes |
|---|---|---|---|
text | string | Yes | min length 1, max length 2000 |
{
"type": "object",
"properties": {
"text": {
"type": "string",
"minLength": 1,
"maxLength": 2000
}
},
"required": [
"text"
]
}/api/v1/comments/{commentId}scope: work_itemsDelete a comment (author only).
Parameters
commentId (path) — A comment's id./api/v1/projects/{project}/sprintsscope: sprintsList a project's sprints.
Parameters
project (path) — A project's id or key (e.g. "ENG").status (query) — Filter by sprint status./api/v1/projects/{project}/sprintsscope: sprintsCreate a sprint.
Parameters
project (path) — A project's id or key (e.g. "ENG").Request body
| Field | Type | Required | Notes |
|---|---|---|---|
name | string | Yes | min length 2, max length 100 |
startDate | string | Yes | date |
endDate | string | Yes | date |
members | object[] | No | max items 100 |
{
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 2,
"maxLength": 100
},
"startDate": {
"type": "string",
"format": "date",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"
},
"endDate": {
"type": "string",
"format": "date",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"
},
"members": {
"default": [],
"maxItems": 100,
"type": "array",
"items": {
"type": "object",
"properties": {
"userId": {
"type": "string",
"minLength": 1
},
"vacationDays": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
}
},
"required": [
"userId",
"vacationDays"
]
}
}
},
"required": [
"name",
"startDate",
"endDate"
]
}/api/v1/sprints/{sprintId}scope: sprintsGet a sprint, including its work item ids.
Parameters
sprintId (path) — A sprint's id./api/v1/sprints/{sprintId}/startscope: sprintsStart a sprint.
Parameters
sprintId (path) — A sprint's id./api/v1/sprints/{sprintId}/completescope: sprintsComplete a sprint.
Parameters
sprintId (path) — A sprint's id./api/v1/membersscope: membersList the organization's active members.
/api/v1/projects/{project}/membersscope: membersList a project's members.
Parameters
project (path) — A project's id or key (e.g. "ENG")./api/v1/projects/{project}/membersscope: membersAdd a member to a project.
Parameters
project (path) — A project's id or key (e.g. "ENG").Request body
| Field | Type | Required | Notes |
|---|---|---|---|
userId | string | Yes | min length 1 |
{
"type": "object",
"properties": {
"userId": {
"type": "string",
"minLength": 1
}
},
"required": [
"userId"
]
}/api/v1/projects/{project}/members/{userId}scope: membersRemove a member from a project.
Parameters
project (path) — A project's id or key (e.g. "ENG").userId (path) — The member's user id.