OpenAssistantAPI

User API

Drive

Files created by agents, visible and deletable by users

GET/users/{userId}/drive-storage

Get drive storage usage for a user

Returns used, quota, and remaining bytes. Default quota is 15GB per user.

Path parameters

userId reqstring

Responses

200Storage usage
ok reqenumtrue
storage reqobject
usedBytes reqinteger
quotaBytes reqinteger
remainingBytes reqinteger
percentUsed reqinteger
404User not found
status reqinteger
error_codestring
error reqstring

Request

curl 'https://app.openassistant.us/api/users/<userId>/drive-storage' \
  -H "Authorization: Bearer ak_live_..."

Response

{
  "ok": true,
  "storage": {
    "usedBytes": 0,
    "quotaBytes": 0,
    "remainingBytes": 0,
    "percentUsed": 0
  }
}
GET/users/{userId}/drive-files

List drive files for a user

Path parameters

userId reqstring

Query parameters

pageinteger
perPageinteger
limitinteger
statusstringFilter by status
searchstringFuzzy search on file name
folderstringFolder ID. Omit for root files.
kindstringFilter by kind (file or note)
eventIdstringFilter notes by calendar event ID
noteTypestringFilter notes by type
tagsstringComma-separated tag filter

Responses

200Paginated drive file list
ok reqenumtrue
driveFiles reqobject[]
id reqstring
account reqstring
user reqstring
teamstring | null
organizationstring | null
kindenumfilenote
folderstring | null
eventobject | null
calendarId reqstring
eventId reqstring
noteTypeenumraw-transcriptshared-summarypersonal-summaryuser-notesaction-items
isPrivateboolean
attendeesstring[]
externalShareobject | null
token reqstring
expiresAtstring | null
sharedAtstring | null
sharedWithstring[]
summaryStatusenumnonependingready
tagsstring[]
s3Key reqstring
name reqstring
mimeTypestring | null
size reqinteger
status reqenumpendingready
assistantstring | null
sourceobject | null
type reqenumchatdispatchtaskupload
id reqstring
importSourceobject | null
type reqenumgoogle-meetms-teamszoomgranolafirefliesotterfathomgongtldvread-aiavomachorusfellowsalesforcehubspotgoogle-driveonedrivedropboxbox
externalId reqstring
importedAt reqstring
hash reqstring
remoteRefobject | null
provider reqenumgoogle-driveonedrivedropboxbox
fileId reqstring
webLinkstring | null
lastFetchedAtstring | null
contentCachedboolean
relatedTasksstring[]
activitiesobject[]
type reqenummessagestatus_changeeditshare
role reqenumuserassistantsystem
content reqstring
assistantstring | null
createdAt reqstring
versionsobject[]
s3Key reqstring
size reqinteger
mimeTypestring | null
savedAt reqstring
savedBy reqstring
metadataobject
createdAt reqstring
updatedAt reqstring
pageinteger
perPageinteger
totalinteger
404User not found
status reqinteger
error_codestring
error reqstring

Request

curl 'https://app.openassistant.us/api/users/<userId>/drive-files' \
  -H "Authorization: Bearer ak_live_..."

Response

{
  "ok": true,
  "driveFiles": [
    {
      "id": "string",
      "account": "string",
      "user": "string",
      "s3Key": "string",
      "name": "string",
      "size": 0
    }
  ]
}
GET/users/{userId}/drive-files/{fileId}

Get a drive file

Path parameters

userId reqstring
fileId reqstring

Responses

200Drive file
ok reqenumtrue
driveFile reqobject
id reqstring
account reqstring
user reqstring
teamstring | null
organizationstring | null
kindenumfilenote
folderstring | null
eventobject | null
calendarId reqstring
eventId reqstring
noteTypeenumraw-transcriptshared-summarypersonal-summaryuser-notesaction-items
isPrivateboolean
attendeesstring[]
externalShareobject | null
token reqstring
expiresAtstring | null
sharedAtstring | null
sharedWithstring[]
summaryStatusenumnonependingready
tagsstring[]
s3Key reqstring
name reqstring
mimeTypestring | null
size reqinteger
status reqenumpendingready
assistantstring | null
sourceobject | null
type reqenumchatdispatchtaskupload
id reqstring
importSourceobject | null
type reqenumgoogle-meetms-teamszoomgranolafirefliesotterfathomgongtldvread-aiavomachorusfellowsalesforcehubspotgoogle-driveonedrivedropboxbox
externalId reqstring
importedAt reqstring
hash reqstring
remoteRefobject | null
provider reqenumgoogle-driveonedrivedropboxbox
fileId reqstring
webLinkstring | null
lastFetchedAtstring | null
contentCachedboolean
relatedTasksstring[]
activitiesobject[]
type reqenummessagestatus_changeeditshare
role reqenumuserassistantsystem
content reqstring
assistantstring | null
createdAt reqstring
versionsobject[]
s3Key reqstring
size reqinteger
mimeTypestring | null
savedAt reqstring
savedBy reqstring
metadataobject
createdAt reqstring
updatedAt reqstring
404Not found
status reqinteger
error_codestring
error reqstring

