Workspaces

Lists all the workspaces for that user based on permissions

get
Responses
200

Successful Response

application/json
get
GET /workspaces HTTP/1.1
Host: 
Accept: */*
[
  {
    "id": "123e4567-e89b-12d3-a456-426614174000",
    "name": "text",
    "description": "text",
    "domain": "text",
    "thumbnail": "text",
    "member_inherited_role": 60,
    "invite_id": "123e4567-e89b-12d3-a456-426614174000",
    "type": "PERSONAL",
    "onboarding": {
      "ANY_ADDITIONAL_PROPERTY": true
    },
    "settings": {
      "transcription_model": "BEST"
    },
    "trial_started": true,
    "organization": {
      "id": "123e4567-e89b-12d3-a456-426614174000",
      "name": "text",
      "url_subdomain": "text",
      "email_domain": "text",
      "client_metadata": {},
      "partnership_type": "BRANDING",
      "discount_amount": 1
    },
    "client_metadata": {},
    "actions": [
      "manage"
    ],
    "personal": true,
    "role": 60
  }
]

Creates a workspace

post

Anyone can create a workspace.

Body
url_subdomainany ofOptional
stringOptional
or
nullOptional
namestringRequired
descriptionstringRequired
team_size_analyticsstringRequired
team_domainany ofOptional
stringOptional
or
nullOptional
team_usage_analyticsstringRequired
data_types_analyticsany ofOptional
string[]Optional
or
nullOptional
thumbnailany ofOptional

The profile picture's link to image

stringOptional
or
nullOptional
domainany ofOptional

Custom domain for the workspace

stringOptional
or
nullOptional
Responses
200

Successful Response

application/json
post
POST /workspaces HTTP/1.1
Host: 
Content-Type: application/json
Accept: */*
Content-Length: 206

{
  "url_subdomain": "text",
  "name": "text",
  "description": "text",
  "team_size_analytics": "text",
  "team_domain": "text",
  "team_usage_analytics": "text",
  "data_types_analytics": [
    "text"
  ],
  "thumbnail": "text",
  "domain": "text"
}
{
  "id": "123e4567-e89b-12d3-a456-426614174000",
  "name": "text",
  "description": "text",
  "domain": "text",
  "thumbnail": "text",
  "member_inherited_role": 60,
  "invite_id": "123e4567-e89b-12d3-a456-426614174000",
  "type": "PERSONAL",
  "onboarding": {
    "ANY_ADDITIONAL_PROPERTY": true
  },
  "settings": {
    "transcription_model": "BEST"
  },
  "trial_started": true,
  "organization": {
    "id": "123e4567-e89b-12d3-a456-426614174000",
    "name": "text",
    "url_subdomain": "text",
    "email_domain": "text",
    "client_metadata": {},
    "partnership_type": "BRANDING",
    "discount_amount": 1
  },
  "client_metadata": {}
}

Get the metadata attributes for a drive including system attributes

get

Get the metadata attributes for a drive including system attributes

Path parameters
drive_idstring · uuidRequired
Responses
200

Successful Response

application/json
get
GET /workspaces/drives/{drive_id}/metadata HTTP/1.1
Host: 
Accept: */*
[
  {
    "id": "text",
    "name": "text",
    "keys": [
      "text"
    ],
    "value_type": "str",
    "description": "text",
    "location": "system",
    "default": null,
    "group": "text",
    "options": [
      {
        "id": "text",
        "name": "text",
        "color": "pink",
        "user": true,
        "archived": false
      }
    ],
    "add_new_options": true,
    "restrict_to_types": [
      "IMAGE"
    ],
    "automated": false,
    "prompt": "text",
    "archived": false
  }
]

Add metadata attributes to a drive

post
Path parameters
drive_idstring · uuidRequired
Body
Responses
200

Successful Response

application/json
post
POST /workspaces/drives/{drive_id}/metadata HTTP/1.1
Host: 
Content-Type: application/json
Accept: */*
Content-Length: 334

{
  "metadata": {
    "id": "text",
    "name": "text",
    "keys": [
      "text"
    ],
    "value_type": "str",
    "description": "text",
    "location": "system",
    "default": null,
    "group": "text",
    "options": [
      {
        "id": "text",
        "name": "text",
        "color": "pink",
        "user": true,
        "archived": false
      }
    ],
    "add_new_options": true,
    "restrict_to_types": [
      "IMAGE"
    ],
    "automated": false,
    "prompt": "text",
    "archived": false
  }
}
{
  "id": "text",
  "name": "text",
  "keys": [
    "text"
  ],
  "value_type": "str",
  "description": "text",
  "location": "system",
  "default": null,
  "group": "text",
  "options": [
    {
      "id": "text",
      "name": "text",
      "color": "pink",
      "user": true,
      "archived": false
    }
  ],
  "add_new_options": true,
  "restrict_to_types": [
    "IMAGE"
  ],
  "automated": false,
  "prompt": "text",
  "archived": false
}

Get the custom metadata attributes for a drive

get

Get the custom metadata attributes for a drive

Path parameters
drive_idstring · uuidRequired
Responses
200

Successful Response

