User API
Tasks
Create, list, and manage tasks
/tasksList tasks
Query parameters
Responses
trueuserassistantcontactuserassistantcontactuserassistantcontacttemplatetaskreminderrecipientpendingexecutingon_holdpausedawaiting_user_inputawaiting_non_user_responsealarm_setsubtasks_runningscheduledmessage_receivedconversationcompleteddone_user_markederrorarchivedabandonedhandled_by_otherdeferred_accessfailed_accesscredits_blockedchatnewTaskUItask_activityemailslackteamssmswhatsappimessagephonediscordtelegramworkflow_spawnedunknownnulluserassistantuserassistantnullpendingcompletedcancelledviewcommentworkdispatchviewcommentworkdispatchnormalinternallowmediumhighultralowmediumhighxhighmaxuseragentpending_user_approvalapproveddeclinedportalemail_linkpushsmsinboxapprovedeclineautotime-boxedmanualnulluserassistantgatemanual_inheritnullautotime-boxedmanualdeniednullinheritautosemimanualsettingsuserassistantgatemanual_inheritunknownautosemimanualcustompresetcustomautosemimanualautotime-boxedmanualdeniedorgteamaccountsetfiredcancelledusersubtask_fallbacknullprimeautonullto_backupto_primaryactivateendseizerevertwidenarrowopensubmittedpending_approvaltime_boxedapprovedexecutingexecutedcancelledrejectedfailedexecutecancelnullautotime-boxedmanualnullexecutecancelnullauto_sentmanually_approvedauto_sent_expirymanually_deniedauto_cancelled_expiryfailedperiodicunlimitedRequest
curl 'https://app.openassistant.us/api/tasks' \
-H "Authorization: Bearer ak_live_..."Response
{
"ok": true,
"tasks": [
{
"id": "string",
"status": "pending",
"title": "string",
"createdAt": "2025-01-15T10:30:00.000Z",
"updatedAt": "2025-01-15T10:30:00.000Z"
}
]
}/tasksCreate a task
Request body
lowmediumhighultradefaultactivity_onlyResponses
trueuserassistantcontactuserassistantcontactuserassistantcontacttemplatetaskreminderrecipientpendingexecutingon_holdpausedawaiting_user_inputawaiting_non_user_responsealarm_setsubtasks_runningscheduledmessage_receivedconversationcompleteddone_user_markederrorarchivedabandonedhandled_by_otherdeferred_accessfailed_accesscredits_blockedchatnewTaskUItask_activityemailslackteamssmswhatsappimessagephonediscordtelegramworkflow_spawnedunknownnulluserassistantuserassistantnullpendingcompletedcancelledviewcommentworkdispatchviewcommentworkdispatchnormalinternallowmediumhighultralowmediumhighxhighmaxuseragentpending_user_approvalapproveddeclinedportalemail_linkpushsmsinboxapprovedeclineautotime-boxedmanualnulluserassistantgatemanual_inheritnullautotime-boxedmanualdeniednullinheritautosemimanualsettingsuserassistantgatemanual_inheritunknownautosemimanualcustompresetcustomautosemimanualautotime-boxedmanualdeniedorgteamaccountsetfiredcancelledusersubtask_fallbacknullprimeautonullto_backupto_primaryactivateendseizerevertwidenarrowopensubmittedpending_approvaltime_boxedapprovedexecutingexecutedcancelledrejectedfailedexecutecancelnullautotime-boxedmanualnullexecutecancelnullauto_sentmanually_approvedauto_sent_expirymanually_deniedauto_cancelled_expiryfailedperiodicunlimitedRequest
curl 'https://app.openassistant.us/api/tasks' \
-X POST \
-H "Authorization: Bearer ak_live_..." \
-H "Content-Type: application/json" \
-d '{
"title": "string",
"assistant": "string"
}'Response
{
"ok": true,
"task": {
"id": "string",
"status": "pending",
"title": "string",
"createdAt": "2025-01-15T10:30:00.000Z",
"updatedAt": "2025-01-15T10:30:00.000Z"
}
}/tasks/{taskId}Get a task with activities and executions
Path parameters
Responses
trueuserassistantcontactuserassistantcontactuserassistantcontacttemplatetaskreminderrecipientpendingexecutingon_holdpausedawaiting_user_inputawaiting_non_user_responsealarm_setsubtasks_runningscheduledmessage_receivedconversationcompleteddone_user_markederrorarchivedabandonedhandled_by_otherdeferred_accessfailed_accesscredits_blockedchatnewTaskUItask_activityemailslackteamssmswhatsappimessagephonediscordtelegramworkflow_spawnedunknownnulluserassistantuserassistantnullpendingcompletedcancelledviewcommentworkdispatchviewcommentworkdispatchnormalinternallowmediumhighultralowmediumhighxhighmaxuseragentpending_user_approvalapproveddeclinedportalemail_linkpushsmsinboxapprovedeclineautotime-boxedmanualnulluserassistantgatemanual_inheritnullautotime-boxedmanualdeniednullinheritautosemimanualsettingsuserassistantgatemanual_inheritunknownautosemimanualcustompresetcustomautosemimanualautotime-boxedmanualdeniedorgteamaccountsetfiredcancelledusersubtask_fallbacknullprimeautonullto_backupto_primaryactivateendseizerevertwidenarrowopensubmittedpending_approvaltime_boxedapprovedexecutingexecutedcancelledrejectedfailedexecutecancelnullautotime-boxedmanualnullexecutecancelnullauto_sentmanually_approvedauto_sent_expirymanually_deniedauto_cancelled_expiryfailedperiodicunlimitedRequest
curl 'https://app.openassistant.us/api/tasks/<taskId>' \
-H "Authorization: Bearer ak_live_..."Response
{
"ok": true,
"task": {
"id": "string",
"status": "pending",
"title": "string",
"createdAt": "2025-01-15T10:30:00.000Z",
"updatedAt": "2025-01-15T10:30:00.000Z",
"activities": [
null
],
"executions": [
null
]
}
}/tasks/{taskId}Update a task
Path parameters
Request body
pendingexecutingon_holdpausedawaiting_user_inputawaiting_non_user_responsealarm_setscheduledcompleteddone_user_markederrorarchivedabandoneddeferred_accessfailed_accessinheritautosemimanualinheritautotime-boxedmanualnulllowmediumhighultraResponses
trueuserassistantcontactuserassistantcontactuserassistantcontacttemplatetaskreminderrecipientpendingexecutingon_holdpausedawaiting_user_inputawaiting_non_user_responsealarm_setsubtasks_runningscheduledmessage_receivedconversationcompleteddone_user_markederrorarchivedabandonedhandled_by_otherdeferred_accessfailed_accesscredits_blockedchatnewTaskUItask_activityemailslackteamssmswhatsappimessagephonediscordtelegramworkflow_spawnedunknownnulluserassistantuserassistantnullpendingcompletedcancelledviewcommentworkdispatchviewcommentworkdispatchnormalinternallowmediumhighultralowmediumhighxhighmaxuseragentpending_user_approvalapproveddeclinedportalemail_linkpushsmsinboxapprovedeclineautotime-boxedmanualnulluserassistantgatemanual_inheritnullautotime-boxedmanualdeniednullinheritautosemimanualsettingsuserassistantgatemanual_inheritunknownautosemimanualcustompresetcustomautosemimanualautotime-boxedmanualdeniedorgteamaccountsetfiredcancelledusersubtask_fallbacknullprimeautonullto_backupto_primaryactivateendseizerevertwidenarrowopensubmittedpending_approvaltime_boxedapprovedexecutingexecutedcancelledrejectedfailedexecutecancelnullautotime-boxedmanualnullexecutecancelnullauto_sentmanually_approvedauto_sent_expirymanually_deniedauto_cancelled_expiryfailedperiodicunlimitedRequest
curl 'https://app.openassistant.us/api/tasks/<taskId>' \
-X PUT \
-H "Authorization: Bearer ak_live_..." \
-H "Content-Type: application/json" \
-d '{
"assistant": "string",
"type": "string",
"status": "pending",
"order": 0
}'Response
{
"ok": true,
"task": {
"id": "string",
"status": "pending",
"title": "string",
"createdAt": "2025-01-15T10:30:00.000Z",
"updatedAt": "2025-01-15T10:30:00.000Z"
}
}/tasks/{taskId}Delete a task
Path parameters
Responses
trueRequest
curl 'https://app.openassistant.us/api/tasks/<taskId>' \
-X DELETE \
-H "Authorization: Bearer ak_live_..."Response
{
"ok": true,
"task": {
"id": "string"
}
}/tasks/{taskId}/assigneesUpdate task assignees
Path parameters
Request body
Responses
trueuserassistantcontactuserassistantcontactuserassistantcontacttemplatetaskreminderrecipientpendingexecutingon_holdpausedawaiting_user_inputawaiting_non_user_responsealarm_setsubtasks_runningscheduledmessage_receivedconversationcompleteddone_user_markederrorarchivedabandonedhandled_by_otherdeferred_accessfailed_accesscredits_blockedchatnewTaskUItask_activityemailslackteamssmswhatsappimessagephonediscordtelegramworkflow_spawnedunknownnulluserassistantuserassistantnullpendingcompletedcancelledviewcommentworkdispatchviewcommentworkdispatchnormalinternallowmediumhighultralowmediumhighxhighmaxuseragentpending_user_approvalapproveddeclinedportalemail_linkpushsmsinboxapprovedeclineautotime-boxedmanualnulluserassistantgatemanual_inheritnullautotime-boxedmanualdeniednullinheritautosemimanualsettingsuserassistantgatemanual_inheritunknownautosemimanualcustompresetcustomautosemimanualautotime-boxedmanualdeniedorgteamaccountsetfiredcancelledusersubtask_fallbacknullprimeautonullto_backupto_primaryactivateendseizerevertwidenarrowopensubmittedpending_approvaltime_boxedapprovedexecutingexecutedcancelledrejectedfailedexecutecancelnullautotime-boxedmanualnullexecutecancelnullauto_sentmanually_approvedauto_sent_expirymanually_deniedauto_cancelled_expiryfailedperiodicunlimitedRequest
curl 'https://app.openassistant.us/api/tasks/<taskId>/assignees' \
-X PUT \
-H "Authorization: Bearer ak_live_..." \
-H "Content-Type: application/json" \
-d '{
"emails": [
"string"
]
}'Response
{
"ok": true,
"task": {
"id": "string",
"status": "pending",
"title": "string",
"createdAt": "2025-01-15T10:30:00.000Z",
"updatedAt": "2025-01-15T10:30:00.000Z"
}
}/tasks/collaboratorsPeople this caller may collaborate with, before a task exists
The New Task composer needs the same `@` picker the task drawer has, at a moment when there is no task to gate on and nobody to exclude for already being seated. The co-worker filter is identical and still SERVER-SIDE.
Responses
trueRequest
curl 'https://app.openassistant.us/api/tasks/collaborators' \
-H "Authorization: Bearer ak_live_..."Response
{
"ok": true,
"shareable": [
{
"id": "string",
"name": "string",
"email": "string"
}
]
}/tasks/{taskId}/seatsAdd or update one seat on a task
One seat per call. A seat carries read access to the task and its full history.
Path parameters
Request body
viewcommentworkResponses
trueuserassistantcontactuserassistantcontactuserassistantcontacttemplatetaskreminderrecipientpendingexecutingon_holdpausedawaiting_user_inputawaiting_non_user_responsealarm_setsubtasks_runningscheduledmessage_receivedconversationcompleteddone_user_markederrorarchivedabandonedhandled_by_otherdeferred_accessfailed_accesscredits_blockedchatnewTaskUItask_activityemailslackteamssmswhatsappimessagephonediscordtelegramworkflow_spawnedunknownnulluserassistantuserassistantnullpendingcompletedcancelledviewcommentworkdispatchviewcommentworkdispatchnormalinternallowmediumhighultralowmediumhighxhighmaxuseragentpending_user_approvalapproveddeclinedportalemail_linkpushsmsinboxapprovedeclineautotime-boxedmanualnulluserassistantgatemanual_inheritnullautotime-boxedmanualdeniednullinheritautosemimanualsettingsuserassistantgatemanual_inheritunknownautosemimanualcustompresetcustomautosemimanualautotime-boxedmanualdeniedorgteamaccountsetfiredcancelledusersubtask_fallbacknullprimeautonullto_backupto_primaryactivateendseizerevertwidenarrowopensubmittedpending_approvaltime_boxedapprovedexecutingexecutedcancelledrejectedfailedexecutecancelnullautotime-boxedmanualnullexecutecancelnullauto_sentmanually_approvedauto_sent_expirymanually_deniedauto_cancelled_expiryfailedperiodicunlimitedRequest
curl 'https://app.openassistant.us/api/tasks/<taskId>/seats' \
-X PUT \
-H "Authorization: Bearer ak_live_..." \
-H "Content-Type: application/json" \
-d '{
"principal": "string",
"principalEmail": "string",
"access": "view"
}'Response
{
"ok": true,
"task": {
"id": "string",
"status": "pending",
"title": "string",
"createdAt": "2025-01-15T10:30:00.000Z",
"updatedAt": "2025-01-15T10:30:00.000Z"
}
}/tasks/{taskId}/seats/{principalId}Remove a seat from a task
The owner may remove anyone; a seat may always remove itself.
Path parameters
Responses
trueuserassistantcontactuserassistantcontactuserassistantcontacttemplatetaskreminderrecipientpendingexecutingon_holdpausedawaiting_user_inputawaiting_non_user_responsealarm_setsubtasks_runningscheduledmessage_receivedconversationcompleteddone_user_markederrorarchivedabandonedhandled_by_otherdeferred_accessfailed_accesscredits_blockedchatnewTaskUItask_activityemailslackteamssmswhatsappimessagephonediscordtelegramworkflow_spawnedunknownnulluserassistantuserassistantnullpendingcompletedcancelledviewcommentworkdispatchviewcommentworkdispatchnormalinternallowmediumhighultralowmediumhighxhighmaxuseragentpending_user_approvalapproveddeclinedportalemail_linkpushsmsinboxapprovedeclineautotime-boxedmanualnulluserassistantgatemanual_inheritnullautotime-boxedmanualdeniednullinheritautosemimanualsettingsuserassistantgatemanual_inheritunknownautosemimanualcustompresetcustomautosemimanualautotime-boxedmanualdeniedorgteamaccountsetfiredcancelledusersubtask_fallbacknullprimeautonullto_backupto_primaryactivateendseizerevertwidenarrowopensubmittedpending_approvaltime_boxedapprovedexecutingexecutedcancelledrejectedfailedexecutecancelnullautotime-boxedmanualnullexecutecancelnullauto_sentmanually_approvedauto_sent_expirymanually_deniedauto_cancelled_expiryfailedperiodicunlimitedRequest
curl 'https://app.openassistant.us/api/tasks/<taskId>/seats/<principalId>' \
-X DELETE \
-H "Authorization: Bearer ak_live_..."Response
{
"ok": true,
"task": {
"id": "string",
"status": "pending",
"title": "string",
"createdAt": "2025-01-15T10:30:00.000Z",
"updatedAt": "2025-01-15T10:30:00.000Z"
}
}/tasks/{taskId}/typingTell the others in a shared task that you are writing
Published over the portal SSE channel to everyone else on the task and stored nowhere — a typing indicator is true for a few seconds and then it is a lie. Re-post while typing continues; the receiving client expires it on its own. Needs a comment seat or above, the same rung as speaking. A solo task reports 0 and does nothing.
Path parameters
Responses
Request
curl 'https://app.openassistant.us/api/tasks/<taskId>/typing' \
-X POST \
-H "Authorization: Bearer ak_live_..."Response
{
"success": true,
"data": {
"notified": 0
}
}/tasks/{taskId}/seat-invitesSeats YOU are holding on this task for people not yet on the team
Scoped to the caller. An invitation that goes nowhere should not become something your colleagues saw you do, so a pending seat is visible only to whoever held it. That is a query (`invitedBy: you`), not a field stripped on the way out — there is no shape of this response that can carry somebody else's pending invite.
Path parameters
Responses
trueRequest
curl 'https://app.openassistant.us/api/tasks/<taskId>/seat-invites' \
-H "Authorization: Bearer ak_live_..."Response
{
"ok": true,
"seatInvites": [
{
"id": "string",
"task": "string",
"invitation": "string",
"email": "string",
"invitedBy": "string",
"createdAt": "2025-01-15T10:30:00.000Z"
}
]
}/tasks/{taskId}/seat-invites/{inviteId}Stop holding a seat
Drops the RESERVATION only. The team invitation it rides on is untouched and the person is still invited to the team — conflating the two would let "actually, not on this task" quietly cancel somebody's invitation to the company.
Path parameters
Responses
trueRequest
curl 'https://app.openassistant.us/api/tasks/<taskId>/seat-invites/<inviteId>' \
-X DELETE \
-H "Authorization: Bearer ak_live_..."Response
{
"ok": true,
"seatInvite": {
"id": "string",
"task": "string",
"invitation": "string",
"email": "string",
"invitedBy": "string",
"createdAt": "2025-01-15T10:30:00.000Z"
}
}/tasks/{taskId}/feedbackSubmit task feedback
Path parameters
Request body
likedislikenullResponses
trueRequest
curl 'https://app.openassistant.us/api/tasks/<taskId>/feedback' \
-X POST \
-H "Authorization: Bearer ak_live_..." \
-H "Content-Type: application/json" \
-d '{
"status": "like"
}'Response
{
"ok": true,
"feedback": {
"success": true,
"taskId": "string",
"status": "string",
"message": "string"
}
}/tasks/{taskId}/stopStop task execution
Path parameters
Responses
trueuserassistantcontactuserassistantcontactuserassistantcontacttemplatetaskreminderrecipientpendingexecutingon_holdpausedawaiting_user_inputawaiting_non_user_responsealarm_setsubtasks_runningscheduledmessage_receivedconversationcompleteddone_user_markederrorarchivedabandonedhandled_by_otherdeferred_accessfailed_accesscredits_blockedchatnewTaskUItask_activityemailslackteamssmswhatsappimessagephonediscordtelegramworkflow_spawnedunknownnulluserassistantuserassistantnullpendingcompletedcancelledviewcommentworkdispatchviewcommentworkdispatchnormalinternallowmediumhighultralowmediumhighxhighmaxuseragentpending_user_approvalapproveddeclinedportalemail_linkpushsmsinboxapprovedeclineautotime-boxedmanualnulluserassistantgatemanual_inheritnullautotime-boxedmanualdeniednullinheritautosemimanualsettingsuserassistantgatemanual_inheritunknownautosemimanualcustompresetcustomautosemimanualautotime-boxedmanualdeniedorgteamaccountsetfiredcancelledusersubtask_fallbacknullprimeautonullto_backupto_primaryactivateendseizerevertwidenarrowopensubmittedpending_approvaltime_boxedapprovedexecutingexecutedcancelledrejectedfailedexecutecancelnullautotime-boxedmanualnullexecutecancelnullauto_sentmanually_approvedauto_sent_expirymanually_deniedauto_cancelled_expiryfailedperiodicunlimitedRequest
curl 'https://app.openassistant.us/api/tasks/<taskId>/stop' \
-X POST \
-H "Authorization: Bearer ak_live_..."Response
{
"ok": true,
"task": {
"id": "string",
"status": "pending",
"title": "string",
"createdAt": "2025-01-15T10:30:00.000Z",
"updatedAt": "2025-01-15T10:30:00.000Z"
}
}/tasks/{taskId}/mark-doneMark task as done by user (stops agent, sets done_user_marked status)
Path parameters
Responses
trueuserassistantcontactuserassistantcontactuserassistantcontacttemplatetaskreminderrecipientpendingexecutingon_holdpausedawaiting_user_inputawaiting_non_user_responsealarm_setsubtasks_runningscheduledmessage_receivedconversationcompleteddone_user_markederrorarchivedabandonedhandled_by_otherdeferred_accessfailed_accesscredits_blockedchatnewTaskUItask_activityemailslackteamssmswhatsappimessagephonediscordtelegramworkflow_spawnedunknownnulluserassistantuserassistantnullpendingcompletedcancelledviewcommentworkdispatchviewcommentworkdispatchnormalinternallowmediumhighultralowmediumhighxhighmaxuseragentpending_user_approvalapproveddeclinedportalemail_linkpushsmsinboxapprovedeclineautotime-boxedmanualnulluserassistantgatemanual_inheritnullautotime-boxedmanualdeniednullinheritautosemimanualsettingsuserassistantgatemanual_inheritunknownautosemimanualcustompresetcustomautosemimanualautotime-boxedmanualdeniedorgteamaccountsetfiredcancelledusersubtask_fallbacknullprimeautonullto_backupto_primaryactivateendseizerevertwidenarrowopensubmittedpending_approvaltime_boxedapprovedexecutingexecutedcancelledrejectedfailedexecutecancelnullautotime-boxedmanualnullexecutecancelnullauto_sentmanually_approvedauto_sent_expirymanually_deniedauto_cancelled_expiryfailedperiodicunlimitedRequest
curl 'https://app.openassistant.us/api/tasks/<taskId>/mark-done' \
-X POST \
-H "Authorization: Bearer ak_live_..."Response
{
"ok": true,
"task": {
"id": "string",
"status": "pending",
"title": "string",
"createdAt": "2025-01-15T10:30:00.000Z",
"updatedAt": "2025-01-15T10:30:00.000Z"
}
}/tasks/{taskId}/mark-not-doneReopen a completed/done_user_marked task and force-wake Prime with a reason (same mechanism as an alarm wake)
Path parameters
Responses
trueuserassistantcontactuserassistantcontactuserassistantcontacttemplatetaskreminderrecipientpendingexecutingon_holdpausedawaiting_user_inputawaiting_non_user_responsealarm_setsubtasks_runningscheduledmessage_receivedconversationcompleteddone_user_markederrorarchivedabandonedhandled_by_otherdeferred_accessfailed_accesscredits_blockedchatnewTaskUItask_activityemailslackteamssmswhatsappimessagephonediscordtelegramworkflow_spawnedunknownnulluserassistantuserassistantnullpendingcompletedcancelledviewcommentworkdispatchviewcommentworkdispatchnormalinternallowmediumhighultralowmediumhighxhighmaxuseragentpending_user_approvalapproveddeclinedportalemail_linkpushsmsinboxapprovedeclineautotime-boxedmanualnulluserassistantgatemanual_inheritnullautotime-boxedmanualdeniednullinheritautosemimanualsettingsuserassistantgatemanual_inheritunknownautosemimanualcustompresetcustomautosemimanualautotime-boxedmanualdeniedorgteamaccountsetfiredcancelledusersubtask_fallbacknullprimeautonullto_backupto_primaryactivateendseizerevertwidenarrowopensubmittedpending_approvaltime_boxedapprovedexecutingexecutedcancelledrejectedfailedexecutecancelnullautotime-boxedmanualnullexecutecancelnullauto_sentmanually_approvedauto_sent_expirymanually_deniedauto_cancelled_expiryfailedperiodicunlimitedRequest
curl 'https://app.openassistant.us/api/tasks/<taskId>/mark-not-done' \
-X POST \
-H "Authorization: Bearer ak_live_..."Response
{
"ok": true,
"task": {
"id": "string",
"status": "pending",
"title": "string",
"createdAt": "2025-01-15T10:30:00.000Z",
"updatedAt": "2025-01-15T10:30:00.000Z"
}
}/tasks/{taskId}/approveApprove an agent-created task (flips approvalGate to approved and enqueues execution)
Path parameters
Request body
Responses
trueuserassistantcontactuserassistantcontactuserassistantcontacttemplatetaskreminderrecipientpendingexecutingon_holdpausedawaiting_user_inputawaiting_non_user_responsealarm_setsubtasks_runningscheduledmessage_receivedconversationcompleteddone_user_markederrorarchivedabandonedhandled_by_otherdeferred_accessfailed_accesscredits_blockedchatnewTaskUItask_activityemailslackteamssmswhatsappimessagephonediscordtelegramworkflow_spawnedunknownnulluserassistantuserassistantnullpendingcompletedcancelledviewcommentworkdispatchviewcommentworkdispatchnormalinternallowmediumhighultralowmediumhighxhighmaxuseragentpending_user_approvalapproveddeclinedportalemail_linkpushsmsinboxapprovedeclineautotime-boxedmanualnulluserassistantgatemanual_inheritnullautotime-boxedmanualdeniednullinheritautosemimanualsettingsuserassistantgatemanual_inheritunknownautosemimanualcustompresetcustomautosemimanualautotime-boxedmanualdeniedorgteamaccountsetfiredcancelledusersubtask_fallbacknullprimeautonullto_backupto_primaryactivateendseizerevertwidenarrowopensubmittedpending_approvaltime_boxedapprovedexecutingexecutedcancelledrejectedfailedexecutecancelnullautotime-boxedmanualnullexecutecancelnullauto_sentmanually_approvedauto_sent_expirymanually_deniedauto_cancelled_expiryfailedperiodicunlimitedRequest
curl 'https://app.openassistant.us/api/tasks/<taskId>/approve' \
-X POST \
-H "Authorization: Bearer ak_live_..." \
-H "Content-Type: application/json" \
-d '{
"reason": "string"
}'Response
{
"ok": true,
"task": {
"id": "string",
"status": "pending",
"title": "string",
"createdAt": "2025-01-15T10:30:00.000Z",
"updatedAt": "2025-01-15T10:30:00.000Z"
}
}/tasks/{taskId}/declineDecline an agent-created task (flips approvalGate to declined; task never runs)
Path parameters
Request body
Responses
trueuserassistantcontactuserassistantcontactuserassistantcontacttemplatetaskreminderrecipientpendingexecutingon_holdpausedawaiting_user_inputawaiting_non_user_responsealarm_setsubtasks_runningscheduledmessage_receivedconversationcompleteddone_user_markederrorarchivedabandonedhandled_by_otherdeferred_accessfailed_accesscredits_blockedchatnewTaskUItask_activityemailslackteamssmswhatsappimessagephonediscordtelegramworkflow_spawnedunknownnulluserassistantuserassistantnullpendingcompletedcancelledviewcommentworkdispatchviewcommentworkdispatchnormalinternallowmediumhighultralowmediumhighxhighmaxuseragentpending_user_approvalapproveddeclinedportalemail_linkpushsmsinboxapprovedeclineautotime-boxedmanualnulluserassistantgatemanual_inheritnullautotime-boxedmanualdeniednullinheritautosemimanualsettingsuserassistantgatemanual_inheritunknownautosemimanualcustompresetcustomautosemimanualautotime-boxedmanualdeniedorgteamaccountsetfiredcancelledusersubtask_fallbacknullprimeautonullto_backupto_primaryactivateendseizerevertwidenarrowopensubmittedpending_approvaltime_boxedapprovedexecutingexecutedcancelledrejectedfailedexecutecancelnullautotime-boxedmanualnullexecutecancelnullauto_sentmanually_approvedauto_sent_expirymanually_deniedauto_cancelled_expiryfailedperiodicunlimitedRequest
curl 'https://app.openassistant.us/api/tasks/<taskId>/decline' \
-X POST \
-H "Authorization: Bearer ak_live_..." \
-H "Content-Type: application/json" \
-d '{
"reason": "string"
}'Response
{
"ok": true,
"task": {
"id": "string",
"status": "pending",
"title": "string",
"createdAt": "2025-01-15T10:30:00.000Z",
"updatedAt": "2025-01-15T10:30:00.000Z"
}
}/tasks/approve-batchApprove multiple agent-created tasks in one request
Request body
Responses
trueRequest
curl 'https://app.openassistant.us/api/tasks/approve-batch' \
-X POST \
-H "Authorization: Bearer ak_live_..." \
-H "Content-Type: application/json" \
-d '{
"taskIds": [
"string"
]
}'Response
{
"ok": true,
"batch": {
"approved": [
"string"
],
"failed": [
{
"taskId": "string",
"error": "string"
}
]
}
}/tasks/{taskId}/processProcess task (trigger AI)
Path parameters
Request body
Responses
trueRequest
curl 'https://app.openassistant.us/api/tasks/<taskId>/process' \
-X POST \
-H "Authorization: Bearer ak_live_..." \
-H "Content-Type: application/json" \
-d '{
"message": "string",
"files": [
null
]
}'Response
{
"ok": true,
"process": {
"success": true,
"taskId": "string"
}
}/tasks/{taskId}/seenMark task as seen (updates lastSeenAt, clears unread)
Path parameters
Request body
Responses
trueRequest
curl 'https://app.openassistant.us/api/tasks/<taskId>/seen' \
-X POST \
-H "Authorization: Bearer ak_live_..." \
-H "Content-Type: application/json" \
-d '{
"lastSeenAt": "string"
}'Response
{
"ok": true,
"lastSeen": {
"lastSeenAt": "2025-01-15T10:30:00.000Z"
}
}/tasks/{taskId}/usagePer-run usage breakdown for a task (Trace rollup grouped by run + model)
Path parameters
Responses
Request
curl 'https://app.openassistant.us/api/tasks/<taskId>/usage' \
-H "Authorization: Bearer ak_live_..."Response
{
"total": {
"inputTokens": 0,
"outputTokens": 0,
"cacheReadTokens": 0,
"cacheCreationTokens": 0,
"totalTokens": 0,
"costUsd": 0
},
"rows": [
{
"runId": "string",
"runType": "string",
"runLabel": "string",
"seq": 0,
"model": "string",
"provider": "string"
}
]
}/tasks/{taskId}/scheduling-snapshotAggregated scheduling state for the live Scheduling Engine UI (organizer sees full data; non-organizers see redacted participant rows)
Path parameters
Responses
truependingsubmittedavailableno_slotsdegradedfailednonelowmediumhighclean_overlapsingle_yieldmulti_yieldRequest
curl 'https://app.openassistant.us/api/tasks/<taskId>/scheduling-snapshot' \
-H "Authorization: Bearer ak_live_..."Response
{
"ok": true,
"snapshot": {
"parentTaskId": "string",
"meetingId": "string",
"meetingWindow": {
"startsAt": "2025-01-15T10:30:00.000Z",
"endsAt": "2025-01-15T10:30:00.000Z"
},
"viewerIsOrganizer": true,
"totalRecipients": 0,
"submittedCount": 0
}
}/tasks/{taskId}/scheduling-previewLive SlotSolver preview with currently-submitted recipient data (organizer only)
Path parameters
Request body
Responses
truenonelowmediumhighclean_overlapsingle_yieldmulti_yieldRequest
curl 'https://app.openassistant.us/api/tasks/<taskId>/scheduling-preview' \
-X POST \
-H "Authorization: Bearer ak_live_..." \
-H "Content-Type: application/json" \
-d '{
"excludeEmails": [
"string"
]
}'Response
{
"ok": true,
"preview": {
"meetingId": "string",
"ranAt": "2025-01-15T10:30:00.000Z",
"hasCleanOverlap": true,
"noMatch": true,
"strategies": [
{
"id": "string",
"friction": "none",
"type": "clean_overlap",
"slot": {
"startsAt": null,
"endsAt": null,
"duration": null
},
"moves": [
null
],
"affectedParticipants": [
null
]
}
],
"participantCount": 0
}
}