Request

curl 'https://app.openassistant.us/api/users/<userId>/drive-files/<fileId>' \
  -H "Authorization: Bearer ak_live_..."

Response

{
  "ok": true,
  "driveFile": {
    "id": "string",
    "account": "string",
    "user": "string",
    "s3Key": "string",
    "name": "string",
    "size": 0
  }
}
DELETE/users/{userId}/drive-files/{fileId}

Delete a drive file

Deletes the DB record and the corresponding S3 object.

Path parameters

userId reqstring
fileId reqstring

Responses

200Deleted
ok reqenumtrue
driveFile reqobject
id reqstring
deletedboolean
messagestring
404Not found
status reqinteger
error_codestring
error reqstring

Request

curl 'https://app.openassistant.us/api/users/<userId>/drive-files/<fileId>' \
  -X DELETE \
  -H "Authorization: Bearer ak_live_..."

Response

{
  "ok": true,
  "driveFile": {
    "id": "string"
  }
}
GET/users/{userId}/drive-files/{fileId}/download

Get a presigned download URL for a drive file

Returns a presigned S3 GET URL valid for 15 minutes. Use this URL to stream the file directly from S3.

Path parameters

userId reqstring
fileId reqstring

Responses

200Presigned download URL
ok reqenumtrue
url reqstringPresigned S3 GET URL, valid for 15 minutes.
404Not found
status reqinteger
error_codestring
error reqstring

Request

curl 'https://app.openassistant.us/api/users/<userId>/drive-files/<fileId>/download' \
  -H "Authorization: Bearer ak_live_..."

Response

{
  "ok": true,
  "url": "string"
}
POST/users/{userId}/drive-files/upload

Get a presigned upload URL

Returns a presigned S3 PUT URL. Upload the file bytes directly to this URL, then call confirm to finalize.

Path parameters

userId reqstring

Request body

name reqstringDisplay name for the file
mimeTypestringMIME type (auto-detected from name if omitted)
size reqintegerFile size in bytes (for quota pre-check)
folderstring | nullFolder to upload into (null/omit = root)

Responses

200Presigned upload URL
ok reqenumtrue
url reqstringPresigned S3 PUT URL. Upload file bytes here.
fileId reqstringDriveFile record ID. Use this to confirm upload.
contentType reqstringContent-Type to use for the PUT request.
400Quota exceeded
status reqinteger
error_codestring
error reqstring
404User not found
status reqinteger
error_codestring
error reqstring

Request

curl 'https://app.openassistant.us/api/users/<userId>/drive-files/upload' \
  -X POST \
  -H "Authorization: Bearer ak_live_..." \
  -H "Content-Type: application/json" \
  -d '{
  "name": "string",
  "size": 0
}'

Response

{
  "ok": true,
  "url": "string",
  "fileId": "string",
  "contentType": "string"
}
POST/users/{userId}/drive-files/{fileId}/confirm

Confirm a file upload

Call after uploading bytes to the presigned URL. Marks the file as ready and updates storage usage.

Path parameters

userId reqstring
fileId reqstring

Request body

size reqintegerActual byte size of the uploaded file

Responses

200Confirmed file
ok reqenumtrue
driveFile reqobject
id reqstring
account reqstring
user reqstring
teamstring | null
organizationstring | null
kindenumfilenote
folderstring | null
eventobject | null
calendarId reqstring
eventId reqstring
noteTypeenumraw-transcriptshared-summarypersonal-summaryuser-notesaction-items
isPrivateboolean
attendeesstring[]
externalShareobject | null
token reqstring
expiresAtstring | null
sharedAtstring | null
sharedWithstring[]
summaryStatusenumnonependingready
tagsstring[]
s3Key reqstring
name reqstring
mimeTypestring | null
size reqinteger
status reqenumpendingready
assistantstring | null
sourceobject | null
type reqenumchatdispatchtaskupload
id reqstring
importSourceobject | null
type reqenumgoogle-meetms-teamszoomgranolafirefliesotterfathomgongtldvread-aiavomachorusfellowsalesforcehubspotgoogle-driveonedrivedropboxbox
externalId reqstring
importedAt reqstring
hash reqstring
remoteRefobject | null
provider reqenumgoogle-driveonedrivedropboxbox
fileId reqstring
webLinkstring | null
lastFetchedAtstring | null
contentCachedboolean
relatedTasksstring[]
activitiesobject[]
type reqenummessagestatus_changeeditshare
role reqenumuserassistantsystem
content reqstring
assistantstring | null
createdAt reqstring
versionsobject[]
s3Key reqstring
size reqinteger
mimeTypestring | null
savedAt reqstring
savedBy reqstring
metadataobject
createdAt reqstring
updatedAt reqstring
404Not found
status reqinteger
error_codestring
error reqstring

