Guide 07

API reference

Task management API v1.4.0. This page is generated from the OpenAPI 3.1 definition, so it never drifts from the real endpoints.

The base is https://pinateca.com/api. Call it with the token you issued in the workspace settings in Authorization: Bearer. The machine readable definition is at openapi.json.

Boards

GET/boards

List boards

Get the boards in the workspace

Returns 200 List boards

POST/boards

Create a board

Body (JSON, required)

NameTypeDescription
namerequiredstringBoard name
boardTypestringBoard type

Returns 201 The board that was created

GET/boards/{boardId}/lists

Lists in a board

Get the lists of a board as a flat array of names and positions. Cards are not included.

Parameters

NameInTypeDescription
boardIdrequiredpathnumber

Returns 200 An array of lists

GET/boards/{boardId}

Board detail

Get the board with its lists, cards, and column and row headers

Parameters

NameInTypeDescription
boardIdrequiredpathnumber

Returns 200 Board detail

PATCH/boards/{boardId}

Update a board

Parameters

NameInTypeDescription
boardIdrequiredpathnumber

Body (JSON)

NameTypeDescription
namestring
descriptionstring
settingsobjectTimetable settings such as visibleDays and startDay

Returns 200 The board after the update

DELETE/boards/{boardId}

Delete a board

Only archived boards can be deleted. Lists and cards are deleted too

Parameters

NameInTypeDescription
boardIdrequiredpathnumber

Returns 200 Success

GET/boards/{boardId}/columns

Column headers (grid and timetable boards)

Parameters

NameInTypeDescription
boardIdrequiredpathnumber

Returns 200 Columns

POST/boards/{boardId}/columns

Add a column

Parameters

NameInTypeDescription
boardIdrequiredpathnumber

Body (JSON, required)

NameTypeDescription
namerequiredstring

Returns 201 The column that was created

GET/boards/{boardId}/rows

Row headers (grid and timetable boards)

Parameters

NameInTypeDescription
boardIdrequiredpathnumber

Returns 200 Rows

POST/boards/{boardId}/rows

Add a row

Parameters

NameInTypeDescription
boardIdrequiredpathnumber

Body (JSON, required)

NameTypeDescription
namerequiredstring

Returns 201 The row that was created

GET/boards/{boardId}/fields

Custom fields

Get the custom fields defined on a kanban board, in position order

Parameters

NameInTypeDescription
boardIdrequiredpathnumber

Returns 200 Fields

POST/boards/{boardId}/fields

Add a custom field

Define a new field on a kanban board

Parameters

NameInTypeDescription
boardIdrequiredpathnumber

Body (JSON, required)

NameTypeDescription
namerequiredstringField name
fieldTyperequiredstringField type
optionsobject
showOnCardbooleanWhether to show it on the cards in the kanban view
readOnlybooleanIf true, it cannot be edited in the screen and only the API can change it

Returns 201 The field that was created

PATCH/boards/{boardId}/fields/{fieldId}

Update a custom field

Update the field. fieldType cannot be changed.

Parameters

NameInTypeDescription
boardIdrequiredpathnumber
fieldIdrequiredpathnumber

Body (JSON)

NameTypeDescription
namestring
optionsobject
positionnumberDisplay order within the board
showOnCardboolean
readOnlybooleanIf true, it cannot be edited in the screen

Returns 200 The field after the update

DELETE/boards/{boardId}/fields/{fieldId}

Delete a custom field

Delete the field. The values on every card that used it are deleted with it.

Parameters

NameInTypeDescription
boardIdrequiredpathnumber
fieldIdrequiredpathnumber

Returns 200 Deleted

GET/boards/{boardId}/field-values

Field values for every card in a board

For drawing the kanban view. Pairs of (cardId, fieldId) with no value are not included.

Parameters

NameInTypeDescription
boardIdrequiredpathnumber

Returns 200 Field values

GET/boards/{boardId}/labels

List a board's labels

Parameters

NameInTypeDescription
boardIdrequiredpathnumber

Returns 200 An array of labels

POST/boards/{boardId}/labels

Create a label

Parameters

NameInTypeDescription
boardIdrequiredpathnumber

Body (JSON, required)

