Skip to content

Snooze multiple tasks​

POST
/api/tasks/bulk/snooze

Snoozes one or more tasks. Supports absolute mode (until) or relative
mode (delta_minutes) — exactly one must be provided.

Priority filtering, by default:

  • P0-P2 are always snoozed.
  • P3 (High) is snoozed ONLY when no lower-priority task in the same
    batch is still eligible. A mixed batch clears P0-P2 and leaves the
    High tasks; the next call, finding only High left, takes them. A P4 in
    the batch does not hold this back, since a P4 is never swept.
  • P4 (Urgent) is never snoozed by a sweep — its due date is a hard
    deadline and every change to one has to be deliberate.
  • A task whose DEADLINE HAS PASSED is read as at least P3 (2026-10-12):
    it waits while any P0-P2 task without a passed deadline is still
    eligible, and goes with the High tier after. A P3 with a passed
    deadline is still P3; a P4 is still never swept. Those held back
    only by the deadline are counted in skipped_deadline (not in
    skipped_urgent).

Callers that represent an explicit user selection (e.g., the mobile
selection sheet's quick panel) should pass include_task_ids so the
listed high/urgent tasks are snoozed anyway.

skipped_urgent keeps its name for client compatibility and counts BOTH
P3 and P4 skips. skipped_high is the P3 subset of it, so a client can
name the two tiers accurately; Urgent alone is the difference.

Each eligible task is changed exactly as PATCH /api/tasks/{id} with
{ due_at } would change it: a dated task's target moves (its
first-target date kept), stopping at a deadline still ahead
(capped_deadline; a passed deadline caps nothing); a
task with no date (absolute mode only) gets its
first date, which is not counted as a snooze; a task already due at
the target is left alone. tasks_affected counts only the tasks whose
date actually moved, so it plus tasks_skipped can be less than the
number of ids.

Authorizations​

bearerAuth

API token created via POST /api/tokens or the db:create-token CLI command

Type
HTTP (bearer)

Request Body​

application/json
JSON
{
"ids": [
0
],
"until": "string",
"delta_minutes": 0,
"include_task_ids": [
0
],
"allow_past_deadline_ids": [
0
],
"cap_at_deadline_ids": [
0
]
}

Responses​

Bulk operation result

application/json
JSON
{
"tasks_affected": 0,
"tasks_skipped": 0,
"skipped_urgent": 0,
"skipped_high": 0,
"snoozed_high": 0,
"skipped_reminders": 0,
"skipped_deadline": 0,
"capped_deadline": 0,
"skipped_no_due_date": 0
}

Samples​

Powered by VitePress OpenAPI