POST /setTaskDate
An omitted timezone defaults to the calling user's timezone.
Base URL: https://www.taskade.com/api/v2
Authentication
Send a personal access token or an OAuth 2.0 access token as a bearer token. Create a personal access token at taskade.com/settings/api.
Authorization: Bearer tskdp_your_token_here
Request body
application/json
| Field | Type | Required | Description |
|---|---|---|---|
projectId |
string |
Yes | The project the task lives in |
taskId |
string |
Yes | The task ID (from listTasks) |
start |
object |
Yes | — |
start.date |
string |
Yes | ISO date format (YYYY-MM-DD), e.g. "2021-12-31" |
start.time |
string |
No | Optional time component in 24-hour format (HH:MM:SS), e.g. "15:30:45". Can be null or omitted for date-only representations |
start.timezone |
string |
No | Optional timezone identifier (IANA timezone name), e.g. "America/New_York", "Asia/Singapore". Can be null or omitted for timezone-naive representations |
end |
object |
No | — |
end.date |
string |
Yes | ISO date format (YYYY-MM-DD), e.g. "2021-12-31" |
end.time |
string |
No | Optional time component in 24-hour format (HH:MM:SS), e.g. "15:30:45". Can be null or omitted for date-only representations |
end.timezone |
string |
No | Optional timezone identifier (IANA timezone name), e.g. "America/New_York", "Asia/Singapore". Can be null or omitted for timezone-naive representations |
A nested field marked Yes is required whenever its parent object is present.
Example request
curl -X POST "https://www.taskade.com/api/v2/setTaskDate" \
-H "Authorization: Bearer $TASKADE_TOKEN" \
-H "Content-Type: application/json" \
-d '{"projectId":"<projectId>","taskId":"<taskId>","start":{"date":"<date>"}}'
Responses
200 — Default response
| Field | Type | Required | Description |
|---|---|---|---|
ok |
boolean |
Yes | — |
item |
object |
Yes | — |
item.id |
string |
Yes | — |
item.text |
string |
No | — |
item.completed |
boolean |
No | — |
Errors
Errors return an ok: false envelope. Rate limiting returns 429 with x-rate-limit-limit, x-rate-limit-remaining and x-rate-limit-reset headers. x-rate-limit-reset is the number of seconds until the window reopens. Retry-After is not sent, so schedule retries from x-rate-limit-reset; retrying sooner will fail again.
{ "ok": false, "message": "Unauthorized", "code": "UNAUTHORIZED" }
Rate limits for this version: enforced per endpoint; ceilings are not published and can change without notice. A 429 response carries x-rate-limit-limit, x-rate-limit-remaining, and x-rate-limit-reset (seconds until the window reopens). Back off from those headers rather than hardcoding numbers. If you need sustained throughput, prefer batching (operations like /createTask accept arrays) over tightening polling loops. See Rate limits.