application/json
get
GET /workspaces/drives/{drive_id}/custom-metadata HTTP/1.1
Host: 
Accept: */*
[
  {
    "id": "text",
    "name": "text",
    "keys": [
      "text"
    ],
    "value_type": "str",
    "description": "text",
    "location": "system",
    "default": null,
    "group": "text",
    "options": [
      {
        "id": "text",
        "name": "text",
        "color": "pink",
        "user": true,
        "archived": false
      }
    ],
    "add_new_options": true,
    "restrict_to_types": [
      "IMAGE"
    ],
    "automated": false,
    "prompt": "text",
    "archived": false
  }
]

Archive metadata attribute on a drive

post
Path parameters
drive_idstring · uuidRequired
metadata_idstringRequired
Body
archivebooleanRequired

Archive metadata attribute or not

Responses
200

Successful Response

application/json
Responseany
post
POST /workspaces/drives/{drive_id}/metadata/{metadata_id} HTTP/1.1
Host: 
Content-Type: application/json
Accept: */*
Content-Length: 16

{
  "archive": true
}

No content

Update a metadata attribute on a drive

put
Path parameters
drive_idstring · uuidRequired
metadata_idstringRequired
Body
nameany ofOptional

The metadata name to update

stringOptional
or
nullOptional
automatedany ofOptional

The metadata automated to update

booleanOptional
or
nullOptional
promptany ofOptional

The metadata prompt to update

stringOptional
or
nullOptional
defaultany ofOptional

The metadata default to update

stringOptional
or
nullOptional
add_new_optionsany ofOptional

Whether or not we're allowed to add new options

booleanOptional
or
nullOptional
optionsany ofOptional

The metadata options to update

or
nullOptional
rerunany ofOptional

Whether or not to rerun the AI on all cells including existing ones

Default: false
booleanOptional
or
nullOptional
Responses
200

Successful Response

application/json
Responseany
put
PUT /workspaces/drives/{drive_id}/metadata/{metadata_id} HTTP/1.1
Host: 
Content-Type: application/json
Accept: */*
Content-Length: 186

{
  "name": "text",
  "automated": true,
  "prompt": "text",
  "default": "text",
  "add_new_options": true,
  "options": [
    {
      "id": "text",
      "name": "text",
      "color": "pink",
      "user": true,
      "archived": false
    }
  ],
  "rerun": false
}

No content

Create a metadata attribute option on a drive

post
Path parameters
drive_idstring · uuidRequired
metadata_idstringRequired
Body
option_namestringRequired

The option name to add to the metadata attribute

option_colorstring · enumRequired

The option color to add to the metadata attribute

Possible values:
Responses
200

Successful Response

application/json
post
POST /workspaces/drives/{drive_id}/metadata/{metadata_id}/option HTTP/1.1
Host: 
Content-Type: application/json
Accept: */*
Content-Length: 44

{
  "option_name": "text",
  "option_color": "pink"
}
{
  "id": "text",
  "name": "text",
  "color": "pink",
  "user": true,
  "archived": false
}

Shares a file (or folder) w user

post

Share a file on a workspace.

Path parameters
drive_idstring · uuidRequired
Body
pathstring · pathRequired

The directory path of the file to share

urlany ofOptional

The url of the file

stringOptional
or
nullOptional
messageany ofOptional

The message to send to the invited users

Default: ""
stringOptional
or
nullOptional
Responses
200

Successful Response

application/json
Responseany
post
POST /workspaces/drives/{drive_id}/share-file HTTP/1.1
Host: 
Content-Type: application/json
Accept: */*
Content-Length: 90

{
  "path": "text",
  "invites": [
    {
      "email": "[email protected]",
      "role": 50
    }
  ],
  "url": "text",
  "message": ""
}

No content

Get all the shares for a specific file

get

Share a file on a workspace.

Path parameters
drive_idstring · uuidRequired
Query parameters
pathstring · pathRequired

The directory path to list items

Responses
200

Successful Response

application/json
get
GET /workspaces/drives/{drive_id}/file-shares?path=text HTTP/1.1
Host: 
Accept: */*
{
  "workspace_member_inherited_role": 60,
  "drive_member_inherited_role": 50,
  "guests": [
    {
      "id": "123e4567-e89b-12d3-a456-426614174000",
      "name": "text",
      "email": "text",
      "avatar_url": "text",
      "role": 50,
      "via": "workspace"
    }
  ],
  "public_sharing_id": "123e4567-e89b-12d3-a456-426614174000",
  "public_sharing_path_name": "text",
  "public_sharing_role": 50
}

Get all files shared with a user

get

Get all files shared with a user on a drive

Path parameters
drive_idstring · uuidRequired
Responses
200

Successful Response