Request

curl 'https://app.openassistant.us/api/users/<userId>/drive-files/<fileId>/confirm' \
  -X POST \
  -H "Authorization: Bearer ak_live_..." \
  -H "Content-Type: application/json" \
  -d '{
  "size": 0
}'

Response

{
  "ok": true,
  "driveFile": {
    "id": "string",
    "account": "string",
    "user": "string",
    "s3Key": "string",
    "name": "string",
    "size": 0
  }
}
PATCH/users/{userId}/drive-files/{fileId}/move

Move a file to a folder

Path parameters

userId reqstring
fileId reqstring

Request body

folder reqstring | nullTarget folder ID (null = root)

Responses

200Moved file
ok reqenumtrue
driveFile reqobject
id reqstring
account reqstring
user reqstring
teamstring | null
organizationstring | null
kindenumfilenote
folderstring | null
eventobject | null
calendarId reqstring
eventId reqstring
noteTypeenumraw-transcriptshared-summarypersonal-summaryuser-notesaction-items
isPrivateboolean
attendeesstring[]
externalShareobject | null
token reqstring
expiresAtstring | null
sharedAtstring | null
sharedWithstring[]
summaryStatusenumnonependingready
tagsstring[]
s3Key reqstring
name reqstring
mimeTypestring | null
size reqinteger
status reqenumpendingready
assistantstring | null
sourceobject | null
type reqenumchatdispatchtaskupload
id reqstring
importSourceobject | null
type reqenumgoogle-meetms-teamszoomgranolafirefliesotterfathomgongtldvread-aiavomachorusfellowsalesforcehubspotgoogle-driveonedrivedropboxbox
externalId reqstring
importedAt reqstring
hash reqstring
remoteRefobject | null
provider reqenumgoogle-driveonedrivedropboxbox
fileId reqstring
webLinkstring | null
lastFetchedAtstring | null
contentCachedboolean
relatedTasksstring[]
activitiesobject[]
type reqenummessagestatus_changeeditshare
role reqenumuserassistantsystem
content reqstring
assistantstring | null
createdAt reqstring
versionsobject[]
s3Key reqstring
size reqinteger
mimeTypestring | null
savedAt reqstring
savedBy reqstring
metadataobject
createdAt reqstring
updatedAt reqstring
404Not found
status reqinteger
error_codestring
error reqstring

Request

curl 'https://app.openassistant.us/api/users/<userId>/drive-files/<fileId>/move' \
  -X PATCH \
  -H "Authorization: Bearer ak_live_..." \
  -H "Content-Type: application/json" \
  -d '{
  "folder": "507f1f77bcf86cd799439011"
}'

Response

{
  "ok": true,
  "driveFile": {
    "id": "string",
    "account": "string",
    "user": "string",
    "s3Key": "string",
    "name": "string",
    "size": 0
  }
}
PATCH/users/{userId}/drive-files/{fileId}/share

Share a file with a team or organization

Path parameters

userId reqstring
fileId reqstring

Request body

teamstring | nullShare with team (null = unshare)
organizationstring | nullShare with organization (null = unshare)

Responses

200Shared file
ok reqenumtrue
driveFile reqobject
id reqstring
account reqstring
user reqstring
teamstring | null
organizationstring | null
kindenumfilenote
folderstring | null
eventobject | null
calendarId reqstring
eventId reqstring
noteTypeenumraw-transcriptshared-summarypersonal-summaryuser-notesaction-items
isPrivateboolean
attendeesstring[]
externalShareobject | null
token reqstring
expiresAtstring | null
sharedAtstring | null
sharedWithstring[]
summaryStatusenumnonependingready
tagsstring[]
s3Key reqstring
name reqstring
mimeTypestring | null
size reqinteger
status reqenumpendingready
assistantstring | null
sourceobject | null
type reqenumchatdispatchtaskupload
id reqstring
importSourceobject | null
type reqenumgoogle-meetms-teamszoomgranolafirefliesotterfathomgongtldvread-aiavomachorusfellowsalesforcehubspotgoogle-driveonedrivedropboxbox
externalId reqstring
importedAt reqstring
hash reqstring
remoteRefobject | null
provider reqenumgoogle-driveonedrivedropboxbox
fileId reqstring
webLinkstring | null
lastFetchedAtstring | null
contentCachedboolean
relatedTasksstring[]
activitiesobject[]
type reqenummessagestatus_changeeditshare
role reqenumuserassistantsystem
content reqstring
assistantstring | null
createdAt reqstring
versionsobject[]
s3Key reqstring
size reqinteger
mimeTypestring | null
savedAt reqstring
savedBy reqstring
metadataobject
createdAt reqstring
updatedAt reqstring
404Not found
status reqinteger
error_codestring
error reqstring

