List tasks
US Region: https://public-api.sessionboard.com · EU Region: https://public-api-eu.sessionboard.com
Your organization's tasks, open ones first by due date. Filters combine.
assignee:me(the API key's user), a user id, the email of a member of your organization,none(unassigned) orany(everyone).due:overdue,today,upcomingornone(no due date), judged in each task's time zone.due_from/due_tobound the due date (YYYY-MM-DD, inclusive).record_type+record_id: tasks linked to that record.
counts gives open, today, overdue, upcoming, no-date, milestone and
completed totals for the same filters, ignoring status and due.
Tasks are read as the API key's user: a key that belongs to no user
gets 400 USER_REQUIRED. Needs read:tasks. Tasks are part of
Sessionboard Platform.
Request example
curl --request GET \ --url 'https://public-api.sessionboard.com/v1/tasks' \ --header 'x-access-token: <api-token>'const response = await fetch('https://public-api.sessionboard.com/v1/tasks', { method: 'GET', headers: { "x-access-token": "<api-token>" },});
const data = await response.json();console.log(data);import requests
response = requests.request( "GET", "https://public-api.sessionboard.com/v1/tasks", headers={ "x-access-token": "<api-token>" },)
print(response.json())<?php
$curl = curl_init();
curl_setopt_array($curl, [ CURLOPT_URL => "https://public-api.sessionboard.com/v1/tasks", CURLOPT_RETURNTRANSFER => true, CURLOPT_CUSTOMREQUEST => "GET", CURLOPT_HTTPHEADER => [ "x-access-token: <api-token>", ],]);
$response = curl_exec($curl);curl_close($curl);
echo $response;package main
import ( "fmt" "io" "net/http")
func main() { req, _ := http.NewRequest("GET", "https://public-api.sessionboard.com/v1/tasks", nil) req.Header.Add("x-access-token", "<api-token>")
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")) .header("x-access-token", "<api-token>") .method("GET", HttpRequest.BodyPublishers.noBody()) .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.
Query parameters
event_idintegerqueryOnly this event's tasks.
assigneestringqueryme, a user id, an email,noneorany.statusstringqueryopen(the default; includes in progress) orcompleted.- Allowed values
"open", "completed"
duestringqueryWith no
status, only open tasks.- Allowed values
"overdue", "today", "upcoming", "none"
kindstringquery- Allowed values
"task", "milestone"- Default
"task"
prioritystringquery- Allowed values
"low", "normal", "high", "urgent"
due_fromstring<date>queryDue on or after this date.
due_tostring<date>queryDue on or before this date.
record_typestringquery- Allowed values
"contact", "session", "sponsor", "exhibitor", "group"
record_idstringqueryWith
record_type, the linked record's id.qstringqueryWords in the title or description.
sortstringquery- Allowed values
"due", "title", "assignee", "priority", "event", "created", "records"- Default
"due"
dirstringquery- Allowed values
"asc", "desc"
tzstringqueryIANA time zone that decides "today" for
dueandcounts. Defaults to the key's user's time zone.limitintegerquery- Default
25- Minimum
1- Maximum
100
offsetintegerquery- Default
0- Minimum
0
Responses
200application/json
OK
dataTask[]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>
paginationobjectShow child attributes
total_resultsintegerlimitintegeroffsetintegerhas_moreboolean
countsobjectTotals for the same filters, ignoring
status,dueandkind.Show child attributes
openintegertodayintegeroverdueintegerupcomingintegernoneintegermilestonesintegercompletedinteger
400application/json
An invalid filter (VALIDATION_ERROR), or a key that belongs to no user (USER_REQUIRED).
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
Response examples
{ "data": [ { "id": "7d1c2b8e-4f0a-4c3e-9b1d-2a6f8e0c41a1", "org_id": "3f6a1c2e-8d7b-4e90-a1b2-c3d4e5f60718", "event_id": 7001, "event": { "id": 7001, "name": "Annual Meeting 2027", "timezone": "America/Chicago" }, "kind": "task", "title": "Chase Dr. Okafor's disclosure", "description": null, "status": "open", "priority": "high", "assignee": { "id": 4211, "first_name": "Dana", "last_name": "Reyes", "email": "dana@example.org", "photo_url": null }, "creator": { "id": 3087, "first_name": "Sam", "last_name": "Lee", "email": "sam@example.org", "photo_url": null }, "completed_by": null, "records": [ { "type": "contact", "id": "9b2e4c1a-0d3f-4a5b-8c7d-6e5f4a3b2c1d", "label": "Dr. Ada Okafor", "restricted": false } ], "due_at": "2026-11-13T23:00:00.000Z", "has_due_time": true, "due_date": "2026-11-13", "due_time": "17:00", "timezone": "America/Chicago", "record_type": "contact", "record_id": "9b2e4c1a-0d3f-4a5b-8c7d-6e5f4a3b2c1d", "parent_id": null, "start_at": null, "reminder": "9am", "reminder_at": "2026-11-13T15:00:00.000Z", "milestone": null, "source": "api", "source_note_id": null, "completion_note": null, "completed_at": null, "follower_ids": [ 3087 ], "is_overdue": true, "can_edit": true, "can_delete": false, "created_at": "2026-11-09T16:12:44.000Z", "updated_at": "2026-11-09T16:12:44.000Z" } ], "pagination": { "total_results": 1, "limit": 25, "offset": 0, "has_more": false }, "counts": { "open": 4, "today": 0, "overdue": 1, "upcoming": 2, "none": 1, "milestones": 0, "completed": 7 }}{ "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"}