Update a task
US Region: https://public-api.sessionboard.com · EU Region: https://public-api-eu.sessionboard.com
Changes only the fields you send; null clears a field. records
replaces the list. Changing the due date or time, the reminder or the
assignee recomputes the reminder. When someone other than the assignee
changes the due date, reassigns or retitles a task, the assignee is told.
The assignee, the creator, a follower or an admin can update a task.
Needs write:tasks.
Request example
curl --request PATCH \ --url 'https://public-api.sessionboard.com/v1/tasks/{taskId}' \ --header 'x-access-token: <api-token>' \ --header 'Content-Type: application/json' \ --data '{ "due_date": "2026-11-23", "due_time": "14:00"}'const response = await fetch('https://public-api.sessionboard.com/v1/tasks/{taskId}', { method: 'PATCH', headers: { "x-access-token": "<api-token>", "Content-Type": "application/json" }, body: JSON.stringify({ "due_date": "2026-11-23", "due_time": "14:00" }),});
const data = await response.json();console.log(data);import requests
response = requests.request( "PATCH", "https://public-api.sessionboard.com/v1/tasks/{taskId}", headers={ "x-access-token": "<api-token>", "Content-Type": "application/json" }, json={ "due_date": "2026-11-23", "due_time": "14:00" },)
print(response.json())<?php
$curl = curl_init();
curl_setopt_array($curl, [ CURLOPT_URL => "https://public-api.sessionboard.com/v1/tasks/{taskId}", CURLOPT_RETURNTRANSFER => true, CURLOPT_CUSTOMREQUEST => "PATCH", CURLOPT_POSTFIELDS => '{ "due_date": "2026-11-23", "due_time": "14:00"}', CURLOPT_HTTPHEADER => [ "x-access-token: <api-token>", "Content-Type: application/json", ],]);
$response = curl_exec($curl);curl_close($curl);
echo $response;package main
import ( "fmt" "io" "net/http" "strings")
func main() { req, _ := http.NewRequest("PATCH", "https://public-api.sessionboard.com/v1/tasks/{taskId}", strings.NewReader(`{ "due_date": "2026-11-23", "due_time": "14:00"}`)) req.Header.Add("x-access-token", "<api-token>") req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req) defer res.Body.Close() body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))}HttpRequest request = HttpRequest.newBuilder() .uri(URI.create("https://public-api.sessionboard.com/v1/tasks/{taskId}")) .header("x-access-token", "<api-token>") .header("Content-Type", "application/json") .method("PATCH", HttpRequest.BodyPublishers.ofString("{\n \"due_date\": \"2026-11-23\",\n \"due_time\": \"14:00\"\n}")) .build();
HttpResponse<String> response = HttpClient.newHttpClient() .send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());Try it
Response headers
Authorizations
x-access-tokenstringheaderOrganization API token. Generate from Organization Settings → API Tokens.
AuthorizationBearer <token>headerorOAuth 2.1 access token. Obtained via the OAuth PKCE flow at
/oauth/token.
Send one of these. See Authentication.
Path parameters
taskIdstring<uuid>pathrequiredThe task's
id.
Request body
Any of the create fields except event_id; null clears a field.
titlestringdescriptionstring | nullrecordsTaskRecordRef[]Show child attributes
typestringrequired- Allowed values
"contact", "session", "sponsor", "exhibitor", "group"
idstringrequired
assignee_idinteger | nullassignee_emailstring<email> | nulldue_datestring<date> | nulldue_timestring | null- Pattern
^([01][0-9]|2[0-3]):[0-5][0-9]$
reminderstring- Allowed values
"none", "due", "9am", "1h", "1d", "1w"
prioritystring- Allowed values
"low", "normal", "high", "urgent"
{ "due_date": "2026-11-23", "due_time": "14:00"}{ "assignee_email": "priya@example.org"}Responses
200application/json
OK
dataTaskA to-do for your team, about one or more records, in an event or across the organization.
Show child attributes
idstring<uuid>org_idstringevent_idinteger | nulleventobject | nullShow child attributes
idintegernamestringtimezonestring
kindstring- Allowed values
"task", "milestone"
titlestringdescriptionstring | nullstatusstring- Allowed values
"open", "in_progress", "completed", "cancelled"
prioritystring- Allowed values
"low", "normal", "high", "urgent"
assigneeTaskPerson | any | nullShow child attributes
idintegerfirst_namestring | nulllast_namestring | nullemailstringphoto_urlstring | null
creatorTaskPerson | any | nullShow child attributes
idintegerfirst_namestring | nulllast_namestring | nullemailstringphoto_urlstring | null
completed_byTaskPerson | any | nullShow child attributes
idintegerfirst_namestring | nulllast_namestring | nullemailstringphoto_urlstring | null
recordsTaskRecord[]Show child attributes
typestringA submission is a
session.- Allowed values
"contact", "session", "sponsor", "exhibitor", "group"
idstringlabelstring | nullThe contact's name, the session's title, or the sponsor's, exhibitor's or group's name.
nullwhenrestricted.restrictedbooleanThe key's user cannot read this record, so its label is withheld.
due_atstring<date-time> | nullhas_due_timebooleanfalsewhen only a date was set (due at 23:59 that day in the time zone).due_datestring<date> | nullThe due date in
timezone.due_timestring | nullThe due time (
HH:mm) intimezone;nullwhenhas_due_timeisfalse.timezonestringThe IANA time zone of
due_dateanddue_time— the event's, or for an organization task the assignee's (elseAmerica/New_York).record_typestring | nullThe primary record's type (the same as
records[0].type).record_idstring | nullThe primary record's id.
parent_idstring | nullstart_atstring<date-time> | nullreminderstring- Allowed values
"none", "due", "9am", "1h", "1d", "1w"
reminder_atstring<date-time> | nullWhen the reminder goes to the assignee.
milestoneobject | nullShow child attributes
idstringtitlestringdue_atstring<date-time> | null
sourcestring | nullWhere the task came from, such as
api,custom,noteormilestone.source_note_idstring | nullThe note this task follows up, when it was created from one.
completion_notestring | nullcompleted_atstring<date-time> | nullfollower_idsinteger[]is_overduebooleancan_editbooleanThe key's user can update, complete or reopen it.
can_deletebooleancreated_atstring<date-time>updated_atstring<date-time>
400application/json
Invalid field values.
errorstringVALIDATION_ERROR,USER_REQUIRED,FORBIDDEN,NOT_FOUND,TASKS_PLATFORM_ONLY,SCOPE_REQUIRED,ORG_WIDE_TOKEN_REQUIREDorINTERNAL_ERROR.messagestring
401
Unauthorized
403application/json
TASKS_PLATFORM_ONLY: the organization uses a self-serve Sessionboard product; Tasks are part of Sessionboard Platform.SCOPE_REQUIRED: the key lacksread:tasks(reads) orwrite:tasks(writes). Legacy keys with no scopes can read but not write.ORG_WIDE_TOKEN_REQUIRED: the key is restricted to particular events; Tasks need a key without an event restriction.FORBIDDEN: the key's user can read this task but not change it (only the assignee, the creator, a follower or an admin can; only the creator or an admin can delete), or cannot use Tasks (reviewers and portal users).
errorstringVALIDATION_ERROR,USER_REQUIRED,FORBIDDEN,NOT_FOUND,TASKS_PLATFORM_ONLY,SCOPE_REQUIRED,ORG_WIDE_TOKEN_REQUIREDorINTERNAL_ERROR.messagestring
404
No such task, or the key's user cannot read it (NOT_FOUND).
Response examples
{ "data": { "id": "3c90c3cc-0d44-4b50-8888-8dd25736052a", "org_id": "<string>", "event_id": 123, "event": { "id": 123, "name": "<string>", "timezone": "<string>" }, "kind": "task", "title": "<string>", "description": "<string>", "status": "open", "priority": "low", "assignee": { "id": 123, "first_name": "<string>", "last_name": "<string>", "email": "<string>", "photo_url": "<string>" }, "creator": { "id": 123, "first_name": "<string>", "last_name": "<string>", "email": "<string>", "photo_url": "<string>" }, "completed_by": { "id": 123, "first_name": "<string>", "last_name": "<string>", "email": "<string>", "photo_url": "<string>" }, "records": [ { "type": "contact", "id": "<string>", "label": "<string>", "restricted": true } ], "due_at": "2026-01-15T09:30:00Z", "has_due_time": true, "due_date": "2026-01-15", "due_time": "<string>", "timezone": "<string>", "record_type": "<string>", "record_id": "<string>", "parent_id": "<string>", "start_at": "2026-01-15T09:30:00Z", "reminder": "none", "reminder_at": "2026-01-15T09:30:00Z", "milestone": { "id": "<string>", "title": "<string>", "due_at": "2026-01-15T09:30:00Z" }, "source": "<string>", "source_note_id": "<string>", "completion_note": "<string>", "completed_at": "2026-01-15T09:30:00Z", "follower_ids": [ 123 ], "is_overdue": true, "can_edit": true, "can_delete": true, "created_at": "2026-01-15T09:30:00Z", "updated_at": "2026-01-15T09:30:00Z" }}{ "error": "<string>", "message": "<string>"}{ "error": "TASKS_PLATFORM_ONLY", "message": "Tasks are part of Sessionboard Platform."}{ "error": "SCOPE_REQUIRED", "message": "Token missing required scope: write:tasks"}