Request

curl 'https://app.openassistant.us/api/users/<userId>/drive-files/<fileId>/share' \
  -X PATCH \
  -H "Authorization: Bearer ak_live_..." \
  -H "Content-Type: application/json" \
  -d '{
  "team": "507f1f77bcf86cd799439011",
  "organization": "507f1f77bcf86cd799439011"
}'

Response

{
  "ok": true,
  "driveFile": {
    "id": "string",
    "account": "string",
    "user": "string",
    "s3Key": "string",
    "name": "string",
    "size": 0
  }
}
GET/users/{userId}/drive-files/shared

List files shared with the user

Path parameters

userId reqstring

Responses

200Shared files
ok reqenumtrue
driveFiles reqobject[]
id reqstring
account reqstring
user reqstring
teamstring | null
organizationstring | null
kindenumfilenote
folderstring | null
eventobject | null
calendarId reqstring
eventId reqstring
noteTypeenumraw-transcriptshared-summarypersonal-summaryuser-notesaction-items
isPrivateboolean
attendeesstring[]
externalShareobject | null
token reqstring
expiresAtstring | null
sharedAtstring | null
sharedWithstring[]
summaryStatusenumnonependingready
tagsstring[]
s3Key reqstring
name reqstring
mimeTypestring | null
size reqinteger
status reqenumpendingready
assistantstring | null
sourceobject | null
type reqenumchatdispatchtaskupload
id reqstring
importSourceobject | null
type reqenumgoogle-meetms-teamszoomgranolafirefliesotterfathomgongtldvread-aiavomachorusfellowsalesforcehubspotgoogle-driveonedrivedropboxbox
externalId reqstring
importedAt reqstring
hash reqstring
remoteRefobject | null
provider reqenumgoogle-driveonedrivedropboxbox
fileId reqstring
webLinkstring | null
lastFetchedAtstring | null
contentCachedboolean
relatedTasksstring[]
activitiesobject[]
type reqenummessagestatus_changeeditshare
role reqenumuserassistantsystem
content reqstring
assistantstring | null
createdAt reqstring
versionsobject[]
s3Key reqstring
size reqinteger
mimeTypestring | null
savedAt reqstring
savedBy reqstring
metadataobject
createdAt reqstring
updatedAt reqstring
pageinteger
perPageinteger
totalinteger

Request

curl 'https://app.openassistant.us/api/users/<userId>/drive-files/shared' \
  -H "Authorization: Bearer ak_live_..."

Response

{
  "ok": true,
  "driveFiles": [
    {
      "id": "string",
      "account": "string",
      "user": "string",
      "s3Key": "string",
      "name": "string",
      "size": 0
    }
  ]
}
POST/users/{userId}/drive-files/{fileId}/link-task

Link a task to a drive file

Path parameters

userId reqstring
fileId reqstring

Request body

taskId reqstringTask ID to link

Responses

200Linked
ok reqenumtrue
fileId reqstring
taskId reqstring
404Not found
status reqinteger
error_codestring
error reqstring

Request

curl 'https://app.openassistant.us/api/users/<userId>/drive-files/<fileId>/link-task' \
  -X POST \
  -H "Authorization: Bearer ak_live_..." \
  -H "Content-Type: application/json" \
  -d '{
  "taskId": "507f1f77bcf86cd799439011"
}'

Response

{
  "ok": true,
  "fileId": "string",
  "taskId": "string"
}
POST/users/{userId}/drive-files/{fileId}/process

Send a message about a file

Adds a user message to the file activities. Agent processing is triggered asynchronously.

Path parameters

userId reqstring
fileId reqstring

Request body

message reqstringMessage about this file
assistantIdstringAssistant to process with

Responses

