Help centerDevelopers & automation

REST API

Read and change projects, tasks and comments from your own code.

Authenticate

Create a personal access token in Settings → AI assistants, then send it with every request. The token acts as you, with your access, in the workspace where you created it.

curl -H "Authorization: Bearer $JINKOUP_TOKEN" \
  "https://jinkoup.com/api/v1/tasks?assignee=me&due=overdue"

Base URL: https://jinkoup.com/api/v1. Requests and responses are JSON; errors look like { "error": "…" }.

Endpoints

Method & pathWhat it does
GET /meYou, your workspace and your role.
GET /projectsProjects with their stages and open-task counts.
GET /projects/:id/stagesA project's stages (columns), in order.
GET /membersPeople in the workspace.
GET /tasksList tasks. Query: project_id, assignee (me / email / none), status (open / completed / all), due (overdue / today / next_7_days / no_date), limit (1–200), cursor, sort (created / updated), updated_since (ISO date-time), or q to search. Tasks include created_at and updated_at.
POST /tasksCreate a task: title, plus optional project_id, stage, parent_task_id, assignee, due_date (YYYY-MM-DD), priority (low / medium / high), description.
GET /tasks/:idA task with description, subtasks, recent comments and attachments.
PATCH /tasks/:idUpdate title, due_date (“none” clears), priority, assignee, stage, description or completed.
DELETE /tasks/:idDelete a task with its subtasks, comments and files.
GET /tasks/:id/commentsAll comments, oldest first.
POST /tasks/:id/commentsAdd a comment: { "text": "…" }. @email mentions notify people. Returns the new comment.
GET /commentsRecent comments on tasks you can see, newest first. Query: task_id, project_id, limit (1–100).
GET /webhooks, POST /webhooks, DELETE /webhooks/:id, POST /webhooks/:id/testManage your webhooks in code.

Create a task

curl -X POST https://jinkoup.com/api/v1/tasks \
  -H "Authorization: Bearer $JINKOUP_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"title":"Renew domain","project_id":"…","due_date":"2026-10-20","assignee":"me","priority":"high"}'

Good to know

  • Lists are paginated: pass the returned next_cursor as cursor to get the next page.
  • Empty fields in POST /tasks and PATCH /tasks/:id are ignored, so automation tools can send unmapped fields. Send none to clear a value.
  • Status codes: 400 invalid input, 401 missing or bad token, 403 no access, 404 not found, 413 body over 1 MB.
  • Cross-origin requests (CORS) are allowed.

Still stuck? Tell us what you were trying to do and we'll help.

Contact support