application/json
get
GET /workspaces/drives/{drive_id}/shared HTTP/1.1
Host: 
Accept: */*
[
  {
    "drive_id": "123e4567-e89b-12d3-a456-426614174000",
    "drive_identifier": "text",
    "id": "123e4567-e89b-12d3-a456-426614174000",
    "asset": {
      "id": "123e4567-e89b-12d3-a456-426614174000",
      "drive_id": "123e4567-e89b-12d3-a456-426614174000",
      "path": "text",
      "name": "text",
      "extension": "text",
      "updated": "2025-08-11T11:56:04.320Z",
      "created": "2025-08-11T11:56:04.320Z",
      "type": "IMAGE",
      "signature": 1,
      "size_bytes": 1,
      "is_fs_draft_blob": true,
      "is_fs_null_blob": true,
      "rating": 1,
      "ai_indexed": true,
      "system_metadata": {},
      "custom_metadata": {},
      "preview_images": [
        {
          "id": "123e4567-e89b-12d3-a456-426614174000",
          "frame": 1
        }
      ],
      "proxy": {
        "id": "123e4567-e89b-12d3-a456-426614174000"
      },
      "audio_proxy": {
        "id": "123e4567-e89b-12d3-a456-426614174000"
      },
      "category": "text",
      "palette": [
        [
          1
        ]
      ],
      "ocr": "text",
      "transcription_id": "123e4567-e89b-12d3-a456-426614174000",
      "faces_present": true,
      "preview_job_state": "NOT_STARTED",
      "metadata_job_state": "NOT_STARTED",
      "core_vision_job_state": "NOT_STARTED",
      "color_palette_job_state": "NOT_STARTED",
      "core_audio_job_state": "NOT_STARTED",
      "audio_job_state": "NOT_STARTED",
      "text_job_state": "NOT_STARTED",
      "facial_recognition_job_state": "NOT_STARTED",
      "proxy_job_state": "NOT_STARTED",
      "audio_proxy_job_state": "NOT_STARTED",
      "transcription_job_state": "NOT_STARTED",
      "objects": [],
      "texture_data": {},
      "integration_data": {}
    },
    "path": "text",
    "role": 1,
    "actions": [
      "manage"
    ]
  }
]

Removes a share from a path

delete
Path parameters
drive_idstring · uuidRequired
user_idstring · uuidRequired
Body
pathstring · pathRequired

The directory path to list items

Responses
200

Successful Response

application/json
Responseboolean
delete
DELETE /workspaces/drives/{drive_id}/shared/{user_id}/path HTTP/1.1
Host: 
Content-Type: application/json
Accept: */*
Content-Length: 15

{
  "path": "text"
}
true

Updates people's permissions on a path

put
Path parameters
drive_idstring · uuidRequired
user_idstring · uuidRequired
Body
roleinteger · enumRequiredPossible values:
pathstring · pathRequired
upsertany ofOptionalDefault: false
booleanOptional
or
nullOptional
Responses
200

Successful Response

application/json
Responseany
put
PUT /workspaces/drives/{drive_id}/users/{user_id}/path HTTP/1.1
Host: 
Content-Type: application/json
Accept: */*
Content-Length: 40

{
  "role": 50,
  "path": "text",
  "upsert": false
}

No content

Toggles public sharing on or off

post

Enables or disables public links on files and folders.

Path parameters
drive_idstring · uuidRequired

The id of the drive

Body
pathstring · pathRequired

The directory path to list items

enablebooleanRequired
roleinteger · enumRequiredPossible values:
Responses
200

Successful Response

application/json
Responseboolean
post
POST /workspaces/drives/{drive_id}/public-link HTTP/1.1
Host: 
Content-Type: application/json
Accept: */*
Content-Length: 39

{
  "path": "text",
  "enable": true,
  "role": 50
}
true

Lists all the user for a specific path (file or folder).

get
Path parameters
drive_idstring · uuidRequired
Query parameters
pathstring · pathRequired
Responses
200

Successful Response

application/json
get
GET /workspaces/drives/{drive_id}/file-users?path=text HTTP/1.1
Host: 
Accept: */*
{
  "invited": [
    {
      "id": "123e4567-e89b-12d3-a456-426614174000",
      "name": "text",
      "email": "text",
      "avatar_url": "text",
      "role": 50,
      "via": "workspace",
      "is_workspace_member": false,
      "is_inheriting_as_workspace_member": false
    }
  ],
  "not_invited": [
    {
      "id": "123e4567-e89b-12d3-a456-426614174000",
      "name": "text",
      "email": "text",
      "avatar_url": "text",
      "role": 50
    }
  ]
}

Lists all the drives for a specific workspace

get
Path parameters
workspace_idstring · uuidRequired
Responses
200

Successful Response

application/json
get
GET /workspaces/{workspace_id}/drives HTTP/1.1
Host: 
Accept: */*
[
  {
    "id": "123e4567-e89b-12d3-a456-426614174000",
    "name": "text",
    "description": "text",
    "type": "catalog",
    "icon": "text",
    "identifier": "text",
    "icon_type": "color",
    "member_inherited_role": 50,
    "invite_id": "123e4567-e89b-12d3-a456-426614174000",
    "workspace_id": "123e4567-e89b-12d3-a456-426614174000",
    "byos": {
      "bucket": "text",
      "endpoint": "text"
    },
    "default_storage_backend": {
      "provider": "text",
      "bucket": "text"
    },
    "actions": [
      "manage"
    ],
    "role": 50,
    "is_workspace_member": false
  }
]

Creates a drive in a workspace

post

Create a Drive

Path parameters
workspace_idstring · uuidRequired
Body
namestringRequired
descriptionstringRequired
typestring · enumRequiredPossible values:
iconstringRequired
icon_typestring · enumRequiredPossible values:
byosany ofOptional
objectOptional
or
nullOptional
default_storage_backendany ofOptional
objectOptional
or
nullOptional
template_drive_idany ofOptional
string · uuidOptional
or
nullOptional
public_template_keyany ofOptional
string · enumOptionalPossible values:
or
nullOptional
Responses
200