200File with updated activities
ok reqenumtrue
driveFile reqobject
id reqstring
account reqstring
user reqstring
teamstring | null
organizationstring | null
kindenumfilenote
folderstring | null
eventobject | null
calendarId reqstring
eventId reqstring
noteTypeenumraw-transcriptshared-summarypersonal-summaryuser-notesaction-items
isPrivateboolean
attendeesstring[]
externalShareobject | null
token reqstring
expiresAtstring | null
sharedAtstring | null
sharedWithstring[]
summaryStatusenumnonependingready
tagsstring[]
s3Key reqstring
name reqstring
mimeTypestring | null
size reqinteger
status reqenumpendingready
assistantstring | null
sourceobject | null
type reqenumchatdispatchtaskupload
id reqstring
importSourceobject | null
type reqenumgoogle-meetms-teamszoomgranolafirefliesotterfathomgongtldvread-aiavomachorusfellowsalesforcehubspotgoogle-driveonedrivedropboxbox
externalId reqstring
importedAt reqstring
hash reqstring
remoteRefobject | null
provider reqenumgoogle-driveonedrivedropboxbox
fileId reqstring
webLinkstring | null
lastFetchedAtstring | null
contentCachedboolean
relatedTasksstring[]
activitiesobject[]
type reqenummessagestatus_changeeditshare
role reqenumuserassistantsystem
content reqstring
assistantstring | null
createdAt reqstring
versionsobject[]
s3Key reqstring
size reqinteger
mimeTypestring | null
savedAt reqstring
savedBy reqstring
metadataobject
createdAt reqstring
updatedAt reqstring
404Not found
status reqinteger
error_codestring
error reqstring

Request

curl 'https://app.openassistant.us/api/users/<userId>/drive-files/<fileId>/process' \
  -X POST \
  -H "Authorization: Bearer ak_live_..." \
  -H "Content-Type: application/json" \
  -d '{
  "message": "string"
}'

Response

{
  "ok": true,
  "driveFile": {
    "id": "string",
    "account": "string",
    "user": "string",
    "s3Key": "string",
    "name": "string",
    "size": 0
  }
}
GET/users/{userId}/drive-files/{fileId}/activities

List file activities

Path parameters

userId reqstring
fileId reqstring

Responses

200Activities
ok reqenumtrue
activities reqobject[]
type reqenummessagestatus_changeeditshare
role reqenumuserassistantsystem
content reqstring
assistantstring | null
createdAt reqstring
404Not found
status reqinteger
error_codestring
error reqstring

Request

curl 'https://app.openassistant.us/api/users/<userId>/drive-files/<fileId>/activities' \
  -H "Authorization: Bearer ak_live_..."

Response

{
  "ok": true,
  "activities": [
    {
      "type": "message",
      "role": "user",
      "content": "string",
      "createdAt": "2025-01-15T10:30:00.000Z"
    }
  ]
}
GET/users/{userId}/drive-files/{fileId}/versions

List file versions

Path parameters

userId reqstring
fileId reqstring

Responses

200Versions
ok reqenumtrue
versions reqobject[]
s3Key reqstring
size reqinteger
mimeTypestring | null
savedAt reqstring
savedBy reqstring
404Not found
status reqinteger
error_codestring
error reqstring

Request

curl 'https://app.openassistant.us/api/users/<userId>/drive-files/<fileId>/versions' \
  -H "Authorization: Bearer ak_live_..."

Response

{
  "ok": true,
  "versions": [
    {
      "s3Key": "string",
      "size": 0,
      "savedAt": "2025-01-15T10:30:00.000Z",
      "savedBy": "string"
    }
  ]
}
POST/users/{userId}/drive-files/{fileId}/versions/{versionIndex}/restore

Restore a file version

Path parameters

userId reqstring
fileId reqstring
versionIndex reqstring

Responses

200Restored file
ok reqenumtrue
driveFile reqobject
id reqstring
account reqstring
user reqstring
teamstring | null
organizationstring | null
kindenumfilenote
folderstring | null
eventobject | null
calendarId reqstring
eventId reqstring
noteTypeenumraw-transcriptshared-summarypersonal-summaryuser-notesaction-items
isPrivateboolean
attendeesstring[]
externalShareobject | null
token reqstring
expiresAtstring | null
sharedAtstring | null
sharedWithstring[]
summaryStatusenumnonependingready
tagsstring[]
s3Key reqstring
name reqstring
mimeTypestring | null
size reqinteger
status reqenumpendingready
assistantstring | null
sourceobject | null
type reqenumchatdispatchtaskupload
id reqstring
importSourceobject | null
type reqenumgoogle-meetms-teamszoomgranolafirefliesotterfathomgongtldvread-aiavomachorusfellowsalesforcehubspotgoogle-driveonedrivedropboxbox
externalId reqstring
importedAt reqstring
hash reqstring
remoteRefobject | null
provider reqenumgoogle-driveonedrivedropboxbox
fileId reqstring
webLinkstring | null
lastFetchedAtstring | null
contentCachedboolean
relatedTasksstring[]
activitiesobject[]
type reqenummessagestatus_changeeditshare
role reqenumuserassistantsystem
content reqstring
assistantstring | null
createdAt reqstring
versionsobject[]
s3Key reqstring
size reqinteger
mimeTypestring | null
savedAt reqstring
savedBy reqstring
metadataobject
createdAt reqstring
updatedAt reqstring
404Not found
status reqinteger
error_codestring
error reqstring

