Tasks
Read, add and change tasks. Every change replans before it answers, so the plan is always current.
GET/api/v1/tasks
Your tasks, with optional filters. With no filters you get every task, open and done; with any filter, done tasks are left out unless includeDone is true.
| Parameter | In | Type | Description |
status |
query |
enumNotStarted, InProgress, Waiting, Done |
Only tasks with this status. |
projectId |
query |
integer |
Only tasks in this project. |
search |
query |
string |
Words in the title. |
dueBefore |
query |
date |
Due on or before this day. |
includeDone |
query |
boolean |
Include done tasks when filtering. |
Example
curl 'https://daypilot.app/api/v1/tasks' \
-H "Authorization: Bearer $DAYPILOT_API_KEY"
Returns a list of tasks with their project, status, priority, due date and estimate.
List tasks a page at a time
Try it
GET/api/v1/tasks/paged
The same list in pages, for big task lists. The same filters work here.
| Parameter | In | Type | Description |
page |
query |
integer |
Which page, from 1. |
pageSize |
query |
integer |
Tasks per page, up to 200. |
includeDone |
query |
boolean |
Include done tasks. |
Example
curl 'https://daypilot.app/api/v1/tasks/paged' \
-H "Authorization: Bearer $DAYPILOT_API_KEY"
Returns { items, total, page, pageSize }.
GET/api/v1/tasks/today
What the Today view shows: overdue work, work due today or tomorrow, work in progress and escalated work, most urgent first.
Example
curl 'https://daypilot.app/api/v1/tasks/today' \
-H "Authorization: Bearer $DAYPILOT_API_KEY"
Returns a list of tasks.
GET/api/v1/tasks/{id}
One task in full: description, dates, estimate, sub-tasks, attachments and docs.
| Parameter | In | Type | Description |
idrequired |
path |
integer |
The task's id. |
Example
curl 'https://daypilot.app/api/v1/tasks/{id}' \
-H "Authorization: Bearer $DAYPILOT_API_KEY"
Returns the task's details.
POST/api/v1/tasks/save
Adds a task and plans it straight away. Send id 0. The description is HTML. With isChunked, the estimate is split into blocks of chunkMinutes, spread out before the due date.
To change a task later, use “Change a task”: saving an existing id here replaces every field, so anything left out is reset.
Body
{
"id": 0,
"projectId": 101,
"title": "Draft the Q4 budget",
"description": "<p>Start from last quarter's numbers.</p>",
"priority": "High",
"dueDate": "2026-11-12",
"estimatedHours": 3,
"isChunked": true,
"chunkMinutes": 60
}
Example
curl -X POST 'https://daypilot.app/api/v1/tasks/save' \
-H "Authorization: Bearer $DAYPILOT_API_KEY" \
-H "Content-Type: application/json" \
-d '{"id":0,"projectId":101,"title":"Draft the Q4 budget","description":"<p>Start from last quarter'\''s numbers.</p>","priority":"High","dueDate":"2026-11-12","estimatedHours":3,"isChunked":true,"chunkMinutes":60}'
Returns { id } of the new task.
PATCH/api/v1/tasks/{id}
Changes only the fields you send, then replans. You can send title, status, priority, projectId, parentTaskId, dueDate, dueTime, startDate, estimatedHours, isChunked, chunkMinutes, scheduleId and assignedToUserId; clearDueDate, clearStartDate and clearParent remove a value.
| Parameter | In | Type | Description |
idrequired |
path |
integer |
The task's id. |
Body
{
"priority": "Urgent",
"dueDate": "2026-11-08"
}
Example
curl -X PATCH 'https://daypilot.app/api/v1/tasks/{id}' \
-H "Authorization: Bearer $DAYPILOT_API_KEY" \
-H "Content-Type: application/json" \
-d '{"priority":"Urgent","dueDate":"2026-11-08"}'
Returns the task's details after the change.
POST/api/v1/tasks/{id}/done
The same as ticking its circle: the parent's status rolls up, a repeating task makes its next occurrence, and the plan is rebuilt.
| Parameter | In | Type | Description |
idrequired |
path |
integer |
The task's id. |
Example
curl -X POST 'https://daypilot.app/api/v1/tasks/{id}/done' \
-H "Authorization: Bearer $DAYPILOT_API_KEY"
Returns nothing (204).
POST/api/v1/tasks/{id}/snooze
Keeps the task off the plan for now. Send an empty body for tomorrow's working hours, onDate for that day's, or until for an exact moment.
| Parameter | In | Type | Description |
idrequired |
path |
integer |
The task's id. |
Body
{
"onDate": "2026-11-07"
}
Example
curl -X POST 'https://daypilot.app/api/v1/tasks/{id}/snooze' \
-H "Authorization: Bearer $DAYPILOT_API_KEY" \
-H "Content-Type: application/json" \
-d '{"onDate":"2026-11-07"}'
Returns { snoozedUntilUtc }.
DELETE/api/v1/tasks/{id}/snooze
Puts a snoozed task back on the plan from now.
| Parameter | In | Type | Description |
idrequired |
path |
integer |
The task's id. |
Example
curl -X DELETE 'https://daypilot.app/api/v1/tasks/{id}/snooze' \
-H "Authorization: Bearer $DAYPILOT_API_KEY"
Returns nothing (204).
GET/api/v1/tasks/{id}/subtasks
Everything under a task, at any depth, open and done.
| Parameter | In | Type | Description |
idrequired |
path |
integer |
The task's id. |
Example
curl 'https://daypilot.app/api/v1/tasks/{id}/subtasks' \
-H "Authorization: Bearer $DAYPILOT_API_KEY"
Returns a list of tasks.
Change many tasks at once
Try it
POST/api/v1/tasks/bulk
The same change for up to 1000 tasks, then one replan. Tasks that can't take the change are listed with the reason; the rest change.
Body
{
"ids": [],
"changes": {
"priority": "High"
}
}
Example
curl -X POST 'https://daypilot.app/api/v1/tasks/bulk' \
-H "Authorization: Bearer $DAYPILOT_API_KEY" \
-H "Content-Type: application/json" \
-d '{"ids":[],"changes":{"priority":"High"}}'
Returns how many changed, and why the others didn't.
DELETE/api/v1/tasks/{id}
Deletes the task, its blocks and its files. Its sub-tasks move up to its parent. This can't be undone.
| Parameter | In | Type | Description |
idrequired |
path |
integer |
The task's id. |
Example
curl -X DELETE 'https://daypilot.app/api/v1/tasks/{id}' \
-H "Authorization: Bearer $DAYPILOT_API_KEY"
Returns nothing (204).
The plan
Where DayPilot has put the work: blocks of time around the calendar.
GET/api/v1/planner/board
One week from start: every block of work, calendar event and working-hours window, laid out by day. Use the first day of your week.
| Parameter | In | Type | Description |
startrequired |
query |
date |
The week's first day. |
replan |
query |
boolean |
Rebuild the plan first. |
Example
curl 'https://daypilot.app/api/v1/planner/board?start=2026-11-02' \
-H "Authorization: Bearer $DAYPILOT_API_KEY"
Returns the week's days, blocks, events and anything that couldn't be planned.
POST/api/v1/planner/replan
Rebuilds the plan, as the planner's Replan button does. DayPilot also replans by itself every 15 minutes and after every change.
Body
{
"boardStart": "2026-11-02"
}
Example
curl -X POST 'https://daypilot.app/api/v1/planner/replan' \
-H "Authorization: Bearer $DAYPILOT_API_KEY" \
-H "Content-Type: application/json" \
-d '{"boardStart":"2026-11-02"}'
Returns the week from boardStart.
GET/api/v1/planner/changes
Cheap enough to call often: poll this, and fetch tasks or the plan again only when changed is true.
| Parameter | In | Type | Description |
since |
query |
datetime |
When you last looked (ISO 8601). |
Example
curl 'https://daypilot.app/api/v1/planner/changes' \
-H "Authorization: Bearer $DAYPILOT_API_KEY"
Returns { lastChangedUtc, changed, tenantId }.
POST/api/v1/planner/chunks/{id}/done
Marks one block of a task as worked. Block ids come from the week's plan.
| Parameter | In | Type | Description |
idrequired |
path |
integer |
The block's id, from the week's plan. |
Body
{
"boardStart": "2026-11-02"
}
Example
curl -X POST 'https://daypilot.app/api/v1/planner/chunks/{id}/done' \
-H "Authorization: Bearer $DAYPILOT_API_KEY" \
-H "Content-Type: application/json" \
-d '{"boardStart":"2026-11-02"}'
Returns the week from boardStart.
Projects
The containers tasks live in.
GET/api/v1/projects
Every project you can put a task in, by id and name. Personal Tasks is always there.
Example
curl 'https://daypilot.app/api/v1/projects' \
-H "Authorization: Bearer $DAYPILOT_API_KEY"
Returns a list of { id, name, groupId }.
GET/api/v1/projects/list
Projects with their color, description and how many tasks are open.
Example
curl 'https://daypilot.app/api/v1/projects/list' \
-H "Authorization: Bearer $DAYPILOT_API_KEY"
Returns a list of projects.
GET/api/v1/projects/{id}
One project, with its dates and repeat settings.
| Parameter | In | Type | Description |
idrequired |
path |
integer |
The project's id. |
Example
curl 'https://daypilot.app/api/v1/projects/{id}' \
-H "Authorization: Bearer $DAYPILOT_API_KEY"
Returns the project.
POST/api/v1/projects
Adds a project (id 0), or changes one (its id). Send datesProvided: true with startDate and dueDate to set its dates.
Body
{
"id": 0,
"name": "Website refresh",
"description": "",
"colorHex": "#2f7cf6",
"isRecurring": false,
"startDate": "2026-11-05",
"dueDate": "2026-12-05",
"datesProvided": true
}
Example
curl -X POST 'https://daypilot.app/api/v1/projects' \
-H "Authorization: Bearer $DAYPILOT_API_KEY" \
-H "Content-Type: application/json" \
-d '{"id":0,"name":"Website refresh","description":"","colorHex":"#2f7cf6","isRecurring":false,"startDate":"2026-11-05","dueDate":"2026-12-05","datesProvided":true}'
Returns { id } of the project.
Docs
Procedures, policies and notes. You see the docs you made and the ones shared with you.
GET/api/v1/docs
Every doc you can see, with the doc above each one (parentId), so you can build the tree.
Example
curl 'https://daypilot.app/api/v1/docs' \
-H "Authorization: Bearer $DAYPILOT_API_KEY"
Returns { docs, canShare }.
GET/api/v1/docs/{id}
One doc: its text as HTML, the docs above and below it, its files and the tasks that use it.
| Parameter | In | Type | Description |
idrequired |
path |
integer |
The doc's id. |
Example
curl 'https://daypilot.app/api/v1/docs/{id}' \
-H "Authorization: Bearer $DAYPILOT_API_KEY"
Returns the doc.
POST/api/v1/docs/save
Adds a doc (id 0) or saves one. The body is HTML. A new doc starts as a Draft, seen only by its editors; send status Published to share it with whoever it's shared with.
Body
{
"id": 0,
"parentDocId": null,
"title": "Opening checklist",
"body": "<ol><li>Unlock the front door</li><li>Turn on the lights</li><li>Check the voicemail</li></ol>",
"status": "Draft"
}
Example
curl -X POST 'https://daypilot.app/api/v1/docs/save' \
-H "Authorization: Bearer $DAYPILOT_API_KEY" \
-H "Content-Type: application/json" \
-d '{"id":0,"parentDocId":null,"title":"Opening checklist","body":"<ol><li>Unlock the front door</li><li>Turn on the lights</li><li>Check the voicemail</li></ol>","status":"Draft"}'
Returns { id } of the doc.
POST/api/v1/docs/{id}/run
Turns a doc's checklist or numbered steps into a task with a sub-task for each step, planned. Leave steps out for every step.
| Parameter | In | Type | Description |
idrequired |
path |
integer |
The doc's id. |
Body
{
"title": "Opening checklist",
"dueDate": "2026-11-06",
"projectId": 101,
"minutesPerStep": 15
}
Example
curl -X POST 'https://daypilot.app/api/v1/docs/{id}/run' \
-H "Authorization: Bearer $DAYPILOT_API_KEY" \
-H "Content-Type: application/json" \
-d '{"title":"Opening checklist","dueDate":"2026-11-06","projectId":101,"minutesPerStep":15}'
Returns { taskId, subTaskCount }.
Search, insights and schedules
Finding things, and how the coming weeks look.
GET/api/v1/search
Searches tasks, projects, templates, docs, groups and schedules, best match first, forgiving of typos.
| Parameter | In | Type | Description |
qrequired |
query |
string |
What to look for. |
limit |
query |
integer |
How many results. |
Example
curl 'https://daypilot.app/api/v1/search?q=budget' \
-H "Authorization: Bearer $DAYPILOT_API_KEY"
Returns { query, results } with each result's kind, title, where it lives and its link.
How the next weeks look
Try it
GET/api/v1/dashboard/insights
Free time against planned work for the next three weeks, and the deadlines at risk, with the dashboard's summary sentences.
Example
curl 'https://daypilot.app/api/v1/dashboard/insights' \
-H "Authorization: Bearer $DAYPILOT_API_KEY"
Returns capacity by day and week, and deadlines with their status.
GET/api/v1/schedules
Your working hours: each schedule's days, time windows and time zone.
Example
curl 'https://daypilot.app/api/v1/schedules' \
-H "Authorization: Bearer $DAYPILOT_API_KEY"
Returns your schedules.