Successful Response

application/json
post
POST /workspaces/{workspace_id}/drives HTTP/1.1
Host: 
Content-Type: application/json
Accept: */*
Content-Length: 226

{
  "name": "text",
  "description": "text",
  "type": "catalog",
  "icon": "text",
  "icon_type": "color",
  "byos": {},
  "default_storage_backend": {},
  "template_drive_id": "123e4567-e89b-12d3-a456-426614174000",
  "public_template_key": "video_production"
}
{
  "id": "123e4567-e89b-12d3-a456-426614174000",
  "name": "text",
  "description": "text",
  "type": "catalog",
  "icon": "text",
  "identifier": "text",
  "icon_type": "color",
  "member_inherited_role": 50,
  "invite_id": "123e4567-e89b-12d3-a456-426614174000",
  "workspace_id": "123e4567-e89b-12d3-a456-426614174000",
  "byos": {
    "bucket": "text",
    "endpoint": "text"
  },
  "default_storage_backend": {
    "provider": "text",
    "bucket": "text"
  },
  "actions": [
    "manage"
  ],
  "role": 50,
  "is_workspace_member": false
}

Lists all user drives (including demo workspace drives)

get

This route is used to get all the drives for a user. The frontend uses this to determine which shadefs drives should be kept/removed

Responses
200

Successful Response

application/json
Responsestring · uuid[]
get
GET /workspaces/drive-ids HTTP/1.1
Host: 
Accept: */*
[
  "123e4567-e89b-12d3-a456-426614174000"
]

Get your role + actions you can do on a folder (or file if you pass a path)

get

Get your role + actions you can do on a file (asset). No need to auth these bc you are checking your role and would get none if you don't have auth.

Path parameters
drive_idstring · uuidRequired
Query parameters
pathstring · pathRequired

The directory path to list items

Responses
200

Successful Response

application/json
Responseany of
or
nullOptional
get
GET /workspaces/drives/{drive_id}/folder-permissions?path=text HTTP/1.1
Host: 
Accept: */*
{
  "role": 50,
  "actions": [
    "manage"
  ],
  "via": "workspace"
}

Get your role + actions you can do on an asset

get

Get your role + actions you can do on a file (asset). No need to auth these bc you are checking your role and would get none if you don't have auth.

Path parameters
drive_idstring · uuidRequired
Query parameters
asset_idstring · uuidRequired

The id of the file (asset id)

Responses
200

Successful Response

application/json
Responseany of
or
nullOptional
get
GET /workspaces/drives/{drive_id}/file-permissions?asset_id=123e4567-e89b-12d3-a456-426614174000 HTTP/1.1
Host: 
Accept: */*
{
  "role": 50,
  "actions": [
    "manage"
  ],
  "via": "workspace"
}

Authorize path

get

Share a file on a workspace.

Path parameters
drive_idstring · uuidRequired
Query parameters
pathstring · pathRequired

The directory path to authorize

Responses
200

Successful Response

application/json
Responseboolean
get
GET /workspaces/drives/{drive_id}/authorize?path=text HTTP/1.1
Host: 
Accept: */*
true

Lists all the paths for a specific workspace

get

For drive and workspace users, list their access and paths.

Path parameters
drive_idstring · uuidRequired
Responses
200

Successful Response

application/json
get
GET /workspaces/drives/{drive_id}/user-paths HTTP/1.1
Host: 
Accept: */*
{
  "drive": {
    "id": "123e4567-e89b-12d3-a456-426614174000",
    "name": "text",
    "description": "text",
    "type": "catalog",
    "icon": "text",
    "identifier": "text",
    "icon_type": "color",
    "member_inherited_role": 50,
    "invite_id": "123e4567-e89b-12d3-a456-426614174000",
    "workspace_id": "123e4567-e89b-12d3-a456-426614174000",
    "byos": {
      "bucket": "text",
      "endpoint": "text"
    },
    "default_storage_backend": {
      "provider": "text",
      "bucket": "text"
    }
  },
  "paths": [
    {
      "user_id": "123e4567-e89b-12d3-a456-426614174000",
      "user_name": "text",
      "path": "text",
      "role": 50
    }
  ]
}

Lists all the paths for a user in a specific drive

get

Lists all the paths for a specific user on a drive

Path parameters
drive_idstring · uuidRequired
user_idstring · uuidRequired
Responses
200

Successful Response