Request

curl 'https://app.openassistant.us/api/users/<userId>/drive-files/<fileId>/versions/<versionIndex>/restore' \
  -X POST \
  -H "Authorization: Bearer ak_live_..."

Response

{
  "ok": true,
  "driveFile": {
    "id": "string",
    "account": "string",
    "user": "string",
    "s3Key": "string",
    "name": "string",
    "size": 0
  }
}
PUT/users/{userId}/drive-files/{fileId}/content

Update file content inline

Direct content update for text files under 5MB. Creates a version snapshot before overwriting.

Path parameters

userId reqstring
fileId reqstring

Request body

content reqstringNew file content (text files < 5MB)

Responses

200Updated file
ok reqenumtrue
driveFile reqobject
id reqstring
account reqstring
user reqstring
teamstring | null
organizationstring | null
kindenumfilenote
folderstring | null
eventobject | null
calendarId reqstring
eventId reqstring
noteTypeenumraw-transcriptshared-summarypersonal-summaryuser-notesaction-items
isPrivateboolean
attendeesstring[]
externalShareobject | null
token reqstring
expiresAtstring | null
sharedAtstring | null
sharedWithstring[]
summaryStatusenumnonependingready
tagsstring[]
s3Key reqstring
name reqstring
mimeTypestring | null
size reqinteger
status reqenumpendingready
assistantstring | null
sourceobject | null
type reqenumchatdispatchtaskupload
id reqstring
importSourceobject | null
type reqenumgoogle-meetms-teamszoomgranolafirefliesotterfathomgongtldvread-aiavomachorusfellowsalesforcehubspotgoogle-driveonedrivedropboxbox
externalId reqstring
importedAt reqstring
hash reqstring
remoteRefobject | null
provider reqenumgoogle-driveonedrivedropboxbox
fileId reqstring
webLinkstring | null
lastFetchedAtstring | null
contentCachedboolean
relatedTasksstring[]
activitiesobject[]
type reqenummessagestatus_changeeditshare
role reqenumuserassistantsystem
content reqstring
assistantstring | null
createdAt reqstring
versionsobject[]
s3Key reqstring
size reqinteger
mimeTypestring | null
savedAt reqstring
savedBy reqstring
metadataobject
createdAt reqstring
updatedAt reqstring
404Not found
status reqinteger
error_codestring
error reqstring

Request

curl 'https://app.openassistant.us/api/users/<userId>/drive-files/<fileId>/content' \
  -X PUT \
  -H "Authorization: Bearer ak_live_..." \
  -H "Content-Type: application/json" \
  -d '{
  "content": "string"
}'

Response

{
  "ok": true,
  "driveFile": {
    "id": "string",
    "account": "string",
    "user": "string",
    "s3Key": "string",
    "name": "string",
    "size": 0
  }
}
POST/users/{userId}/drive-files/notes

Create a note

Quick-create a markdown note. Writes content directly to S3 and marks as ready in one step. Set `event` to link it to a calendar event (meeting note).

Path parameters

userId reqstring

Request body

name reqstringFile/note title
contentstringInitial markdown content
kindenumKind of file to create (defaults to note)filenote
eventobject
calendarIdstring
eventIdstring
noteTypeenumNote sub-type (for meeting notes)raw-transcriptshared-summaryaction-itemsuser-notespersonal-summary
tagsstring[]Tags for the note
folderstring | nullFolder ID (null = root)

Responses

200Created note
ok reqenumtrue
driveFile reqobject
id reqstring
account reqstring
user reqstring
teamstring | null
organizationstring | null
kindenumfilenote
folderstring | null
eventobject | null
calendarId reqstring
eventId reqstring
noteTypeenumraw-transcriptshared-summarypersonal-summaryuser-notesaction-items
isPrivateboolean
attendeesstring[]
externalShareobject | null
token reqstring
expiresAtstring | null
sharedAtstring | null
sharedWithstring[]
summaryStatusenumnonependingready
tagsstring[]
s3Key reqstring
name reqstring
mimeTypestring | null
size reqinteger
status reqenumpendingready
assistantstring | null
sourceobject | null
type reqenumchatdispatchtaskupload
id reqstring
importSourceobject | null
type reqenumgoogle-meetms-teamszoomgranolafirefliesotterfathomgongtldvread-aiavomachorusfellowsalesforcehubspotgoogle-driveonedrivedropboxbox
externalId reqstring
importedAt reqstring
hash reqstring
remoteRefobject | null
provider reqenumgoogle-driveonedrivedropboxbox
fileId reqstring
webLinkstring | null
lastFetchedAtstring | null
contentCachedboolean
relatedTasksstring[]
activitiesobject[]
type reqenummessagestatus_changeeditshare
role reqenumuserassistantsystem
content reqstring
assistantstring | null
createdAt reqstring
versionsobject[]
s3Key reqstring
size reqinteger
mimeTypestring | null
savedAt reqstring
savedBy reqstring
metadataobject
createdAt reqstring
updatedAt reqstring
400Quota exceeded
status reqinteger
error_codestring
error reqstring
404User not found
status reqinteger
error_codestring
error reqstring

