Reminder
A scheduled reminder anchored to a task. Fires a notification to its creator at date. type reads as a readable key: 'custom' (the only creatable kind — omit type and you get it) or 'overdue' (created by Nifty from task due dates; read-only). Create requires taskId (immutable after create). Reminders are personal — only their creator can see or change one. A reminder carries no message of its own: the notification is rendered from the task it is anchored to.
List Reminders
List reminders. Returns a paginated envelope (data, total, limit, hasMore, nextCursor). Filterable by 4 fields. Ordered by date unless you pass sort.
Required scope: reminders:read
query Parameters
projectIdRestrict the list to one project. Omit to list reminders across every project you can access.
sortField to sort by. Prefix with - for descending (-createdAt); a createdAt:desc / createdAt:asc suffix works too, but never both markers at once. Default: date. Listing without projectId orders by -updatedAt instead.
cursorOpaque cursor for the next page (the envelope nextCursor).
limitItems per page (1–200, default 50). A larger value is clamped to the cap rather than rejected, so always follow nextCursor instead of assuming one page held everything.
includeTotalWhen true, the response envelope includes the total number of matching rows. Omit it for cheaper pagination.
expandComma-separated relations to inline (see Expanding objects above). Valid values are listed in the enum.
taskId[eq]Filter where taskId equals.
taskId[in]Filter where taskId is one of (comma-separated list).
type[eq]Filter where type equals.
type[in]Filter where type is one of (comma-separated list).
date[eq]Filter where date equals.
date[gt]Filter where date is greater than.
date[gte]Filter where date is greater than or equal to.
date[lt]Filter where date is less than.
date[lte]Filter where date is less than or equal to.
createdAt[gt]Filter where createdAt is greater than.
createdAt[gte]Filter where createdAt is greater than or equal to.
createdAt[lt]Filter where createdAt is less than.
createdAt[lte]Filter where createdAt is less than or equal to.
List Reminders › Responses
OK
The page of results.
totalTotal rows matching the query (across pages).
limithasMorenextCursorOpaque cursor for the next page; null on the last page.
Create Reminder
Create a Reminder. Server-assigned fields are ignored if sent.
Required scope: reminders:write
query Parameters
expandComma-separated relations to inline (see Expanding objects above). Valid values are listed in the enum.
Headers
Idempotency-KeyOptional replay key (see Idempotent requests above).
Create Reminder › Request Body
dateWhen the reminder fires, as an ISO 8601 instant (not a calendar date). Must be at least five minutes in the future. This is the only updatable field.
taskIdThe task this reminder is attached to. Required on create; immutable afterwards.
typeReminder kind. custom is the only kind you can create — omit this field and you get it. overdue reminders also exist but Nifty creates them from task due dates; they are read-only and cannot be created, changed, or deleted through the API.
Create Reminder › Responses
Created
idUnique identifier for this resource.
createdAtCreation timestamp.
dateWhen the reminder fires, as an ISO 8601 instant (not a calendar date). Must be at least five minutes in the future. This is the only updatable field.
typeReminder kind. custom is the only kind you can create — omit this field and you get it. overdue reminders also exist but Nifty creates them from task due dates; they are read-only and cannot be created, changed, or deleted through the API.
taskIdThe task this reminder is attached to. Required on create; immutable afterwards.
updatedAtLast update timestamp.
createdByActorIdWho created this record — a person, an agent, an automation or the system itself. Read-only, stamped by the server on writes made through this API, and null on records created any other way, so treat it as present-or-null rather than always populated. This is an actor id (a UUID), not a member id: look it up with GET /actors/{id}, whose memberId gives you the person to use against /members.
updatedByActorIdWho last wrote to this record — a person, an agent, an automation or the system itself. Read-only, stamped by the server on writes made through this API, and null on records last written any other way, so treat it as present-or-null rather than always populated. This is an actor id (a UUID), not a member id: look it up with GET /actors/{id}, whose memberId gives you the person to use against /members.
createdByActorTypeThe creator actor's type (human, agent, cron, recurringTask, automation, outboxRetry, systemDefault). Server-derived from actors.type; read-only, not directly writable.
updatedByActorTypeThe last writer actor's type (human, agent, cron, recurringTask, automation, outboxRetry, systemDefault). Server-derived from actors.type via the row's updatedByActorId; read-only, not directly writable.
createdByIdThe team member who created this reminder — also its notification recipient, since reminders are personal. Server-set; a member id, so resolve it with GET /members/{id}.
The related Task, present only when you pass ?expand=task.
The related Actor, present only when you pass ?expand=createdByActor.
The related Actor, present only when you pass ?expand=updatedByActor.
Get Reminder
Retrieve a single Reminder by id.
Required scope: reminders:read
path Parameters
id^[0-9A-Za-z_!]+$ · requiredId of the Reminder.
query Parameters
expandComma-separated relations to inline (see Expanding objects above). Valid values are listed in the enum.
Get Reminder › Responses
OK
idUnique identifier for this resource.
createdAtCreation timestamp.
dateWhen the reminder fires, as an ISO 8601 instant (not a calendar date). Must be at least five minutes in the future. This is the only updatable field.
typeReminder kind. custom is the only kind you can create — omit this field and you get it. overdue reminders also exist but Nifty creates them from task due dates; they are read-only and cannot be created, changed, or deleted through the API.
taskIdThe task this reminder is attached to. Required on create; immutable afterwards.
updatedAtLast update timestamp.
createdByActorIdWho created this record — a person, an agent, an automation or the system itself. Read-only, stamped by the server on writes made through this API, and null on records created any other way, so treat it as present-or-null rather than always populated. This is an actor id (a UUID), not a member id: look it up with GET /actors/{id}, whose memberId gives you the person to use against /members.
updatedByActorIdWho last wrote to this record — a person, an agent, an automation or the system itself. Read-only, stamped by the server on writes made through this API, and null on records last written any other way, so treat it as present-or-null rather than always populated. This is an actor id (a UUID), not a member id: look it up with GET /actors/{id}, whose memberId gives you the person to use against /members.
createdByActorTypeThe creator actor's type (human, agent, cron, recurringTask, automation, outboxRetry, systemDefault). Server-derived from actors.type; read-only, not directly writable.
updatedByActorTypeThe last writer actor's type (human, agent, cron, recurringTask, automation, outboxRetry, systemDefault). Server-derived from actors.type via the row's updatedByActorId; read-only, not directly writable.
createdByIdThe team member who created this reminder — also its notification recipient, since reminders are personal. Server-set; a member id, so resolve it with GET /members/{id}.
The related Task, present only when you pass ?expand=task.
The related Actor, present only when you pass ?expand=createdByActor.
The related Actor, present only when you pass ?expand=updatedByActor.
Delete Reminder
Permanently delete this Reminder. This cannot be undone.
Required scope: reminders:delete
path Parameters
id^[0-9A-Za-z_!]+$ · requiredId of the Reminder.
Headers
Idempotency-KeyOptional replay key (see Idempotent requests above).
Delete Reminder › Responses
No Content
Update Reminder
Partially update a Reminder. Only the fields you send are changed.
Required scope: reminders:write
path Parameters
id^[0-9A-Za-z_!]+$ · requiredId of the Reminder.
query Parameters
expandComma-separated relations to inline (see Expanding objects above). Valid values are listed in the enum.
Headers
Idempotency-KeyOptional replay key (see Idempotent requests above).
Update Reminder › Request Body
dateWhen the reminder fires, as an ISO 8601 instant (not a calendar date). Must be at least five minutes in the future. This is the only updatable field.
expectedUpdatedAtOptional concurrency guard: the updatedAt you last read. If the resource has changed since, the update is rejected with 409 instead of overwriting the other writer. Re-read, re-derive your change from the current values, and retry with the fresh updatedAt.
Update Reminder › Responses
OK
idUnique identifier for this resource.
createdAtCreation timestamp.
dateWhen the reminder fires, as an ISO 8601 instant (not a calendar date). Must be at least five minutes in the future. This is the only updatable field.
typeReminder kind. custom is the only kind you can create — omit this field and you get it. overdue reminders also exist but Nifty creates them from task due dates; they are read-only and cannot be created, changed, or deleted through the API.
taskIdThe task this reminder is attached to. Required on create; immutable afterwards.
updatedAtLast update timestamp.
createdByActorIdWho created this record — a person, an agent, an automation or the system itself. Read-only, stamped by the server on writes made through this API, and null on records created any other way, so treat it as present-or-null rather than always populated. This is an actor id (a UUID), not a member id: look it up with GET /actors/{id}, whose memberId gives you the person to use against /members.
updatedByActorIdWho last wrote to this record — a person, an agent, an automation or the system itself. Read-only, stamped by the server on writes made through this API, and null on records last written any other way, so treat it as present-or-null rather than always populated. This is an actor id (a UUID), not a member id: look it up with GET /actors/{id}, whose memberId gives you the person to use against /members.
createdByActorTypeThe creator actor's type (human, agent, cron, recurringTask, automation, outboxRetry, systemDefault). Server-derived from actors.type; read-only, not directly writable.
updatedByActorTypeThe last writer actor's type (human, agent, cron, recurringTask, automation, outboxRetry, systemDefault). Server-derived from actors.type via the row's updatedByActorId; read-only, not directly writable.
createdByIdThe team member who created this reminder — also its notification recipient, since reminders are personal. Server-set; a member id, so resolve it with GET /members/{id}.
The related Task, present only when you pass ?expand=task.
The related Actor, present only when you pass ?expand=createdByActor.
The related Actor, present only when you pass ?expand=updatedByActor.