application/json
get
GET /workspaces/drives/{drive_id}/user-paths/{user_id} HTTP/1.1
Host: 
Accept: */*
{
  "drive": {
    "id": "123e4567-e89b-12d3-a456-426614174000",
    "name": "text",
    "description": "text",
    "type": "catalog",
    "icon": "text",
    "identifier": "text",
    "icon_type": "color",
    "member_inherited_role": 50,
    "invite_id": "123e4567-e89b-12d3-a456-426614174000",
    "workspace_id": "123e4567-e89b-12d3-a456-426614174000",
    "byos": {
      "bucket": "text",
      "endpoint": "text"
    },
    "default_storage_backend": {
      "provider": "text",
      "bucket": "text"
    }
  },
  "paths": [
    {
      "user_id": "123e4567-e89b-12d3-a456-426614174000",
      "user_name": "text",
      "path": "text",
      "role": 50
    }
  ]
}

Lists all the paths for a user in a specific workspace

get

Lists all the paths for a specific user on a workspace

Path parameters
workspace_idstring · uuidRequired
user_idstring · uuidRequired
Responses
200

Successful Response

application/json
get
GET /workspaces/{workspace_id}/user-paths/{user_id} HTTP/1.1
Host: 
Accept: */*
[
  {
    "drive": {
      "id": "123e4567-e89b-12d3-a456-426614174000",
      "name": "text",
      "description": "text",
      "type": "catalog",
      "icon": "text",
      "identifier": "text",
      "icon_type": "color",
      "member_inherited_role": 50,
      "invite_id": "123e4567-e89b-12d3-a456-426614174000",
      "workspace_id": "123e4567-e89b-12d3-a456-426614174000",
      "byos": {
        "bucket": "text",
        "endpoint": "text"
      },
      "default_storage_backend": {
        "provider": "text",
        "bucket": "text"
      }
    },
    "paths": [
      {
        "user_id": "123e4567-e89b-12d3-a456-426614174000",
        "user_name": "text",
        "path": "text",
        "role": 50
      }
    ]
  }
]

Lists all the paths for a specific workspace

get

For drive and workspace users, list their access and paths.

Path parameters
workspace_idstring · uuidRequired
Responses
200

Successful Response

application/json
get
GET /workspaces/{workspace_id}/user-paths HTTP/1.1
Host: 
Accept: */*
[
  {
    "drive": {
      "id": "123e4567-e89b-12d3-a456-426614174000",
      "name": "text",
      "description": "text",
      "type": "catalog",
      "icon": "text",
      "identifier": "text",
      "icon_type": "color",
      "member_inherited_role": 50,
      "invite_id": "123e4567-e89b-12d3-a456-426614174000",
      "workspace_id": "123e4567-e89b-12d3-a456-426614174000",
      "byos": {
        "bucket": "text",
        "endpoint": "text"
      },
      "default_storage_backend": {
        "provider": "text",
        "bucket": "text"
      }
    },
    "paths": [
      {
        "user_id": "123e4567-e89b-12d3-a456-426614174000",
        "user_name": "text",
        "path": "text",
        "role": 50
      }
    ]
  }
]

Gets the # of available credits on a workspace

post
Path parameters
workspace_idstring · uuidRequired
Responses
200

Successful Response

application/json
Responseinteger
post
POST /workspaces{workspace_id}/credits HTTP/1.1
Host: 
Accept: */*
1

Lists all the drives for a specific workspace

get

This is used for the /admin routes

Path parameters
workspace_idstring · uuidRequired
Responses
200

Successful Response

application/json
get
GET /workspaces/{workspace_id}/drives/permissions HTTP/1.1
Host: 
Accept: */*
{
  "drives_you_can_manage": [
    {
      "id": "123e4567-e89b-12d3-a456-426614174000",
      "name": "text",
      "description": "text",
      "type": "catalog",
      "icon": "text",
      "identifier": "text",
      "icon_type": "color",
      "member_inherited_role": 50,
      "invite_id": "123e4567-e89b-12d3-a456-426614174000",
      "workspace_id": "123e4567-e89b-12d3-a456-426614174000",
      "byos": {
        "bucket": "text",
        "endpoint": "text"
      },
      "default_storage_backend": {
        "provider": "text",
        "bucket": "text"
      }
    }
  ],
  "drives_you_can_read": [
    {
      "id": "123e4567-e89b-12d3-a456-426614174000",
      "name": "text",
      "description": "text",
      "type": "catalog",
      "icon": "text",
      "identifier": "text",
      "icon_type": "color",
      "member_inherited_role": 50,
      "invite_id": "123e4567-e89b-12d3-a456-426614174000",
      "workspace_id": "123e4567-e89b-12d3-a456-426614174000",
      "byos": {
        "bucket": "text",
        "endpoint": "text"
      },
      "default_storage_backend": {
        "provider": "text",
        "bucket": "text"
      }
    }
  ]
}

Lists all the users for a specific workspace

get
Path parameters
workspace_idstring · uuidRequired
Responses
200

Successful Response

application/json
get
GET /workspaces/{workspace_id}/users HTTP/1.1
Host: 
Accept: */*
[
  {
    "id": "123e4567-e89b-12d3-a456-426614174000",
    "name": "text",
    "email": "text",
    "avatar_url": "text",
    "external_id": "text",
    "joined": "2025-08-11T11:56:04.320Z",
    "role": 60,
    "is_workspace_member": false,
    "is_workspace_owner": false
  }
]

Lists count of all the users for a specific workspace

get
Path parameters
workspace_idstring · uuidRequired
Responses
200

Successful Response