Request

curl 'https://app.openassistant.us/api/users/<userId>/drive-files/notes' \
  -X POST \
  -H "Authorization: Bearer ak_live_..." \
  -H "Content-Type: application/json" \
  -d '{
  "name": "string"
}'

Response

{
  "ok": true,
  "driveFile": {
    "id": "string",
    "account": "string",
    "user": "string",
    "s3Key": "string",
    "name": "string",
    "size": 0
  }
}
GET/users/{userId}/drive-files/meeting-notes

List meeting notes grouped by event

Returns notes linked to calendar events, grouped by event with event metadata (title, date, attendees).

Path parameters

userId reqstring

Responses

200Meeting notes grouped by event
ok reqenumtrue
meetingNotes reqobject[]
event reqobject
id reqstring
calendarId reqstring
title reqstring
startsAt reqstring
endsAtstring
attendeesobject[]
namestring
emailstring
statusstring
notes reqobject[]
id reqstring
account reqstring
user reqstring
teamstring | null
organizationstring | null
kindenumfilenote
folderstring | null
eventany...
noteTypeenumraw-transcriptshared-summarypersonal-summaryuser-notesaction-items
isPrivateboolean
attendeesstring[]
externalShareany...
summaryStatusenumnonependingready
tagsstring[]
s3Key reqstring
name reqstring
mimeTypestring | null
size reqinteger
status reqenumpendingready
assistantstring | null
sourceany...
importSourceany...
remoteRefany...
relatedTasksstring[]
activitiesany[]
versionsany[]
metadataobject
createdAt reqstring
updatedAt reqstring
404User not found
status reqinteger
error_codestring
error reqstring

Request

curl 'https://app.openassistant.us/api/users/<userId>/drive-files/meeting-notes' \
  -H "Authorization: Bearer ak_live_..."

Response

{
  "ok": true,
  "meetingNotes": [
    {
      "event": {
        "id": "string",
        "calendarId": "string",
        "title": "string",
        "startsAt": "string"
      },
      "notes": [
        {
          "id": null,
          "account": null,
          "user": null,
          "s3Key": null,
          "name": null,
          "size": null
        }
      ]
    }
  ]
}
POST/users/{userId}/drive-files/notes/import/{provider}

Import meeting notes from external provider

Triggers import of meeting notes from an external platform (e.g. Google Meet). Rate limited to once per 5 minutes per user.

Path parameters

userId reqstring
provider reqstringImport provider (e.g. google-meet, ms-teams, zoom)

Responses

200Import results
ok reqenumtrue
imported reqinteger
updated reqinteger
skipped reqinteger
errors reqinteger
reasonstring
404User not found
status reqinteger
error_codestring
error reqstring
429Rate limited
status reqinteger
error_codestring
error reqstring

Request

curl 'https://app.openassistant.us/api/users/<userId>/drive-files/notes/import/<provider>' \
  -X POST \
  -H "Authorization: Bearer ak_live_..."

Response

{
  "ok": true,
  "imported": 0,
  "updated": 0,
  "skipped": 0,
  "errors": 0
}
GET/users/{userId}/drive-files/notes/import-status

Check meeting notes import availability

Returns, per provider (google, azure), whether meeting notes import is available, whether the required scope is granted, and how many notes are pending import.

Path parameters

userId reqstring

Responses

200Import status
ok reqenumtrue
google reqobject
available reqboolean
scopeGranted reqboolean
pendingCount reqinteger
azure reqobject
available reqboolean
scopeGranted reqboolean
pendingCount reqinteger
404User not found
status reqinteger
error_codestring
error reqstring

Request

curl 'https://app.openassistant.us/api/users/<userId>/drive-files/notes/import-status' \
  -H "Authorization: Bearer ak_live_..."

Response

{
  "ok": true,
  "google": {
    "available": true,
    "scopeGranted": true,
    "pendingCount": 0
  },
  "azure": {
    "available": true,
    "scopeGranted": true,
    "pendingCount": 0
  }
}
GET/drive-folders

