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
| Code | Meaning |
|---|---|
| 0 | Success |
| 1 | Configuration error — missing or invalid config |
| 2 | Authentication error — invalid token or OAuth2 flow failed |
| 3 | API error — resource not found, bad request, server error |
| 4 | Network error — connection timeout, DNS failure |
| 5 | Validation error — invalid arguments or missing flags |
| 6 | OAuth2 server error — callback server failed to start |