application/json
get
GET /workspaces/{workspace_id}/users/count HTTP/1.1
Host: 
Accept: */*
{
  "total_count": 1,
  "member_count": 1,
  "guest_count": 1,
  "admin_count": 1
}

Lists all the user for a specific drive

get
Path parameters
drive_idstring · uuidRequired
Responses
200

Successful Response

application/json
Responseany of
or
nullOptional
get
GET /workspaces/drives/{drive_id}/users HTTP/1.1
Host: 
Accept: */*
[
  {
    "id": "123e4567-e89b-12d3-a456-426614174000",
    "name": "text",
    "email": "text",
    "avatar_url": "text",
    "external_id": "text",
    "joined": "2025-08-11T11:56:04.320Z",
    "role": 50,
    "is_workspace_member": false,
    "is_workspace_owner": false,
    "is_inherited_manager": false
  }
]

Get workspace from ID

get
Path parameters
workspace_idstring · uuidRequired
Responses
200

Successful Response

application/json
get
GET /workspaces/{workspace_id} HTTP/1.1
Host: 
Accept: */*
{
  "id": "123e4567-e89b-12d3-a456-426614174000",
  "name": "text",
  "description": "text",
  "domain": "text",
  "thumbnail": "text",
  "member_inherited_role": 60,
  "invite_id": "123e4567-e89b-12d3-a456-426614174000",
  "type": "PERSONAL",
  "onboarding": {
    "ANY_ADDITIONAL_PROPERTY": true
  },
  "settings": {
    "transcription_model": "BEST"
  },
  "trial_started": true,
  "organization": {
    "id": "123e4567-e89b-12d3-a456-426614174000",
    "name": "text",
    "url_subdomain": "text",
    "email_domain": "text",
    "client_metadata": {},
    "partnership_type": "BRANDING",
    "discount_amount": 1
  },
  "client_metadata": {}
}

Updates a workspace

put

Update a workspace.

Path parameters
workspace_idstring · uuidRequired
Body
nameany ofOptional
stringOptional
or
nullOptional
domainany ofOptional
stringOptionalPattern: ^[a-zA-Z0-9.-]+$
or
nullOptional
descriptionany ofOptional
stringOptional
or
nullOptional
team_size_analyticsany ofOptional
stringOptional
or
nullOptional
team_usage_analyticsany ofOptional
stringOptional
or
nullOptional
data_types_analyticsany ofOptional
string[]Optional
or
nullOptional
thumbnailany ofOptional

The profile picture's byte array

stringOptional
or
nullOptional
onboarding_keyany ofOptional

Workspace onboarding key to set as finished

stringOptional
or
nullOptional
client_metadataany ofOptional

set client metadata

objectOptional
or
nullOptional
Responses
200

Successful Response

application/json
put
PUT /workspaces/{workspace_id} HTTP/1.1
Host: 
Content-Type: application/json
Accept: */*
Content-Length: 207

{
  "name": "text",
  "domain": "text",
  "description": "text",
  "team_size_analytics": "text",
  "team_usage_analytics": "text",
  "data_types_analytics": [
    "text"
  ],
  "thumbnail": "text",
  "onboarding_key": "text",
  "client_metadata": {}
}
{
  "id": "123e4567-e89b-12d3-a456-426614174000",
  "name": "text",
  "description": "text",
  "domain": "text",
  "thumbnail": "text",
  "member_inherited_role": 60,
  "invite_id": "123e4567-e89b-12d3-a456-426614174000",
  "type": "PERSONAL",
  "onboarding": {
    "ANY_ADDITIONAL_PROPERTY": true
  },
  "settings": {
    "transcription_model": "BEST"
  },
  "trial_started": true,
  "organization": {
    "id": "123e4567-e89b-12d3-a456-426614174000",
    "name": "text",
    "url_subdomain": "text",
    "email_domain": "text",
    "client_metadata": {},
    "partnership_type": "BRANDING",
    "discount_amount": 1
  },
  "client_metadata": {}
}

Deletes a workspace

delete
Path parameters
workspace_idstring · uuidRequired
Responses
200

Successful Response

application/json
Responseboolean
delete
DELETE /workspaces/{workspace_id} HTTP/1.1
Host: 
Accept: */*
true

Sends invites for user to join a workspace

post
Path parameters
workspace_idstring · uuidRequired
Body
messageany ofRequired

The message to send to the invited user

stringOptional
or
nullOptional
Responses
202

Successful Response

application/json
Responseboolean
post
POST /workspaces/{workspace_id}/send-invites HTTP/1.1
Host: 
Content-Type: application/json
Accept: */*
Content-Length: 67

{
  "invites": [
    {
      "email": "[email protected]",
      "role": 60
    }
  ],
  "message": "text"
}
true

Sends invites for user to join a drive

post
Path parameters
drive_idstring · uuidRequired
Body
messageany ofRequired
stringOptional
or
nullOptional
Responses
202

Successful Response