List drive folders

Query parameters

parentFolderstringParent folder ID. Omit for root folders.

Responses

200Folder list
ok reqenumtrue
driveFolders reqobject[]
id reqstring
account reqstring
user reqstring
name reqstring
parentFolderstring | null
teamstring | null
organizationstring | null
createdAt reqstring
updatedAt reqstring
pageinteger
perPageinteger
totalinteger

Request

curl 'https://app.openassistant.us/api/drive-folders' \
  -H "Authorization: Bearer ak_live_..."

Response

{
  "ok": true,
  "driveFolders": [
    {
      "id": "string",
      "account": "string",
      "user": "string",
      "name": "string",
      "createdAt": "2025-01-15T10:30:00.000Z",
      "updatedAt": "2025-01-15T10:30:00.000Z"
    }
  ]
}
POST/drive-folders

Create a drive folder

Request body

name reqstringFolder name
parentFolderstring | nullParent folder ID. Null or omit for root.

Responses

200Created folder
ok reqenumtrue
driveFolder reqobject
id reqstring
account reqstring
user reqstring
name reqstring
parentFolderstring | null
teamstring | null
organizationstring | null
createdAt reqstring
updatedAt reqstring
400Duplicate name
status reqinteger
error_codestring
error reqstring

Request

curl 'https://app.openassistant.us/api/drive-folders' \
  -X POST \
  -H "Authorization: Bearer ak_live_..." \
  -H "Content-Type: application/json" \
  -d '{
  "name": "string"
}'

Response

{
  "ok": true,
  "driveFolder": {
    "id": "string",
    "account": "string",
    "user": "string",
    "name": "string",
    "createdAt": "2025-01-15T10:30:00.000Z",
    "updatedAt": "2025-01-15T10:30:00.000Z"
  }
}
GET/drive-folders/{folderId}

Get a drive folder

Path parameters

folderId reqstring

Responses

200Folder
ok reqenumtrue
driveFolder reqobject
id reqstring
account reqstring
user reqstring
name reqstring
parentFolderstring | null
teamstring | null
organizationstring | null
createdAt reqstring
updatedAt reqstring
404Not found
status reqinteger
error_codestring
error reqstring

Request

curl 'https://app.openassistant.us/api/drive-folders/<folderId>' \
  -H "Authorization: Bearer ak_live_..."

Response

{
  "ok": true,
  "driveFolder": {
    "id": "string",
    "account": "string",
    "user": "string",
    "name": "string",
    "createdAt": "2025-01-15T10:30:00.000Z",
    "updatedAt": "2025-01-15T10:30:00.000Z"
  }
}
PATCH/drive-folders/{folderId}

Update a drive folder

Rename, move, or share a folder.

Path parameters

folderId reqstring

Request body

namestringNew folder name
parentFolderstring | nullNew parent folder (null = root)
teamstring | nullShare with team
organizationstring | nullShare with organization

Responses

200Updated folder
ok reqenumtrue
driveFolder reqobject
id reqstring
account reqstring
user reqstring
name reqstring
parentFolderstring | null
teamstring | null
organizationstring | null
createdAt reqstring
updatedAt reqstring
404Not found
status reqinteger
error_codestring
error reqstring

Request

curl 'https://app.openassistant.us/api/drive-folders/<folderId>' \
  -X PATCH \
  -H "Authorization: Bearer ak_live_..." \
  -H "Content-Type: application/json" \
  -d '{
  "name": "string",
  "parentFolder": "507f1f77bcf86cd799439011",
  "team": "507f1f77bcf86cd799439011",
  "organization": "507f1f77bcf86cd799439011"
}'

Response

{
  "ok": true,
  "driveFolder": {
    "id": "string",
    "account": "string",
    "user": "string",
    "name": "string",
    "createdAt": "2025-01-15T10:30:00.000Z",
    "updatedAt": "2025-01-15T10:30:00.000Z"
  }
}
DELETE/drive-folders/{folderId}

Delete a drive folder

Must be empty unless ?force=true. Force moves files to root and deletes subfolders.

Path parameters

folderId reqstring

Responses

200Deleted
ok reqenumtrue
driveFolder reqobject
id reqstring
deletedboolean
messagestring
400Not empty
status reqinteger
error_codestring
error reqstring
404Not found
status reqinteger
error_codestring
error reqstring

Request

curl 'https://app.openassistant.us/api/drive-folders/<folderId>' \
  -X DELETE \
  -H "Authorization: Bearer ak_live_..."

Response

{
  "ok": true,
  "driveFolder": {
    "id": "string"
  }
}