Dida365 CLI

A scripting-friendly command-line interface for Dida365 / TickTick task management. Full JSON output, OAuth2 authentication, Kanban support.

Go 1.21+ MIT License JSON Output OAuth2 Kanban
$ go install github.com/bearzk/dida365-cli@latest

Features

Full Task CRUD

Create, read, update, complete, and delete tasks from the command line.

Kanban Columns

List columns per project and move tasks between them with a single command.

{}

JSON Output

Every command outputs structured JSON — pipe directly into jq or scripts.

OAuth2 Auth

Browser-based login flow. Tokens stored securely with 0600 permissions.

Long-Lived Tokens

Access tokens last ~6 months. Re-authenticate with auth login when they expire.

Dida365 & TickTick

Works with both the China service (dida365.com) and international (ticktick.com).

Commands

Authentication

# Login (opens browser)
dida365 auth login --client-id YOUR_ID --client-secret YOUR_SECRET --service dida365

# Check token status
dida365 auth status

Projects

dida365 project list
dida365 project get <project-id>
dida365 project columns <project-id>    # list Kanban columns
dida365 project data <project-id>       # full project response

Tasks

dida365 task list <project-id>
dida365 task get <task-id> --project-id <project-id>
dida365 task create --title "Deploy v2" --project-id <project-id>
dida365 task update <task-id> --project-id <project-id> --title "New title"
dida365 task complete <task-id> --project-id <project-id>
dida365 task delete <task-id> --project-id <project-id>
dida365 task move <task-id> --project-id <project-id> --column-id <column-id>

Scripting example

# Create a task and capture its ID
TASK_ID=$(dida365 task create --title "Deploy to prod" --project-id proj123 | jq -r .id)

# Move it to the "In Progress" column
COL_ID=$(dida365 project columns proj123 | jq -r 'map(select(.name=="In Progress"))[0].id')
dida365 task move $TASK_ID --project-id proj123 --column-id $COL_ID

Exit Codes

CodeMeaning
0Success
1Configuration error — missing or invalid config
2Authentication error — invalid token or OAuth2 flow failed
3API error — resource not found, bad request, server error
4Network error — connection timeout, DNS failure
5Validation error — invalid arguments or missing flags
6OAuth2 server error — callback server failed to start