application/json
Responsestring · uuid[]
post
POST /workspaces/drives/{drive_id}/send-invites HTTP/1.1
Host: 
Content-Type: application/json
Accept: */*
Content-Length: 67

{
  "invites": [
    {
      "email": "[email protected]",
      "role": 50
    }
  ],
  "message": "text"
}
[
  "123e4567-e89b-12d3-a456-426614174000"
]

Gets data for a specific invitation

get

This is a PUBLIC route where anyone can see invites. To see (you've been invited to ... workspace)

Path parameters
invite_idstring · uuidRequired
Responses
200

Successful Response

application/json
Responseany of
or
or
nullOptional
get
GET /workspaces/invites/{invite_id} HTTP/1.1
Host: 
Accept: */*
{
  "id": "123e4567-e89b-12d3-a456-426614174000",
  "sent_by": {
    "id": "123e4567-e89b-12d3-a456-426614174000",
    "name": "text",
    "email": "text",
    "avatar_url": "text"
  },
  "sent_by_id": "123e4567-e89b-12d3-a456-426614174000",
  "sent_to_email": "text",
  "workspace_id": "123e4567-e89b-12d3-a456-426614174000",
  "workspace": {
    "id": "123e4567-e89b-12d3-a456-426614174000",
    "name": "text",
    "description": "text",
    "domain": "text",
    "thumbnail": "text",
    "member_inherited_role": 60,
    "invite_id": "123e4567-e89b-12d3-a456-426614174000",
    "type": "PERSONAL",
    "onboarding": {
      "ANY_ADDITIONAL_PROPERTY": true
    },
    "settings": {
      "transcription_model": "BEST"
    },
    "trial_started": true,
    "organization": {
      "id": "123e4567-e89b-12d3-a456-426614174000",
      "name": "text",
      "url_subdomain": "text",
      "email_domain": "text",
      "client_metadata": {},
      "partnership_type": "BRANDING",
      "discount_amount": 1
    },
    "client_metadata": {}
  },
  "workspace_role": 60,
  "invite_type": "drive",
  "invite_target": "user"
}

Accepts invitation

post

This is a PUBLIC route where anyone can accept invites.

Path parameters
invite_idstring · uuidRequired

The id of the invitation to join

Responses
200

Successful Response

application/json
Responseany of
or
or
nullOptional
post
POST /workspaces/invites/{invite_id}/join HTTP/1.1
Host: 
Accept: */*
{
  "id": "123e4567-e89b-12d3-a456-426614174000",
  "sent_by": {
    "id": "123e4567-e89b-12d3-a456-426614174000",
    "name": "text",
    "email": "text",
    "avatar_url": "text"
  },
  "sent_by_id": "123e4567-e89b-12d3-a456-426614174000",
  "sent_to_email": "text",
  "workspace_id": "123e4567-e89b-12d3-a456-426614174000",
  "workspace": {
    "id": "123e4567-e89b-12d3-a456-426614174000",
    "name": "text",
    "description": "text",
    "domain": "text",
    "thumbnail": "text",
    "member_inherited_role": 60,
    "invite_id": "123e4567-e89b-12d3-a456-426614174000",
    "type": "PERSONAL",
    "onboarding": {
      "ANY_ADDITIONAL_PROPERTY": true
    },
    "settings": {
      "transcription_model": "BEST"
    },
    "trial_started": true,
    "organization": {
      "id": "123e4567-e89b-12d3-a456-426614174000",
      "name": "text",
      "url_subdomain": "text",
      "email_domain": "text",
      "client_metadata": {},
      "partnership_type": "BRANDING",
      "discount_amount": 1
    },
    "client_metadata": {}
  },
  "workspace_role": 60,
  "invite_type": "drive",
  "invite_target": "user"
}

Updates people's permissions on a workspace

put
Path parameters
workspace_idstring · uuidRequired
user_idstring · uuidRequired
Body
roleinteger · enumRequiredPossible values:
Responses
200

Successful Response

application/json
Responseany
put
PUT /workspaces/{workspace_id}/users/{user_id} HTTP/1.1
Host: 
Content-Type: application/json
Accept: */*
Content-Length: 11

{
  "role": 60
}

No content

Updates drive

put
Path parameters
drive_idstring · uuidRequired
Body
namestringRequired
descriptionstringRequired
iconstringRequired
icon_typestring · enumRequiredPossible values:
member_inherited_roleinteger · enumRequiredPossible values:
Responses
200

Successful Response

application/json
put
PUT /workspaces/drives/{drive_id} HTTP/1.1
Host: 
Content-Type: application/json
Accept: */*
Content-Length: 97

{
  "name": "text",
  "description": "text",
  "icon": "text",
  "icon_type": "color",
  "member_inherited_role": 50
}
{
  "id": "123e4567-e89b-12d3-a456-426614174000",
  "name": "text",
  "description": "text",
  "type": "catalog",
  "icon": "text",
  "identifier": "text",
  "icon_type": "color",
  "member_inherited_role": 50,
  "invite_id": "123e4567-e89b-12d3-a456-426614174000",
  "workspace_id": "123e4567-e89b-12d3-a456-426614174000",
  "byos": {
    "bucket": "text",
    "endpoint": "text"
  },
  "default_storage_backend": {
    "provider": "text",
    "bucket": "text"
  },
  "actions": [
    "manage"
  ],
  "role": 50,
  "is_workspace_member": false
}

Delete a drive by drive_id

delete
Path parameters
drive_idstring · uuidRequired
Responses
200

Successful Response

application/json
Responseboolean
delete
DELETE /workspaces/drives/{drive_id} HTTP/1.1
Host: 
Accept: */*
true

Updates people's permissions on a drive

put
Path parameters
drive_idstring · uuidRequired
user_idstring · uuidRequired
Body
roleinteger · enumRequiredPossible values:
Responses
200

Successful Response

