Create a task
US Region: https://public-api.sessionboard.com · EU Region: https://public-api-eu.sessionboard.com
Creates a task and tells the assignee. Without event_id the task
belongs to the whole organization.
- Assignee:
assignee_emailorassignee_id; they must be a member of the organization, or a user on the task's event. The task's creator is the API key's user. - Dates:
due_date(YYYY-MM-DD) and an optionaldue_time(HH:mm, 24-hour) in the event's time zone. For an organization task it is the assignee's time zone, elseAmerica/New_York. Without a time the task is due at 23:59 that day andhas_due_timeisfalse. - Records: the records the task is about, each
{ type, id }; the first is the primary. Every record must be in your organization, and in the task's event when the task has one. - Reminder: with a due date and no
reminder, the assignee is reminded at 09:00 on the due date (9am). Sendnoneto skip it.
Unknown fields are a 400. source is api. Needs write:tasks.
Request example
curl --request POST \ --url 'https://public-api.sessionboard.com/v1/tasks' \ --header 'x-access-token: <api-token>' \ --header 'Content-Type: application/json' \ --data '{ "event_id": 7001, "title": "Chase Dr. Okafor'\''s disclosure", "records": [ { "type": "contact", "id": "9b2e4c1a-0d3f-4a5b-8c7d-6e5f4a3b2c1d" } ], "assignee_email": "dana@example.org", "due_date": "2026-11-20", "reminder": "9am", "priority": "high"}'const response = await fetch('https://public-api.sessionboard.com/v1/tasks', { method: 'POST', headers: { "x-access-token": "<api-token>", "Content-Type": "application/json" }, body: JSON.stringify({ "event_id": 7001, "title": "Chase Dr. Okafor's disclosure", "records": [ { "type": "contact", "id": "9b2e4c1a-0d3f-4a5b-8c7d-6e5f4a3b2c1d" } ], "assignee_email": "dana@example.org", "due_date": "2026-11-20", "reminder": "9am", "priority": "high" }),});
const data = await response.json();console.log(data);import requests
response = requests.request( "POST", "https://public-api.sessionboard.com/v1/tasks", headers={ "x-access-token": "<api-token>", "Content-Type": "application/json" }, json={ "event_id": 7001, "title": "Chase Dr. Okafor's disclosure", "records": [ { "type": "contact", "id": "9b2e4c1a-0d3f-4a5b-8c7d-6e5f4a3b2c1d" } ], "assignee_email": "dana@example.org", "due_date": "2026-11-20", "reminder": "9am", "priority": "high" },)
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 => "POST", CURLOPT_POSTFIELDS => '{ "event_id": 7001, "title": "Chase Dr. Okafor\'s disclosure", "records": [ { "type": "contact", "id": "9b2e4c1a-0d3f-4a5b-8c7d-6e5f4a3b2c1d" } ], "assignee_email": "dana@example.org", "due_date": "2026-11-20", "reminder": "9am", "priority": "high"}', 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("POST", "https://public-api.sessionboard.com/v1/tasks", strings.NewReader(`{ "event_id": 7001, "title": "Chase Dr. Okafor's disclosure", "records": [ { "type": "contact", "id": "9b2e4c1a-0d3f-4a5b-8c7d-6e5f4a3b2c1d" } ], "assignee_email": "dana@example.org", "due_date": "2026-11-20", "reminder": "9am", "priority": "high"}`)) 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")) .header("x-access-token", "<api-token>") .header("Content-Type", "application/json") .method("POST", HttpRequest.BodyPublishers.ofString("{\n \"event_id\": 7001,\n \"title\": \"Chase Dr. Okafor's disclosure\",\n \"records\": [\n {\n \"type\": \"contact\",\n \"id\": \"9b2e4c1a-0d3f-4a5b-8c7d-6e5f4a3b2c1d\"\n }\n ],\n \"assignee_email\": \"dana@example.org\",\n \"due_date\": \"2026-11-20\",\n \"reminder\": \"9am\",\n \"priority\": \"high\"\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.
Request body
event_idintegerThe event the task belongs to. Omit for an organization task.
titlestringrequireddescriptionstringrecordsTaskRecordRef[]Show child attributes
typestringrequired- Allowed values
"contact", "session", "sponsor", "exhibitor", "group"
idstringrequired
assignee_idintegerassignee_emailstring<email>Instead of
assignee_id.due_datestring<date>- Example
"2026-11-20"
due_timestring24-hour
HH:mmin the event's time zone. Omit for the end of the day.- Pattern
^([01][0-9]|2[0-3]):[0-5][0-9]$- Example
"14:00"
reminderstringDefault:
9amwhen the task has a due date, otherwisenone.dueat the due time,9amat 09:00 on the due date,1han hour before,1d/1wat 09:00 one day or one week before.- Allowed values
"none", "due", "9am", "1h", "1d", "1w"
prioritystring- Allowed values
"low", "normal", "high", "urgent"- Default
"normal"
{ "event_id": 7001, "title": "Chase Dr. Okafor's disclosure", "records": [ { "type": "contact", "id": "9b2e4c1a-0d3f-4a5b-8c7d-6e5f4a3b2c1d" } ], "assignee_email": "dana@example.org", "due_date": "2026-11-20", "reminder": "9am", "priority": "high"}Responses
201application/json
Created
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
A missing title, a bad date or time, an unknown reminder or field, an assignee who cannot be assigned, a record outside your organization or the event (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": "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"}