User API
Preferences
Scheduling, reminders, and supervision preferences
GET
/identifiers/{identifierId}/preferencesGet all preferences for an identifier
Path parameters
identifierId reqstring
Responses
200Preferences
ok reqenum
truepreferences reqobject
id reqstring
account reqstring
userIdentifier reqstring
preferences reqobject
schedulingobject
syncboolean
availabilityobject
syncboolean
workingHoursobject
MOobject[]
startstring
endstring
TUobject[]
startstring
endstring
WEobject[]
startstring
endstring
THobject[]
startstring
endstring
FRobject[]
startstring
endstring
SAobject[]
startstring
endstring
SUobject[]
startstring
endstring
workingHolidaysstring[]
customHolidaysstring[]
holidayCountriesstring[]
holidayCountrystring
defaultsobject
syncboolean
virtualobject
durationnumber
defaultMeetingLinkstring
conferenceSolutionstring
conferenceIntegrationstring
inPersonobject
durationnumber
defaultLocationstring
calendarsobject
syncboolean
readstring[]
writestring
buffersobject
syncboolean
bufferTypeenum
nonemeetingtimeBlockbufferLengthnumber
bufferBlockLengthnumber
dailyMeetingLimitnumber
customEventTitlesobject
internalobject
useCustomTitlesboolean
solostring
oneAttendeestring
twoAttendeesstring
manyAttendeesstring
externalobject
useCustomTitlesboolean
oneAttendeestring
twoAttendeesstring
manyAttendeesstring
remindersobject
levelenum
all-eventsagnt-eventsnonesmartRemindersboolean
recipientobject
asOrganizerenum
only-mewith-attendeesnoneasAttendeeenum
only-menonecalendarsobject
readstring[]
emailobject
enabledboolean
virtualDurationnumber
inPersonDurationnumber
slackobject
enabledboolean
virtualDurationnumber
inPersonDurationnumber
teamsobject
enabledboolean
virtualDurationnumber
inPersonDurationnumber
desktopobject
enabledboolean
virtualDurationnumber
inPersonDurationnumber
checkInAfternumber
followupsobject
enabledboolean
countnumber
intervalnumber
travelobject
seatPreferencestring
cabinClassstring
mealPreferencestring
airlinePreferencesstring[]
supervisionobject
modestring
threadInclusionenum
supervisedsemi-supervisedunsupervisedvisibilitystring
notifyOnenum
alwayson_flagneverreviewTimeoutnumber
scopestring
matrixobject
matrixUpdatedAtstring | null
createdAt reqstring
updatedAt reqstring
404Not found
status reqinteger
error_codestring
error reqstring
Request
curl 'https://app.openassistant.us/api/identifiers/<identifierId>/preferences' \
-H "Authorization: Bearer ak_live_..."Response
{
"ok": true,
"preferences": {
"id": "string",
"account": "string",
"userIdentifier": "string",
"preferences": {
"scheduling": {
"sync": true,
"availability": {
"sync": null,
"workingHours": null,
"workingHolidays": null,
"customHolidays": null
},
"defaults": {
"sync": null,
"virtual": null,
"inPerson": null
},
"calendars": {
"sync": null,
"read": null,
"write": null
}
},
"reminders": {},
"followups": {},
"travel": {}
},
"createdAt": "2025-01-15T10:30:00.000Z",
"updatedAt": "2025-01-15T10:30:00.000Z"
}
}GET
/identifiers/{identifierId}/preferences/{skillName}Get preferences for a specific skill
Path parameters
identifierId reqstring
skillName reqstring
Responses
200Skill preferences
ok reqenum
trueskillPreferences reqobject
skill reqstring
preferences reqobject
Request
curl 'https://app.openassistant.us/api/identifiers/<identifierId>/preferences/<skillName>' \
-H "Authorization: Bearer ak_live_..."Response
{
"ok": true,
"skillPreferences": {
"skill": "string",
"preferences": {}
}
}PUT
/identifiers/{identifierId}/preferences/{skillName}Set preferences for a specific skill
Path parameters
identifierId reqstring
skillName reqstring
Request body
preferences reqobject
Responses
200Updated skill preferences
ok reqenum
trueskillPreferences reqobject
skill reqstring
preferences reqobject
Request
curl 'https://app.openassistant.us/api/identifiers/<identifierId>/preferences/<skillName>' \
-X PUT \
-H "Authorization: Bearer ak_live_..." \
-H "Content-Type: application/json" \
-d '{
"preferences": {}
}'Response
{
"ok": true,
"skillPreferences": {
"skill": "string",
"preferences": {}
}
}GET
/users/{userId}/preferences/schedulingGet scheduling preferences for user's primary identifier
Path parameters
userId reqstring
Responses
200Scheduling preferences
ok reqenum
trueschedulingPreferences reqobject
syncboolean
availabilityobject
syncboolean
workingHoursobject
MOobject[]
startstring
endstring
TUobject[]
startstring
endstring
WEobject[]
startstring
endstring
THobject[]
startstring
endstring
FRobject[]
startstring
endstring
SAobject[]
startstring
endstring
SUobject[]
startstring
endstring
workingHolidaysstring[]
customHolidaysstring[]
holidayCountriesstring[]
holidayCountrystring
defaultsobject
syncboolean
virtualobject
durationnumber
defaultMeetingLinkstring
conferenceSolutionstring
conferenceIntegrationstring
inPersonobject
durationnumber
defaultLocationstring
calendarsobject
syncboolean
readstring[]
writestring
buffersobject
syncboolean
bufferTypeenum
nonemeetingtimeBlockbufferLengthnumber
bufferBlockLengthnumber
dailyMeetingLimitnumber
customEventTitlesobject
internalobject
useCustomTitlesboolean
solostring
oneAttendeestring
twoAttendeesstring
manyAttendeesstring
externalobject
useCustomTitlesboolean
oneAttendeestring
twoAttendeesstring
manyAttendeesstring
Request
curl 'https://app.openassistant.us/api/users/<userId>/preferences/scheduling' \
-H "Authorization: Bearer ak_live_..."Response
{
"ok": true,
"schedulingPreferences": {
"sync": true,
"availability": {
"sync": true,
"workingHours": {
"MO": [
null
],
"TU": [
null
],
"WE": [
null
],
"TH": [
null
]
},
"workingHolidays": [
"2025-01-15T10:30:00Z"
],
"customHolidays": [
"2025-01-15T10:30:00Z"
]
},
"defaults": {
"sync": true,
"virtual": {
"duration": 0,
"defaultMeetingLink": "string",
"conferenceSolution": "string",
"conferenceIntegration": "string"
},
"inPerson": {
"duration": 0,
"defaultLocation": "string"
}
},
"calendars": {
"sync": true,
"read": [
"string"
],
"write": "string"
}
}
}PUT
/users/{userId}/preferences/schedulingUpdate scheduling preferences for user's primary identifier
Path parameters
userId reqstring
Request body
schedulingPreferences reqobject
syncboolean
availabilityobject
syncboolean
workingHoursobject
MOobject[]
startstring
endstring
TUobject[]
startstring
endstring
WEobject[]
startstring
endstring
THobject[]
startstring
endstring
FRobject[]
startstring
endstring
SAobject[]
startstring
endstring
SUobject[]
startstring
endstring
workingHolidaysstring[]
customHolidaysstring[]
holidayCountriesstring[]
holidayCountrystring
defaultsobject
syncboolean
virtualobject
durationnumber
defaultMeetingLinkstring
conferenceSolutionstring
conferenceIntegrationstring
inPersonobject
durationnumber
defaultLocationstring
calendarsobject
syncboolean
readstring[]
writestring
buffersobject
syncboolean
bufferTypeenum
nonemeetingtimeBlockbufferLengthnumber
bufferBlockLengthnumber
dailyMeetingLimitnumber
customEventTitlesobject
internalobject
useCustomTitlesboolean
solostring
oneAttendeestring
twoAttendeesstring
manyAttendeesstring
externalobject
useCustomTitlesboolean
oneAttendeestring
twoAttendeesstring
manyAttendeesstring
Responses
200Updated scheduling preferences
ok reqenum
trueschedulingPreferences reqobject
syncboolean
availabilityobject
syncboolean
workingHoursobject
MOobject[]
startstring
endstring
TUobject[]
startstring
endstring
WEobject[]
startstring
endstring
THobject[]
startstring
endstring
FRobject[]
startstring
endstring
SAobject[]
startstring
endstring
SUobject[]
startstring
endstring
workingHolidaysstring[]
customHolidaysstring[]
holidayCountriesstring[]
holidayCountrystring
defaultsobject
syncboolean
virtualobject
durationnumber
defaultMeetingLinkstring
conferenceSolutionstring
conferenceIntegrationstring
inPersonobject
durationnumber
defaultLocationstring
calendarsobject
syncboolean
readstring[]
writestring
buffersobject
syncboolean
bufferTypeenum
nonemeetingtimeBlockbufferLengthnumber
bufferBlockLengthnumber
dailyMeetingLimitnumber
customEventTitlesobject
internalobject
useCustomTitlesboolean
solostring
oneAttendeestring
twoAttendeesstring
manyAttendeesstring
externalobject
useCustomTitlesboolean
oneAttendeestring
twoAttendeesstring
manyAttendeesstring
Request
curl 'https://app.openassistant.us/api/users/<userId>/preferences/scheduling' \
-X PUT \
-H "Authorization: Bearer ak_live_..." \
-H "Content-Type: application/json" \
-d '{
"schedulingPreferences": {
"sync": true,
"availability": {
"sync": true,
"workingHours": {
"MO": [
null
],
"TU": [
null
],
"WE": [
null
],
"TH": [
null
]
},
"workingHolidays": [
"2025-01-15T10:30:00Z"
],
"customHolidays": [
"2025-01-15T10:30:00Z"
]
},
"defaults": {
"sync": true,
"virtual": {
"duration": 0,
"defaultMeetingLink": "string",
"conferenceSolution": "string",
"conferenceIntegration": "string"
},
"inPerson": {
"duration": 0,
"defaultLocation": "string"
}
},
"calendars": {
"sync": true,
"read": [
"string"
],
"write": "string"
}
}
}'Response
{
"ok": true,
"schedulingPreferences": {
"sync": true,
"availability": {
"sync": true,
"workingHours": {
"MO": [
null
],
"TU": [
null
],
"WE": [
null
],
"TH": [
null
]
},
"workingHolidays": [
"2025-01-15T10:30:00Z"
],
"customHolidays": [
"2025-01-15T10:30:00Z"
]
},
"defaults": {
"sync": true,
"virtual": {
"duration": 0,
"defaultMeetingLink": "string",
"conferenceSolution": "string",
"conferenceIntegration": "string"
},
"inPerson": {
"duration": 0,
"defaultLocation": "string"
}
},
"calendars": {
"sync": true,
"read": [
"string"
],
"write": "string"
}
}
}GET
/users/{userId}/preferences/remindersGet reminder preferences for the user (cross-identifier)
Path parameters
userId reqstring
Responses
200Reminder preferences
ok reqenum
truereminderPreferences reqobject
levelenum
all-eventsagnt-eventsnonesmartRemindersboolean
recipientobject
asOrganizerenum
only-mewith-attendeesnoneasAttendeeenum
only-menonecalendarsobject
readstring[]
emailobject
enabledboolean
virtualDurationnumber
inPersonDurationnumber
slackobject
enabledboolean
virtualDurationnumber
inPersonDurationnumber
teamsobject
enabledboolean
virtualDurationnumber
inPersonDurationnumber
desktopobject
enabledboolean
virtualDurationnumber
inPersonDurationnumber
checkInAfternumber
Request
curl 'https://app.openassistant.us/api/users/<userId>/preferences/reminders' \
-H "Authorization: Bearer ak_live_..."Response
{
"ok": true,
"reminderPreferences": {}
}PATCH
/users/{userId}/preferences/remindersUpdate reminder preferences for the user (cross-identifier)
Path parameters
userId reqstring
Request body
preferences reqobject
levelenum
all-eventsagnt-eventsnonesmartRemindersboolean
recipientobject
asOrganizerenum
only-mewith-attendeesnoneasAttendeeenum
only-menonecalendarsobject
readstring[]
emailobject
enabledboolean
virtualDurationnumber
inPersonDurationnumber
slackobject
enabledboolean
virtualDurationnumber
inPersonDurationnumber
teamsobject
enabledboolean
virtualDurationnumber
inPersonDurationnumber
desktopobject
enabledboolean
virtualDurationnumber
inPersonDurationnumber
checkInAfternumber
Responses
200Updated reminder preferences
ok reqenum
truereminderPreferences reqobject
levelenum
all-eventsagnt-eventsnonesmartRemindersboolean
recipientobject
asOrganizerenum
only-mewith-attendeesnoneasAttendeeenum
only-menonecalendarsobject
readstring[]
emailobject
enabledboolean
virtualDurationnumber
inPersonDurationnumber
slackobject
enabledboolean
virtualDurationnumber
inPersonDurationnumber
teamsobject
enabledboolean
virtualDurationnumber
inPersonDurationnumber
desktopobject
enabledboolean
virtualDurationnumber
inPersonDurationnumber
checkInAfternumber
Request
curl 'https://app.openassistant.us/api/users/<userId>/preferences/reminders' \
-X PATCH \
-H "Authorization: Bearer ak_live_..." \
-H "Content-Type: application/json" \
-d '{
"preferences": {
"level": "all-events",
"smartReminders": true,
"recipient": {
"asOrganizer": "only-me",
"asAttendee": "only-me"
},
"calendars": {
"read": [
"string"
]
}
}
}'Response
{
"ok": true,
"reminderPreferences": {}
}GET
/users/{userId}/preferences/supervision/matrixGet supervision matrix for user's primary identifier
Path parameters
userId reqstring
Responses
200Supervision matrix
ok reqenum
truesupervisionMatrix reqobject
matrix reqobject
email_as_userany...
email_as_assistantany...
messagingany...
voice_callany...
calendarany...
filesany...
driveany...
contactsany...
third_party_skillsany...
websiteany...
lockedstring[]
exceptionsany[]
matrixUpdatedAtstring | null
parentLockedCellsstring[]
Request
curl 'https://app.openassistant.us/api/users/<userId>/preferences/supervision/matrix' \
-H "Authorization: Bearer ak_live_..."Response
{
"ok": true,
"supervisionMatrix": {
"matrix": {
"email_as_user": null,
"email_as_assistant": null,
"messaging": null,
"voice_call": null
}
}
}PATCH
/users/{userId}/preferences/supervision/matrixDeep-merge an update into the supervision matrix
Path parameters
userId reqstring
Request body
matrix reqobject
email_as_userobject
modeenum
autotime-boxedmanualnulltimeBoxedWindowMinnumber | null
timeBoxedExpiryenum
executecancelnullundoDelaySecnumber | null
email_as_assistantobject
modeenum
autotime-boxedmanualnulltimeBoxedWindowMinnumber | null
timeBoxedExpiryenum
executecancelnullundoDelaySecnumber | null
messagingobject
modeenum
autotime-boxedmanualnulltimeBoxedWindowMinnumber | null
timeBoxedExpiryenum
executecancelnullundoDelaySecnumber | null
voice_callobject
modeenum
autotime-boxedmanualnulltimeBoxedWindowMinnumber | null
timeBoxedExpiryenum
executecancelnullundoDelaySecnumber | null
calendarobject
modeenum
autotime-boxedmanualnulltimeBoxedWindowMinnumber | null
timeBoxedExpiryenum
executecancelnullundoDelaySecnumber | null
filesobject
modeenum
autotime-boxedmanualnulltimeBoxedWindowMinnumber | null
timeBoxedExpiryenum
executecancelnullundoDelaySecnumber | null
driveobject
modeenum
autotime-boxedmanualnulltimeBoxedWindowMinnumber | null
timeBoxedExpiryenum
executecancelnullundoDelaySecnumber | null
contactsobject
modeenum
autotime-boxedmanualnulltimeBoxedWindowMinnumber | null
timeBoxedExpiryenum
executecancelnullundoDelaySecnumber | null
third_party_skillsobject
modeenum
autotime-boxedmanualnulltimeBoxedWindowMinnumber | null
timeBoxedExpiryenum
executecancelnullundoDelaySecnumber | null
websiteobject
modeenum
autotime-boxedmanualnulltimeBoxedWindowMinnumber | null
timeBoxedExpiryenum
executecancelnullundoDelaySecnumber | null
lockedstring[]
exceptionsobject[]
idstring
labelstring | null
match reqany...
mode reqenum
autotime-boxedmanualdeniedtimeBoxedWindowMininteger | null
timeBoxedExpiryenum
executecancelnullundoDelaySecinteger | null
appliesTostring[]
createdAtstring
createdBystring | null
Responses
200Updated supervision matrix
ok reqenum
truesupervisionMatrix reqobject
matrix reqobject
email_as_userany...
email_as_assistantany...
messagingany...
voice_callany...
calendarany...
filesany...
driveany...
contactsany...
third_party_skillsany...
websiteany...
lockedstring[]
exceptionsany[]
matrixUpdatedAtstring | null
parentLockedCellsstring[]
400Invalid body (e.g. matrix.locked at user scope)
status reqinteger
error_codestring
error reqstring
403Loosening a parent-locked cell
status reqinteger
error_codestring
error reqstring
Request
curl 'https://app.openassistant.us/api/users/<userId>/preferences/supervision/matrix' \
-X PATCH \
-H "Authorization: Bearer ak_live_..." \
-H "Content-Type: application/json" \
-d '{
"matrix": {
"email_as_user": {
"mode": "auto",
"timeBoxedWindowMin": 0,
"timeBoxedExpiry": "execute",
"undoDelaySec": 0
},
"email_as_assistant": {
"mode": "auto",
"timeBoxedWindowMin": 0,
"timeBoxedExpiry": "execute",
"undoDelaySec": 0
},
"messaging": {
"mode": "auto",
"timeBoxedWindowMin": 0,
"timeBoxedExpiry": "execute",
"undoDelaySec": 0
},
"voice_call": {
"mode": "auto",
"timeBoxedWindowMin": 0,
"timeBoxedExpiry": "execute",
"undoDelaySec": 0
}
}
}'Response
{
"ok": true,
"supervisionMatrix": {
"matrix": {
"email_as_user": null,
"email_as_assistant": null,
"messaging": null,
"voice_call": null
}
}
}PUT
/users/{userId}/preferences/supervision/matrix/resetReset supervision matrix to null (restore defaults)
Path parameters
userId reqstring
Responses
200Reset supervision matrix
ok reqenum
truesupervisionMatrix reqobject
matrix reqobject
email_as_userany...
email_as_assistantany...
messagingany...
voice_callany...
calendarany...
filesany...
driveany...
contactsany...
third_party_skillsany...
websiteany...
lockedstring[]
exceptionsany[]
matrixUpdatedAtstring | null
parentLockedCellsstring[]
Request
curl 'https://app.openassistant.us/api/users/<userId>/preferences/supervision/matrix/reset' \
-X PUT \
-H "Authorization: Bearer ak_live_..."Response
{
"ok": true,
"supervisionMatrix": {
"matrix": {
"email_as_user": null,
"email_as_assistant": null,
"messaging": null,
"voice_call": null
}
}
}POST
/users/{userId}/preferences/supervision/exceptionsAppend a recipient exception to the supervision matrix
Path parameters
userId reqstring
Request body
labelstring | null
match reqobject
kind reqenum
tagprioritycompanycontactIdemaildomaininternalvalue reqstring
mode reqenum
autotime-boxedmanualdeniedtimeBoxedWindowMininteger | null
timeBoxedExpiryenum
executecancelnullundoDelaySecinteger | null
appliesTostring[]
Responses
201Created exception
ok reqenum
truerecipientException reqobject
idstring
labelstring | null
match reqobject
kind reqenum
tagprioritycompanycontactIdemaildomaininternalvalue reqstring
mode reqenum
autotime-boxedmanualdeniedtimeBoxedWindowMininteger | null
timeBoxedExpiryenum
executecancelnullundoDelaySecinteger | null
appliesTostring[]
createdAtstring
createdBystring | null
400Invalid match selector or value
status reqinteger
error_codestring
error reqstring
403Loosening a parent-locked resource
status reqinteger
error_codestring
error reqstring
Request
curl 'https://app.openassistant.us/api/users/<userId>/preferences/supervision/exceptions' \
-X POST \
-H "Authorization: Bearer ak_live_..." \
-H "Content-Type: application/json" \
-d '{
"match": {
"kind": "tag",
"value": "string"
},
"mode": "auto"
}'Response
{
"ok": true,
"recipientException": {
"match": {
"kind": "tag",
"value": "string"
},
"mode": "auto"
}
}DELETE
/users/{userId}/preferences/supervision/exceptions/{exceptionId}Remove a recipient exception by id
Path parameters
userId reqstring
exceptionId reqstring
Responses
204Deleted
404Exception not found
status reqinteger
error_codestring
error reqstring
Request
curl 'https://app.openassistant.us/api/users/<userId>/preferences/supervision/exceptions/<exceptionId>' \
-X DELETE \
-H "Authorization: Bearer ak_live_..."