application/json
Responseany
put
PUT /workspaces/drives/{drive_id}/users/{user_id} HTTP/1.1
Host: 
Content-Type: application/json
Accept: */*
Content-Length: 11

{
  "role": 50
}

No content

Removes a user from a drive

delete
Path parameters
drive_idstring · uuidRequired
user_idstring · uuidRequired
Query parameters
only_remove_direct_accessany ofOptionalDefault: false
booleanOptional
or
nullOptional
Responses
200

Successful Response

application/json
Responseboolean
delete
DELETE /workspaces/drives/{drive_id}/users/{user_id} HTTP/1.1
Host: 
Accept: */*
true

Removes a user from a workspace

delete
Path parameters
workspace_idstring · uuidRequired

The id of the workspace we want to deactivate the user in

user_id_to_removestring · uuidRequired

The id for the user we want to deactivate

Responses
200

Successful Response

application/json
Responseboolean
delete
DELETE /workspaces/{workspace_id}/users/{user_id_to_remove} HTTP/1.1
Host: 
Accept: */*
true

Gets a workspace for workspace domain

get
Path parameters
workspace_domainstringRequired
Responses
200

Successful Response

application/json
Responsestring · uuid
get
GET /workspaces/{workspace_domain}/domain HTTP/1.1
Host: 
Accept: */*
123e4567-e89b-12d3-a456-426614174000

Gets a drive_id from an identifier

get
Path parameters
drive_identifierstringRequired
workspace_domainstringRequired
Responses
200

Successful Response

application/json
Responsestring · uuid
get
GET /workspaces/{workspace_domain}/drives/{drive_identifier}/identifier HTTP/1.1
Host: 
Accept: */*
123e4567-e89b-12d3-a456-426614174000

Get share data

get

Return the contents of the folder -> an array of AssetDTO

Path parameters
share_idstring · uuidRequired

The id of the public shared path

Query parameters
pathstringRequired

The path under the share to get the data for

Responses
200

Share data includes drive_id, role, actions

application/json
get
GET /workspaces/shares/{share_id}?path=text HTTP/1.1
Host: 
Accept: */*
{
  "drive_id": "123e4567-e89b-12d3-a456-426614174000",
  "role": 50,
  "actions": [
    "manage"
  ],
  "is_file": false,
  "is_folder": false,
  "root_path": "text",
  "preview_image_id": "123e4567-e89b-12d3-a456-426614174000",
  "preview_video_id": "123e4567-e89b-12d3-a456-426614174000"
}

Authorize drive usage

get
Path parameters
actionstring · enumRequiredPossible values:
drive_idstring · uuidRequired
Responses
200

Successful Response

application/json
get
GET /workspaces/authorize/drives/{drive_id}/{action} HTTP/1.1
Host: 
Accept: */*
{
  "id": "123e4567-e89b-12d3-a456-426614174000",
  "name": "text",
  "description": "text",
  "type": "catalog",
  "icon": "text",
  "identifier": "text",
  "icon_type": "color",
  "member_inherited_role": 50,
  "invite_id": "123e4567-e89b-12d3-a456-426614174000",
  "workspace_id": "123e4567-e89b-12d3-a456-426614174000",
  "byos": {
    "bucket": "text",
    "endpoint": "text"
  },
  "default_storage_backend": {
    "provider": "text",
    "bucket": "text"
  }
}

Get a signed JWT for a specific drive

get
Path parameters
drive_idstring · uuidRequired
Query parameters
machine_idany ofOptional

The machine ID to embed into the JWT

stringOptional
or
nullOptional
Responses
200

Successful Response

text/plain
Responsestring
get
GET /workspaces/drives/{drive_id}/shade-fs-token HTTP/1.1
Host: 
Accept: */*
text

Update workspace settings

put
Path parameters
workspace_idstring · uuidRequired
Body
transcription_modelany ofOptional

New model to set it to

string · enumOptionalPossible values:
or
nullOptional
Responses
200

Successful Response

application/json
Responseany
put
PUT /workspaces/{workspace_id}/settings HTTP/1.1
Host: 
Content-Type: application/json
Accept: */*
Content-Length: 30

{
  "transcription_model": "BEST"
}

No content

Get the FS public key to sign files

get
Responses
200

Successful Response

text/plain
Responsestring
get
GET /workspaces/shade-fs-public-key HTTP/1.1
Host: 
Accept: */*
text

Get a signed JWT for Shade Meesage Bus for a specific drive

get
Path parameters
drive_idstring · uuidRequired
Query parameters
share_idany ofOptional

If user not authenticated, a share id must be passed for a publish path

string · uuidOptional
or
nullOptional
Responses
200

Successful Response

text/plain
Responsestring
get
GET /workspaces/drives/{drive_id}/shade-message-bus-token HTTP/1.1
Host: 
Accept: */*
text

Transfer a workspace to a new owner

post
Path parameters
workspace_idstring · uuidRequired
new_owner_user_idstring · uuidRequired
Responses
200

Successful Response

application/json
Responseboolean
post
POST /workspaces/{workspace_id}/transfer-ownership/{new_owner_user_id} HTTP/1.1
Host: 
Accept: */*
true

Leave a workspace

post
Path parameters
workspace_idstring · uuidRequired
Responses
200

Successful Response

application/json
Responseboolean
post
POST /workspaces/{workspace_id}/leave HTTP/1.1
Host: 
Accept: */*
true