The Speak AI API exposes 12 folders endpoints under the base URL https://api.speakai.co/v1. Every request needs the x-speakai-key and x-access-token headers described in Authentication.
Manage Folder workflow. Create, Update, Delete folders.
What can you do with the folders endpoints?
Speak AI groups these 12 endpoints under the folders resource. Each entry below links to the full reference for that endpoint further down this page.
Get folders
/folderGet Folders
This endpoint retrieves a list of folders based on pagination and sorting criteria.
Request Parameters
-
page (integer, required): The page number to retrieve. This parameter is used for pagination.
-
pageSize (integer, required): The number of folders to return per page. This parameter controls the size of the result set.
-
sortBy (string, required): The field by which to sort the folders. In this case, it is sorted by
createdAt.
Response Format
The response will contain the following structure:
-
status (string): The status of the request.
-
data (object): Contains the details of the folders retrieved.
-
totalCount (integer): The total number of folders available.
-
pages (integer or null): The total number of pages available based on the pagination.
-
folders (array): An array of folder objects, each containing:
-
_id (string): The unique identifier for the folder.
-
defaultAssignTo (string): The default user assigned to the folder.
-
showOrder (integer): The order in which the folder should be displayed.
-
name (string): The name of the folder.
-
folderId (string): The identifier for the folder.
-
createdAt (string): The creation date of the folder.
-
updatedAt (string): The last updated date of the folder.
-
user (object): An object representing the user associated with the folder.
-
_id (string): The unique identifier for the user.
-
firstName (string): The first name of the user.
-
lastName (string): The last name of the user.
-
-
userId (string): The identifier for the user associated with the folder.
-
-
Notes
-
Ensure that the
pageandpageSizeparameters are set correctly to retrieve the desired set of folders. -
The response may return an empty array if no folders are available for the specified page and size.
Parameters
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
page |
query | integer | No | |
pageSize |
query | integer | No | |
sortBy |
query | string | No | |
from |
query | string | No | You can pass in the dateFormat |
to |
query | string | No | You can pass in the dateFormat |
curl -X GET 'https://api.speakai.co/v1/folder?page=0&pageSize=5&sortBy=createdAt' \
-H 'x-speakai-key: sk_test_speak_0000000000000000' \
-H 'x-access-token: eyJhbGciOiJIUzI1NiJ9.test-access-token.0000000000'200 OK
Response body, application/json.
| Field | Type |
|---|---|
status |
string |
data |
object |
data.totalCount |
integer |
data.pages |
string |
data.folders |
object[] |
Deeper nested fields are not listed. See the example response below for the full shape.
Example response (Get folders), application/json.
{
"status": "success",
"data": {
"totalCount": 93,
"pages": null,
"folders": [
{
"_id": "61e3d27bxxxx5041a7",
"defaultAssignTo": "",
"showOrder": 1,
"name": "AudioAudioAudioAudioAudioAudioAudioAudioAu",
"folderId": "905c208f1c07",
"createdAt": "2022-01-16T08:08:27.821Z",
"updatedAt": "2025-01-06T15:05:38.939Z",
"user": {
"_id": "5d03a9d5xxxx8cf89",
"firstName": "Vatsal",
"lastName": "Shah"
},
"userId": "5d03a9d5dxxxxc8cf89"
}
]
}
}Create folder
/folderCreate a New Folder
This endpoint allows you to create a new folder by sending an HTTP POST request to the specified URL.
Request Body
- name (string, required): The name of the folder to be created.
Example:
{
"name": "Folder name 2"
}Response
-
status (string): The status of the request.
-
data
-
folderId (string): The ID of the newly created folder.
-
message (string): A message related to the folder creation.
-
Example:
{
"status": "",
"data": {
"folderId": "",
"message": ""
}
}Request body
Field types and names come from the request body the spec records. The spec does not mark request body fields as required, so read this as the shape the endpoint accepts rather than a required field list.
| Field | Type |
|---|---|
name |
string |
curl -X POST 'https://api.speakai.co/v1/folder' \
-H 'x-speakai-key: sk_test_speak_0000000000000000' \
-H 'x-access-token: eyJhbGciOiJIUzI1NiJ9.test-access-token.0000000000' \
-H 'Content-Type: application/json' \
-d '{
"name": "Folder name 2"
}'200 OK
Response body, application/json.
| Field | Type |
|---|---|
status |
string |
data |
object |
data.folderId |
string |
data.message |
string |
Example response (Create folder), application/json.
{
"status": "success",
"data": {
"folderId": "0648e533f72c",
"message": "Folder name 2 folder created successfully"
}
}Get folders info
/folder/{folderId}Get Folder Details
This endpoint retrieves the details of a specific folder identified by its unique folderId.
Request Parameters
folderId(path parameter): The unique identifier of the folder you want to retrieve. This should be a valid ID corresponding to an existing folder in the system.
Response
The response will contain a JSON object with the following structure:
-
status: A string indicating the status of the request. -
data: An object containing detailed information about the folder:-
_id: The unique identifier of the folder. -
companyId: The ID of the company associated with the folder. -
userId: The ID of the user who owns the folder. -
folderType: The type of folder. -
name: The name of the folder. -
description: A brief description of the folder. -
defaultAssignTo: The default user assigned to the folder (can be null). -
showOrder: An integer indicating the order in which the folder is displayed. -
userShowOrder: An object mapping user IDs to their specific display order for the folder. -
isDeleted: A boolean indicating whether the folder has been deleted. -
folderId: The ID of the folder. -
createdAt: The timestamp when the folder was created. -
updatedAt: The timestamp when the folder was last updated. -
__v: The version key for the document. -
source: An object containing:-
type: The type of source associated with the folder. -
subCategory: The subcategory of the source.
-
-
shared: An array containing information about users or entities with whom the folder is shared.
-
Notes
-
Ensure that the
folderIdprovided in the request is valid, as an invalid ID will result in an error response. -
The
isDeletedfield in the response indicates whether the folder is currently active or has been marked for deletion.
Parameters
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
folderId |
path | string | Yes |
curl -X GET 'https://api.speakai.co/v1/folder/e88575b384b6' \
-H 'x-speakai-key: sk_test_speak_0000000000000000' \
-H 'x-access-token: eyJhbGciOiJIUzI1NiJ9.test-access-token.0000000000'200 OK
Response body, application/json.
| Field | Type |
|---|---|
status |
string |
data |
object |
data._id |
string |
data.companyId |
string |
data.userId |
string |
data.folderType |
string |
data.name |
string |
data.description |
string |
data.defaultAssignTo |
string |
data.showOrder |
integer |
data.userShowOrder |
object |
data.isDeleted |
boolean |
data.folderId |
string |
data.createdAt |
string (date-time) |
data.updatedAt |
string (date-time) |
data.__v |
integer |
data.source |
object |
data.shared |
any[] |
Deeper nested fields are not listed. See the example response below for the full shape.
Example response (Get folders info), application/json.
{
"status": "success",
"data": {
"_id": "6776f1459df32xxx30f8",
"companyId": "5e21c8ddxxxxxx2c64214816",
"userId": "5d03a9d5d4xxxxxc8cf89",
"folderType": "sub",
"name": "v35",
"description": "",
"defaultAssignTo": null,
"showOrder": 2,
"userShowOrder": {
"5d03a9d5d4bca272e9c8cf89": 2
},
"isDeleted": false,
"folderId": "e8857xxx4b6",
"createdAt": "2025-01-02T20:04:21.511Z",
"updatedAt": "2025-01-06T15:05:38.939Z",
"__v": 0,
"source": {
"type": "content",
"subCategory": "podcast"
},
"shared": []
}
}Update folder
/folder/{folderId}Update Folder
This endpoint allows you to update the details of a specific folder identified by its folderId.
Request
- Method:
PUT - Endpoint:
https://api.speakai.co/v1/folder/{folderId} - Path Parameter:
folderId(string): The unique identifier of the folder you wish to update.
Request Body
The request body should be in JSON format and must include the following parameter:
name(string): The new name for the folder.
Example Request Body:
{
"name": "Folder name 2 Updated"
}Response
Upon a successful update, the response will be in JSON format and will include the following fields:
status(string): The status of the request.data(object): Contains additional information about the update.folderId(string): The ID of the updated folder.message(string): A message indicating the result of the update.fields(array): An array that may contain any relevant fields related to the update.
Example Response:
{
"status": "",
"data": {
"folderId": "",
"message": "",
"fields": []
}
}Notes
Ensure that the folderId in the URL is valid and that you have the necessary permissions to update the folder.
Parameters
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
folderId |
path | string | Yes |
Request body
Field types and names come from the request body the spec records. The spec does not mark request body fields as required, so read this as the shape the endpoint accepts rather than a required field list.
| Field | Type |
|---|---|
name |
string |
curl -X PUT 'https://api.speakai.co/v1/folder/0648e533f72c' \
-H 'x-speakai-key: sk_test_speak_0000000000000000' \
-H 'x-access-token: eyJhbGciOiJIUzI1NiJ9.test-access-token.0000000000' \
-H 'Content-Type: application/json' \
-d '{
"name": "Folder name 2 Updated"
}'200 OK
Response body, application/json.
| Field | Type |
|---|---|
status |
string |
data |
object |
data.folderId |
string |
data.message |
string |
data.fields |
any[] |
Example response (Update folder), application/json.
{
"status": "success",
"data": {
"folderId": "0648e533f72c",
"message": "Folder name 2 Updated folder updated successfully",
"fields": []
}
}Delete folder
/folder/{folderId}DELETE /v1/folder/{folderId}
This endpoint is used to delete a specific folder identified by the folderId. The deletion operation will remove the folder and all its contents from the system.
Request Parameters
folderId(path parameter): The unique identifier of the folder that you wish to delete. This parameter is required.
Response Structure
Upon successful deletion, the response will return a JSON object with the following structure:
-
status: A string indicating the status of the operation (e.g., success or failure). -
message: A string providing additional information about the result of the deletion operation.
Example Response
{
"status": "success",
"message": "Folder deleted successfully."
}In case of an error, the response may contain an appropriate error message indicating what went wrong.
Parameters
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
folderId |
path | string | Yes |
curl -X DELETE 'https://api.speakai.co/v1/folder/0648e533f72c' \
-H 'x-speakai-key: sk_test_speak_0000000000000000' \
-H 'x-access-token: eyJhbGciOiJIUzI1NiJ9.test-access-token.0000000000'200 OK
Response body, application/json.
| Field | Type |
|---|---|
status |
string |
message |
string |
Example response (Delete folder), application/json.
{
"status": "success",
"message": "Folder successfully deleted."
}Get Views by Folder ID
/folder/{folderId}/viewsGet all views for a specific folder
Parameters
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
folderId |
path | string | Yes | The ID of the folder to get views for |
curl -X GET 'https://api.speakai.co/v1/folder/your_folder_id_here/views' \
-H 'x-speakai-key: sk_test_speak_0000000000000000' \
-H 'x-access-token: eyJhbGciOiJIUzI1NiJ9.test-access-token.0000000000'200 Success. This spec records no example response body for this endpoint.
The spec records no example response body for this status code.
Create View
/folder/{folderId}/viewsCreate a new view for a specific folder. Column types can be:
FieldType values:
- text
- url
- boolean
- date
- datetime
- number
- currency
DefaultViewColumn values:
- name
- duration
- tags
- sentiment
- datetime
- createdAt
- updatedAt
Parameters
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
folderId |
path | string | Yes | The ID of the folder to create view for |
Request body
Field types and names come from the request body the spec records. The spec does not mark request body fields as required, so read this as the shape the endpoint accepts rather than a required field list.
| Field | Type |
|---|---|
name |
string |
isDefault |
boolean |
columns |
object[] |
columns[].fieldId |
string |
columns[].name |
string |
columns[].type |
string |
columns[].definition |
string |
columns[].order |
integer |
curl -X POST 'https://api.speakai.co/v1/folder/your_folder_id_here/views' \
-H 'x-speakai-key: sk_test_speak_0000000000000000' \
-H 'x-access-token: eyJhbGciOiJIUzI1NiJ9.test-access-token.0000000000' \
-H 'Content-Type: application/json' \
-d '{
"name": "My Custom View",
"isDefault": false,
"columns": [
{
"fieldId": "",
"name": "Name",
"type": "name",
"definition": "",
"order": 0
},
{
"fieldId": "",
"name": "Duration",
"type": "duration",
"definition": "duration",
"order": 1
},
{
"fieldId": "",
"name": "Tags",
"type": "tags",
"definition": "tags",
"order": 2
},
{
"fieldId": "",
"name": "Sentiment",
"type": "sentiment",
"definition": "sentiment",
"order": 3
},
{
"fieldId": "",
"name": "Created At",
"type": "datetime",
"definition": "createdAt",
"order": 4
}
]
}'200 Success. This spec records no example response body for this endpoint.
The spec records no example response body for this status code.
Update View
/folder/{folderId}/views/{viewId}Update an existing view. Note: isDefault is required in update operation.
Parameters
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
folderId |
path | string | Yes | The ID of the folder |
viewId |
path | string | Yes | The ID of the view to update |
Request body
Field types and names come from the request body the spec records. The spec does not mark request body fields as required, so read this as the shape the endpoint accepts rather than a required field list.
| Field | Type |
|---|---|
name |
string |
isDefault |
boolean |
columns |
object[] |
columns[].fieldId |
string |
columns[].name |
string |
columns[].type |
string |
columns[].definition |
string |
columns[].order |
integer |
curl -X PUT 'https://api.speakai.co/v1/folder/your_folder_id_here/views/your_view_id_here' \
-H 'x-speakai-key: sk_test_speak_0000000000000000' \
-H 'x-access-token: eyJhbGciOiJIUzI1NiJ9.test-access-token.0000000000' \
-H 'Content-Type: application/json' \
-d '{
"name": "Updated View Name",
"isDefault": true,
"columns": [
{
"fieldId": "",
"name": "Name",
"type": "name",
"definition": "",
"order": 0
},
{
"fieldId": "",
"name": "Duration",
"type": "duration",
"definition": "duration",
"order": 1
},
{
"fieldId": "",
"name": "Tags",
"type": "tags",
"definition": "tags",
"order": 2
},
{
"fieldId": "",
"name": "Sentiment",
"type": "sentiment",
"definition": "sentiment",
"order": 3
},
{
"fieldId": "",
"name": "Created At",
"type": "datetime",
"definition": "createdAt",
"order": 4
}
]
}'200 Success. This spec records no example response body for this endpoint.
The spec records no example response body for this status code.
Delete View
/folder/{folderId}/views/{viewId}Delete a view (soft delete - sets isActive to false)
Parameters
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
folderId |
path | string | Yes | The ID of the folder |
viewId |
path | string | Yes | The ID of the view to delete |
curl -X DELETE 'https://api.speakai.co/v1/folder/your_folder_id_here/views/your_view_id_here' \
-H 'x-speakai-key: sk_test_speak_0000000000000000' \
-H 'x-access-token: eyJhbGciOiJIUzI1NiJ9.test-access-token.0000000000'200 Success. This spec records no example response body for this endpoint.
The spec records no example response body for this status code.
Clone Folder
/folder/cloneClone Folder
This endpoint allows the user to clone a folder by making an HTTP POST request to the specified URL.
Request Body
-
folderId(string) - The ID of the folder to be cloned. -
name(string) - The name of the new folder. -
description(string) - The description of the new folder. -
defaultAssignTo(string) - The default assignee for the new folder. -
isSaveDefaultView(boolean) - Indicates whether the default view should be saved.
Response
The response of this request is a JSON object with the following schema:
{
"type": "object",
"properties": {
"status": {
"type": "string"
},
"data": {
"type": "object",
"properties": {
"folderId": {
"type": "string"
},
"message": {
"type": "string"
}
}
}
}
}Example Response
{
"status": "",
"data": {
"folderId": "",
"message": ""
}
}Request body
Field types and names come from the request body the spec records. The spec does not mark request body fields as required, so read this as the shape the endpoint accepts rather than a required field list.
| Field | Type |
|---|---|
folderId |
string |
name |
string |
description |
string |
defaultAssignTo |
string |
isSaveDefaultView |
boolean |
curl -X POST 'https://api.speakai.co/v1/folder/clone' \
-H 'x-speakai-key: sk_test_speak_0000000000000000' \
-H 'x-access-token: eyJhbGciOiJIUzI1NiJ9.test-access-token.0000000000' \
-H 'Content-Type: application/json' \
-d '{
"folderId": "905c208f1c07",
"name": "New Folder Name",
"description": "New Folder description",
"defaultAssignTo": "",
"isSaveDefaultView": true
}'200 OK
Response body, application/json.
| Field | Type |
|---|---|
status |
string |
data |
object |
data.folderId |
string |
data.message |
string |
Example response (Create folder), application/json.
{
"status": "success",
"data": {
"folderId": "0648e533f72c",
"message": "Folder name 2 folder created successfully"
}
}Get All Views
/folder/viewsGet all views across all folders for the company. Used to populate dropdown for cloning views.
curl -X GET 'https://api.speakai.co/v1/folder/views' \
-H 'x-speakai-key: sk_test_speak_0000000000000000' \
-H 'x-access-token: eyJhbGciOiJIUzI1NiJ9.test-access-token.0000000000'200 Success. This spec records no example response body for this endpoint.
The spec records no example response body for this status code.
Clone View
/folder/views/cloneClone a view from source folder to target folder. Use ‘Get All Views’ to get available view IDs for cloning.
Request body
Field types and names come from the request body the spec records. The spec does not mark request body fields as required, so read this as the shape the endpoint accepts rather than a required field list.
| Field | Type |
|---|---|
sourceFolderId |
string |
targetFolderId |
string |
viewId |
string |
name |
string |
isDefault |
boolean |
curl -X POST 'https://api.speakai.co/v1/folder/views/clone' \
-H 'x-speakai-key: sk_test_speak_0000000000000000' \
-H 'x-access-token: eyJhbGciOiJIUzI1NiJ9.test-access-token.0000000000' \
-H 'Content-Type: application/json' \
-d '{
"sourceFolderId": "source_folder_id_here",
"targetFolderId": "target_folder_id_here",
"viewId": "view_id_to_clone_here",
"name": "Cloned View Name",
"isDefault": false
}'200 Success. This spec records no example response body for this endpoint.
The spec records no example response body for this status code.
Related pages
- API reference for the base URL, authentication, and the error format.
- Authenticate with the Speak AI API using access tokens
- Upload audio and video to Speak AI and read insights
- Create and update live transcription sessions in Speak AI
- Analyze text notes with the Speak AI text endpoints
Get an API key on the Speak AI developer page.