Bug
td completed list returns a generic HTTP 400 when querying a broad historical date range.
Environment
- Todoist CLI:
3.1.4
- macOS/Homebrew install
Reproduction
td completed list --since 2026-01-01 --until 2026-08-06 --limit 300 --json
I also reproduced it with --until 2026-08-07 and --until 2026-08-08.
Actual result
{"error":{"code":"API_ERROR","message":"HTTP 400: Bad Request"}}
Expected result
The command should return completed tasks for the requested date range, or a specific validation error explaining an unsupported range.
Comparison
Bounded ranges work. For example:
td completed list --since 2026-07-01 --until 2026-08-06 --limit 300 --json
returned results successfully (300 results, so pagination may also be relevant). A January-only range also returned successfully:
td completed list --since 2026-01-01 --until 2026-02-01 --limit 300 --json
Workaround
Querying month-sized ranges and aggregating the results works around the failure.
Could the CLI expose the underlying API validation error, and be explicit about the non-support the full requested range, or automatically paginate/split ranges when needed?
I ran this via an agent, so querying that large range returning that its not possible makes sense but the error was quite opaque.
Bug
td completed listreturns a generic HTTP 400 when querying a broad historical date range.Environment
3.1.4Reproduction
I also reproduced it with
--until 2026-08-07and--until 2026-08-08.Actual result
{"error":{"code":"API_ERROR","message":"HTTP 400: Bad Request"}}Expected result
The command should return completed tasks for the requested date range, or a specific validation error explaining an unsupported range.
Comparison
Bounded ranges work. For example:
returned results successfully (300 results, so pagination may also be relevant). A January-only range also returned successfully:
Workaround
Querying month-sized ranges and aggregating the results works around the failure.
Could the CLI expose the underlying API validation error, and be explicit about the non-support the full requested range, or automatically paginate/split ranges when needed?
I ran this via an agent, so querying that large range returning that its not possible makes sense but the error was quite opaque.