Guide 07

API reference

Task management API v1.3.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

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

Cards

POST/cards

Create a card

Add a card to a list (cell)

Body (JSON, required)

NameTypeDescription
listIdrequirednumberList (cell) ID
titlerequiredstringCard title
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

Lists (cells)

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

Gantt

GET/gantt/boards/{boardId}

Gantt board overview

Get the lists of a Gantt board together with a flat list of its tasks

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

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)