Tasks
A task is an action item, often derived from a meeting. These endpoints list, search, create, update, complete and delete tasks.
Every endpoint below shows its parameters and response fields in the middle and a request sample with an example response on the right.
Lists the tasks of a directory (paginated, optionally filtered)
/v1.0/directories/{directoryId}/tasksThe ?filter selects a task view (default myTasks); the all* variants are admin/owner only. An optional ?search substring matches the task subject. Pagination via ?page + ?pageSize (max. 100). Resolve responsibleUserId/ownerId via GET /v1.0/directories/{directoryId}/memberships/users/{userId}.
Field overview from the specification
Response fields:
page/pageSize/total/hasMore: pagination envelope (current page, page size, total count, whether more pages follow).items(array): the tasks on this page. Each item has:taskId(string): id of the task.subject(string): task subject.description(string | null): task description; null if unset.ownerId(string): id of the user who owns (created) the task.responsibleUserId(string | null): id of the user responsible for the task; null if unassigned.dueDate(string | null): due date (ISO 8601); null if no due date is set.isDone(boolean): whether the task is marked as done.doneOn(string | null): timestamp when the task was completed (ISO 8601); null if not done.isCanceled(boolean): whether the task is canceled.canceledOn(string | null): timestamp when the task was canceled (ISO 8601); null if not canceled.recordingSummaryId(string | null): id of the recording summary this task originated from; null if none.appointmentId(string | null): id of the appointment this task is linked to; null if none.createdOn(string): creation timestamp (ISO 8601).modifiedOn(string): last modification timestamp (ISO 8601).
Path parameters
directoryIdstringrequiredId of the directory (the Sally company account) the resource belongs to. The directories a token can address are listed by
GET /v1.0/me/directories/memberships.
Query parameters
filterstringoptionalNamed preset that combines scope and state.
my…covers the tasks of the calling user,all…every task of the directory the caller may see. The state part isTasks(any),Open,Overdue,CompletedorForwarded. Omitted means no preset filter.Allowed values:myTasksmyOpenmyOverduemyCompletedmyForwardedallTasksallOpenallOverdueallCompletedallForwardedsearchstringoptionalCase-insensitive substring match on the task subject. The term may appear at the start, middle, or end.
pagenumberoptionalPage number, 1-based. Defaults to 1.
pageSizenumberoptionalItems per page. Defaults to 25, capped at 100.
fieldsstringoptionalComma-separated list of the fields to return. Leave it out and you get every field — including fields added in the future, which is your call to make: name your fields if you want to be shielded from that.
Only first-level fields can be named. A nested list such as
attendees,tagsorsectionItemsis returned whole or not at all;attendees.nameis not supported.On a paged response the selection applies to the entries in
items;page,pageSize,totalandhasMoreare always returned. An unknown name is rejected with 400 rather than ignored.Selectable here:
appointmentId,canceledOn,createdOn,description,doneOn,dueDate,isCanceled,isDone,modifiedOn,ownerId,recordingSummaryId,responsibleUserId,subject,taskId.Example:appointmentId,canceledOn
Response: each entry in items
taskIdstringrequiredId of the task.
subjectstringrequiredTask subject.
descriptionstringrequirednullableTask description; null if unset.
ownerIdstringrequiredId of the user who owns (created) the task.
responsibleUserIdstringrequirednullableId of the user responsible for the task; null if unassigned.
dueDatestringrequirednullableDue date (ISO 8601); null if no due date is set.
isDonebooleanrequiredWhether the task is marked as done.
doneOnstringrequirednullableTimestamp when the task was completed (ISO 8601); null if not done.
isCanceledbooleanrequiredWhether the task is canceled.
canceledOnstringrequirednullableTimestamp when the task was canceled (ISO 8601); null if not canceled.
recordingSummaryIdstringrequirednullableId of the recording summary this task originated from; null if none.
appointmentIdstringrequirednullableId of the appointment this task is linked to; null if none.
createdOnstringrequiredCreation timestamp (ISO 8601).
modifiedOnstringrequiredLast modification timestamp (ISO 8601).
Every page also carries page, pageSize, total, hasMore.
Status codes
- 200Success
- 400
Invalid request (validation error).
- 401
Missing or invalid bearer token.
- 404
Resource not found or not accessible.
- 429
Rate limit exceeded (per token/IP). Transcription uploads may also return
codeFUP_LIMIT_EXCEEDEDorTOO_MANY_CONCURRENT_TRANSCRIPTIONS. - 500
Internal server error.
Creates a task
/v1.0/directories/{directoryId}/tasksCreates a task. The caller becomes the owner.
Field overview from the specification
Body fields:
subject(string, required): task subject (1..1000 characters).description(string, optional): task description (max. 4000 characters); null for none.responsibleUserId(string, optional): id of the responsible user; null or omitted leaves the task unassigned.dueDate(string, optional): due date as an ISO 8601 string; null for no due date.
Path parameters
directoryIdstringrequiredId of the directory (the Sally company account) the resource belongs to. The directories a token can address are listed by
GET /v1.0/me/directories/memberships.
Query parameters
fieldsstringoptionalComma-separated list of the fields to return. Leave it out and you get every field — including fields added in the future, which is your call to make: name your fields if you want to be shielded from that.
Only first-level fields can be named. A nested list such as
attendees,tagsorsectionItemsis returned whole or not at all;attendees.nameis not supported.On a paged response the selection applies to the entries in
items;page,pageSize,totalandhasMoreare always returned. An unknown name is rejected with 400 rather than ignored.Selectable here:
appointmentId,canceledOn,createdOn,description,doneOn,dueDate,isCanceled,isDone,modifiedOn,ownerId,recordingSummaryId,responsibleUserId,subject,taskId.Example:appointmentId,canceledOn
Request body application/json
subjectstringrequiredTask subject (1..1000 characters).
descriptionstringoptionalnullableTask description (max. 4000 characters); null for none.
responsibleUserIdstringoptionalnullableId of the responsible user; null for unassigned.
dueDatestringoptionalnullableDue date as an ISO 8601 string; null for no due date.
Response
taskIdstringrequiredId of the task.
subjectstringrequiredTask subject.
descriptionstringrequirednullableTask description; null if unset.
ownerIdstringrequiredId of the user who owns (created) the task.
responsibleUserIdstringrequirednullableId of the user responsible for the task; null if unassigned.
dueDatestringrequirednullableDue date (ISO 8601); null if no due date is set.
isDonebooleanrequiredWhether the task is marked as done.
doneOnstringrequirednullableTimestamp when the task was completed (ISO 8601); null if not done.
isCanceledbooleanrequiredWhether the task is canceled.
canceledOnstringrequirednullableTimestamp when the task was canceled (ISO 8601); null if not canceled.
recordingSummaryIdstringrequirednullableId of the recording summary this task originated from; null if none.
appointmentIdstringrequirednullableId of the appointment this task is linked to; null if none.
createdOnstringrequiredCreation timestamp (ISO 8601).
modifiedOnstringrequiredLast modification timestamp (ISO 8601).
Status codes
- 200Success
- 400
Invalid request (validation error).
- 401
Missing or invalid bearer token.
- 403
Forbidden (insufficient permissions).
- 404
Resource not found or not accessible.
- 429
Rate limit exceeded (per token/IP). Transcription uploads may also return
codeFUP_LIMIT_EXCEEDEDorTOO_MANY_CONCURRENT_TRANSCRIPTIONS. - 500
Internal server error.
Searches tasks (parameters in the body)
/v1.0/directories/{directoryId}/tasks/searchSearches tasks.
Field overview from the specification
Body fields:
search(string, optional): case-insensitive substring over the task subject AND description.responsible(string, optional): filter by responsible user id — your own is always allowed, another user or omitting it (= all responsibles) requires admin/owner.status(string, optional): one ofopen(not done/canceled),completed,overdue(open + past due),canceled; omit for any status.page(number, optional, default1): 1-based page number.pageSize(number, optional, default25): page size (max. 100).
Results are sorted by due date ascending.
Path parameters
directoryIdstringrequiredId of the directory (the Sally company account) the resource belongs to. The directories a token can address are listed by
GET /v1.0/me/directories/memberships.
Query parameters
fieldsstringoptionalComma-separated list of the fields to return. Leave it out and you get every field — including fields added in the future, which is your call to make: name your fields if you want to be shielded from that.
Only first-level fields can be named. A nested list such as
attendees,tagsorsectionItemsis returned whole or not at all;attendees.nameis not supported.On a paged response the selection applies to the entries in
items;page,pageSize,totalandhasMoreare always returned. An unknown name is rejected with 400 rather than ignored.Selectable here:
appointmentId,canceledOn,createdOn,description,doneOn,dueDate,isCanceled,isDone,modifiedOn,ownerId,recordingSummaryId,responsibleUserId,subject,taskId.Example:appointmentId,canceledOn
Request body application/json
searchstringoptionalnullableCase-insensitive substring match on the task subject AND description. The term may appear at the start, middle, or end.
responsiblestringoptionalnullableFilter by responsible user id. Your own id is always allowed; another user or omitting it (= all responsibles) requires admin/owner.
statusstringoptionalnullableFilter by status:
open(not done/canceled),completed,overdue(open + past due),canceled. Omit for any status.Allowed values:opencompletedoverduecanceledpagenumberoptionalPage (1-based, default 1).
pageSizenumberoptionalPage size (default 25, max 100).
Response: each entry in items
taskIdstringrequiredId of the task.
subjectstringrequiredTask subject.
descriptionstringrequirednullableTask description; null if unset.
ownerIdstringrequiredId of the user who owns (created) the task.
responsibleUserIdstringrequirednullableId of the user responsible for the task; null if unassigned.
dueDatestringrequirednullableDue date (ISO 8601); null if no due date is set.
isDonebooleanrequiredWhether the task is marked as done.
doneOnstringrequirednullableTimestamp when the task was completed (ISO 8601); null if not done.
isCanceledbooleanrequiredWhether the task is canceled.
canceledOnstringrequirednullableTimestamp when the task was canceled (ISO 8601); null if not canceled.
recordingSummaryIdstringrequirednullableId of the recording summary this task originated from; null if none.
appointmentIdstringrequirednullableId of the appointment this task is linked to; null if none.
createdOnstringrequiredCreation timestamp (ISO 8601).
modifiedOnstringrequiredLast modification timestamp (ISO 8601).
Every page also carries page, pageSize, total, hasMore.
Status codes
- 200Success
- 400
Invalid request (validation error).
- 401
Missing or invalid bearer token.
- 403
Forbidden (insufficient permissions).
- 404
Resource not found or not accessible.
- 429
Rate limit exceeded (per token/IP). Transcription uploads may also return
codeFUP_LIMIT_EXCEEDEDorTOO_MANY_CONCURRENT_TRANSCRIPTIONS. - 500
Internal server error.
Returns a single task by id
/v1.0/directories/{directoryId}/tasks/{taskId}The caller must be allowed to view the task (owner, responsible, or admin/owner).
Field overview from the specification
Response fields:
taskId(string): id of the task.subject(string): task subject.description(string | null): task description; null if unset.ownerId(string): id of the user who owns (created) the task.responsibleUserId(string | null): id of the user responsible for the task; null if unassigned.dueDate(string | null): due date (ISO 8601); null if no due date is set.isDone(boolean): whether the task is marked as done.doneOn(string | null): timestamp when the task was completed (ISO 8601); null if not done.isCanceled(boolean): whether the task is canceled.canceledOn(string | null): timestamp when the task was canceled (ISO 8601); null if not canceled.recordingSummaryId(string | null): id of the recording summary this task originated from; null if none.appointmentId(string | null): id of the appointment this task is linked to; null if none.createdOn(string): creation timestamp (ISO 8601).modifiedOn(string): last modification timestamp (ISO 8601).
Path parameters
directoryIdstringrequiredId of the directory (the Sally company account) the resource belongs to. The directories a token can address are listed by
GET /v1.0/me/directories/memberships.taskIdstringrequiredId of the task.
Query parameters
fieldsstringoptionalComma-separated list of the fields to return. Leave it out and you get every field — including fields added in the future, which is your call to make: name your fields if you want to be shielded from that.
Only first-level fields can be named. A nested list such as
attendees,tagsorsectionItemsis returned whole or not at all;attendees.nameis not supported.On a paged response the selection applies to the entries in
items;page,pageSize,totalandhasMoreare always returned. An unknown name is rejected with 400 rather than ignored.Selectable here:
appointmentId,canceledOn,createdOn,description,doneOn,dueDate,isCanceled,isDone,modifiedOn,ownerId,recordingSummaryId,responsibleUserId,subject,taskId.Example:appointmentId,canceledOn
Response
taskIdstringrequiredId of the task.
subjectstringrequiredTask subject.
descriptionstringrequirednullableTask description; null if unset.
ownerIdstringrequiredId of the user who owns (created) the task.
responsibleUserIdstringrequirednullableId of the user responsible for the task; null if unassigned.
dueDatestringrequirednullableDue date (ISO 8601); null if no due date is set.
isDonebooleanrequiredWhether the task is marked as done.
doneOnstringrequirednullableTimestamp when the task was completed (ISO 8601); null if not done.
isCanceledbooleanrequiredWhether the task is canceled.
canceledOnstringrequirednullableTimestamp when the task was canceled (ISO 8601); null if not canceled.
recordingSummaryIdstringrequirednullableId of the recording summary this task originated from; null if none.
appointmentIdstringrequirednullableId of the appointment this task is linked to; null if none.
createdOnstringrequiredCreation timestamp (ISO 8601).
modifiedOnstringrequiredLast modification timestamp (ISO 8601).
Status codes
- 200Success
- 400
Invalid request (validation error).
- 401
Missing or invalid bearer token.
- 404
Resource not found or not accessible.
- 429
Rate limit exceeded (per token/IP). Transcription uploads may also return
codeFUP_LIMIT_EXCEEDEDorTOO_MANY_CONCURRENT_TRANSCRIPTIONS. - 500
Internal server error.
Updates a task (partial update)
/v1.0/directories/{directoryId}/tasks/{taskId}Updates a task. Only the provided fields are changed; omitted fields keep their current value, a null value explicitly clears a field. The caller must be allowed to edit the task.
Field overview from the specification
Body fields:
subject(string, optional): new task subject (1..1000 characters).description(string, optional): new task description (max. 4000 characters); null to clear.responsibleUserId(string, optional): new id of the responsible user; null to unassign.dueDate(string, optional): new due date as an ISO 8601 string; null to clear.
Path parameters
directoryIdstringrequiredId of the directory (the Sally company account) the resource belongs to. The directories a token can address are listed by
GET /v1.0/me/directories/memberships.taskIdstringrequiredId of the task.
Query parameters
fieldsstringoptionalComma-separated list of the fields to return. Leave it out and you get every field — including fields added in the future, which is your call to make: name your fields if you want to be shielded from that.
Only first-level fields can be named. A nested list such as
attendees,tagsorsectionItemsis returned whole or not at all;attendees.nameis not supported.On a paged response the selection applies to the entries in
items;page,pageSize,totalandhasMoreare always returned. An unknown name is rejected with 400 rather than ignored.Selectable here:
appointmentId,canceledOn,createdOn,description,doneOn,dueDate,isCanceled,isDone,modifiedOn,ownerId,recordingSummaryId,responsibleUserId,subject,taskId.Example:appointmentId,canceledOn
Request body application/json
subjectstringoptionalNew task subject (1..1000 characters).
descriptionstringoptionalnullableNew task description (max. 4000 characters); null to clear.
responsibleUserIdstringoptionalnullableNew id of the responsible user; null to unassign.
dueDatestringoptionalnullableNew due date as an ISO 8601 string; null to clear.
Response
taskIdstringrequiredId of the task.
subjectstringrequiredTask subject.
descriptionstringrequirednullableTask description; null if unset.
ownerIdstringrequiredId of the user who owns (created) the task.
responsibleUserIdstringrequirednullableId of the user responsible for the task; null if unassigned.
dueDatestringrequirednullableDue date (ISO 8601); null if no due date is set.
isDonebooleanrequiredWhether the task is marked as done.
doneOnstringrequirednullableTimestamp when the task was completed (ISO 8601); null if not done.
isCanceledbooleanrequiredWhether the task is canceled.
canceledOnstringrequirednullableTimestamp when the task was canceled (ISO 8601); null if not canceled.
recordingSummaryIdstringrequirednullableId of the recording summary this task originated from; null if none.
appointmentIdstringrequirednullableId of the appointment this task is linked to; null if none.
createdOnstringrequiredCreation timestamp (ISO 8601).
modifiedOnstringrequiredLast modification timestamp (ISO 8601).
Status codes
- 200Success
- 400
Invalid request (validation error).
- 401
Missing or invalid bearer token.
- 403
Forbidden (insufficient permissions).
- 404
Resource not found or not accessible.
- 429
Rate limit exceeded (per token/IP). Transcription uploads may also return
codeFUP_LIMIT_EXCEEDEDorTOO_MANY_CONCURRENT_TRANSCRIPTIONS. - 500
Internal server error.
Deletes a task (soft-delete)
/v1.0/directories/{directoryId}/tasks/{taskId}Only the owner or an admin/owner may delete a task.
Path parameters
directoryIdstringrequiredId of the directory (the Sally company account) the resource belongs to. The directories a token can address are listed by
GET /v1.0/me/directories/memberships.taskIdstringrequiredId of the task.
Status codes
- 204Success
- 400
Invalid request (validation error).
- 401
Missing or invalid bearer token.
- 403
Forbidden (insufficient permissions).
- 404
Resource not found or not accessible.
- 429
Rate limit exceeded (per token/IP). Transcription uploads may also return
codeFUP_LIMIT_EXCEEDEDorTOO_MANY_CONCURRENT_TRANSCRIPTIONS. - 500
Internal server error.
Toggles the done status of a task
/v1.0/directories/{directoryId}/tasks/{taskId}/doneToggles the done status of a task.
Field overview from the specification
Body fields:
isDone(boolean, required):trueto mark the task as done,falseto reopen it.
Path parameters
directoryIdstringrequiredId of the directory (the Sally company account) the resource belongs to. The directories a token can address are listed by
GET /v1.0/me/directories/memberships.taskIdstringrequiredId of the task.
Query parameters
fieldsstringoptionalComma-separated list of the fields to return. Leave it out and you get every field — including fields added in the future, which is your call to make: name your fields if you want to be shielded from that.
Only first-level fields can be named. A nested list such as
attendees,tagsorsectionItemsis returned whole or not at all;attendees.nameis not supported.On a paged response the selection applies to the entries in
items;page,pageSize,totalandhasMoreare always returned. An unknown name is rejected with 400 rather than ignored.Selectable here:
appointmentId,canceledOn,createdOn,description,doneOn,dueDate,isCanceled,isDone,modifiedOn,ownerId,recordingSummaryId,responsibleUserId,subject,taskId.Example:appointmentId,canceledOn
Request body application/json
isDonebooleanrequiredTrue to mark the task as done, false to reopen it.
Response
taskIdstringrequiredId of the task.
subjectstringrequiredTask subject.
descriptionstringrequirednullableTask description; null if unset.
ownerIdstringrequiredId of the user who owns (created) the task.
responsibleUserIdstringrequirednullableId of the user responsible for the task; null if unassigned.
dueDatestringrequirednullableDue date (ISO 8601); null if no due date is set.
isDonebooleanrequiredWhether the task is marked as done.
doneOnstringrequirednullableTimestamp when the task was completed (ISO 8601); null if not done.
isCanceledbooleanrequiredWhether the task is canceled.
canceledOnstringrequirednullableTimestamp when the task was canceled (ISO 8601); null if not canceled.
recordingSummaryIdstringrequirednullableId of the recording summary this task originated from; null if none.
appointmentIdstringrequirednullableId of the appointment this task is linked to; null if none.
createdOnstringrequiredCreation timestamp (ISO 8601).
modifiedOnstringrequiredLast modification timestamp (ISO 8601).
Status codes
- 200Success
- 400
Invalid request (validation error).
- 401
Missing or invalid bearer token.
- 403
Forbidden (insufficient permissions).
- 404
Resource not found or not accessible.
- 429
Rate limit exceeded (per token/IP). Transcription uploads may also return
codeFUP_LIMIT_EXCEEDEDorTOO_MANY_CONCURRENT_TRANSCRIPTIONS. - 500
Internal server error.