NameTypeDescription
namestringLabel name (omit for a color-only label)
colorrequiredstringColor (for example #3b82f6)

Returns 201 The label that was created

GET/boards/{boardId}/assignables

People who can be assigned on a board

The people you can assign to cards on that board

Parameters

NameInTypeDescription
boardIdrequiredpathnumber

Returns 200 An array of people

GET/boards/{boardId}/dependencies

List a board's dependencies

List the order between cards on a board (a successor task starts after its predecessor finishes). These are the arrows on the Gantt chart.

Parameters

NameInTypeDescription
boardIdrequiredpathnumber

Returns 200 An array of dependencies (id, predecessorId, successorId)

GET/boards/{boardId}/members

List a board's members

Parameters

NameInTypeDescription
boardIdrequiredpathnumber

Returns 200 An array of members

POST/boards/{boardId}/members

Add a member to a board

Parameters

NameInTypeDescription
boardIdrequiredpathnumber

Body (JSON, required)

NameTypeDescription
userIdrequirednumberMember ID of the person to add
rolestringRole on the board (admin, editor, commenter, or viewer)

Returns 201 The member that was added

PATCH/boards/{boardId}/members/{userId}

Change a member's role on a board

Parameters

NameInTypeDescription
boardIdrequiredpathnumber
userIdrequiredpathnumber

Body (JSON, required)

NameTypeDescription
rolerequiredstringRole on the board (admin, editor, commenter, or viewer)

Returns 200 The role after the change

DELETE/boards/{boardId}/members/{userId}

Remove a member from a board

Parameters

NameInTypeDescription
boardIdrequiredpathnumber
userIdrequiredpathnumber

Returns 200 Removed

POST/boards/import/trello

Import a Trello board

Import lists, cards, labels, checklists, comments and due dates from a Trello JSON export into a new kanban board. Send the JSON as a string in trelloJson, or attach it as file.

Body (JSON, required)

NameTypeDescription
trelloJsonrequiredstringThe Trello JSON export (as a string)

Returns 200 Success

POST/boards/{boardId}/archive

Archive a board

Remove from the board list without deleting anything

Parameters

NameInTypeDescription
boardIdrequiredpathnumber

Returns 200 Success

POST/boards/{boardId}/restore

Restore an archived board

Parameters

NameInTypeDescription
boardIdrequiredpathnumber

Returns 200 Success

POST/boards/reorder

Reorder boards

Needs a key that acts as a person (signing in from an AI app, or a signed-in session). Workspace API tokens cannot use it.

Body (JSON, required)

NameTypeDescription
orderedIdsrequiredarray of numberBoard IDs in the new order

Returns 200 Success

GET/boards/favorites

Favorite boards

Needs a key that acts as a person (signing in from an AI app, or a signed-in session). Workspace API tokens cannot use it.

Returns 200 Success

PUT/boards/favorites

Set favorite boards

Replace the favorites with these board IDs, in order. Needs a key that acts as a person (signing in from an AI app, or a signed-in session). Workspace API tokens cannot use it.

Body (JSON, required)

NameTypeDescription
boardIdsrequiredarray of numberBoard IDs, in order

Returns 200 Success

GET/boards/{boardId}/trash

Trash (one board)

Needs a key that acts as a person (signing in from an AI app, or a signed-in session). Workspace API tokens cannot use it.

Parameters

NameInTypeDescription
boardIdrequiredpathnumber

Returns 200 Success

PATCH/boards/{boardId}/columns/{columnId}

Rename a column

Parameters

NameInTypeDescription
boardIdrequiredpathnumber
columnIdrequiredpathnumber

Body (JSON, required)

NameTypeDescription
namerequiredstringNew name

Returns 200 Success

DELETE/boards/{boardId}/columns/{columnId}

Delete a column

Parameters

NameInTypeDescription
boardIdrequiredpathnumber
columnIdrequiredpathnumber

Returns 200 Success

PATCH/boards/{boardId}/rows/{rowId}

Rename a row

Parameters

NameInTypeDescription
boardIdrequiredpathnumber
rowIdrequiredpathnumber

Body (JSON, required)

NameTypeDescription
namerequiredstringNew name

Returns 200 Success

DELETE/boards/{boardId}/rows/{rowId}

Delete a row

Parameters

NameInTypeDescription
boardIdrequiredpathnumber
rowIdrequiredpathnumber

Returns 200 Success

GET/boards/{boardId}/cards

All cards on a board

Returns every card on the board across lists in one call.

Parameters

NameInTypeDescription
boardIdrequiredpathnumberBoard ID

Returns 200 Success

GET/boards/{boardId}/mention-candidates

People you can mention

Parameters

NameInTypeDescription
boardIdrequiredpathnumberBoard ID

Returns 200 Success

POST/boards/{boardId}/columns/reorder

Reorder grid columns

Parameters

NameInTypeDescription
boardIdrequiredpathnumberBoard ID

Body (JSON, required)

NameTypeDescription
updatesrequiredarray of objectColumn IDs and positions

Returns 200 Success

PATCH/boards/{boardId}/columns/{columnId}/resize

Set a grid column width

Parameters

NameInTypeDescription
boardIdrequiredpathnumberBoard ID
columnIdrequiredpathnumberColumn ID

Body (JSON, required)

NameTypeDescription
widthrequirednumberWidth, 80 to 800 (null for default)

Returns 200 Success

POST/boards/{boardId}/rows/reorder

Reorder grid rows

Parameters

NameInTypeDescription
boardIdrequiredpathnumberBoard ID

Body (JSON, required)

NameTypeDescription
updatesrequiredarray of objectRow IDs and positions

Returns 200 Success

PATCH/boards/{boardId}/rows/{rowId}/resize

Set a grid row height

Parameters

NameInTypeDescription
boardIdrequiredpathnumberBoard ID
rowIdrequiredpathnumberRow ID

Body (JSON, required)

NameTypeDescription
heightrequirednumberHeight, 48 to 800 (null for default)

Returns 200 Success

GET/boards/{boardId}/available-roles

Roles you can use for field permissions

Parameters

NameInTypeDescription
boardIdrequiredpathnumberBoard ID

Returns 200 Success

GET/boards/{boardId}/fields/{fieldId}/permissions

Custom field permissions

Parameters

NameInTypeDescription
boardIdrequiredpathnumberBoard ID
fieldIdrequiredpathnumberField ID

Returns 200 Success

PUT/boards/{boardId}/fields/{fieldId}/permissions

Set custom field permissions

For each role, allow, deny or inherit viewing and editing.

Parameters

NameInTypeDescription
boardIdrequiredpathnumberBoard ID
fieldIdrequiredpathnumberField ID

Body (JSON, required)

NameTypeDescription
entriesrequiredarray of objectSettings per role

Returns 200 Success

Cards

POST/cards

Create a card

Add a card to a list (cell)

Body (JSON, required)

NameTypeDescription
listIdrequirednumberList (cell) ID
titlerequiredstringCard title
positionnumberPosition (defaults to the end of the list; on resource boards, the row to place the card in)
descriptionstringDescription (optional)

Returns 201 The card that was created

GET/cards/{cardId}

Card detail

Parameters

NameInTypeDescription
cardIdrequiredpathnumber

Returns 200 The card with its subtasks, labels, and attachments

PATCH/cards/{cardId}

Update a card

Parameters

NameInTypeDescription
cardIdrequiredpathnumber

Body (JSON)

NameTypeDescription
titlestring
descriptionstring
listIdnumberID of the list to move it to
positionnumber
startDatedate-time
dueDatedate-time
doneboolean
lastNamestringStandard field: family name
firstNamestringStandard field: given name
emailstringStandard field: email address
phonestringStandard field: phone number

Returns 200 The card after the update

DELETE/cards/{cardId}

Delete a card

Parameters

NameInTypeDescription
cardIdrequiredpathnumber

Returns 200 Deleted

POST/cards/reorder

Reorder or move cards

Update card positions and moves between lists (cells) in one go

Body (JSON, required)

NameTypeDescription
updatesrequiredarray of object

Returns 200 Updated

PUT/cards/{cardId}/fields/{fieldId}

Set a field value on a card

Send value:null to remove the value that is there

Parameters

NameInTypeDescription
cardIdrequiredpathnumber
fieldIdrequiredpathnumber

Body (JSON, required)

NameTypeDescription
valueThe type follows fieldType (string, number, boolean, or null)

Returns 200 Saved

GET/cards/{cardId}/comments

List comments

Get the comments on a card, oldest first, including replies and reactions

Parameters

NameInTypeDescription
cardIdrequiredpathnumber

Returns 200 An array of comments

POST/cards/{cardId}/comments

Post a comment

Write a comment on a card. Mention someone with @username and they get a notification.

Parameters

NameInTypeDescription
cardIdrequiredpathnumber

Body (JSON, required)

NameTypeDescription
bodystringThe comment text (up to 5,000 characters)
parentIdnumberID of the comment to reply to (omit for a top-level comment)
closeCardbooleanIf true, the card is marked done when the comment is posted
attachmentIdsarray of numberFiles already attached to the card to put on this comment (up to 10). With files, the body may be empty.

Returns 201 The comment that was created

GET/cards/{cardId}/labels

List a card's labels

Parameters

NameInTypeDescription
cardIdrequiredpathnumber

Returns 200 An array of labels

POST/cards/{cardId}/labels/{labelId}

Add a label to a card

Parameters

NameInTypeDescription
cardIdrequiredpathnumber
labelIdrequiredpathnumber

Returns 201 Added

DELETE/cards/{cardId}/labels/{labelId}

Remove a label from a card

Parameters

NameInTypeDescription
cardIdrequiredpathnumber
labelIdrequiredpathnumber

Returns 200 Removed

GET/cards/{cardId}/subtasks

List checklist items

Get a card's checklist items in order

Parameters

NameInTypeDescription
cardIdrequiredpathnumber

Returns 200 An array of checklist items

POST/cards/{cardId}/subtasks

Add a checklist item

Parameters

NameInTypeDescription
cardIdrequiredpathnumber

Body (JSON, required)

NameTypeDescription
titlerequiredstringItem text (up to 500 characters)

Returns 201 The item that was created

GET/cards/{cardId}/members

List a card's assignees

Parameters

NameInTypeDescription
cardIdrequiredpathnumber

Returns 200 An array of assignees

POST/cards/{cardId}/members

Assign someone to a card

Get the candidates from "People who can be assigned on a board"

Parameters

NameInTypeDescription
cardIdrequiredpathnumber

Body (JSON, required)

NameTypeDescription
userIdrequirednumberMember ID of the person to assign

Returns 201 The assignee that was added

DELETE/cards/{cardId}/members/{memberId}

Unassign someone from a card

Parameters

NameInTypeDescription
cardIdrequiredpathnumber
memberIdrequiredpathnumber

Returns 200 Removed

GET/cards/{cardId}/links

List a card's links

Parameters

NameInTypeDescription
cardIdrequiredpathnumber

Returns 200 An array of links

POST/cards/{cardId}/links

Add a link to a card

Attach the URL of material kept elsewhere, such as Google Drive, to a card

Parameters

NameInTypeDescription
cardIdrequiredpathnumber

Body (JSON, required)

NameTypeDescription
urlrequiredstringThe link URL
namestringDisplay name (omit to show the URL itself)

Returns 201 The link that was created

GET/cards/{cardId}/dependencies

A card's predecessor and successor tasks

Parameters

NameInTypeDescription
cardIdrequiredpathnumber

Returns 200 predecessors (tasks that come before) and successors (tasks that come after)

POST/cards/{cardId}/dependencies

Add a predecessor to a card

Make this card start after the card predecessorId finishes. Both cards must be on the same board. A dependency that would form a loop is refused.

Parameters

NameInTypeDescription
cardIdrequiredpathnumber

Body (JSON, required)

NameTypeDescription
predecessorIdrequirednumberID of the predecessor card

Returns 200 The dependency already existed / 201 The dependency that was created

DELETE/cards/{cardId}/dependencies/{predecessorId}

Remove a predecessor from a card

Parameters

NameInTypeDescription
cardIdrequiredpathnumber
predecessorIdrequiredpathnumber

Returns 200 Removed

GET/cards/{cardId}/attachments

List attachments

Parameters

NameInTypeDescription
cardIdrequiredpathnumber

Returns 200 An array of attachments

POST/cards/{cardId}/attachments

Upload an attachment

Send the file in the file field of a multipart/form-data request

Parameters

NameInTypeDescription
cardIdrequiredpathnumber

Returns 201 The attachment that was created

POST/cards/{cardId}/attachments/external

Attach an external file by link

Attach the URL of a file kept elsewhere instead of uploading it. It does not count toward storage.

Parameters

NameInTypeDescription
cardIdrequiredpathnumber

Body (JSON, required)

NameTypeDescription
urlrequiredstringThe file URL
filenamestringFile name to display
mimeTypestringFile type (for example application/pdf)

Returns 201 The attachment that was created

POST/cards/{cardId}/move

Move a card to another board

Move a card to another board by naming the destination list. To move it within the same board, use listId in Update a card.

Parameters

NameInTypeDescription
cardIdrequiredpathnumber

Body (JSON, required)

NameTypeDescription
targetListIdrequirednumberDestination list ID

Returns 200 The card that was moved

PATCH/cards/{cardId}/cover

Set a card cover

A color (#RRGGBB) or an image URL. Neither clears it

Parameters

NameInTypeDescription
cardIdrequiredpathnumber

Body (JSON, required)

NameTypeDescription
colorstringColor
urlstringImage URL

Returns 200 Success

POST/cards/{cardId}/restore

Restore a deleted card

Needs a key that acts as a person (signing in from an AI app, or a signed-in session). Workspace API tokens cannot use it.

Parameters

NameInTypeDescription
cardIdrequiredpathnumber

Returns 200 Success

DELETE/cards/{cardId}/purge

Permanently delete a card in the trash

This cannot be undone. Only the person who deleted it, a board admin, or a workspace admin.

Parameters

NameInTypeDescription
cardIdrequiredpathstringCard ID

Returns 200 Success

Lists (cells)

POST/lists

Create a list

Add a list (a kanban column) to a board

Body (JSON, required)

NameTypeDescription
boardIdrequirednumberBoard ID
namerequiredstringList name

Returns 201 The list that was created

POST/lists/reorder

Reorder lists

Body (JSON, required)

NameTypeDescription
updatesrequiredarray of object

Returns 200 Reordered

GET/lists/{listId}/cards

Cards in a list

Parameters

NameInTypeDescription
listIdrequiredpathnumber

Returns 200 An array of cards

DELETE/lists/{listId}

Delete a list

Delete a list. The cards in it are deleted too.

Parameters

NameInTypeDescription
listIdrequiredpathnumber

Returns 200 Deleted

PATCH/lists/{listId}

Update a list (cell)

Update the name of a list, or its metadata such as the person in charge and notes

Parameters

NameInTypeDescription
listIdrequiredpathnumber

Body (JSON)

NameTypeDescription
namestring
metadataobjectFree-form metadata, for example {"teacher": "Ms. Tanaka", "note": "Room 3-A"}

Returns 200 The list after the update

POST/lists/resize

Set kanban list widths

Body (JSON, required)

NameTypeDescription
listIdsrequiredarray of numberList ID
widthrequirednumberWidth, 180 to 900 (null for default)

Returns 200 Success

GET/lists/{listId}/attachments

Attachments on a list (grid cell)

Parameters

NameInTypeDescription
listIdrequiredpathnumberList ID

Returns 200 Success

POST/lists/{listId}/attachments

Attach a file to a list (grid cell)

Parameters

NameInTypeDescription
listIdrequiredpathnumberList ID

Returns 200 Success

Gantt

GET/gantt/boards/{boardId}

Gantt board overview

Get a board as a Gantt chart: its lists together with a flat list of its tasks. Works on Gantt, kanban, list, and calendar boards

Parameters

NameInTypeDescription
boardIdrequiredpathnumber

Returns 200 Gantt board detail

GET/gantt/boards/{boardId}/tasks

Gantt tasks (flat)

Get every task in the board as a flat array in position order, including listName, start date, end date, and the done flag

Parameters

NameInTypeDescription
boardIdrequiredpathnumber

Returns 200 Tasks

POST/gantt/boards/{boardId}/tasks

Add a Gantt task

Add a task. Give listId or listName; if you give neither, it goes into the first list.

Parameters

NameInTypeDescription
boardIdrequiredpathnumber

Body (JSON, required)

NameTypeDescription
titlerequiredstringTask name
descriptionstringDescription (optional)
startDatedate-timeStart date (ISO 8601)
dueDatedate-timeEnd date (ISO 8601)
listIdnumberID of the list it belongs to (must be in the same board)
listNamestringName of the list it belongs to. It is created if it does not exist.
donebooleanDone flag

Returns 201 The task that was created

PATCH/gantt/tasks/{cardId}

Update a Gantt task

Update the title, the dates, whether it is done, and which list it belongs to

Parameters

NameInTypeDescription
cardIdrequiredpathnumber

Body (JSON)

NameTypeDescription
titlestring
descriptionstring
startDatedate-time
dueDatedate-time
doneboolean
positionnumberPosition within the list
listIdnumberMove it to a list in the same board
listNamestringGive the list by name. It is created if it does not exist.

Returns 200 The task after the update

DELETE/gantt/tasks/{cardId}

Delete a Gantt task

Parameters

NameInTypeDescription
cardIdrequiredpathnumber

Returns 200 Deleted

POST/gantt/boards/{boardId}/tasks/reorder

Reorder Gantt tasks

Pass an array of task IDs to set the flat order in one go

Parameters

NameInTypeDescription
boardIdrequiredpathnumber

Body (JSON, required)

NameTypeDescription
idsrequiredarray of numberTask IDs in the new order

Returns 200 Updated

Webhooks

GET/webhooks

List webhooks

Return the endpoints registered in this workspace

Returns 200 The endpoints

POST/webhooks

Register a webhook

Create an endpoint that hears about events. The secret in the response is the signing key, and it is returned only this once.

Body (JSON, required)

NameTypeDescription
urlrequiredstringThe URL to send to
namestringName (optional)
eventsarray of stringWhich events to receive. Empty means all of them, for example ["card.create","card.move"].
boardIdnumberTo narrow it to certain boards (optional)

Returns 201 The endpoint that was created, including the secret

GET/webhooks/events

The events you can subscribe to

Returns 200 The name and description of each event

PATCH/webhooks/{webhookId}

Update a webhook

Parameters

NameInTypeDescription
webhookIdrequiredpathnumber

Body (JSON)

NameTypeDescription
urlstring
namestring
eventsarray of string
boardIdnumber
statusstringactive or disabled

Returns 200 The endpoint after the update

DELETE/webhooks/{webhookId}

Delete a webhook

Parameters

NameInTypeDescription
webhookIdrequiredpathnumber

Returns 200 Deleted

GET/webhooks/{webhookId}/deliveries

Delivery log

The last 50. When it was sent, what was sent, and what came back.

Parameters

NameInTypeDescription
webhookIdrequiredpathnumber

Returns 200 Delivery log

POST/webhooks/{webhookId}/test

Send a test

Send one ping event right now and report whether it arrived

Parameters

NameInTypeDescription
webhookIdrequiredpathnumber

Returns 200 Whether it arrived

POST/webhooks/subscribe

Subscribe (for automation tools)

The endpoint that tools such as Zapier call themselves. It creates one endpoint per event and returns its id.

Body (JSON, required)

NameTypeDescription
targetUrlrequiredstringThe URL that receives the notifications
eventrequiredstringThe event to receive, for example card.create
boardIdnumber

Returns 201 The id of the subscription that was created

DELETE/webhooks/subscribe/{webhookId}

Unsubscribe (for automation tools)

Parameters

NameInTypeDescription
webhookIdrequiredpathnumber

Returns 200 Unsubscribed

comments

PATCH/comments/{commentId}

Edit a comment

Parameters

NameInTypeDescription
commentIdrequiredpathnumber

Body (JSON, required)

NameTypeDescription
bodyrequiredstringThe comment text (up to 5,000 characters)

Returns 200 The comment after the update

DELETE/comments/{commentId}

Delete a comment

Parameters

NameInTypeDescription
commentIdrequiredpathnumber

Returns 200 Deleted

POST/comments/{commentId}/reactions

React to a comment

Sending the same emoji again removes it

Parameters

NameInTypeDescription
commentIdrequiredpathnumber

Body (JSON, required)

NameTypeDescription
emojirequiredstringOne emoji

Returns 200 Success

labels

PATCH/labels/{labelId}

Update a label

Parameters

NameInTypeDescription
labelIdrequiredpathnumber

Body (JSON, required)

NameTypeDescription
namestringLabel name (omit for a color-only label)
colorstringColor (for example #3b82f6)

Returns 200 The label after the update

DELETE/labels/{labelId}

Delete a label

Delete a label from a board. It is also removed from the cards that had it.

Parameters

NameInTypeDescription
labelIdrequiredpathnumber

Returns 200 Deleted

subtasks

PATCH/subtasks/{subtaskId}

Update a checklist item

Change the text, mark it done or not done, or change its position

Parameters

NameInTypeDescription
subtaskIdrequiredpathnumber

Body (JSON, required)

NameTypeDescription
titlestringItem text (up to 500 characters)
donebooleantrue when done
positionnumberPosition

Returns 200 The item after the update

DELETE/subtasks/{subtaskId}

Delete a checklist item

Parameters

NameInTypeDescription
subtaskIdrequiredpathnumber

Returns 200 Deleted

PATCH/card-links/{linkId}

Update a card link

Parameters

NameInTypeDescription
linkIdrequiredpathnumber

Body (JSON, required)

NameTypeDescription
urlstringThe link URL
namestringDisplay name (omit to show the URL itself)
positionnumberPosition

Returns 200 The link after the update

DELETE/card-links/{linkId}

Delete a card link

Parameters

NameInTypeDescription
linkIdrequiredpathnumber

Returns 200 Deleted

files

GET/files

List files

Return card attachments and files sent in chat, newest first. Card files come only from boards you can see, and chat files only from conversations you take part in. A workspace API token returns card attachments only.

Parameters

NameInTypeDescription
sourcequerystringFilter by where the file is
kindquerystringFilter by file type
qquerystringSearch by file name
beforequerydate-timeOnly files added before this time (to load more)
limitquerynumberHow many (default 50)

Returns 200 An array of files

attachments

DELETE/attachments/{attachmentId}

Delete an attachment

Parameters

NameInTypeDescription
attachmentIdrequiredpathnumber

Returns 200 Deleted

GET/attachments/{attachmentId}/text

Read the text of an attachment

The text inside a PDF, Word, Excel or text file

Parameters

NameInTypeDescription
attachmentIdrequiredpathnumber

Returns 200 Success

GET/attachments/{attachmentId}/raw

Download an attachment

Parameters

NameInTypeDescription
attachmentIdrequiredpathnumberAttachment ID

Returns 200 Success

members

GET/members

List workspace members

The people in the workspace. Use their member IDs when assigning cards or adding board members.

Returns 200 An array of members

GET/members/me

Get me

The member this key acts as (ID, name, username, role). Needs a key that acts as a person (signing in from an AI app, or a signed-in session). Workspace API tokens cannot use it.

Returns 200 Success

GET/members/online

Members online now

People who have Pinateca open right now

Returns 200 Success

DELETE/members/{userId}

Remove a member from the workspace

Workspace admins only.

Parameters

NameInTypeDescription
userIdrequiredpathnumberMember ID

Returns 200 Success

PATCH/members/{userId}/role

Change a member's workspace role

Owner, admin, member, or view-only guest. Workspace admins only.

Parameters

NameInTypeDescription
userIdrequiredpathnumberMember ID

Body (JSON, required)

NameTypeDescription
rolerequiredstringRole

Returns 200 Success

PUT/members/{userId}/roles

Set a member's custom roles

Workspace admins only.

Parameters

NameInTypeDescription
userIdrequiredpathnumberMember ID

Body (JSON, required)

NameTypeDescription
roleIdsrequiredarray of numberRole IDs (replaces the current list)

Returns 200 Success

GET/members/{userId}/boards

Boards a member belongs to, with roles

Parameters

NameInTypeDescription
userIdrequiredpathnumberMember ID

Returns 200 Success

PUT/members/{userId}/boards

Set a member's boards and roles

Workspace admins only.

Parameters

NameInTypeDescription
userIdrequiredpathnumberMember ID

Body (JSON, required)

NameTypeDescription
assignmentsrequiredarray of objectBoards and roles (replaces the current list)

Returns 200 Success

POST/members/{userId}/link

Link a name-only member to a real person

Ties a name-only member created during a migration to the person who joined with that email. Past time and contracts stay. Workspace admins only.

Parameters

NameInTypeDescription
userIdrequiredpathnumberMember ID

Body (JSON, required)

NameTypeDescription
emailrequiredstringEmail of the person who joined

Returns 200 Success

GET/search

Search cards

Search card titles, descriptions, comments, and attachment text

Parameters

NameInTypeDescription
qrequiredquerystringSearch words
scopequerystringall searches the whole workspace; board searches only the board in boardId
boardIdquerystringBoard ID when scope is board
limitquerynumberNumber of results (default 30)

Returns 200 Cards that were found

activity-logs

GET/activity-logs

Activity log

Who did what and when (cards created, moved, updated, completed, deleted, comments and more), newest first

Parameters

NameInTypeDescription
boardIdquerynumberOnly this board
actorMemberIdquerynumberOnly actions by this member
actionquerystringOnly this action (e.g. card.created)
limitquerynumberHow many (default 50)
beforeIdquerynumberOlder than this ID (for paging)

Returns 200 Success

inbox

GET/inbox

Inbox

My cards across all boards (assigned, created, or all), overdue and due-soon first. Needs a key that acts as a person (signing in from an AI app, or a signed-in session). Workspace API tokens cannot use it.

Parameters

NameInTypeDescription
filterquerystringassigned, created or all (default assigned)
includeDonequerystringtrue to include completed cards

Returns 200 Success

GET/inbox/count

Inbox counts

Overdue and total counts. Needs a key that acts as a person (signing in from an AI app, or a signed-in session). Workspace API tokens cannot use it.

Returns 200 Success

notifications

GET/notifications

List notifications

Mentions, assignments, comments, invitations and more. Needs a key that acts as a person (signing in from an AI app, or a signed-in session). Workspace API tokens cannot use it.

Returns 200 Success

GET/notifications/unread-count

Unread notification count

Needs a key that acts as a person (signing in from an AI app, or a signed-in session). Workspace API tokens cannot use it.

Returns 200 Success

POST/notifications/{notificationId}/read

Mark a notification read

Needs a key that acts as a person (signing in from an AI app, or a signed-in session). Workspace API tokens cannot use it.

Parameters

NameInTypeDescription
notificationIdrequiredpathnumber

Returns 200 Success

POST/notifications/read-all

Mark all notifications read

Needs a key that acts as a person (signing in from an AI app, or a signed-in session). Workspace API tokens cannot use it.

Returns 200 Success

DELETE/notifications/{notificationId}

Delete a notification

Needs a key that acts as a person (signing in from an AI app, or a signed-in session). Workspace API tokens cannot use it.

Parameters

NameInTypeDescription
notificationIdrequiredpathnumberNotification ID

Returns 200 Success

GET/notifications/settings

Notification settings

Needs a key that acts as a person (signing in from an AI app, or a signed-in session). Workspace API tokens cannot use it.

Returns 200 Success

PATCH/notifications/settings

Change notification settings

Needs a key that acts as a person (signing in from an AI app, or a signed-in session). Workspace API tokens cannot use it.

Body (JSON)

NameTypeDescription
notifyEmailMentionbooleanEmail me when mentioned
notifyEmailAssignedbooleanEmail me when assigned
notifyEmailChatbooleanEmail me about unread chat
notifyBrowserMentionbooleanBrowser notification when mentioned
notifyBrowserAssignedbooleanBrowser notification when assigned
notifyBrowserChatbooleanBrowser notification for chat

Returns 200 Success

chat

GET/chat/conversations

List chat conversations

Direct messages and groups, with the last message and unread count. Needs a key that acts as a person (signing in from an AI app, or a signed-in session). Workspace API tokens cannot use it.

Returns 200 Success

POST/chat/conversations

Start a direct chat

Returns the existing conversation if there is one. Needs a key that acts as a person (signing in from an AI app, or a signed-in session). Workspace API tokens cannot use it.

Body (JSON, required)

NameTypeDescription
withUserIdrequirednumberThe other member ID

Returns 200 Success

POST/chat/conversations/group

Create a group chat

Needs a key that acts as a person (signing in from an AI app, or a signed-in session). Workspace API tokens cannot use it.

Body (JSON, required)

NameTypeDescription
namestringGroup name
userIdsarray of numberMember IDs to add
roleIdsarray of numberAdd everyone with these roles

Returns 200 Success

PATCH/chat/conversations/{conversationId}

Rename a group chat

Needs a key that acts as a person (signing in from an AI app, or a signed-in session). Workspace API tokens cannot use it.

Parameters

NameInTypeDescription
conversationIdrequiredpathnumber

Body (JSON, required)

NameTypeDescription
namerequiredstringNew name

Returns 200 Success

POST/chat/conversations/{conversationId}/participants

Add people to a group chat

Needs a key that acts as a person (signing in from an AI app, or a signed-in session). Workspace API tokens cannot use it.

Parameters

NameInTypeDescription
conversationIdrequiredpathnumber

Body (JSON, required)

NameTypeDescription
userIdsarray of numberMember IDs
roleIdsarray of numberRole IDs

Returns 200 Success

GET/chat/conversations/{conversationId}/messages

List chat messages

Needs a key that acts as a person (signing in from an AI app, or a signed-in session). Workspace API tokens cannot use it.

Parameters

NameInTypeDescription
conversationIdrequiredpathnumber

Returns 200 Success

POST/chat/conversations/{conversationId}/messages

Send a chat message

Mention people with @username. Needs a key that acts as a person (signing in from an AI app, or a signed-in session). Workspace API tokens cannot use it.

Parameters

NameInTypeDescription
conversationIdrequiredpathnumber

Body (JSON, required)

NameTypeDescription
bodyrequiredstringText (up to 5000 characters)

Returns 200 Success

POST/chat/conversations/{conversationId}/read

Mark a conversation read

Needs a key that acts as a person (signing in from an AI app, or a signed-in session). Workspace API tokens cannot use it.

Parameters

NameInTypeDescription
conversationIdrequiredpathnumber

Returns 200 Success

PATCH/chat/messages/{messageId}

Edit a chat message

Needs a key that acts as a person (signing in from an AI app, or a signed-in session). Workspace API tokens cannot use it.

Parameters

NameInTypeDescription
messageIdrequiredpathnumber

Body (JSON, required)

NameTypeDescription
bodyrequiredstringText

Returns 200 Success

DELETE/chat/messages/{messageId}

Delete a chat message

Needs a key that acts as a person (signing in from an AI app, or a signed-in session). Workspace API tokens cannot use it.

Parameters

NameInTypeDescription
messageIdrequiredpathnumber

Returns 200 Success

POST/chat/messages/{messageId}/reactions

React to a chat message

Sending the same emoji again removes it. Needs a key that acts as a person (signing in from an AI app, or a signed-in session). Workspace API tokens cannot use it.

Parameters

NameInTypeDescription
messageIdrequiredpathnumber

Body (JSON, required)

NameTypeDescription
emojirequiredstringOne emoji

Returns 200 Success

GET/chat/unread-count

Unread chat count

Needs a key that acts as a person (signing in from an AI app, or a signed-in session). Workspace API tokens cannot use it.

Returns 200 Success

PATCH/chat/conversations/{conversationId}/pin

Pin a conversation

Needs a key that acts as a person (signing in from an AI app, or a signed-in session). Workspace API tokens cannot use it.

Parameters

NameInTypeDescription
conversationIdrequiredpathnumberConversation ID

Body (JSON, required)

NameTypeDescription
pinnedrequiredbooleanPin (false to unpin)

Returns 200 Success

GET/chat/conversations/{conversationId}/read-receipts

Who has read how far

Needs a key that acts as a person (signing in from an AI app, or a signed-in session). Workspace API tokens cannot use it.

Parameters

NameInTypeDescription
conversationIdrequiredpathnumberConversation ID

Returns 200 Success

POST/chat/conversations/reorder

Reorder conversations

Needs a key that acts as a person (signing in from an AI app, or a signed-in session). Workspace API tokens cannot use it.

Body (JSON, required)

NameTypeDescription
orderedIdsrequiredarray of numberConversation IDs, top first

Returns 200 Success

POST/chat/conversations/{conversationId}/leave

Leave a group chat

Needs a key that acts as a person (signing in from an AI app, or a signed-in session). Workspace API tokens cannot use it.

Parameters

NameInTypeDescription
conversationIdrequiredpathnumberConversation ID

Returns 200 Success

DELETE/chat/conversations/{conversationId}/participants/{userId}

Remove someone from a group chat

Needs a key that acts as a person (signing in from an AI app, or a signed-in session). Workspace API tokens cannot use it.

Parameters

NameInTypeDescription
conversationIdrequiredpathnumberConversation ID
userIdrequiredpathnumberMember ID

Returns 200 Success

POST/chat/conversations/{conversationId}/attachments

Send a file in chat

Needs a key that acts as a person (signing in from an AI app, or a signed-in session). Workspace API tokens cannot use it.

Parameters

NameInTypeDescription
conversationIdrequiredpathnumberConversation ID

Returns 200 Success

POST/chat/conversations/{conversationId}/icon

Set a group chat icon

Needs a key that acts as a person (signing in from an AI app, or a signed-in session). Workspace API tokens cannot use it.

Parameters

NameInTypeDescription
conversationIdrequiredpathnumberConversation ID

Returns 200 Success

DELETE/chat/conversations/{conversationId}/icon

Remove a group chat icon

Needs a key that acts as a person (signing in from an AI app, or a signed-in session). Workspace API tokens cannot use it.

Parameters

NameInTypeDescription
conversationIdrequiredpathnumberConversation ID

Returns 200 Success

videos

GET/videos/{videoId}/transcript

Meeting transcript

Cleaned-up text, summary, and timed lines with speakers

Parameters

NameInTypeDescription
videoIdrequiredpathnumber

Returns 200 Success

GET/videos/{videoId}/playback

Playback address for a meeting recording

Returns a time-limited playback address and the processing status.

Parameters

NameInTypeDescription
videoIdrequiredpathnumberVideo attachment ID

Returns 200 Success

trash

GET/trash

Trash (all boards)

Cards deleted in the last 30 days. Needs a key that acts as a person (signing in from an AI app, or a signed-in session). Workspace API tokens cannot use it.

Returns 200 Success

time-entries

GET/time-entries

List time entries

Needs a key that acts as a person (signing in from an AI app, or a signed-in session). Workspace API tokens cannot use it.

Parameters

NameInTypeDescription
fromrequiredquerystringFrom (YYYY-MM-DD)
torequiredquerystringTo (YYYY-MM-DD)
memberIdquerynumberThis member (managers only)

Returns 200 Success

PUT/time-entries

Log work time

Replaces the same day, project and category (one cell of the weekly grid). Needs a key that acts as a person (signing in from an AI app, or a signed-in session). Workspace API tokens cannot use it.

Body (JSON, required)

NameTypeDescription
workDaterequiredstringDate (YYYY-MM-DD)
minutesrequirednumberMinutes
projectIdnumberProject ID
categoryIdnumberWork category ID
cardIdnumberCard ID
notestringNote
billablebooleanBillable
memberIdnumberLog for this member (managers only)

Returns 200 Success

DELETE/time-entries/{entryId}

Delete a time entry

Needs a key that acts as a person (signing in from an AI app, or a signed-in session). Workspace API tokens cannot use it.

Parameters

NameInTypeDescription
entryIdrequiredpathnumber

Returns 200 Success

projects

GET/projects

List timesheet projects

Needs a key that acts as a person (signing in from an AI app, or a signed-in session). Workspace API tokens cannot use it.

Parameters

NameInTypeDescription
includeArchivedquerystringtrue to include archived projects

Returns 200 Success

POST/projects

Create a timesheet project

Needs a key that acts as a person (signing in from an AI app, or a signed-in session). Workspace API tokens cannot use it.

Body (JSON, required)

NameTypeDescription
namerequiredstringProject name
clientNamestringClient name
boardIdnumberBoard to tie it to
colorstringColor

Returns 200 Success

PATCH/projects/{projectId}

Update a time project

Change the name, color, client, linked board, or archive it.

Parameters

NameInTypeDescription
projectIdrequiredpathnumberProject IDs

Body (JSON)

NameTypeDescription
namestringProject name
colorstringColor
clientNamestringClient name
boardIdnumberBoard to tie it to
archivedbooleanArchive it

Returns 200 Success

DELETE/projects/{projectId}

Delete a time project

Only projects with no time logged can be deleted.

Parameters

NameInTypeDescription
projectIdrequiredpathnumberProject IDs

Returns 200 Success

PUT/projects/{projectId}/members

Set who works on a project

Parameters

NameInTypeDescription
projectIdrequiredpathnumberProject IDs

Body (JSON, required)

NameTypeDescription
memberIdsrequiredarray of numberMember IDs (replaces the current list)

Returns 200 Success

PATCH/projects/archive

Archive several projects

Body (JSON, required)

NameTypeDescription
projectIdsrequiredarray of numberProject IDs
archivedrequiredbooleanArchive (false to restore)

Returns 200 Success

work-categories

GET/work-categories

List work categories

Needs a key that acts as a person (signing in from an AI app, or a signed-in session). Workspace API tokens cannot use it.

Returns 200 Success

POST/work-categories

Create a work category

Body (JSON, required)

NameTypeDescription
namerequiredstringCategory name

Returns 200 Success

PATCH/work-categories/{categoryId}

Update a work category

Parameters

NameInTypeDescription
categoryIdrequiredpathnumberCategory ID

Body (JSON)

NameTypeDescription
namestringCategory name
positionnumberPosition
archivedbooleanArchive it

Returns 200 Success

DELETE/work-categories/{categoryId}

Delete a work category

Only categories with no time logged can be deleted.

Parameters

NameInTypeDescription
categoryIdrequiredpathnumberCategory ID

Returns 200 Success

reports

GET/reports/time

Time report

Totals by person, project and category. Needs a key that acts as a person (signing in from an AI app, or a signed-in session). Workspace API tokens cannot use it.

Parameters

NameInTypeDescription
fromrequiredquerystringFrom
torequiredquerystringTo
memberIdquerynumberOnly this member
projectIdquerynumberOnly this project

Returns 200 Success

GET/reports/statement

Work statement

Hours and amounts by project (for invoicing). Needs a key that acts as a person (signing in from an AI app, or a signed-in session). Workspace API tokens cannot use it.

Parameters

NameInTypeDescription
fromrequiredquerystringFrom
torequiredquerystringTo
memberIdquerynumberFor this member (default: you)

Returns 200 Success

GET/reports/time.csv

Export the time report as CSV

Needs a key that acts as a person (signing in from an AI app, or a signed-in session). Workspace API tokens cannot use it.

Parameters

NameInTypeDescription
fromrequiredquerystringFrom (YYYY-MM-DD)
torequiredquerystringTo (YYYY-MM-DD)
memberIdquerynumberOnly this member
projectIdquerynumberOnly this project

Returns 200 Success

contracts

GET/contracts

List contracts

Hourly, fixed and monthly contracts. Contract managers see everyone; others see their own.

Parameters

NameInTypeDescription
activeOnlyquerybooleanOnly active contracts (true)

Returns 200 Success

POST/contracts

Create a contract

Body (JSON, required)

NameTypeDescription
memberIdrequirednumberMember
projectIdnumberProject
contractTyperequiredstringContract type
hourlyRatenumberHourly rate
totalAmountnumberFixed amount
monthlyAmountnumberMonthly amount
deliverablestringDeliverable
dueDatestringDue date (YYYY-MM-DD)
validFromrequiredstringFrom (YYYY-MM-DD)
validTostringTo (YYYY-MM-DD)

Returns 200 Success

assignments

PATCH/assignments/{assignmentId}/status

Change the status of a fixed-price assignment

Only approvers can set accepted or returned.

Parameters

NameInTypeDescription
assignmentIdrequiredpathnumberAssignment ID

Body (JSON, required)

NameTypeDescription
statusrequiredstringStatus

Returns 200 Success

project-tasks

GET/project-tasks

List project tasks

Parameters

NameInTypeDescription
projectIdquerynumberOnly this project

Returns 200 Success

POST/project-tasks

Create a project task

Body (JSON, required)

NameTypeDescription
projectIdrequirednumberProject
namerequiredstringTask name

Returns 200 Success

PATCH/project-tasks/{taskId}

Update a project task

Parameters

NameInTypeDescription
taskIdrequiredpathnumberTask ID

Body (JSON)

NameTypeDescription
namestringTask name
archivedbooleanArchive it

Returns 200 Success

timesheet-favorites

GET/timesheet-favorites

List timesheet favorites

Needs a key that acts as a person (signing in from an AI app, or a signed-in session). Workspace API tokens cannot use it.

Returns 200 Success

POST/timesheet-favorites

Add a timesheet favorite

Needs a key that acts as a person (signing in from an AI app, or a signed-in session). Workspace API tokens cannot use it.

Body (JSON)

NameTypeDescription
projectIdnumberProject
taskIdnumberTask
categoryIdnumberCategory

Returns 200 Success

DELETE/timesheet-favorites/{favoriteId}

Remove a timesheet favorite

Needs a key that acts as a person (signing in from an AI app, or a signed-in session). Workspace API tokens cannot use it.

Parameters

NameInTypeDescription
favoriteIdrequiredpathnumberFavorite ID

Returns 200 Success

time-permissions

GET/time-permissions

What you can do in timesheets

Returns whether you can log time, see everyone, enter for others, approve, manage contracts, and change settings.

Returns 200 Success

timesheet-submissions

GET/timesheet-submissions

Get the submission for a period

Needs a key that acts as a person (signing in from an AI app, or a signed-in session). Workspace API tokens cannot use it.

Parameters

NameInTypeDescription
periodStartrequiredquerystringPeriod start (YYYY-MM-DD)
periodEndrequiredquerystringPeriod end (YYYY-MM-DD)
memberIdquerynumberFor this member (default: you)

Returns 200 Success

POST/timesheet-submissions

Submit a timesheet

Needs a key that acts as a person (signing in from an AI app, or a signed-in session). Workspace API tokens cannot use it.

Body (JSON, required)

NameTypeDescription
periodStartrequiredstringPeriod start (YYYY-MM-DD)
periodEndrequiredstringPeriod end (YYYY-MM-DD)
memberIdnumberFor this member (default: you)
notestringNote

Returns 200 Success

GET/timesheet-submissions/list

List timesheet submissions

Includes those waiting for approval. Only people who can see all time see everyone.

Parameters

NameInTypeDescription
fromrequiredquerystringFrom (YYYY-MM-DD)
torequiredquerystringTo (YYYY-MM-DD)
memberIdquerynumberOnly this member

Returns 200 Success

POST/timesheet-submissions/{submissionId}/review

Approve or return a timesheet

Approvers only.

Parameters

NameInTypeDescription
submissionIdrequiredpathnumberSubmission ID

Body (JSON, required)

NameTypeDescription
actionrequiredstringapprove or return
notestringNote

Returns 200 Success

roles

GET/roles

List custom roles

Returns 200 Success

POST/roles

Create a custom role

Workspace admins only.

Body (JSON, required)

NameTypeDescription
namerequiredstringRole name
colorstringColor (#RRGGBB)

Returns 200 Success

PATCH/roles/{roleId}

Update a custom role

Workspace admins only.

Parameters

NameInTypeDescription
roleIdrequiredpathnumberRole ID

Body (JSON)

NameTypeDescription
namestringRole name
colorstringColor (#RRGGBB)

Returns 200 Success

DELETE/roles/{roleId}

Delete a custom role

Workspace admins only.

Parameters

NameInTypeDescription
roleIdrequiredpathnumberRole ID

Returns 200 Success

GET/roles/{roleId}/members

List the people in a role

Parameters

NameInTypeDescription
roleIdrequiredpathnumberRole ID

Returns 200 Success

PUT/roles/{roleId}/members

Set the people in a role

Workspace admins only.

Parameters

NameInTypeDescription
roleIdrequiredpathnumberRole ID

Body (JSON, required)

NameTypeDescription
memberIdsrequiredarray of numberMember IDs (replaces the current list)

Returns 200 Success

PUT/roles/positions

Reorder custom roles

Workspace admins only.

Body (JSON, required)

NameTypeDescription
ordersrequiredarray of objectRole IDs and positions

Returns 200 Success

invitations

GET/invitations

List invitations

Invitations not accepted yet. Workspace admins only.

Returns 200 Success

POST/invitations

Invite someone to the workspace

Sends an invitation email. View-only guests do not count as seats. Workspace admins only.

Body (JSON, required)

NameTypeDescription
emailrequiredstringEmail of the person to invite
rolestringRole
boardAssignmentsarray of objectBoards and roles to start with

Returns 200 Success

DELETE/invitations/{invitationId}

Cancel an invitation

Workspace admins only.

Parameters

NameInTypeDescription
invitationIdrequiredpathnumberInvitation ID

Returns 200 Success

POST/invitations/{invitationId}/resend

Resend an invitation email

Workspace admins only.

Parameters

NameInTypeDescription
invitationIdrequiredpathnumberInvitation ID

Returns 200 Success

imported-members

GET/imported-members

List name-only members from imports

Names created for people who had not joined yet when you imported from Trello and others. Workspace admins only.

Returns 200 Success

PATCH/imported-members/{importedMemberId}

Set the email of a name-only member

When the person joins with this email they are linked automatically. Workspace admins only.

Parameters

NameInTypeDescription
importedMemberIdrequiredpathnumberName-only member ID

Body (JSON, required)

NameTypeDescription
emailrequiredstringEmail

Returns 200 Success

DELETE/imported-members/{importedMemberId}

Delete a name-only member

Workspace admins only.

Parameters

NameInTypeDescription
importedMemberIdrequiredpathnumberName-only member ID

Returns 200 Success

POST/imported-members/{importedMemberId}/link

Link a name-only member to a joined member

Assignments and comment authors move to that person. Workspace admins only.

Parameters

NameInTypeDescription
importedMemberIdrequiredpathnumberName-only member ID

Body (JSON, required)

NameTypeDescription
userIdrequirednumberMember ID to link to

Returns 200 Success

workspace

GET/workspace/settings

Workspace settings

Returns 200 Success

PATCH/workspace/settings

Change workspace settings

Workspace admins only.

Body (JSON)

NameTypeDescription
boardCreationRolestringWho can create boards
currencystringCurrency (ISO 4217)
timeStepMinutesnumberTimesheet step (minutes)

Returns 200 Success

Conventions

  • Responses are plain JSON, with no wrapper
  • When something fails, {"error": "..."} comes back
  • A token belongs to one workspace and cannot see another
  • Times are ISO 8601 (for example 2026-09-30T09:00:00.000Z)