# Speak AI Docs > API reference, MCP tools, SDK guides, and changelog for Speak AI, written for humans and agents. Index: https://docs.speakai.co/llms.txt # Speak AI Docs > API reference, MCP tools, SDK guides, and changelog for Speak AI, written for humans and agents. Source: https://docs.speakai.co/ · Markdown: https://docs.speakai.co/index.md # Speak AI Docs Everything you need to build on Speak AI lives here: the MCP server and its tool reference, the REST API, the Node SDK, help articles, and the product changelog, under one root with one search index. This page mirrors the homepage. It is the Markdown twin an agent reads, so it carries the same facts in a flatter shape. ## Which surface are you building against? Speak AI is one system of record for voice, video, and text data, and you reach it through four surfaces. - **[MCP server](/mcp)** connects Claude, ChatGPT, Cursor, VS Code, and other Model Context Protocol clients to a Speak AI workspace. It runs at `https://api.speakai.co/v1/mcp` and exposes 112 tools covering media, transcripts, AI insights, folders, recorders, automations, and exports. ```bash claude mcp add speakai --transport http --url https://api.speakai.co/v1/mcp ``` - **[API reference](/api)** documents 75 REST endpoints across 13 resources at the base URL `https://api.speakai.co/v1`. Exchange your API key for an access token, then send that token on every call. ```bash curl -X POST 'https://api.speakai.co/v1/auth/accessToken' \ -H 'x-speakai-key: sk_test_speak_0000000000000000' \ -H 'Content-Type: application/json' \ -d '{}' ``` - **[Node SDK](/sdk)** covers `@speakai/mcp-server`, the package that runs the MCP server and doubles as a Node library. Install it to register Speak AI's tools, resources, and prompts on your own MCP server. It needs Node 22 or newer. ```bash npm install @speakai/mcp-server ``` - **[Changelog](/changelog)** records every feature, fix, and improvement Speak AI has shipped, grouped by year, with an RSS feed at `/changelog/rss.xml` and a JSON feed at `/changelog/feed.json`. ```bash curl https://docs.speakai.co/changelog/feed.json ``` ## What else is in these docs? Three more sections cover what the reference pages do not. - **[Help](/help)** answers product questions about recorders, folders, uploads, and workspace settings. - **[Tool reference](/mcp/tools)** documents every MCP tool, resource, and prompt, grouped by the area it works on. ## How do agents read these docs? Agents get the same content as browsers, in a cleaner format. Fetch [llms.txt](https://docs.speakai.co/llms.txt) for the index of every page, or [llms-full.txt](https://docs.speakai.co/llms-full.txt) for the whole corpus in one document, then append `index.md` to any page path to read that page as clean Markdown with its frontmatter intact. A prompt worth pasting into any AI tool: ```text I'm working with Speak AI. Read https://docs.speakai.co/llms.txt for the documentation index, and connect the MCP server at https://api.speakai.co/v1/mcp for live workspace access. ``` # Speak AI API reference for audio, video, and text data > Reference for the Speak AI REST API: base URL, API key and access token authentication, error format, and every endpoint for media, folders, and more. Source: https://docs.speakai.co/api/ · Markdown: https://docs.speakai.co/api/index.md The Speak AI API is a REST API for uploading audio, video, and text, reading the transcripts and insights Speak AI generates from them, and managing the folders, recorders, webhooks, and automations around them. It covers 75 endpoints across 14 resources. ## What is the base URL for the Speak AI API? The base URL for the Speak AI API is `https://api.speakai.co/v1`. Every path on this reference is relative to that base URL, so `GET /media` means `GET https://api.speakai.co/v1/media`. ## How is the Speak AI API versioned? The Speak AI API is versioned in the URL path. The base URL is `https://api.speakai.co/[version]` and the current version is `v1`, so every request goes to `https://api.speakai.co/v1`. The spec does not document a deprecation policy or any version other than `v1`. ## How do you authenticate with the Speak AI API? Every Speak AI API call takes two headers: `x-speakai-key` with your API key, and `x-access-token` with an access token you generate from that key. Get your API key from the developer page in your Speak AI account, then exchange it for a token pair. ```bash curl -X POST 'https://api.speakai.co/v1/auth/accessToken' \ -H 'x-speakai-key: sk_test_speak_0000000000000000' \ -H 'Content-Type: application/json' \ -d '{}' ``` ```json { "status": "success", "data": { "email": "your_email_id", "accessToken": "access_token", "refreshToken": "refresh_token" } } ``` Send the `accessToken` in the `x-access-token` header on every other call. The access token expires after 80 minutes and the refresh token after 24 hours. When the access token expires the API returns `401`, and you call `POST /auth/refreshToken` for a new pair. When the refresh token expires you start again at `POST /auth/accessToken`. > **Note** > > Full request and response detail for both token endpoints is on the [Authentication](/api/authentication/) page. ## What are the rate limits on the Speak AI API? The two authentication endpoints, `POST /auth/accessToken` and `POST /auth/refreshToken`, are limited to 5 requests per 60 seconds, and going over returns `429 Too Many Requests`. Back off and retry when you see a `429`. `POST /live-transcription/token` is limited the same way, to 5 requests per 60 seconds per IP address. It returns `429` with a plain text body rather than the usual JSON error, so mint one token per session and reuse it. > **Caution** > > Those three endpoints are the only ones with a documented rate limit. No limit is documented for any other endpoint, so none is stated here. Ask support before you assume a rate for a production integration. ## What does a Speak AI API error look like? A failed Speak AI API call returns a JSON body with a `status` of `failed`, a `requestId` you can quote to support, a numeric `code`, a human readable `message`, and sometimes a `hints` array. This example is the response to a call made with an invalid API key. ```json { "status": "failed", "requestId": "ca665625-645e-438a-867d-366a6e3f133a", "code": 401, "message": "The authorization api key provided for the request is invalid.", "hints": [ "The authorization api key provided for the request is invalid." ] } ``` A successful call returns `status: "success"` with the payload under `data`. Note that the HTTP status line and the `code` field in the body do not always agree, so read the `code` field as well as the HTTP status. ## Which endpoints does the Speak AI API have? Speak AI groups its 75 endpoints into 14 resources, one page each. Each page lists every endpoint in that resource with its parameters, an example request, and the response shape. | Resource | Endpoints | What it covers | | --- | --- | --- | | [Authentication](/api/authentication/) | 2 | Exchange your Speak AI API key for an access token, send it in the x-access-token header, and refresh the pair before the 80 minute expiry ends. | | [Media](/api/media/) | 10 | Upload audio and video to Speak AI, list your media library, poll processing status, read the transcript and insights, and run the analysis again. | | [Live transcription](/api/live-transcription/) | 3 | Open a live transcription session in Speak AI, mint the token that authorizes the streaming connection, and send words and the recording back as it runs. | | [Text](/api/text/) | 4 | Create a text note in Speak AI, read the insights generated from it, update the note when its content changes, and delete it when you are finished. | | [Exports](/api/exports/) | 4 | Export a transcript or its insights from Speak AI as PDF, DOCX, TXT, SRT, VTT, CSV, or JSON, one file at a time or several files in one request. | | [Folders](/api/folders/) | 12 | Create, list, clone, update, and delete Speak AI folders, and manage the saved views that control how the media inside a folder is filtered. | | [Recorders and surveys](/api/recorders/) | 11 | Create and clone Speak AI recorders, set their questions and settings, generate share URLs, and read the recordings that respondents submit. | | [Media embeds](/api/embeds/) | 5 | Create and update Speak AI media embeds, check whether a piece of media is already embedded, and get the iframe URL to drop into your own page. | | [AI chat](/api/ai-chat/) | 2 | Ask a question about the media stored in Speak AI and read the answer back, and list the AI chat prompts that have already run in your account. | | [Meeting assistant](/api/meeting-assistant/) | 4 | Schedule the Speak AI meeting assistant to join a call, list your scheduled and past meeting events, and remove or delete an assistant booking. | | [Fields](/api/fields/) | 4 | Create custom fields in Speak AI, list every field defined in your account, and update a single field or a whole batch of fields in one request. | | [Automations](/api/automations/) | 6 | Create, read, update, and delete Speak AI automations, and turn an automation on or off without changing the trigger and action it is built from. | | [Admin](/api/admin/) | 3 | Create users in your Speak AI account, update an existing user, and list every user the account contains. These endpoints are for account admins. | | [Webhooks](/api/webhooks/) | 5 | Register a webhook so Speak AI posts events to your server, list and update the webhooks on your account, send a test payload, and delete a webhook. | ## How is this reference generated? This reference is generated from an OpenAPI 3.0 specification committed to this repository at `openapi/speak-api.json`. That spec is hand-maintained and it is the source of truth. It started as an export from the Speak AI Postman collection, and the collection was dropped once it began describing paths the server does not serve. Do not edit these pages by hand, because the next generation run overwrites them. Edit the spec instead, check the change against the API server source, and re-run the generator. > **Note** > > Audio for a live transcription session streams over a WebSocket connection rather than REST. The three REST endpoints that open and feed a session are documented on the [Live transcription](/api/live-transcription/) page. The streaming connection itself is not, because its host is not part of the REST API. ## Related pages - [Authenticate with the Speak AI API using access tokens](/api/authentication/) - [Upload audio and video to Speak AI and read insights](/api/media/) - [Create and update live transcription sessions in Speak AI](/api/live-transcription/) - [Analyze text notes with the Speak AI text endpoints](/api/text/) - [Export Speak AI transcripts and insights to a file](/api/exports/) - [Organize Speak AI media with the folders endpoints](/api/folders/) - [Collect async voice and video with Speak AI recorders](/api/recorders/) - [Embed Speak AI media and transcripts in your pages](/api/embeds/) - [Ask questions about your media with the AI chat API](/api/ai-chat/) - [Send the Speak AI meeting assistant into your calls](/api/meeting-assistant/) - [Attach custom fields to your Speak AI media records](/api/fields/) - [Trigger Speak AI workflows with the automations API](/api/automations/) - [Manage Speak AI account users with the admin endpoints](/api/admin/) - [Receive Speak AI events with outbound webhook calls](/api/webhooks/) Get an API key on the [Speak AI developer page](https://app.speakai.co/developers?utm_source=docs&utm_medium=referral&utm_campaign=api-reference&utm_content=api-overview), then start with [Authentication](/api/authentication/). # Manage Speak AI account users with the admin endpoints > Create users in your Speak AI account, update an existing user, and list every user the account contains. These endpoints are for account admins. Source: https://docs.speakai.co/api/admin/ · Markdown: https://docs.speakai.co/api/admin/index.md import EndpointIndex from "@/components/api/EndpointIndex.astro"; The Speak AI API exposes 3 admin 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](/api/authentication/). Manage your team. ## What can you do with the admin endpoints? Speak AI groups these 3 endpoints under the admin resource. Each entry below links to the full reference for that endpoint further down this page. | Method | Path | What it does | | --- | --- | --- | | `POST` | [`/admin/user`](#post-admin-user) | Create New User | | `PUT` | [`/admin/user`](#put-admin-user) | Update User | | `GET` | [`/admin/users`](#get-admin-users) | List users |

Create New User

#### Add User Endpoint This endpoint allows administrators to add a new user to the system. The request requires a JSON payload containing user details. ##### Request Parameters The request body should be in JSON format and include the following parameters: - `firstName` (string): The first name of the user. - `lastName` (string): The last name of the user. - `email` (string): The email address of the user. - `isActive` (boolean): Indicates whether the user account is active. - `isVerified` (boolean): Indicates whether the user's email has been verified. - `permission` (object): An object specifying the permissions granted to the user: - `audio` (boolean): Permission to access audio features. - `video` (boolean): Permission to access video features. - `text` (boolean): Permission to access text features. - `addPayment` (boolean): Permission to manage payment options. - `userManagement` (boolean): Permission to manage other users. ##### Expected Response Upon a successful request, the server will respond with a confirmation of the user creation, typically including the user ID and any other relevant details about the newly created user. ##### Notes - Ensure that the email provided is unique and valid to avoid conflicts. - Permissions should be assigned based on the user's role within the organization. - This endpoint is restricted to users with administrative privileges. ### Request body Fields marked **required** are the ones the server rejects the request without. Anything conditional, where a field becomes required only alongside another, is described under Request rules above rather than marked here. | Field | Type | Description | | --- | --- | --- | | `_id` | string | Pass an existing user id. Leave it out when you are creating a new team member. Optional. Empty string is accepted. The create controller never reads it, so it has no effect on this endpoint. | | `email` | string, **required** | Give the email address to invite. This is the only property the server always requires. Required. Must be a valid email address. Lowercased and trimmed. An empty string is rejected. | | `firstName` | string | Give the new member's first name. Optional. Trimmed. No minimum or maximum length. | | `lastName` | string | Give the new member's last name. Optional. Trimmed. No minimum or maximum length. | | `isActive` | boolean | Accepted for compatibility. The create endpoint ignores it, and the new account is created through the invite flow. Optional. The declared default is true, but the middleware discards the converted value, and the create controller never reads this key. | | `isVerified` | boolean | Accepted for compatibility. The create endpoint ignores it. Optional. The declared default is false, and the same caveat about discarded conversions applies. The create controller never reads this key. | | `permission` | object | Set what the new member can do. Anything you leave out falls back to the defaults for their role. Optional object with a fixed key set, defined. Unknown keys are rejected. Accepted keys: `role` (string, one of owner, admin, member); `folder` object with create, delete, download, share, assign, accessAll; `recorder` object with create, edit, delete, download, accessAll; `media` object with delete, edit, download, share; `payment` object with manageCards, manageInvoices; `teamManagement` object with manageMembers, manageGroups; `developer` object with accessKeys; `profileSettings` object with accountPreferences, accountCustomization, dataManagement; `meetingAssistant` object with customizeAssistant, shareMeetings, routeMeetings, excludeMeetings, globalSettings. Every leaf key is a boolean. The controller reads permission.role, falls back to member, and merges what you send over the role defaults. |
```bash curl -X POST 'https://api.speakai.co/v1/admin/user' \ -H 'x-speakai-key: sk_test_speak_0000000000000000' \ -H 'x-access-token: eyJhbGciOiJIUzI1NiJ9.test-access-token.0000000000' \ -H 'Content-Type: application/json' \ -d '{ "firstName": "Vatsal", "lastName": "Shah", "email": "test@abc.com", "isActive": true, "isVerified": true, "permission": { "audio": true, "video": true, "text": true, "addPayment": false, "userManagement": false } }' ```
**`200` Success** The spec records this status code with no example body.

Update User

#### Update User Details This endpoint allows administrators to update the details of a user in the system. It is a PUT request that modifies the user's information based on the provided payload. ##### Request Parameters The request body should be a JSON object with the following parameters: - **_id** (string): The unique identifier of the user to be updated. - **email** (string): The email address of the user. This field can be left empty if no change is required. - **firstName** (string): The first name of the user. - **lastName** (string): The last name of the user. - **isActive** (boolean): Indicates whether the user account is active. - **isVerified** (boolean): Indicates whether the user's email has been verified. - **permission** (object): An object that defines the permissions for the user with the following keys: - **audio** (boolean): Permission to access audio features. - **video** (boolean): Permission to access video features. - **text** (boolean): Permission to access text features. - **addPayment** (boolean): Permission to add payment methods. - **userManagement** (boolean): Permission to manage other users. ##### Expected Response Upon a successful update, the API will return a response indicating the status of the operation. The response typically includes a success message and may also return the updated user details. ##### Notes - Ensure that the user ID provided in the request is valid and corresponds to an existing user in the system. - The permissions object allows for fine-grained control over what the user can access, so be sure to set these values according to your application's requirements. - If any required fields are missing or invalid, the API will return an error response with details about the issue. ### Request body Fields marked **required** are the ones the server rejects the request without. Anything conditional, where a field becomes required only alongside another, is described under Request rules above rather than marked here. | Field | Type | Description | | --- | --- | --- | | `_id` | string | Give the id of the user you are updating. The validator treats it as optional, but the update fails without it. Optional in the schema, and unlike the create schema it does not allow an empty string. The controller calls User.findById(_id) and returns 404 when nothing matches, so omitting it returns 404 rather than 400. | | `email` | string, **required** | Give the user's email address. You have to send a valid one on every update, even though the update ignores it. Required. Must be a valid email address. Lowercased and trimmed. An empty string is rejected. The controller never reads this key, so you cannot use it to change the address. | | `firstName` | string | Set the user's first name. Leave it out to keep the stored value. Optional. Trimmed. No minimum or maximum length. Omitted keys are stripped from the update, so they keep their stored values (keys you leave out are not written). | | `lastName` | string | Set the user's last name. Leave it out to keep the stored value. Optional. Trimmed. No minimum or maximum length. Omitted keys are stripped from the update, so they keep their stored values. | | `isActive` | boolean | Set whether the account stays active. Send false to deactivate the user, which also disconnects their calendars. Optional. The declared default is true, but the middleware discards the converted value, so no default is applied to the request and leaving it out keeps the current state. Sending false for a currently active user triggers a calendar disconnect. | | `isVerified` | boolean | Accepted for compatibility. The update endpoint ignores it. Optional. The declared default is true, with the same discarded-conversion caveat. The update controller never reads this key. | | `permission` | object | Set what the user can do. The validator treats this as optional, but the update fails without it. Same fixed key set as the create endpoint, defined. Unknown keys are rejected. Accepted keys: `role` (string, one of owner, admin, member); `folder` object with create, delete, download, share, assign, accessAll; `recorder` object with create, edit, delete, download, accessAll; `media` object with delete, edit, download, share; `payment` object with manageCards, manageInvoices; `teamManagement` object with manageMembers, manageGroups; `developer` object with accessKeys; `profileSettings` object with accountPreferences, accountCustomization, dataManagement; `meetingAssistant` object with customizeAssistant, shareMeetings, routeMeetings, excludeMeetings, globalSettings. Every leaf key is a boolean. The controller reads permission.role without a null check, and the resulting error is caught at:237-240, so omitting permission returns 500 rather than 400. Setting meetingAssistant.customizeAssistant to false also deletes the user's meeting assistant settings (:214-224). |
```bash curl -X PUT 'https://api.speakai.co/v1/admin/user' \ -H 'x-speakai-key: sk_test_speak_0000000000000000' \ -H 'x-access-token: eyJhbGciOiJIUzI1NiJ9.test-access-token.0000000000' \ -H 'Content-Type: application/json' \ -d '{ "_id": "string", "email": "", "firstName": "Vatsal", "lastName": "Shah", "isActive": true, "isVerified": true, "permission": { "audio": true, "video": true, "text": true, "addPayment": false, "userManagement": false } }' ```
**`200` Success** The spec records this status code with no example body.

List users

#### Get Users This endpoint retrieves a list of users from the admin panel. It is primarily used by administrators to access user information stored in the system. ##### Request - **Method**: GET - **Endpoint**: `https://api.speakai.co/v1/admin/users` ##### Response The response will contain a JSON object with the following structure: - **users**: An array of user objects, where each user object includes: - **id**: Unique identifier for the user. - **name**: The name of the user. - **email**: The email address of the user. - **role**: The role assigned to the user (e.g., admin, user). - **status**: The current status of the user (e.g., active, inactive). ##### Example Response ``` json { "users": [ { "id": "123", "name": "John Doe", "email": "john.doe@example.com", "role": "admin", "status": "active" }, { "id": "124", "name": "Jane Smith", "email": "jane.smith@example.com", "role": "user", "status": "inactive" } ] } ``` ##### Notes - Ensure that appropriate authentication and authorization headers are included in the request to access this endpoint. - The response may vary based on the user's permissions and the number of users in the system.
```bash curl -X GET 'https://api.speakai.co/v1/admin/users' \ -H 'x-speakai-key: sk_test_speak_0000000000000000' \ -H 'x-access-token: eyJhbGciOiJIUzI1NiJ9.test-access-token.0000000000' ```
**`200` Success** The spec records this status code with no example body.
## Related pages - [API reference](/api/) for the base URL, authentication, and the error format. - [Authenticate with the Speak AI API using access tokens](/api/authentication/) - [Upload audio and video to Speak AI and read insights](/api/media/) - [Create and update live transcription sessions in Speak AI](/api/live-transcription/) - [Analyze text notes with the Speak AI text endpoints](/api/text/) Get an API key on the [Speak AI developer page](https://app.speakai.co/developers?utm_source=docs&utm_medium=referral&utm_campaign=api-reference&utm_content=api-admin). # Ask questions about your media with the AI chat API > Ask a question about the media stored in Speak AI and read the answer back, and list the AI chat prompts that have already run in your account. Source: https://docs.speakai.co/api/ai-chat/ · Markdown: https://docs.speakai.co/api/ai-chat/index.md import EndpointIndex from "@/components/api/EndpointIndex.astro"; The Speak AI API exposes 2 ai chat 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](/api/authentication/). Fetch all your Speak AI Chat Responses. ## What can you do with the ai chat endpoints? Speak AI groups these 2 endpoints under the ai chat resource. Each entry below links to the full reference for that endpoint further down this page. | Method | Path | What it does | | --- | --- | --- | | `GET` | [`/prompt`](#get-prompt) | All AI Chats | | `POST` | [`/prompt`](#post-prompt) | Ask AI Chat |

All AI Chats

Get AI Chat History.
```bash curl -X GET 'https://api.speakai.co/v1/prompt' \ -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` | integer | | `data.history` | object[] | Deeper nested fields are not listed. See the example response below for the full shape. Example response (List of Prompts), `application/json`. Arrays are shortened to one entry and long strings are cut. ```json { "status": "success", "data": { "totalCount": 2, "pages": 1, "history": [ { "id": "64b04ce76db5f05cba07a3ff", "prompt": "Identify the top 5 action items to prioritize for maximum impact", "answer": "", "createdAt": "2023-07-13T19:13:43.953Z", "assistantType": "general", "mediaName": "How To Upload A Video File On Desktop", "mediaIds": [ "de737309a4e9" ], "state": "failed", "link": "https://app.speakai.co/media/insight/MEDIA_URL" } ] } } ```

Ask AI Chat

AI Chat API allows you to run your own prompt via API. `Prompt` (**required**) - It will be your query - please be as descriptive as possible to get an accurate output `assistantType` (**default: general**) - Allow values are - general, researcher, marketer, sales, recruiter `mediaIds` (**required**) - You can pass multiple `mediaIds` to run your prompt OR pass a single mediaId in an array **Request rules.** `prompt` is the only field you must send. `assistantTemplateId` becomes required when you set `assistantType` to `custom`; for every other value it is optional. You do not have to send `folderId` or `mediaIds`: a body with only `prompt` is accepted. Send one of them anyway, or the assistant has no material to read. **Streaming.** Send `isStream: true` to get the answer as Server-Sent Events instead of one JSON body. The response comes back as `text/event-stream` with `Cache-Control: no-cache` and `Connection: keep-alive`. Every frame is written as `data: ` followed by a blank line, with no `event:` or `id:` field, so read them as default message events. The stream ends on an `end` frame, or an `error` frame if it failed, and there is no `[DONE]` sentinel. `isStream: true` cannot be combined with `isIndividualPrompt: true`; that returns 400 with errorCode `STREAMING_NOT_SUPPORTED_FOR_INDIVIDUAL`. ### Request body Fields marked **required** are the ones the server rejects the request without. Anything conditional, where a field becomes required only alongside another, is described under Request rules above rather than marked here. | Field | Type | Description | | --- | --- | --- | | `prompt` | string, **required** | The question or instruction you want the AI to answer. Send a non-empty string, and be specific to get a useful answer. Required. the schema.required rejects an empty string. No maximum length. | | `isStream` | boolean | Set this to true to stream the answer back as Server-Sent Events instead of waiting for one JSON response. Optional. Schema default is false, but see the note on defaults. When true, send an Accept header of text/event-stream. Cannot be combined with isIndividualPrompt set to true: the route returns 400 with errorCode STREAMING_NOT_SUPPORTED_FOR_INDIVIDUAL. | | `folderId` | string | The folder you want the AI to read from. Everything in that folder becomes the context for your prompt. Optional. Accepts an empty string or null. Schema default is an empty string. | | `mediaIds` | string[] | The specific media items you want the AI to read. Pass one or more media ids, even when you only have one. Optional. Accepts null and an empty array. No item cap and no per-item length limit. | | `folderIds` | string[] | Several folders you want the AI to read from at once. Use this instead of folderId when the context spans more than one folder. Optional. Accepts null and an empty array. No item cap. No default. | | `assistantType` | string | The assistant persona that shapes the answer. Use "general" unless you want a role-specific tone. Optional. Schema default is "general". Important: the field is a bare the schema with.allow(AssistantTypes), which passes the enum object itself rather than spreading its members, so it adds no string values to the allowed set and imposes no restriction. Any non-empty string is accepted; an empty string is rejected with "assistantType is not allowed to be empty"; a non-string is rejected. The values listed here are the ones the product recognizes. Sending "custom" makes assistantTemplateId required. One of: `researcher`, `marketer`, `sales`, `general`, `recruiter`, `custom`. | | `assistantTemplateId` | string | The id of your custom assistant template. Send this when you set assistantType to "custom". Conditionally required: required when assistantType is "custom", otherwise optional, accepts an empty string, and carries a schema default of an empty string. Does not accept null in either branch. | | `tags` | string[] | Tags that narrow the media the AI reads to only items carrying those tags. Optional. Accepts null and an empty array. No item cap. No default. | | `speakers` | string[] | Speaker names that narrow the transcript content the AI reads to only those speakers. Optional. Accepts null and an empty array. No item cap. No default. | | `promptId` | string | The id of an existing chat you want to continue. Leave it out to start a new chat. Optional. Accepts an empty string or null. Schema default is an empty string. | | `fieldId` | string | A single field you want the AI to fill or reference. Optional. Accepts an empty string. Does not accept null. No default. | | `fieldIds` | string[] | Several fields you want the AI to fill or reference. Optional. Accepts null. Schema default is null. Maximum 10 items, and each item is at most 200 characters. | | `isIndividualPrompt` | boolean | Set this to true to run the prompt separately against each media item instead of once across all of them. Optional. Schema default is false. Cannot be combined with isStream set to true; that combination returns 400. | | `filters` | object | Extra filters that narrow which media the AI reads. Optional. Accepts null. The object's keys are not validated, so any object is accepted at the top level. No default. | | `startDate` | string | Only include media created on or after this date. Optional. Send an ISO 8601 date string or a timestamp. Accepts null and carries a schema default of null. | | `endDate` | string | Only include media created on or before this date. Optional. Send an ISO 8601 date string or a timestamp. Accepts null and carries a schema default of null. | | `modelId` | string | The language model you want to answer this chat. Leave it out, or send an empty string or null, to use your company default. The models Speak AI offers today are `gemini-2.5-flash`, `gemini-3-flash-preview`, `gemini-3.5-flash`, `gpt-5.6-terra`, `gpt-5.6-sol`, `gpt-5.5`, `gpt-5.4-mini-2026-03-17`, `claude-sonnet-5`, `claude-opus-4-8`, `claude-sonnet-4-6`, `x-ai/grok-4.5` and `z-ai/glm-5.2`. The full list below also holds older model ids that are still accepted so existing integrations keep working; treat those as deprecated and do not build against them. One of: `gpt-3.5`, `gpt-3.5-turbo-16k`, `gpt-3.5-turbo-0125`, `gpt-4`, `gpt-4-1106-preview`, `gpt-4-turbo`, `gpt-4o-2024-05-13`, `gpt-4o`, `gpt-4o-mini`, `gpt-4o-2024-08-06`, `gpt-4o-mini-2024-07-18`, `gpt-4.1-2025-04-14`, `gpt-5.1-2025-11-13`, `gpt-5.2`, `gpt-5.4`, `gpt-5.4-mini`, `gpt-5.4-mini-2026-03-17`, `gpt-5.4-nano`, `gpt-5.5`, `gpt-5.5-thinking`, `gpt-5.6-sol`, `gpt-5.6-terra`, `gpt-5.6-luna`, `claude-2`, `claude-3-5-sonnet`, `claude-3-5-sonnet-20241022`, `claude-3-7-sonnet-latest`, `claude-haiku-4-5`, `claude-sonnet-4-6`, `claude-sonnet-5`, `claude-opus-4-8`, `gemini-1.5-pro`, `gemini-1.5-flash`, `gemini-2.0-flash`, `gemini-2.5-pro`, `gemini-2.5-flash`, `gemini-2.5-flash-lite`, `gemini-3-flash-preview`, `gemini-3.1-flash-lite`, `gemini-3.1-pro-preview`, `gemini-3.5-flash`, `x-ai/grok-4.5`, `z-ai/glm-5.2`. | | `attachments` | object[] | Images or PDFs you want the AI to look at alongside your prompt. Optional. Accepts null. Maximum 10 items. Each item is an object with the keys described below, and unknown keys inside an item are rejected. After schema validation the route checks that every attachment path is an S3 URL under your company's prefix and returns 400 if it is not. | | `attachments[].type` | string | The kind of file you are attaching. Required on every attachment. One of: `image`, `pdf`. | | `attachments[].path` | string | The URL of the attached file, which must be a file your company owns. Required on every attachment. Must be a valid URI, and surrounding whitespace is trimmed. Ownership is checked after validation. | | `attachments[].mimeType` | string | The MIME type of the attached file. Optional. Accepts an empty string or null. Whitespace is trimmed. Not restricted to a value list on this endpoint. | | `attachments[].name` | string | A display name for the attached file. Optional. Accepts an empty string or null. Whitespace is trimmed. |
```bash curl -X POST 'https://api.speakai.co/v1/prompt' \ -H 'x-speakai-key: sk_test_speak_0000000000000000' \ -H 'x-access-token: eyJhbGciOiJIUzI1NiJ9.test-access-token.0000000000' \ -H 'Content-Type: application/json' \ -d '{ "prompt": "Tell me how my speaking pace was. Did I speak too fast, at a good pace or too slowly? A good pace is between 140 and 170 words per minute. Less than 140 words per minute is too slow and more than 170", "mediaIds": [ "923884998a91" ], "assistantType": "general" }' ```
**`200` OK** Response body, `application/json`. | Field | Type | Description | | --- | --- | --- | | `status` | string | | | `data` | object | | | `data.promptId` | string | The chat this answer belongs to, a 12-character hex id such as `a3f19c47be02`. Pass it back as `promptId` to ask a follow-up question in the same chat. | | `data.messageId` | string | The message within that chat, a 12-character hex id such as `7d2e845b1fa9`. Use it to retry, export or give feedback on this answer. | | `data.state` | string | | | `data.answer` | string | | | `data.totalMedia` | integer | | | `data.references` | any[] | | Example response (Success Response), `application/json`. Arrays are shortened to one entry and long strings are cut. ```json { "status": "success", "data": { "promptId": "a3f19c47be02", "messageId": "7d2e845b1fa9", "state": "completed", "answer": "Main discussion points:\n\n- The video demonstrates how to upload a video file through Speak.\n- The process involves signing in, accessing the dashboard, and hitting the upload butto...", "totalMedia": 1, "references": [] } } ```
## Related pages - [API reference](/api/) for the base URL, authentication, and the error format. - [Authenticate with the Speak AI API using access tokens](/api/authentication/) - [Upload audio and video to Speak AI and read insights](/api/media/) - [Create and update live transcription sessions in Speak AI](/api/live-transcription/) - [Analyze text notes with the Speak AI text endpoints](/api/text/) Get an API key on the [Speak AI developer page](https://app.speakai.co/developers?utm_source=docs&utm_medium=referral&utm_campaign=api-reference&utm_content=api-ai-chat). # Authenticate with the Speak AI API using access tokens > Exchange your Speak AI API key for an access token, send it in the x-access-token header, and refresh the pair before the 80 minute expiry ends. Source: https://docs.speakai.co/api/authentication/ · Markdown: https://docs.speakai.co/api/authentication/index.md import EndpointIndex from "@/components/api/EndpointIndex.astro"; The Speak AI API exposes 2 authentication 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](/api/authentication/). All Speak AI API operations require two headers: `x-speakai-key: your_speak_ai_api_key_here` `x-access-token: generated_access_token` --- ## Authentication Flow 1. **Get Access Token**: Call `POST /v1/auth/accessToken` with your `x-speakai-key` and `Content-Type: application/json` headers. The request body should be `{}` (empty JSON) when using API key authentication. On success, the response returns your `accessToken` and `refreshToken` inside the `data` object. 2. **Use Access Token**: Include the access token in the `x-access-token` header for all subsequent API calls, alongside your `x-speakai-key`. 3. **Refresh Token**: When the access token expires, call `POST /v1/auth/refreshToken` with both `x-speakai-key` and `x-access-token` headers (include the expired access token), and pass `{"refreshToken": "..."}` in the request body. You will receive a new `accessToken` and `refreshToken` pair. **Example Response** ```json { "data": { "email": "you@example.com", "accessToken": "eyJhbG...", "refreshToken": "eyJhbG..." } } ``` --- ## Token Expiry | Token | Expiry | Action on Expiry | |---|---|---| | Access Token | 80 minutes | Call Refresh Token endpoint | | Refresh Token | 24 hours | Re-authenticate via Get Access Token | --- ## Rate Limits Both `/v1/auth/accessToken` and `/v1/auth/refreshToken` are limited to **5 requests per 60 seconds**. Exceeding this returns `429 Too Many Requests`. --- ## Error Handling - **Expired Access Token**: Returns `401 Unauthorized`. Use the Refresh Token endpoint to obtain a new token pair. - **Expired Refresh Token**: Returns an error response. Re-authenticate from scratch via the Get Access Token endpoint. - **Rate Limited**: Returns `429`. Wait and retry, implement exponential backoff for automated clients. ## What can you do with the authentication endpoints? Speak AI groups these 2 endpoints under the authentication resource. Each entry below links to the full reference for that endpoint further down this page. | Method | Path | What it does | | --- | --- | --- | | `POST` | [`/auth/accessToken`](#post-auth-access-token) | Get Access Token | | `POST` | [`/auth/refreshToken`](#post-auth-refresh-token) | Refresh Token |

Get Access Token

This endpoint allows you to obtain an access token by providing the necessary authentication credentials. The request body for this endpoint should include the your authentication credentials. Upon successful authentication, the server will respond with a status of "success" and provide the your email, access token, and refresh token in the response data. **Request rules.** The request body is entirely optional: you can post an empty JSON object. Authentication comes from your API key in the x-speakai-key request header, not from the body, and a missing or invalid key returns 401. A deactivated account returns 200 with a deactivated status rather than tokens. This endpoint is rate limited to 5 requests per minute per IP address. ### Request body Fields marked **required** are the ones the server rejects the request without. Anything conditional, where a field becomes required only alongside another, is described under Request rules above rather than marked here. | Field | Type | Description | | --- | --- | --- | | `deviceType` | string | Labels the kind of client requesting the token so the resulting session is identified correctly in your login history. Leave it out and the session is labeled as an API session. Send zapier when you want a plain token pair with no session recorded; in that case the refresh token you get back cannot be exchanged later, so request a new access token instead of refreshing. Any value outside the accepted list is rejected when the session is saved, and you still get a working access token but no session record and no usable refresh token. Optional string. Defaults to api when you omit it or send an empty value. Only web, android, ios, zapier and api are stored successfully. One of: `web`, `android`, `ios`, `zapier`, `api`. |
```bash curl -X POST 'https://api.speakai.co/v1/auth/accessToken' \ -H 'x-speakai-key: sk_test_speak_0000000000000000' \ -H 'Content-Type: application/json' \ -d '{}' ```
**`200` OK** Response body, `application/json`. | Field | Type | | --- | --- | | `status` | string | | `data` | object | | `data.email` | string | | `data.accessToken` | string | | `data.refreshToken` | string | Example response (Get Access Token), `application/json`. ```json { "status": "success", "data": { "email": "your_email_id", "accessToken": "access_token", "refreshToken": "refresh_token" } } ```
**`404` Not Found** Response body, `application/json`. | Field | Type | | --- | --- | | `status` | string | | `requestId` | string | | `code` | integer | | `message` | string | | `hints` | string[] | Example response (Get Access Token - Failure (No value found for Speak AI Key)), `application/json`. ```json { "status": "failed", "requestId": "ca665625-645e-438a-867d-366a6e3f133a", "code": 401, "message": "The authorization api key provided for the request is invalid.", "hints": [ "The authorization api key provided for the request is invalid." ] } ``` Example response (Get Access Token - Failure - Invalid API Key), `application/json`. ```json { "status": "failed", "requestId": "358bc130-e798-41c2-9864-2cd2ce9b766d", "code": 401, "message": "The authorization api key provided for the request is invalid.", "hints": [ "The authorization api key provided for the request is invalid." ] } ```

Refresh Token

This endpoint is used to refresh the access token by providing the refresh token in the request body. The refreshToken expires in 24 hour. #### Request Body - refreshToken (string, required): The refresh token used to obtain a new access token. #### Response - status (string): Indicates the status of the request, where "success" means the request was successful. - data (object): Contains the new access token and refresh token. - accessToken (string): The new access token. - refreshToken (string): The new refresh token. **Request rules.** You must send refreshToken in the body unless the request already carries Speak's refresh token session cookie, which only browser clients signed in through Speak's own web apps have. The server reads the body value first and falls back to that cookie, so an API integration that omits the field always gets a 404. This endpoint is rate limited to 5 requests per minute per IP address. ### Request body Fields marked **required** are the ones the server rejects the request without. Anything conditional, where a field becomes required only alongside another, is described under Request rules above rather than marked here. | Field | Type | Description | | --- | --- | --- | | `refreshToken` | string | The refresh token you received the last time you signed in or requested a token. Send it here to get back a new access token and a new refresh token. Refresh tokens are single use: once you exchange one, the old value stops working, so store the new one from the response and use that next time. Replaying an already used refresh token ends the whole session and forces a fresh sign in. A missing token, or one that does not match an active session, returns 404. A token that is expired, tampered with, or otherwise not valid returns 401. Must be a string. An empty value or a value that is not a string is treated as missing and returns 404. Sending a non-string value also cancels the cookie fallback, so send either a real token string or no field at all. Required for API callers, since the only alternative the server accepts is a browser session cookie. |
```bash curl -X POST 'https://api.speakai.co/v1/auth/refreshToken' \ -H 'x-speakai-key: sk_test_speak_0000000000000000' \ -H 'x-access-token: eyJhbGciOiJIUzI1NiJ9.test-access-token.0000000000' \ -H 'Content-Type: application/json' \ -d '{}' ```
**`200` OK** Response body, `application/json`. | Field | Type | | --- | --- | | `status` | string | | `data` | object | | `data.accessToken` | string | | `data.refreshToken` | string | Example response (Refresh Token), `application/json`. ```json { "status": "success", "data": { "accessToken": "new_access_token", "refreshToken": "new_refresh_token" } } ```
**`404` Not Found** Response body, `application/json`. | Field | Type | | --- | --- | | `status` | string | | `requestId` | string | | `code` | integer | | `message` | string | Example response (Refresh Token - Failure - Invalid / Expired Token), `application/json`. ```json { "status": "failed", "requestId": "3fcf7e0c-a977-4c37-bae5-a72485206cd0", "code": 404, "message": "We were unable to find a valid token. Your token may have expired or invalid. Please contact development team." } ```
## Related pages - [API reference](/api/) for the base URL, authentication, and the error format. - [Upload audio and video to Speak AI and read insights](/api/media/) - [Create and update live transcription sessions in Speak AI](/api/live-transcription/) - [Analyze text notes with the Speak AI text endpoints](/api/text/) - [Export Speak AI transcripts and insights to a file](/api/exports/) Get an API key on the [Speak AI developer page](https://app.speakai.co/developers?utm_source=docs&utm_medium=referral&utm_campaign=api-reference&utm_content=api-authentication). # Trigger Speak AI workflows with the automations API > Create, read, update, and delete Speak AI automations, and turn an automation on or off without changing the trigger and action it is built from. Source: https://docs.speakai.co/api/automations/ · Markdown: https://docs.speakai.co/api/automations/index.md import EndpointIndex from "@/components/api/EndpointIndex.astro"; The Speak AI API exposes 6 automations 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](/api/authentication/). Best way to automate your workflow with Automations. ## What can you do with the automations endpoints? Speak AI groups these 6 endpoints under the automations resource. Each entry below links to the full reference for that endpoint further down this page. | Method | Path | What it does | | --- | --- | --- | | `GET` | [`/automations`](#get-automations) | Get Automations | | `POST` | [`/automations`](#post-automations) | Create Automation | | `GET` | [`/automations/{automationId}`](#get-automations-automation-id) | Get Automation | | `PUT` | [`/automations/{automationId}`](#put-automations-automation-id) | Update Automation | | `DELETE` | [`/automations/{automationId}`](#delete-automations-automation-id) | Delete Automation | | `PUT` | [`/automations/status/{automationId}`](#put-automations-status-automation-id) | Enable or Disable Automation |

Get Automations

The endpoint retrieves a list of automations via an HTTP GET request to https://api.speakai.co/v1/automations. #### Response The response will be in the form of a JSON schema, with the following structure: ``` json { "status": "", "data": { "totalCount": 0, "automationList": [ { "trigger": { "folderIds": [ { "name": "", "folderId": "" } ], "values": [], "type": "" }, "action": { "magicPrompt": { "title": "", "assistantType": "", "prompt": "" }, "type": "" }, "name": "", "description": "", "runType": "", "isActive": true, "automationId": "", "actionHistory": [ { "type": "" } ], "createdAt": "", "updatedAt": "", "history": 0 } ] } } ``` The response will have a status code of 200 upon successful retrieval of the automation list. For related responses from other endpoints of this API, the data model will be largely similar, with the addition of "email", "accessToken", and "refreshToken" fields in the "data" object, and a status code of 200.
```bash curl -X GET 'https://api.speakai.co/v1/automations' \ -H 'x-speakai-key: sk_test_speak_0000000000000000' \ -H 'x-access-token: eyJhbGciOiJIUzI1NiJ9.test-access-token.0000000000' ```
**`200` Success** The spec records this status code with no example body.

Create Automation

The API request creates an automation by sending an HTTP POST request to the specified endpoint. The request body is in JSON format and includes the name, description, runType, trigger, and action details. The trigger type is "folders" with specific folder IDs, and the action type is "magic-prompt" with associated details like title, assistantType, prompt, and assistantTemplateId. The last call to this request used the following payload with the raw request body type: ``` json { "name": "First Automation", "description": "Test", "action": { "type": "magic-prompt", "magicPrompt": { "prompt": "Summarize my meetings", "assistantType": "general" } }, "trigger": { "type": "folders", "folderIds": ["3711858e52a6"] } } ``` The response to the last execution returned a 200 status code with the following content in JSON format: ``` json { "status": "", "data": { "automationId": "", "message": "" } } ``` Additionally, related responses from other endpoints of this API also returned 200 status codes with similar data models, including email, access token, refresh token, totalCount, automation list, and trigger details. Please note that the specific values (such as automationId, email, accessToken, refreshToken, folderIds, etc.) have been intentionally masked for privacy. ##### 1\. **Instant Automation with AI Chat Action** **Body (JSON):** ``` json { "name": "Instant Folder Analysis", "description": "Automatically analyze documents in specific folders using AI assistant", "runType": "instant", "trigger": { "type": "folders", "folderIds": ["folder123", "folder456"] }, "action": { "type": "magic-prompt", "magicPrompt": { "title": "Document Analysis", "assistantType": "researcher", "prompt": "Analyze the document content and provide key insights, main topics, and actionable recommendations.", "assistantTemplateId": "template123" } }, "fieldId": "field789" } ``` ##### 2\. **Scheduled Automation with Translation Action** **Method:** `POST` **Body (JSON):** ``` json { "name": "Weekly Document Translation", "description": "Translate documents in selected folders every week", "runType": "schedule", "schedule": { "timePeriod": "last7days", "repeatAt": "09:00" }, "trigger": { "type": "folders", "folderIds": ["folder789", "folder101"] }, "action": { "type": "translation", "translation": { "targetLanguage": "spanish" } } } ``` ##### 3\. **Instant Automation with Custom AI Chat** **Method:** `POST` **Body (JSON):** ``` json { "name": "Sales Lead Analysis", "description": "Analyze potential leads and generate sales insights", "runType": "instant", "trigger": { "type": "folders", "folderIds": ["leads-folder"] }, "action": { "type": "magic-prompt", "magicPrompt": { "title": "Sales Intelligence", "assistantType": "sales", "prompt": "Review the lead information and provide: 1) Lead quality score (1-10), 2) Key pain points identified, 3) Recommended follow-up strategy, 4) Potential deal size estimate", "assistantTemplateId": "" } } } ``` ##### 4\. **Scheduled Automation with Marketing Analysis** **Method:** `POST` **Body (JSON):** ``` json { "name": "Daily Marketing Report", "description": "Generate daily marketing insights from campaign data", "runType": "schedule", "schedule": { "timePeriod": "yesterday", "repeatAt": "08:00" }, "trigger": { "type": "folders", "folderIds": ["marketing-data", "campaign-reports"] }, "action": { "type": "magic-prompt", "magicPrompt": { "title": "Marketing Daily Digest", "assistantType": "marketer", "prompt": "Analyze yesterday's marketing data and provide: 1) Top performing campaigns, 2) Key metrics summary, 3) Trends identified, 4) Recommendations for today", "assistantTemplateId": "marketing-template-001" } }, "fieldId": "marketing-field-123" } ``` #### **Available Enum Values:** **Run Types:** - `"instant"` - Executes immediately when triggered - `"schedule"` - Executes based on schedule configuration **Trigger Types:** - `"folders"` - Triggered by folder changes - `"tags"` - Triggered by tag changes - `"keywords"` - Triggered by keyword matches **Action Types:** - `"magic-prompt"` - AI-powered content analysis - `"translation"` - Document translation **Assistant Types (for magic-prompt):** - `"researcher"`, `"marketer"`, `"sales"`, `"general"`, `"recruiter"`, `"custom"` **Schedule Time Periods:** - `"today"`, `"yesterday"`, `"last7days"`, `"last14days"`, `"thisWeek"` These examples cover both instant and scheduled automation types with different actions. Make sure to replace the placeholder values (folder IDs, template IDs, etc.) with actual values from your system. **Request rules.** `schedule` is required only when `runType` is `schedule`, and then both `schedule.timePeriod` and `schedule.repeatAt` are required too. For any other `runType`, `schedule` is optional. Each step's config object has to match that step's `stepType`; a mismatched config is rejected with a 400. ### Request body Fields marked **required** are the ones the server rejects the request without. Anything conditional, where a field becomes required only alongside another, is described under Request rules above rather than marked here. | Field | Type | Description | | --- | --- | --- | | `name` | string, **required** | Name the automation. This is what you see in the automations list. required, max length 150 | | `description` | string | Describe what the automation does. You can send an empty string. optional, max length 1000, empty string allowed | | `isActive` | boolean | Set whether the automation runs after you create it. Leave it out and the automation is created active. optional. The schema.default(true) is not what produces this: the controller writes isActive only when you send a boolean, and the stored record defaults to true. | | `runOnceOnly` | string | Ignore this field. The server accepts it and then never reads it, so whatever you send has no effect. optional. unconstrained.strip, so any JSON type passes validation. The.strip has no runtime effect here because RequestValidation discards the validated value; the field is simply never read by the controller, so it is never persisted. | | `trigger` | object, **required** | Define the single event that starts the automation. required, unknown keys rejected | | `trigger.type` | string | Pick the kind of event that starts the automation. required inside trigger; values come from the AutomationTrigger list. One of: `folders`, `tags`, `keywords`, `composio`, `webhook`. | | `trigger.folderIds` | string[] | List the folders the trigger watches. Folder triggers need this; other trigger types do not send it. optional. The item schema is unconstrained: the code is the schema.optional with no.items, so any item type passes. | | `trigger.values` | string[] | Send the secondary list a trigger needs, such as the field IDs for a field-updated event. The server saves it verbatim. optional, items must be strings, empty strings allowed as items | | `trigger.provider` | string | Say which system owns the trigger. optional; the two values are written inline in the schema, not drawn from an enum. One of: `speak`, `composio`. | | `trigger.app` | string | Name the third-party app for a Composio trigger. optional, empty string allowed, no length cap | | `trigger.triggerSlug` | string | Give the provider's slug for the specific trigger you picked. optional, empty string allowed, no length cap | | `trigger.webhookId` | string | Attach an inbound webhook to the trigger by its ID. optional, empty string allowed, no length cap | | `trigger.childKey` | string | Point the trigger at a nested key inside the incoming payload. optional, empty string allowed, no length cap | | `trigger.connectedAccountId` | string | Identify the connected account the trigger authenticates through. optional, empty string allowed. Unlike triggers[].connectedAccountId this one is not trimmed and has no max length. | | `trigger.fieldValueMatches` | object[] | Only fire the trigger when the named fields hold the values you list. optional, max 20 entries | | `trigger.fieldMatchLogic` | string | Choose whether every fieldValueMatches entry has to match or just one. Leaving it out behaves like OR. optional. One of: `AND`, `OR`. | | `trigger.triggerConfig` | object | Pass provider-specific trigger settings, such as a watched folder ID. The server stores this object as sent and the provider catalog decides its shape. optional, unconstrained object | | `triggers` | object[] | Add extra alternative triggers. The automation runs when any one of them fires. Leave it out or send an empty array for a single-trigger automation. optional, max 10 entries | | `triggers[].type` | string | Pick the kind of event for this alternative trigger. optional here, unlike trigger.type which is required. One of: `folders`, `tags`, `keywords`, `composio`, `webhook`. | | `triggers[].folderIds` | string[] | List the folders this alternative trigger watches. optional, item schema unconstrained (the schema with no.items) | | `triggers[].values` | string[] | Send the secondary list this alternative trigger needs. optional, items must be strings, empty strings allowed as items | | `triggers[].provider` | string | Say which system owns this alternative trigger. optional. One of: `speak`, `composio`. | | `triggers[].app` | string | Name the third-party app for this alternative Composio trigger. optional, empty string allowed | | `triggers[].triggerSlug` | string | Give the provider's slug for this alternative trigger. optional, empty string allowed | | `triggers[].fieldValueMatches` | object[] | Only fire this alternative trigger when the named fields hold the values you list. optional, max 20 entries, same fieldId and values shape as trigger.fieldValueMatches | | `triggers[].fieldMatchLogic` | string | Choose whether every fieldValueMatches entry has to match or just one for this alternative trigger. optional. One of: `AND`, `OR`. | | `triggers[].triggerConfig` | object | Pass provider-specific settings for this alternative trigger. optional, unconstrained object | | `triggers[].connectedAccountId` | string | Identify the connected account this alternative trigger authenticates through. optional, trimmed, max length 100, empty string allowed | | `steps` | object[], **required** | List the steps the automation runs, in order. required, min 1 entry, max 20 entries | | `steps[].stepId` | string | Give the step an ID that is unique within this automation. Other steps reference it through dependsOn. required, trimmed, min length 1, max length 100 | | `steps[].stepType` | string | Say what kind of work the step does. This decides which config object the step must carry. required; values come from the AutomationStepType list. One of: `trigger`, `magic-prompt`, `translation`, `composio-action`, `filter`, `speak-upload`, `notify`, `outbound-webhook`, `condition`. | | `steps[].magicPrompt` | object | Configure an AI prompt step. required when stepType is "magic-prompt", rejected for any other stepType | | `steps[].translation` | object | Configure a translation step. required when stepType is "translation", rejected for any other stepType | | `steps[].filter` | object | Configure a filter step that stops the run when its rules do not match. required when stepType is "filter", rejected for any other stepType. Declared inline in automationStep, not as a shared fragment. | | `steps[].condition` | object | Configure a branching step that sends the run down a true or false path. required when stepType is "condition", rejected for any other stepType. Declared inline with the identical logic and rules shape as steps[].filter. | | `steps[].composio` | object | Configure a step that runs a Composio app action. required when stepType is "composio-action", rejected for any other stepType | | `steps[].speakUpload` | object | Configure a step that uploads media into Speak. required when stepType is "speak-upload", rejected for any other stepType | | `steps[].notify` | object | Configure a notification step. required when stepType is "notify", rejected for any other stepType | | `steps[].outboundWebhook` | object | Configure a step that calls a URL of yours. required when stepType is "outbound-webhook", rejected for any other stepType | | `steps[].dependsOn` | string[] | List the stepId values that must finish before this step runs. optional, items must be strings, no cap | | `steps[].branch` | string | For a step under a condition, say which branch it belongs to. optional. These are the strings "true" and "false", not booleans, so sending true instead of "true" returns a 400. One of: `true`, `false`. | | `runType` | string | Choose whether the automation runs as soon as its trigger fires or on a schedule. optional, empty string accepted. Values come from AutomationRunType plus an explicit ''. The declared default is 'instant', and although that default is not what reaches the controller, the effect holds anyway: createAutomation writes SCHEDULE only when runType strictly equals "schedule" and writes INSTANT otherwise. One of: `instant`, `schedule`, ``. | | `fieldId` | string | Ignore this field. The server validates it and then never reads it, so setting it has no effect. optional, no length cap. Neither createAutomation nor updateAutomation destructures a top-level fieldId from req.body, so it is never persisted. Field targeting is done per step through magicPrompt.fieldId and magicPrompt.fieldIds. | | `isUpdated` | boolean | Ignore this field. The server always marks a newly created automation as updated for the scheduler, whatever you send. optional. The controller does not read the client value; it hardcodes isUpdated: true on the new document. | | `schedule` | object | Set when a scheduled automation runs. required when runType is "schedule", otherwise optional | | `schedule.timePeriod` | string | Choose the window of media the scheduled run covers. required when runType is "schedule"; otherwise optional and an empty string is also accepted. Values come from AutomationScheduleTimePeriod. One of: `today`, `yesterday`, `last7days`, `last14days`, `thisWeek`. | | `schedule.repeatAt` | string | Set the time of day the scheduled run fires. required (trimmed, min length 1) when runType is "schedule"; otherwise optional and an empty string is accepted. No format is enforced by the schema. | Deeper nested fields are not listed. See the example response below for the full shape.
```bash curl -X POST 'https://api.speakai.co/v1/automations' \ -H 'x-speakai-key: sk_test_speak_0000000000000000' \ -H 'x-access-token: eyJhbGciOiJIUzI1NiJ9.test-access-token.0000000000' \ -H 'Content-Type: application/json' \ -d '{ "name": "Daily Marketing Report", "description": "Generate daily marketing insights from campaign data", "runType": "schedule", "schedule": { "timePeriod": "yesterday", "repeatAt": "08:00" }, "trigger": { "type": "folders", "folderIds": [ "marketing-data", "campaign-reports" ] }, "fieldId": "marketing-field-123", "steps": [ { "stepId": "step-1", "stepType": "magic-prompt", "magicPrompt": { "promptId": "prompt-123", "name": "Weekly summary" } } ] }' ```
**`200` Success** The spec records this status code with no example body.

Get Automation

The endpoint makes an HTTP GET request to retrieve a list of automations from the specified URL. The response of this request can be documented as a JSON schema: ``` json { "type": "object", "properties": { "status": { "type": "string" }, "data": { "type": "object", "properties": { "totalCount": { "type": "integer" }, "automationList": { "type": "array", "items": { "type": "object", "properties": { "trigger": { "type": "object", "properties": { "type": { "type": "string" }, "folderIds": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string" }, "folderId": { "type": "string" } } } }, "values": { "type": "array" } } }, "action": { "type": "object", "properties": { "magicPrompt": { "type": "object", "properties": { "title": { "type": "string" }, "assistantType": { "type": "string" }, "assistantTemplateId": { "type": "string" }, "prompt": { "type": "string" } } }, "type": { "type": "string" } } }, "name": { "type": "string" }, "description": { "type": "string" }, "runType": { "type": "string" }, "isActive": { "type": "boolean" }, "automationId": { "type": "string" }, "actionHistory": { "type": "array", "items": { "type": "object", "properties": { "type": { "type": "string" } } } }, "createdAt": { "type": "string" }, "updatedAt": { "type": "string" }, "history": { "type": "integer" } } } } } } } } ``` ### Parameters | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `automationId` | path | string | Yes | |
```bash curl -X GET 'https://api.speakai.co/v1/automations/97c57afd7ff1' \ -H 'x-speakai-key: sk_test_speak_0000000000000000' \ -H 'x-access-token: eyJhbGciOiJIUzI1NiJ9.test-access-token.0000000000' ```
**`200` Success** The spec records this status code with no example body.

Update Automation

#### Update Automation **Body (JSON):** ``` json { "name": "Updated Marketing Analysis", "description": "Enhanced automation with schedule and new assistant type", "isActive": true, "runType": "schedule", "schedule": { "timePeriod": "last7days", "repeatAt": "09:30" }, "trigger": { "type": "folders", "folderIds": ["folder123", "folder456"] }, "action": { "type": "magic-prompt", "magicPrompt": { "title": "Weekly Marketing Report", "assistantType": "marketer", "prompt": "Analyze marketing data and provide insights, trends, and recommendations", "assistantTemplateId": "marketing-template-001" } }, "fieldId": "marketing-field-123" } ``` #### **Key Points:** • **Path Parameter Required:** `automationId` must be included in the URL path • **Partial Updates Supported:** You can update only specific fields, not all fields are required • **Run Type Changes:** When changing to `"schedule"`, include the `schedule` object with `timePeriod` and `repeatAt` • **Trigger & Action Required:** Both `trigger` and `action` objects appear to be required in the request body • **Assistant Type:** The `assistantType` is for custom Assistant selected • **Status Control:** Use `isActive: true/false` to enable or disable the automation • **Optional Fields:** `fieldId` is optional and only used with magic-prompt actions • **Schedule Time Periods:** Available options - `"today"`, `"yesterday"`, `"last7days"`, `"last14days"`, `"thisWeek"` • **Action Types:** Support for `"magic-prompt"` and `"translation"` action types • **Trigger Types:** Support for `"folders"`, `"tags"`, and `"keywords"` trigger types • **Assistant Types:** Available options - `"researcher"`, `"marketer"`, `"sales"`, `"general"`, `"recruiter"`, `"custom"` **Request rules.** The same rules as creating an automation. `schedule` is required only when `runType` is `schedule`, and then both `schedule.timePeriod` and `schedule.repeatAt` are required. Each step's config object has to match that step's `stepType`. ### Parameters | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `automationId` | path | string | Yes | | ### Request body Fields marked **required** are the ones the server rejects the request without. Anything conditional, where a field becomes required only alongside another, is described under Request rules above rather than marked here. | Field | Type | Description | | --- | --- | --- | | `name` | string, **required** | Name the automation. This is what you see in the automations list. required, max length 150 | | `description` | string | Describe what the automation does. You can send an empty string. optional, max length 1000, empty string allowed | | `isActive` | boolean | Turn the automation on or off. Leave it out and the automation keeps whatever active state it already has. optional. The declared default is true, but that default never reaches the controller, which does if (isActive !== undefined) setter.$set.isActive = isActive. Omitting the field therefore leaves the stored value untouched; it does NOT reactivate a paused automation. | | `runOnceOnly` | string | Ignore this field. The server accepts it and then never reads it, so whatever you send has no effect. optional. unconstrained.strip, so any JSON type passes validation. The controller reads runOnceOnly only off the existing stored record, never off your request body, so you cannot set or clear it through this endpoint. | | `trigger` | object, **required** | Define the single event that starts the automation. required, unknown keys rejected | | `trigger.type` | string | Pick the kind of event that starts the automation. required inside trigger; values come from the AutomationTrigger list. One of: `folders`, `tags`, `keywords`, `composio`, `webhook`. | | `trigger.folderIds` | string[] | List the folders the trigger watches. optional, item schema is unconstrained (the schema with no.items) | | `trigger.values` | string[] | Send the secondary list a trigger needs, such as the field IDs for a field-updated event. optional, items must be strings, empty strings allowed as items | | `trigger.provider` | string | Say which system owns the trigger. optional. One of: `speak`, `composio`. | | `trigger.app` | string | Name the third-party app for a Composio trigger. optional, empty string allowed | | `trigger.triggerSlug` | string | Give the provider's slug for the specific trigger you picked. optional, empty string allowed | | `trigger.webhookId` | string | Attach an inbound webhook to the trigger by its ID. optional, empty string allowed | | `trigger.childKey` | string | Point the trigger at a nested key inside the incoming payload. optional, empty string allowed | | `trigger.connectedAccountId` | string | Identify the connected account the trigger authenticates through. optional, empty string allowed, not trimmed and no max length | | `trigger.fieldValueMatches` | object[] | Only fire the trigger when the named fields hold the values you list. optional, max 20 entries | | `trigger.fieldMatchLogic` | string | Choose whether every fieldValueMatches entry has to match or just one. Leaving it out behaves like OR. optional. One of: `AND`, `OR`. | | `trigger.triggerConfig` | object | Pass provider-specific trigger settings. The server stores this object as sent. optional, unconstrained object | | `triggers` | object[] | Add extra alternative triggers. The automation runs when any one of them fires. optional, max 10 entries | | `triggers[].type` | string | Pick the kind of event for this alternative trigger. optional here, unlike trigger.type which is required. One of: `folders`, `tags`, `keywords`, `composio`, `webhook`. | | `triggers[].folderIds` | string[] | List the folders this alternative trigger watches. optional, item schema unconstrained | | `triggers[].values` | string[] | Send the secondary list this alternative trigger needs. optional, items must be strings, empty strings allowed as items | | `triggers[].provider` | string | Say which system owns this alternative trigger. optional. One of: `speak`, `composio`. | | `triggers[].app` | string | Name the third-party app for this alternative Composio trigger. optional, empty string allowed | | `triggers[].triggerSlug` | string | Give the provider's slug for this alternative trigger. optional, empty string allowed | | `triggers[].fieldValueMatches` | object[] | Only fire this alternative trigger when the named fields hold the values you list. optional, max 20 entries, same fieldId and values shape as trigger.fieldValueMatches | | `triggers[].fieldMatchLogic` | string | Choose whether every fieldValueMatches entry has to match or just one for this alternative trigger. optional. One of: `AND`, `OR`. | | `triggers[].triggerConfig` | object | Pass provider-specific settings for this alternative trigger. optional, unconstrained object | | `triggers[].connectedAccountId` | string | Identify the connected account this alternative trigger authenticates through. optional, trimmed, max length 100, empty string allowed | | `steps` | object[], **required** | List the steps the automation runs, in order. This replaces the existing steps rather than merging with them. required, min 1 entry, max 20 entries | | `steps[].stepId` | string | Give the step an ID that is unique within this automation. Other steps reference it through dependsOn. required, trimmed, min length 1, max length 100 | | `steps[].stepType` | string | Say what kind of work the step does. This decides which config object the step must carry. required; values come from the AutomationStepType list. One of: `trigger`, `magic-prompt`, `translation`, `composio-action`, `filter`, `speak-upload`, `notify`, `outbound-webhook`, `condition`. | | `steps[].magicPrompt` | object | Configure an AI prompt step. required when stepType is "magic-prompt", rejected for any other stepType | | `steps[].translation` | object | Configure a translation step. required when stepType is "translation", rejected for any other stepType | | `steps[].filter` | object | Configure a filter step that stops the run when its rules do not match. required when stepType is "filter", rejected for any other stepType | | `steps[].condition` | object | Configure a branching step that sends the run down a true or false path. required when stepType is "condition", rejected for any other stepType; identical shape to steps[].filter | | `steps[].composio` | object | Configure a step that runs a Composio app action. required when stepType is "composio-action", rejected for any other stepType | | `steps[].speakUpload` | object | Configure a step that uploads media into Speak. required when stepType is "speak-upload", rejected for any other stepType | | `steps[].notify` | object | Configure a notification step. required when stepType is "notify", rejected for any other stepType | | `steps[].outboundWebhook` | object | Configure a step that calls a URL of yours. required when stepType is "outbound-webhook", rejected for any other stepType | | `steps[].dependsOn` | string[] | List the stepId values that must finish before this step runs. optional, items must be strings | | `steps[].branch` | string | For a step under a condition, say which branch it belongs to. optional. These are the strings "true" and "false", not booleans. One of: `true`, `false`. | | `runType` | string | Choose whether the automation runs as soon as its trigger fires or on a schedule. optional, empty string accepted. The controller writes SCHEDULE only when runType strictly equals "schedule" and writes INSTANT otherwise, so omitting it on a scheduled automation converts it back to instant and unsets its schedule. One of: `instant`, `schedule`, ``. | | `fieldId` | string | Ignore this field. The server validates it and then never reads it, so setting it has no effect. optional. updateAutomation does not destructure a top-level fieldId from req.body. | | `isUpdated` | boolean | Ignore this field. The server always flags the automation as updated for the scheduler on every update, whatever you send. optional. The controller hardcodes isUpdated: true in its $set and never reads the client value. | | `schedule` | object | Set when a scheduled automation runs. required when runType is "schedule", otherwise optional. When runType is not "schedule" the controller unsets any stored schedule. | | `schedule.timePeriod` | string | Choose the window of media the scheduled run covers. required when runType is "schedule"; otherwise optional and an empty string is also accepted. Values come from AutomationScheduleTimePeriod. One of: `today`, `yesterday`, `last7days`, `last14days`, `thisWeek`. | | `schedule.repeatAt` | string | Set the time of day the scheduled run fires. required (trimmed, min length 1) when runType is "schedule"; otherwise optional and an empty string is accepted. No format is enforced. | Deeper nested fields are not listed. See the example response below for the full shape.
```bash curl -X PUT 'https://api.speakai.co/v1/automations/AUTOMATION_ID' \ -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 Marketing Analysis", "description": "Enhanced automation with schedule and new assistant type", "isActive": true, "runType": "schedule", "schedule": { "timePeriod": "last7days", "repeatAt": "09:30" }, "trigger": { "type": "folders", "folderIds": [ "folder123", "folder456" ] }, "fieldId": "marketing-field-123", "steps": [ { "stepId": "step-1", "stepType": "magic-prompt", "magicPrompt": { "promptId": "prompt-123", "name": "Weekly summary" } } ] }' ```
**`200` Success** The spec records this status code with no example body.

Delete Automation

#### DELETE Automation This endpoint is used to delete a specific automation identified by its unique `automationId`. By sending a DELETE request to this endpoint, you can remove an automation from the system. ##### Request Format - **Method**: DELETE - **Endpoint**: `https://api.speakai.co/v1/automations/{automationId}` - **Path Parameter**: - `automationId` (string): The unique identifier of the automation that you wish to delete. This parameter is required and should be included in the URL. ##### Response Structure Upon successful deletion of the automation, the server will respond with a confirmation message. The expected response is typically structured as follows: - **Status Code**: `204 No Content` - Indicates that the request was successful and there is no additional content to send in the response body. In case of an error, the server may return a different status code along with an error message detailing the issue encountered. Ensure to handle responses appropriately based on the status code received. ### Parameters | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `automationId` | path | string | Yes | |
```bash curl -X DELETE 'https://api.speakai.co/v1/automations/null' \ -H 'x-speakai-key: sk_test_speak_0000000000000000' \ -H 'x-access-token: eyJhbGciOiJIUzI1NiJ9.test-access-token.0000000000' ```
**`200` Success** The spec records this status code with no example body.

Enable or Disable Automation

#### Update Automation Status This endpoint allows you to update the status of a specific automation to enable or disable by providing the automation ID in the URL path. ##### Request Body The request body should contain the following parameters: - `status`: (string) The new status for the automation. - `message`: (string) An optional message related to the status update. ##### Response The response will have a status code of 200 and a JSON body with the following structure: - `status`: (string) Indicates the status of the request. - `message`: (string) Provides additional information about the status. ##### Sample Response ``` json { "status": "", "message": "" } ``` ### Parameters | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `automationId` | path | string | Yes | |
```bash curl -X PUT 'https://api.speakai.co/v1/automations/status/97c57afd7ff1' \ -H 'x-speakai-key: sk_test_speak_0000000000000000' \ -H 'x-access-token: eyJhbGciOiJIUzI1NiJ9.test-access-token.0000000000' ```
**`200` Success** The spec records this status code with no example body.
## Related pages - [API reference](/api/) for the base URL, authentication, and the error format. - [Authenticate with the Speak AI API using access tokens](/api/authentication/) - [Upload audio and video to Speak AI and read insights](/api/media/) - [Create and update live transcription sessions in Speak AI](/api/live-transcription/) - [Analyze text notes with the Speak AI text endpoints](/api/text/) Get an API key on the [Speak AI developer page](https://app.speakai.co/developers?utm_source=docs&utm_medium=referral&utm_campaign=api-reference&utm_content=api-automations). # Embed Speak AI media and transcripts in your pages > Create and update Speak AI media embeds, check whether a piece of media is already embedded, and get the iframe URL to drop into your own page. Source: https://docs.speakai.co/api/embeds/ · Markdown: https://docs.speakai.co/api/embeds/index.md import EndpointIndex from "@/components/api/EndpointIndex.astro"; The Speak AI API exposes 5 media embeds 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](/api/authentication/). Embed Individual Media Player or the Folder (as repository) to make the insights, transcription and insights publicly visible or share with others. ## What can you do with the media embeds endpoints? Speak AI groups these 5 endpoints under the media embeds resource. Each entry below links to the full reference for that endpoint further down this page. | Method | Path | What it does | | --- | --- | --- | | `GET` | [`/embed`](#get-embed) | Check Embed | | `POST` | [`/embed`](#post-embed) | Create Embed | | `PUT` | [`/embed/{embedId}`](#put-embed-embed-id) | Update Embed | | `GET` | [`/embed/iframe`](#get-embed-iframe) | Get Iframe URL | | `GET` | [`/embed/privacyState`](#get-embed-privacy-state) | Check Embed Privacy Mode |

Check Embed

Checks if an embed already exits and returns status and token id. ### Parameters | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `mediaId` | query | string | No | ID of the media file to check for an embed |
```bash curl -X GET 'https://api.speakai.co/v1/embed' \ -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.meta` | object | | `data._id` | string | | `data.mediaId` | string | | `data.token` | string | | `data.privacyMode` | string | Deeper nested fields are not listed. See the example response below for the full shape. Example response, `application/json`. Arrays are shortened to one entry and long strings are cut. ```json { "status": "success", "data": { "meta": { "backgroundImg": "", "logo": "", "primaryColor": "", "isDataVizDownloadable": true, "isSEOIndexing": true, "isTitle": true, "isDescription": true, "callToActionButtons": [], "features": [ { "name": "transcript", "isActive": true } ] }, "_id": "61280763ec13780791f004b2", "mediaId": "e4e3079e3da9", "token": "daily-standup-august-23-2021-239819a49b2d", "privacyMode": "public" } } ```

Create Embed

Create an Interactive Media Player by passing the value for `mediaId` OR `folderIds` - By passing `mediaId` - Create an individual media player. - By passing `folderIds` - Create a repository for a folder to share with others. Make sure you have access to Shareable Media Repository in your subscription. **Request rules.** Send either a media id or a set of folder ids. A non-empty media id creates a single media player, and the request is rejected with 403 unless your plan includes the media player feature and your role allows sharing media. An empty or absent media id switches to the library path, which is rejected with 403 unless your plan includes the media library feature. A media id that matches no media file in your workspace returns 404. ### Request body Fields marked **required** are the ones the server rejects the request without. Anything conditional, where a field becomes required only alongside another, is described under Request rules above rather than marked here. | Field | Type | Description | | --- | --- | --- | | `mediaId` | string | The id of the media file you want to publish as a standalone player. Send it to create a media player. Leave it out, or send an empty string, when you want a shared library built from folders instead. If that media file already has a player, you get the existing one back instead of a duplicate. Optional. An empty string is allowed and is treated the same as leaving it out. | | `folderIds` | string[] | The folders whose media you want to publish together as a shared library. Send folder ids with no media id to create one. If a library already exists for the same folder ids in the same order, you get that one back instead of a duplicate. Whenever you send folder ids, they are recorded on the new embed and a password is generated for it, and that password comes back in the response. Optional. A list of folder ids, with no minimum or maximum length. Folder ids that match nothing in your workspace do not cause an error. |
```bash curl -X POST 'https://api.speakai.co/v1/embed' \ -H 'x-speakai-key: sk_test_speak_0000000000000000' \ -H 'x-access-token: eyJhbGciOiJIUzI1NiJ9.test-access-token.0000000000' \ -H 'Content-Type: application/json' \ -d '{}' ```
**`200` OK** Response body, `application/json`. | Field | Type | | --- | --- | | `status` | string | | `data` | object | | `data._id` | string | | `data.meta` | object | | `data.mediaId` | string | | `data.folderIds` | any[] | | `data.mediaType` | string | | `data.token` | string | | `data.privacyMode` | string | | `data.page` | string | | `data.iframe` | string | Deeper nested fields are not listed. See the example response below for the full shape. Example response (Create Embed), `application/json`. Arrays are shortened to one entry and long strings are cut. ```json { "status": "success", "data": { "_id": "65660bf97f916888ccc2f4ca", "meta": { "callToActionButtons": [ { "url": "https://speakai.co", "label": "Speak Ai" } ], "features": [ { "name": "labels", "isActive": true } ], "isDataVizDownloadable": false, "isDescription": false, "isSEOIndexing": false, "isRemarks": true, "isPromptAsk": true, "isPromptHistory": true, "isTitle": true, "primaryColor": "#c42860" }, "mediaId": "3afc714552cd", "folderIds": [], "mediaType": "video", "token": "how-to-edit-the-transcript-79a590aa126b", "privacyMode": "private", "page": "", "iframe": "" } } ```

Update Embed

Update an existing Embed Media Player. - Make sure to pass in path `embedId` to update your existing player **Request rules.** The embedId value in the path is required and must be a string. Nothing in the body is required on its own, but only meta, privacyMode, password and mediaId change anything. Password handling runs only when privacyMode is present: private stores the trimmed password you send, or an empty one if you send none, and any other privacy value clears the password. The media file's own privacy mode is changed only when mediaId is present and not empty, and a media id that matches no media file in your workspace returns 404. Inside meta.callToActionButtons every item must carry both url and label. Inside meta.features every item must carry both name and isActive. An embed id that matches no embed returns 404. ### Parameters | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `embedId` | path | string | Yes | | ### Request body Fields marked **required** are the ones the server rejects the request without. Anything conditional, where a field becomes required only alongside another, is described under Request rules above rather than marked here. | Field | Type | Description | | --- | --- | --- | | `meta` | object | The look and behavior of the embedded player. Every top level key you send is applied on its own, so keys you leave out keep their current values. Arrays and the lead capture group are the exception: sending one replaces the stored value in full. Optional. Unknown keys inside it are rejected with 400. | | `meta.backgroundImg` | string | The background image shown behind the player. Send an empty string to clear it. If you send a signed delivery URL it is converted back to its underlying storage location before being saved, and a delivery URL that cannot be converted leaves the current image unchanged. Optional. An empty string is allowed and clears the image. Null is accepted but ignored, so it leaves the current image unchanged. | | `meta.logo` | string | The logo shown on the player. Send an empty string to remove it. As with the background image, a signed delivery URL is converted back to its storage location before being saved, and one that cannot be converted leaves the current logo unchanged. Optional. An empty string is allowed and clears the logo. Null is accepted but ignored, so it leaves the current logo unchanged. | | `meta.callToActionButtons` | object[] | The buttons shown to viewers alongside the media. Send the full list you want, because this replaces any buttons already set. Send an empty array to remove them all. Optional. Each item must have both url and label, and both must be strings. | | `meta.features` | object[] | Which insight categories are switched on in the player, such as keywords, topics or sentiment. Send the full list you want, because this replaces the stored list. The list an embed starts with is built from the insights found on its media. Optional. Each item must have name and isActive. Only the name and the active state of each entry are stored. | | `meta.isTitle` | boolean | Set it to true to show the media title in the player and false to hide it. Optional. A new embed inherits this from your workspace player settings, which start it on. | | `meta.isDescription` | boolean | Set it to true to show the media description in the player and false to hide it. Optional. A new embed inherits this from your workspace player settings, which start it on. | | `meta.isRemarks` | boolean | Set it to true to let viewers see remarks and comments left on the media. Optional. A new embed inherits this from your workspace player settings, which start it off. | | `meta.isSEOIndexing` | boolean | Set it to true to let search engines index the shared page and false to keep it out of search results. Optional. A new embed inherits this from your workspace player settings, which start it on. | | `meta.isDataVizDownloadable` | boolean | Set it to true to let viewers download the charts and visualizations shown in the player. Optional. A new embed inherits this from your workspace player settings, which start it on. | | `meta.isMediaExport` | boolean | Set it to true to let viewers export or download the media itself. Optional. A new embed inherits this from your workspace player settings, which start it off. | | `meta.isPromptAsk` | boolean | Set it to true to let viewers ask the AI assistant questions about the media from inside the player. Optional. A new embed inherits this from your workspace player settings, which start it off. | | `meta.isPromptHistory` | boolean | Set it to true to show viewers the earlier questions and answers from the assistant, and false to start every visitor with a clean slate. Optional. A new embed inherits this from your workspace player settings, which start it off. | | `meta.chatWelcomeMessage` | string | The greeting the AI assistant opens with in the player. Send an empty string to use no greeting. Optional. An empty string is allowed, and null is accepted and stored as no greeting. | | `meta.assistantTemplateId` | string | The saved assistant template the player's AI chat answers with, so viewers get the tone and instructions you have already set up. Send an empty string to fall back to the default assistant. Optional. An empty string is allowed, and null is accepted and stored as no template. | | `meta.primaryColor` | string | The accent color used for controls and highlights in the player. Send a CSS color value such as a hex code. Optional. An empty string is allowed. A new embed inherits this from your workspace player settings, which start it at a dark grey. The value is stored as sent and is not checked for a valid color. | | `meta.titleColor` | string | The color of the title text in the player. Send a CSS color value such as a hex code. Optional. An empty string is allowed. A new embed inherits this from your workspace player settings, which start it at a dark grey. The value is stored as sent and is not checked for a valid color. | | `meta.leadCapture` | object | Asks viewers for their email before they can watch, so you can see who is viewing. Send the full set of lead capture values you want, because sending this replaces the whole group rather than merging into it. It stays inactive until you switch it on. Optional. Unknown keys inside it are rejected with 400. | | `privacyMode` | string | Controls whether viewers need a password. Send private together with the password you want, or send public to remove password protection. Leave this out and the current password is left alone, so an update that only changes appearance cannot wipe it. When you also send a media id, the media file itself is switched to the same privacy mode. Optional. An empty string is allowed. The value is not checked against the list, and anything other than private is treated as public and clears the password. One of: `public`, `private`. | | `password` | string | The password viewers must enter. It is used only when you also send a privacy mode of private, and surrounding spaces are trimmed. Send private with no password, or with an empty string, and the embed ends up with no password at all. Optional. An empty string is allowed. Ignored unless privacyMode is present. | | `mediaId` | string | The media file behind this embed. Send it when you are changing the privacy mode, so the media file is switched over too. It does not move the embed to a different media file. Optional. An empty string is allowed and is treated as not sent. A non-empty value that does not match a media file in your workspace returns 404. | | `folderIds` | string[] | Accepted but ignored. This endpoint does not change which folders a library embed covers, so sending different folder ids has no effect. Optional. A list of folder ids. | | `mediaType` | string | Accepted but ignored. The media type is set when the embed is created and this endpoint does not change it. Optional. An empty string is allowed. The value is not checked against the list. One of: `audio`, `video`, `text`, `media`, `csv`. | | `embedType` | string | Accepted but ignored. Whether the embed is a single media player, a folder library or a dashboard is decided when it is created and cannot be switched here. Optional. An empty string is allowed. The value is not checked against the list. One of: `mediaPlayer`, `repository`, `dashboard`. | | `size` | string | Accepted but ignored. The stored iframe size is not changed by this endpoint. Optional. An empty string is allowed. | | `isActive` | boolean | Accepted but ignored. This endpoint does not turn an embed on or off. Optional. | | `_id` | string | The embed's own id. The Speak app sends it when it posts a whole embed object back. The embed that gets updated is always the one named in the path, so you can leave this out. | Deeper nested fields are not listed. See the example response below for the full shape.
```bash curl -X PUT 'https://api.speakai.co/v1/embed/65660bf97f916888ccc2f4ca' \ -H 'x-speakai-key: sk_test_speak_0000000000000000' \ -H 'x-access-token: eyJhbGciOiJIUzI1NiJ9.test-access-token.0000000000' \ -H 'Content-Type: application/json' \ -d '{}' ```
**`200` OK** Response body, `application/json`. | Field | Type | | --- | --- | | `status` | string | | `data` | object | | `data._id` | string | | `data.meta` | object | | `data.mediaId` | string | | `data.folderIds` | any[] | | `data.embedType` | string | | `data.isActive` | boolean | | `data.isDeleted` | boolean | | `data.analytics` | any[] | | `data.companyId` | string | | `data.userId` | string | | `data.mediaType` | string | | `data.token` | string | | `data.createdAt` | string (date-time) | | `data.updatedAt` | string (date-time) | | `data.__v` | integer | | `data.password` | string | Deeper nested fields are not listed. See the example response below for the full shape. Example response (Update Embed), `application/json`. Arrays are shortened to one entry and long strings are cut. ```json { "status": "success", "data": { "_id": "65660bf97f916888ccc2f4ca", "meta": { "backgroundImg": "", "callToActionButtons": [ { "url": "https://speakai.co", "label": "Speak Ai" } ], "features": [ { "name": "keywords", "isActive": true } ], "isDataVizDownloadable": true, "isDescription": true, "isSEOIndexing": true, "isRemarks": true, "isPromptAsk": false, "isPromptHistory": true, "isTitle": true, "logo": "", "primaryColor": "#c42860" }, "mediaId": "3afc714552cd", "folderIds": [], "embedType": "mediaPlayer", "isActive": true, "isDeleted": false, "analytics": [], "companyId": "5e21c8dd2d77242c64214816", "userId": "5d03a9d5d4bca272e9c8cf89", "mediaType": "video", "token": "how-to-edit-the-transcript-79a590aa126b", "createdAt": "2023-11-28T15:49:13.511Z", "updatedAt": "2023-11-28T15:55:58.403Z", "__v": 0, "password": "" } } ```

Get Iframe URL

Get Embed Iframe and Page URL Either pass `mediaId` for individaul file. OR Pass `folderId` for a repository URLs. ### Parameters | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `mediaId` | query | string | No | Either Folder ID or Media ID | | `folderId` | query | string | No | Either Folder ID or Media ID |
```bash curl -X GET 'https://api.speakai.co/v1/embed/iframe?mediaId='\'''\''' \ -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.iframe` | string | | `data.page` | string | Example response (Get Iframe URL), `application/json`. Arrays are shortened to one entry and long strings are cut. ```json { "status": "success", "data": { "iframe": "", "page": "https://recorder.speakai.co/recorder-9-4fb7713e267a" } } ```
**`404` Not Found** Response body, `application/json`. | Field | Type | | --- | --- | | `status` | string | | `requestId` | string | | `code` | integer | | `message` | string | | `hints` | string[] | Example response, `application/json`. ```json { "status": "failed", "requestId": "1babfc3a-9f8f-4c22-83c8-0367cb2b7cb1", "code": 404, "message": "Recorder Id not found!", "hints": [ "The requested operation failed because a resource associated with the request could not be found." ] } ```

Verify Password

User to grant\prohobit access to a password-protected recorder ### Request body Fields marked **required** are the ones the server rejects the request without. Anything conditional, where a field becomes required only alongside another, is described under Request rules above rather than marked here. | Field | Type | Description | | --- | --- | --- | | `token` | string, **required** | Pass the recorder's embed token, the same token that appears in the public recorder URL. Required. An empty string is rejected. A token that matches no recorder returns 404 with 'Recorder not found!'. | | `password` | string, **required** | Pass the password a viewer typed so Speak can check it against the recorder. Required. An empty string is rejected. Unlike most string fields on the recorder endpoints this one is a plain the schema with no.trim, so leading and trailing spaces are compared as typed. |
```bash curl -X POST 'https://api.speakai.co/v1/recorder/verify' \ -H 'x-speakai-key: sk_test_speak_0000000000000000' \ -H 'x-access-token: eyJhbGciOiJIUzI1NiJ9.test-access-token.0000000000' \ -H 'Content-Type: application/json' \ -d '{ "token": "token", "password": "123" }' ```
**`404` Not Found** Response body, `application/json`. | Field | Type | | --- | --- | | `status` | string | | `requestId` | string | | `code` | integer | | `message` | string | | `hints` | string[] | Example response, `application/json`. ```json { "status": "failed", "requestId": "32732927-3809-4973-a82b-82663013d36f", "code": 404, "message": "Recorder not found!", "hints": [ "The requested operation failed because a resource associated with the request could not be found." ] } ```
## Related pages - [API reference](/api/) for the base URL, authentication, and the error format. - [Authenticate with the Speak AI API using access tokens](/api/authentication/) - [Upload audio and video to Speak AI and read insights](/api/media/) - [Create and update live transcription sessions in Speak AI](/api/live-transcription/) - [Analyze text notes with the Speak AI text endpoints](/api/text/) Get an API key on the [Speak AI developer page](https://app.speakai.co/developers?utm_source=docs&utm_medium=referral&utm_campaign=api-reference&utm_content=api-recorders). # Analyze text notes with the Speak AI text endpoints > Create a text note in Speak AI, read the insights generated from it, update the note when its content changes, and delete it when you are finished. Source: https://docs.speakai.co/api/text/ · Markdown: https://docs.speakai.co/api/text/index.md import EndpointIndex from "@/components/api/EndpointIndex.astro"; The Speak AI API exposes 4 text 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](/api/authentication/). Text notes are operable as well, complete listing of media can be requested, insight to particular analyzed media, analytics on top of our analysis, and of course, you can delete your note ! Attention: `id` is the required parameter here instead of `mediaId` as in Media functionalities Re-analyzing a text note runs through `GET /media/reanalyze/{mediaId}`, which covers text notes and uploaded files alike. It is documented on the [Media](/api/media/) page. ## What can you do with the text endpoints? Speak AI groups these 4 endpoints under the text resource. Each entry below links to the full reference for that endpoint further down this page. | Method | Path | What it does | | --- | --- | --- | | `DELETE` | [`/text/{mediaId}`](#delete-text-media-id) | Delete Text Note | | `POST` | [`/text/create`](#post-text-create) | Create Text note | | `GET` | [`/text/insight/{mediaId}`](#get-text-insight-media-id) | Text Insight | | `PUT` | [`/text/update/{mediaId}`](#put-text-update-media-id) | Update Text Note |

Delete Text Note

#### DELETE Request to Remove a Text Resource This endpoint is used to delete a specific text resource identified by its unique `mediaId`. By sending a DELETE request to this endpoint, the client can remove the text resource from the server. ##### Request Parameters - **mediaId** (path parameter): A unique identifier for the text resource that you wish to delete. This is a required parameter and should be included in the URL. ##### Response Structure Upon successful deletion of the text resource, the server will respond with a status code indicating the outcome of the request: - **204 No Content**: Indicates that the resource was successfully deleted and there is no additional content to return. - **404 Not Found**: Indicates that the specified `mediaId` does not correspond to any existing resource. ##### Example To delete a text resource with a specific `mediaId`, the request would look like: ```text DELETE https://api.speakai.co/v1/text/12345 ``` This request would attempt to delete the text resource with the ID `12345`. Make sure to handle the response appropriately to confirm the deletion or to manage any errors that may arise. ### Parameters | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `mediaId` | path | string | Yes | |
```bash curl -X DELETE 'https://api.speakai.co/v1/text/3722e7826784' \ -H 'x-speakai-key: sk_test_speak_0000000000000000' \ -H 'x-access-token: eyJhbGciOiJIUzI1NiJ9.test-access-token.0000000000' ```
**`200` Success** The spec records this status code with no example body.

Create Text note

#### PARAMETERS The difference between `rawText` and `text.` `text` (required): Text is an HTML field to display content on the editor. It helps users to identify `bold,` `italic` or any other editor functionality. **Important:** If you don't have an HTML editor in your application, you can pass normal text content. `rawText` (required): This helps Speak AI to analyze text notes. `remark`: If you want to pass any remarks from the user to display on Speak and also in your application. ``` json userId: String; // optional folderId: String, // optional name: String, // required, description: string, // optional tags: [], // optional text: "HTML content", // required rawText: "raw text content", // required remark: "string", // optional ``` ##### Webhook Callback URL: - If you created a webhook for text events and want to receive a callback to a specific URL for this text note, you can assign `callbackUrl` - `string` in a `req.body`. - Speak will consider the `callbackUrl` and will skip the callbackUrl created via Webhook API. --- #### Response You can select from the examples attached to this API endpoint or find below: ```text { "status": "success", "data": { "mediaId": "xxxxxxxxx", "folderId": "" } } ``` **Request rules.** Nothing in the body is unconditionally required. The body is validated, and any property not listed below is rejected with a 400, so do not send extra keys. In practice: send name, text and rawText. If you omit name, the note is titled with the creation timestamp in YYYY-MM-DD HH:mm:ss form. If rawText is missing or empty the note is saved but never analyzed, so you get no insights, sentiment, keywords or search embeddings for it. folderId: if you omit it or send an empty string, the note goes into the first folder belonging to the note owner, and one is created for them if they have none. The folder actually used comes back in the response. count: if you omit it, word and character counts are calculated from rawText. If you send it, your numbers are stored as given and no counting is done. tags: only the comma separated string form is saved on this endpoint. An array passes validation and is then discarded, leaving the note with no tags. uploadType: send zapier to have analysis run in the background and to run your automations against the new note. With any other value, Speak finishes analyzing before it answers, so the request takes longer and a note analyzed webhook fires before you get the response. Billing: if the workspace has no text note credit left, the request still returns HTTP 200, but the body carries a failed status with code 402 and no note is created. ### Request body Fields marked **required** are the ones the server rejects the request without. Anything conditional, where a field becomes required only alongside another, is described under Request rules above rather than marked here. | Field | Type | Description | | --- | --- | --- | | `name` | string | Names the note. Surrounding whitespace is removed. If you leave it out, Speak titles the note with the creation timestamp in YYYY-MM-DD HH:mm:ss form. String. Optional. Stored trimmed. Falls back to a generated timestamp title. | | `text` | string | Holds the display copy of the note. It can contain HTML so an editor keeps bold, italic and other formatting. If your application has no rich text editor, send the same plain content you send in rawText. This copy is stored and shown, but it is not what gets analyzed. String. Empty string allowed. Stored trimmed. Stored as an empty string if you omit it. | | `rawText` | string | Carries the plain text that Speak analyzes. This is what produces insights, sentiment, keywords and the search index for the note, so send it whenever you want the note analyzed. If it is empty, the note is saved but no analysis runs. String. Empty string allowed. Stored trimmed. Stored as an empty string if you omit it. | | `description` | string | Adds a short summary shown alongside the note. String. Empty string allowed. Stored trimmed. Defaults to an empty string. | | `tags` | string | Labels the note. Send a comma separated string such as "sales,q3" and Speak splits it into separate tags. A string with no comma becomes a single tag. An array passes validation on this endpoint but is not saved, so use the string form when you create a note. String or array. Only the string form is stored on create. Split on commas. An empty string leaves the note with no tags. | | `folderId` | string | Files the note in one of your folders. Leave it out or send an empty string and Speak puts the note in the first folder belonging to the owner, creating one if they have none. The folder that was used comes back in the response. String. Empty string allowed. | | `fields` | object[] | Sets values for the custom fields on the note. Each entry takes an id and a value. Entries whose id does not match a custom field in your workspace are dropped and the remaining ones are saved. If none of the ids match, no custom field values are saved. Array of objects shaped \{id, value\}. Every entry must carry an id. Value can be any JSON type. Unknown ids are silently removed. | | `count` | object | Overrides the word and character counts stored on the note. Send wordCount, characterCount and characterCountWithoutSpace. Leave it out and Speak counts them from rawText for you. Object. Keys read: wordCount, characterCount, characterCountWithoutSpace, all numbers. Any object shape is accepted, and keys you leave out are stored as empty. | | `createdAt` | string | Sets the creation date recorded on the note, so you can backdate content you are importing. Defaults to the time of the request. Date. Accepts an ISO 8601 date string or a timestamp. | | `callbackUrl` | string | Stores a webhook delivery URL on the note. Speak uses it in place of the URL configured on your webhook only for deliveries that carry the whole note record, which on this endpoint means the failure event sent if the note cannot be saved. The note created and note analyzed events from this endpoint always go to the URL configured on your webhook. String. Empty string allowed. Stored exactly as sent, without trimming. Stored as an empty string if you omit it. | | `userId` | string | Assigns the new note to another user in your workspace, using that user's 24 character id. Leave it out and the note belongs to the account making the request. The owner also decides which folder is used when you do not name one. String. Must be the 24 character id of a user. Any other value fails the save and returns a 500. | | `uploadType` | string | Records where the note came from. Send zapier to have analysis run in the background and to run your automations against the new note. With any other value, Speak analyzes the note before it answers. If you leave it out, the note records web. String. Defaults to web. Only the value zapier changes behavior. | | `remark` | string | A free text remark on the note. Postman's example sends this on create, but the value is not saved at creation time. Add a remark by updating the note afterwards. |
```bash curl -X POST 'https://api.speakai.co/v1/text/create' \ -H 'x-speakai-key: sk_test_speak_0000000000000000' \ -H 'x-access-token: eyJhbGciOiJIUzI1NiJ9.test-access-token.0000000000' \ -H 'Content-Type: application/json' \ -d '{}' ```
**`200` OK** Response body, `application/json`. | Field | Type | | --- | --- | | `status` | string | | `data` | object | | `data.mediaId` | string | Example response (Create Text note), `application/json`. ```json { "status": "success", "data": { "mediaId": "c55125c7cc32" } } ```

Text Insight

You need to call this API to find the insights from your text note. Please check an example find the return response and an object. #### Response ```text { "status": "success", "data": { "count": { "wordCount": 0, "characterCount": 0, "characterCountWithoutSpace": 0 }, "insight": { "intents": { "needs": [ { "id": 32, "text": "Sentence 1" } ], "wants": [ { "id": 50, "text": "Sentence 1" } ] }, "state": "processed", "updatedAt": "2021-04-13T00:30:26.720Z", "arts": [ { "isDeleted": false, "instances": [ { "endChar": 512, "startChar": 489 } ], "isCustom": false, "name": "xxxxx", "id": 0 }, { "isDeleted": false, "instances": [ { "endChar": 1397, "startChar": 1386 } ], "isCustom": false, "name": "xxxxxxx", "id": 1 } ], "brands": [ { "isDeleted": false, "instances": [ { "endChar": 202, "startChar": 198 }, { "endChar": 356, "startChar": 352 } ], "isCustom": false, "name": "xxxxx", "id": 0 }, { "isDeleted": false, "instances": [ { "endChar": 333, "startChar": 310 } ], "isCustom": false, "name": "xxxxx", "id": 1 }, { "isDeleted": false, "instances": [ { "endChar": 721, "startChar": 713 }, { "endChar": 3009, "startChar": 3001 }, { "endChar": 6074, "startChar": 6066 }, { "endChar": 6391, "startChar": 6383 }, { "endChar": 6615, "startChar": 6607 }, { "endChar": 6854, "startChar": 6846 }, { "endChar": 6914, "startChar": 6906 } ], "isCustom": false, "name": "xxxxx", "id": 2 } ], "cardinals": [ { "isDeleted": false, "instances": [ { "endChar": 1797, "startChar": 1794 }, { "endChar": 1850, "startChar": 1847 } ], "isCustom": false, "name": "xxxxx", "id": 0 }, { "isDeleted": false, "instances": [ { "endChar": 3028, "startChar": 3022 } ], "isCustom": false, "name": "xxxxx", "id": 1 } ], "dates": [ { "isDeleted": false, "instances": [ { "endChar": 755, "startChar": 739 } ], "isCustom": false, "name": "xxxxx", "id": 0 } ], "events": [ { "isDeleted": false, "instances": [ { "endChar": 755, "startChar": 739 } ], "isCustom": false, "name": "xxxxx", "id": 0 } ], "facs": [ { "isDeleted": false, "instances": [ { "endChar": 755, "startChar": 739 } ], "isCustom": false, "name": "xxxxx", "id": 0 } ], "geopolitical": [ { "isDeleted": false, "instances": [ { "endChar": 172, "startChar": 163 } ], "isCustom": false, "name": "xxxxx", "id": 0 } ], "keywords": [ { "isDeleted": false, "instances": [ { "endChar": 172, "startChar": 163 } ], "isCustom": false, "name": "xxxxx", "id": 0 } ], "languages": [ { "isDeleted": false, "instances": [ { "endChar": 172, "startChar": 163 } ], "isCustom": false, "name": "xxxxx", "id": 0 } ], "laws": [ { "isDeleted": false, "instances": [ { "endChar": 172, "startChar": 163 } ], "isCustom": false, "name": "xxxxx", "id": 0 } ], "locations": [ { "isDeleted": false, "instances": [ { "endChar": 172, "startChar": 163 } ], "isCustom": false, "name": "xxxxx", "id": 0 } ], "money": [ { "isDeleted": false, "instances": [ { "endChar": 172, "startChar": 163 } ], "isCustom": false, "name": "xxxxx", "id": 0 } ], "nationalities": [ { "isDeleted": false, "instances": [ { "endChar": 1284, "startChar": 1275 } ], "isCustom": false, "name": "Republish", "id": 0 } ], "ordinals": [ { "isDeleted": false, "instances": [ { "endChar": 2812, "startChar": 2807 }, { "endChar": 2851, "startChar": 2846 } ], "isCustom": false, "name": "xxxxx", "id": 0 } ], "people": [ { "isDeleted": false, "instances": [ { "endChar": 196, "startChar": 188 }, { "endChar": 350, "startChar": 342 } ], "isCustom": false, "name": "xxxxx", "id": 0 } ], "percentages": [ { "isDeleted": false, "instances": [ { "endChar": 196, "startChar": 188 }, { "endChar": 350, "startChar": 342 } ], "isCustom": false, "name": "xxxxx", "id": 0 } ], "products": [ { "isDeleted": false, "instances": [ { "endChar": 4930, "startChar": 4926 } ], "isCustom": false, "name": "xxxxx", "id": 0 } ], "quantities": [ { "isDeleted": false, "instances": [ { "endChar": 4930, "startChar": 4926 } ], "isCustom": false, "name": "xxxxx", "id": 0 } ], "times": [ { "isDeleted": false, "instances": [ { "endChar": 4930, "startChar": 4926 } ], "isCustom": false, "name": "xxxxx", "id": 0 } ], "topics": [] }, "description": "xxxxx", "tags": [ "tag1", "tag2" ], "text": "Hello, This is sample text", "rawText": "Hello, This is sample text", "state": "processed", "assignTo": "", "remark": "", "sentiment": [ { "document": { "Negative": 0.00000, "Neutral": 0.00000, "Positive": 0.00000 }, "sentences": [ { "id": 1, "instances": [], "score": { "compound": 0, "neg": 0, "neu": 1, "pos": 0 }, "text": "Sentence 1" }, { "id": 2, "instances": [], "score": { "compound": 0, "neg": 0, "neu": 1, "pos": 0 }, "text": "Sentence 2" }, { "id": 3, "instances": [], "score": { "compound": 0.7269, "neg": 0.037, "neu": 0.809, "pos": 0.154 }, "text": "Sentence 3" } ] } ], "createdAt": "2021-04-13T00:30:26.721Z", "originalCreatedAt": "2021-04-13T00:30:26.721Z", "name": "xxxxx" } } ``` ### Parameters | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `mediaId` | path | string | Yes | |
```bash curl -X GET 'https://api.speakai.co/v1/text/insight/c1f4c82dec47' \ -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.count` | object | | `data.insight` | object | | `data.description` | string | | `data.tags` | string[] | | `data.text` | string | | `data.rawText` | string | | `data.state` | string | | `data.assignTo` | string | | `data.remark` | string | | `data.sentiment` | object[] | | `data.createdAt` | string (date-time) | | `data.originalCreatedAt` | string (date-time) | | `data.name` | string | Deeper nested fields are not listed. See the example response below for the full shape. Example response (Text Insight), `application/json`. Arrays are shortened to one entry and long strings are cut. ```json { "status": "success", "data": { "count": { "wordCount": 0, "characterCount": 0, "characterCountWithoutSpace": 0 }, "insight": { "intents": { "needs": [ { "id": 32, "text": "Sentence 1" } ], "wants": [ { "id": 50, "text": "Sentence 1" } ] }, "state": "processed", "updatedAt": "2021-04-13T00:30:26.720Z", "arts": [ { "isDeleted": false, "instances": [ { "endChar": 512, "startChar": 489 } ], "isCustom": false, "name": "xxxxx", "id": 0 } ], "brands": [ { "isDeleted": false, "instances": [ { "endChar": 202, "startChar": 198 } ], "isCustom": false, "name": "xxxxx", "id": 0 } ], "cardinals": [ { "isDeleted": false, "instances": [ { "endChar": 1797, "startChar": 1794 } ], "isCustom": false, "name": "xxxxx", "id": 0 } ], "dates": [ { "isDeleted": false, "instances": [ { "endChar": 755, "startChar": 739 } ], "isCustom": false, "name": "xxxxx", "id": 0 } ], "events": [ { "isDeleted": false, "instances": [ { "endChar": 755, "startChar": 739 } ], "isCustom": false, "name": "xxxxx", "id": 0 } ], "facs": [ { "isDeleted": false, "instances": [ { "endChar": 755, "startChar": 739 } ], "isCustom": false, "name": "xxxxx", "id": 0 } ], "geopolitical": [ { "isDeleted": false, "instances": [ { "endChar": 172, "startChar": 163 } ], "isCustom": false, "name": "xxxxx", "id": 0 } ], "keywords": [ { "isDeleted": false, "instances": [ { "endChar": 172, "startChar": 163 } ], "isCustom": false, "name": "xxxxx", "id": 0 } ], "languages": [ { "isDeleted": false, "instances": [ { "endChar": 172, "startChar": 163 } ], "isCustom": false, "name": "xxxxx", "id": 0 } ], "laws": [ { "isDeleted": false, "instances": [ { "endChar": 172, "startChar": 163 } ], "isCustom": false, "name": "xxxxx", "id": 0 } ], "locations": [ { "isDeleted": false, "instances": [ { "endChar": 172, "startChar": 163 } ], "isCustom": false, "name": "xxxxx", "id": 0 } ], "money": [ { "isDeleted": false, "instances": [ { "endChar": 172, "startChar": 163 } ], "isCustom": false, "name": "xxxxx", "id": 0 } ], "nationalities": [ { "isDeleted": false, "instances": [ { "endChar": 1284, "startChar": 1275 } ], "isCustom": false, "name": "Republish", "id": 0 } ], "ordinals": [ { "isDeleted": false, "instances": [ { "endChar": 2812, "startChar": 2807 } ], "isCustom": false, "name": "xxxxx", "id": 0 } ], "people": [ { "isDeleted": false, "instances": [ { "endChar": 196, "startChar": 188 } ], "isCustom": false, "name": "xxxxx", "id": 0 } ], "percentages": [ { "isDeleted": false, "instances": [ { "endChar": 196, "startChar": 188 } ], "isCustom": false, "name": "xxxxx", "id": 0 } ], "products": [ { "isDeleted": false, "instances": [ { "endChar": 4930, "startChar": 4926 } ], "isCustom": false, "name": "xxxxx", "id": 0 } ], "quantities": [ { "isDeleted": false, "instances": [ { "endChar": 4930, "startChar": 4926 } ], "isCustom": false, "name": "xxxxx", "id": 0 } ], "times": [ { "isDeleted": false, "instances": [ { "endChar": 4930, "startChar": 4926 } ], "isCustom": false, "name": "xxxxx", "id": 0 } ], "topics": [] }, "description": "xxxxx", "tags": [ "tag1" ], "text": "Hello, This is sample text", "rawText": "Hello, This is sample text", "state": "processed", "assignTo": "", "remark": "", "sentiment": [ { "document": { "Negative": 0, "Neutral": 0, "Positive": 0 }, "sentences": [ { "id": 1, "instances": [], "score": { "compound": 0, "neg": 0, "neu": 1, "pos": 0 }, "text": "Sentence 1" } ] } ], "createdAt": "2021-04-13T00:30:26.721Z", "originalCreatedAt": "2021-04-13T00:30:26.721Z", "name": "xxxxx" } } ```

Update Text Note

#### PARAMETERS If you want to update your customer unique `medicalId` key then you can pass as a `string`. The difference between `rawText` and `text` `text` (required): Text is an HTML field to display content on the editor. It helps users to identify `bold`, `italic` or any other editor functionality. **Important:** If you don't have HTML editor in your application then you can pass normal text content. `rawText` (required): This helps Speak AI to analyze text notes. `remark`: If you want to pass any remarks from the user to display on Speak and also in your application. ```text medicalId: String, // optional name: String, // required, description: string, // optional tags: [], // optional text: "HTML content", // required rawText: "raw text content", // required remark: "string", // optional ``` **Request rules.** The mediaId in the path is required and must belong to a note in your workspace that is not deleted. If it does not, you get a 404 before the controller runs. Body validation happens first, so a bad body returns a 400 before that check. Nothing in the body is unconditionally required, but any property not listed below is rejected with a 400, so do not send extra keys. This endpoint replaces the note body rather than patching it. rawText drives the whole write: Speak counts the words in the rawText you send, and if that count is zero, both rawText and text are cleared on the note and the stored sentiment is emptied. That happens whether you sent an empty rawText or left it out entirely, and it happens even if you sent a count object with a non-zero wordCount. Always send the full note body you want to keep. description, manageBy, remark, status and createdAt are only written when you send a value that is not empty. Sending an empty string for any of them leaves the current value in place instead of clearing it. tags behaves differently: an empty string leaves the current tags alone, but an empty array is written and clears them. Omitting name leaves the stored title unchanged. Set isAutoSave to true for background editor saves. That skips reanalysis and skips the in-app update notification. On a normal save, Speak reanalyzes the note only if it has not been processed before, and a note analyzed webhook is attempted when it does. ### Parameters | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `mediaId` | path | string | Yes | | ### Request body Fields marked **required** are the ones the server rejects the request without. Anything conditional, where a field becomes required only alongside another, is described under Request rules above rather than marked here. | Field | Type | Description | | --- | --- | --- | | `rawText` | string | Replaces the plain text that Speak analyzes. This endpoint replaces rather than patches, so if you send nothing here, or send text with no words in it, Speak clears both the analyzed text and the display text on the note and empties its stored sentiment. Always send the complete note body you want to keep. String. Empty string allowed. Stored trimmed. The word count derived from this value decides whether text and rawText are stored or cleared. | | `text` | string | Replaces the display copy of the note, which can contain HTML so an editor keeps bold, italic and other formatting. If the rawText you send has no words, Speak clears this instead. If the rawText you send has words but you leave text out, the current display copy stays as it is. String. Empty string allowed. Stored trimmed. Cleared whenever the rawText you send has no words. | | `name` | string | Replaces the note title. It also appears in the success message and in the in-app update notification. Leave it out and the current title stays as it is. String. Stored trimmed. | | `description` | string | Replaces the short summary shown alongside the note. An empty string leaves the current summary in place rather than clearing it. String. Empty string allowed but treated as no change. Stored trimmed. | | `tags` | string[] | Replaces the tags on the note. Send an array of strings. A comma separated string is accepted but is stored as one tag on this endpoint, so use the array form here. Leave it out to keep the existing tags, or send an empty array to remove them all. String or array. Stored as sent. An empty array clears the tags; an empty string is treated as no change. | | `remark` | string | Replaces the free text remark on the note. An empty string or null leaves the current remark in place rather than clearing it. String. Empty string and null allowed but treated as no change. | | `status` | string | Sets the status recorded on the note. An empty string leaves the current status in place. String. Empty string allowed but treated as no change. Values outside the listed set are stored as sent but are not recognized anywhere in the product, so stay within the list. One of: ``, `pending`, `progress`, `completed`, `pendingPayment`. | | `manageBy` | string | Assigns the note to a user in your workspace, using that user's 24 character id. An empty string leaves the current assignee in place. String. Must be the 24 character id of a user. Empty string allowed but treated as no change. Any other value fails the update and returns a 500. | | `isAutoSave` | boolean | Marks the request as a background save from an editor. Send true and Speak skips reanalyzing the note and skips the in-app update notification, which keeps frequent autosaves cheap. Send false or leave it out for a normal save. Boolean. Defaults to a normal save when absent. | | `count` | object | Overrides the word and character counts stored on the note. Send wordCount, characterCount and characterCountWithoutSpace. Leave it out and Speak recounts from the rawText you sent. These numbers do not decide whether the body is kept: only the rawText you send does that. Object. Keys read: wordCount, characterCount, characterCountWithoutSpace, all numbers. Any object shape is accepted, and the counts are rewritten on every update. | | `createdAt` | string | Changes the creation date recorded on the note. Leave it out to keep the current date. Date. Accepts an ISO 8601 date string or a timestamp. Only written when present. |
```bash curl -X PUT 'https://api.speakai.co/v1/text/update/2b12351c8146' \ -H 'x-speakai-key: sk_test_speak_0000000000000000' \ -H 'x-access-token: eyJhbGciOiJIUzI1NiJ9.test-access-token.0000000000' \ -H 'Content-Type: application/json' \ -d '{}' ```
**`200` Success** The spec records this status code with no example body.
## Related pages - [API reference](/api/) for the base URL, authentication, and the error format. - [Authenticate with the Speak AI API using access tokens](/api/authentication/) - [Upload audio and video to Speak AI and read insights](/api/media/) - [Create and update live transcription sessions in Speak AI](/api/live-transcription/) - [Export Speak AI transcripts and insights to a file](/api/exports/) Get an API key on the [Speak AI developer page](https://app.speakai.co/developers?utm_source=docs&utm_medium=referral&utm_campaign=api-reference&utm_content=api-text). # Receive Speak AI events with outbound webhook calls > Register a webhook so Speak AI posts events to your server, list and update the webhooks on your account, send a test payload, and delete a webhook. Source: https://docs.speakai.co/api/webhooks/ · Markdown: https://docs.speakai.co/api/webhooks/index.md import EndpointIndex from "@/components/api/EndpointIndex.astro"; The Speak AI API exposes 5 webhooks 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](/api/authentication/). Receive Webhooks from Speak to your platform. Manage webhook workflows and select events. ## What can you do with the webhooks endpoints? Speak AI groups these 5 endpoints under the webhooks resource. Each entry below links to the full reference for that endpoint further down this page. | Method | Path | What it does | | --- | --- | --- | | `GET` | [`/webhook`](#get-webhook) | List | | `POST` | [`/webhook`](#post-webhook) | Create Webhook | | `PUT` | [`/webhook/{webhookId}`](#put-webhook-webhook-id) | Update | | `DELETE` | [`/webhook/{webhookId}`](#delete-webhook-webhook-id) | Delete | | `POST` | [`/webhook/test/{webhookId}`](#post-webhook-test-webhook-id) | Test |

List

If you want to list all the exisitng webhooks
```bash curl -X GET 'https://api.speakai.co/v1/webhook' \ -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 | Description | | --- | --- | --- | | `status` | string | | | `data` | object | | | `data.totalCount` | integer | How many webhooks you have in total, so you can page through them. | | `data.webhooks` | object[] | | Deeper nested fields are not listed. See the example response below for the full shape. Example response (List Webhooks), `application/json`. Arrays are shortened to one entry and long strings are cut. ```json { "status": "success", "data": { "totalCount": 1, "webhooks": [ { "events": [ "media.created" ], "isActive": true, "_id": "60884fec4cb70a295c0ddf59", "callbackUrl": "https://example.com/webhooks/speak", "metaData": { "providedInternalUUID": "111222333" }, "description": "This is an edited explanation.", "createdAt": "2021-04-27T17:54:52.250Z" } ] } } ```

Create Webhook

Webhooks are the means by which you receive notification in the instant event you are subscribed to is triggered. We support several media events right now: Speak will send you a `POST` request to the webhookUrl. We will send you related keys in the `body` params such as `mediaId`, `recorderId`, `state`, `meetingAssistantId` or `meetingAssistantStatus` **For Media Files:** - `media.created` - `media.analyzed` - `media.reanalyzed` - `media.failed` - `media.deleted` **For Text Files:** - `text.created` - You will receive the foll - `text.analyzed` - You will receive following keys: `mediaId`, `state` - `text.reanalyzed` - You will receive following keys: `mediaId`, `state` - `text.failed` - You wil receive following keys: `mediaId` - `text.deleted` - You will receive the following keys: `mediaId` **For Embed Recorder:** - `embed_recorder.created` - You will receive following keys: `recorderId` - `embed_recorder.deleted` - You will receive following keys: `recorderId` - `embed_recorder.recording_received` - You will receive following keys: `recorderId`, `mediaId` **For Meeting Assistant:** - `meeting_assistant.status` - Trigger a webhook for meeting assistant status changes for following status: Joining call, Waiting room, In call not recording, In call recording, Call ended, Error. - You will receive following keys: **`mediaId, meetingAssistantId`**, and **`meetingAssistantStatus`** **For AI Chat:** - `chat.status` - AI Chat response with the final answer. - You will receive follwoing keys: `mediaIds, folderId, state, promptId, messageId and answer` **For CSV Files:** - `csv.uploaded` - When you upload the CSV file, it will return with `fileId, totalRecords, succeededRecords` - `csv.failed` - When there is a failure or few records failed, you will receive fileId `fileId, totalRecords, failedRecords, failedRecordsList` You can subscribe to one or more events at once for one media, and then later update your webhook as needed. Internally, Speak AI system will `POST` to `callbackURL` with provided `metaData` as a request body, the attempt will be recorded and you can access the results, errors and response times in [https://app.speakai.co/developers/webhooks](https://app.speakai.co/developers/webhooks) ### Request body Fields marked **required** are the ones the server rejects the request without. Anything conditional, where a field becomes required only alongside another, is described under Request rules above rather than marked here. | Field | Type | Description | | --- | --- | --- | | `callbackUrl` | string, **required** | Give the URL Speak posts events to. required; validated as a plain string with no length cap and no uri format check | | `events` | string[] | List the events you want this webhook to receive. optional. The array carries no.required, no.optional and no min or max item count; the schema keys are optional by default. Each item must be one of the 18 listed values, which come from the WebhookEvent list. The enum applies to the array items, not to the array itself. One of: `embed_recorder.created`, `embed_recorder.deleted`, `embed_recorder.recording_received`, `media.analyzed`, `media.created`, `media.deleted`, `media.failed`, `media.reanalyzed`, `media.updated`, `text.analyzed`, `text.created`, `text.deleted`, `text.failed`, `text.reanalyzed`, `meeting_assistant.status`, `chat.status`, `csv.uploaded`, `csv.failed`. | | `metaData` | object | Attach your own data to the webhook. Speak merges this object into the body of every delivery for this webhook, then adds eventType and deliveryId and the fields for the event that fired. optional, unconstrained object, any keys accepted. Delivery body is built as \{.webhook.metaData, eventType, deliveryId \} plus event fields, so a metaData key named eventType, deliveryId, state, mediaId, mediaIds, folderId, recorderId, promptId, messageId, prompt, answer, meetingAssistantId or meetingAssistantStatus is overwritten by Speak's own value. | | `mediaId` | string | Scope the webhook to a single media item instead of your whole account. optional, empty string allowed, no length cap | | `description` | string | Describe what this webhook does on your side so you can recognize it later. optional, empty string allowed, no length cap | | `source` | string | Say which tool is creating the webhook. Leave it out and the webhook is stored as "speak". optional; values come from the WebhookEventSource list. The schema.default('speak') is not what applies it: the controller passes source through untouched and the stored record defaults to 'speak'. One of: `speak`, `zapier`, `n8n`, `pipedream`, `make`. |
```bash curl -X POST 'https://api.speakai.co/v1/webhook' \ -H 'x-speakai-key: sk_test_speak_0000000000000000' \ -H 'x-access-token: eyJhbGciOiJIUzI1NiJ9.test-access-token.0000000000' \ -H 'Content-Type: application/json' \ -d '{ "callbackUrl": "https://example.com/webhooks/speak", "metaData": { "providedInternalUUID": "111222333" }, "events": [ "media.created", "media.analyzed", "text.created", "text.analyzed", "text.reanalyzed", "text.failed", "text.deleted", "media.reanalyzed", "media.failed", "media.deleted" ], "description": "This is a readable explanation of what this webhook does on your side." }' ```
**`200` OK** Response body, `application/json`. | Field | Type | Description | | --- | --- | --- | | `status` | string | | | `data` | object | | | `data.webhookId` | string | The id of the webhook you just created. Store it, because you need it to update, test or delete the webhook. | Example response (Success), `application/json`. ```json { "status": "success", "data": { "webhookId": "608850ed4cb70a295c0ddf5b" } } ```

Update

You can update definition of an existing webhook: change events it's subscribed to, edit description or your `metaData`. ### Parameters | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `webhookId` | path | string | Yes | | ### Request body Fields marked **required** are the ones the server rejects the request without. Anything conditional, where a field becomes required only alongside another, is described under Request rules above rather than marked here. | Field | Type | Description | | --- | --- | --- | | `callbackUrl` | string, **required** | Give the URL Speak posts events to. Send it on every update, even when you are only changing something else. required; validated as a plain string with no length cap and no uri format check | | `metaData` | object | Replace the data Speak merges into the body of every delivery for this webhook. Speak adds eventType, deliveryId and the fields for the event that fired on top of it. optional, unconstrained object, any keys accepted. Omitting it writes undefined over the stored value, because the controller passes the destructured value straight into findOneAndUpdate. | | `mediaId` | string | Scope the webhook to a single media item instead of your whole account. optional, empty string allowed, no length cap | | `events` | string[] | Replace the list of events this webhook receives. explicitly.optional; no minimum or maximum item count. Each item must be one of the 18 listed values, which come from WebhookEvent. One of: `embed_recorder.created`, `embed_recorder.deleted`, `embed_recorder.recording_received`, `media.analyzed`, `media.created`, `media.deleted`, `media.failed`, `media.reanalyzed`, `media.updated`, `text.analyzed`, `text.created`, `text.deleted`, `text.failed`, `text.reanalyzed`, `meeting_assistant.status`, `chat.status`, `csv.uploaded`, `csv.failed`. | | `description` | string | Describe what this webhook does on your side so you can recognize it later. optional, empty string allowed, no length cap |
```bash curl -X PUT 'https://api.speakai.co/v1/webhook/609d7de35bde285f4c98ca63' \ -H 'x-speakai-key: sk_test_speak_0000000000000000' \ -H 'x-access-token: eyJhbGciOiJIUzI1NiJ9.test-access-token.0000000000' \ -H 'Content-Type: application/json' \ -d '{ "callbackUrl": "https://example.com/webhooks/speak", "metaData": { "providedInternalUUID": "777888999" }, "events": [ "media.created", "media.analyzed", "media.deleted" ], "description": "This is an edited explanation." }' ```
**`200` OK** Response body, `application/json`. | Field | Type | | --- | --- | | `status` | string | | `message` | string | Example response (Successful), `application/json`. ```json { "status": "success", "message": "Webhook updated" } ```

Delete

#### DELETE Webhook This endpoint allows you to delete a specific webhook identified by its unique `webhookId`. ##### Request Parameters - `webhookId` (path parameter): The unique identifier of the webhook you wish to delete. ##### Expected Response Upon successful deletion of the webhook, the API will return a JSON object with the following structure: - `status`: A string indicating the status of the request. - `message`: A string providing additional information about the result of the operation. ##### Notes - Ensure that the `webhookId` provided in the request is valid and corresponds to an existing webhook. - Deleting a webhook is irreversible; once deleted, the webhook cannot be recovered. ### Parameters | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `webhookId` | path | string | Yes | |
```bash curl -X DELETE 'https://api.speakai.co/v1/webhook/609d7de35bde285f4c98ca63' \ -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 (Success), `application/json`. ```json { "status": "success", "message": "Webhook deleted!" } ```

Test

Looking to test the webhook without uploading much media in your account ? Testing is made easier using this endpoint. You can trigger an event on a particular webhook and get the request\response or error. ### Parameters | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `webhookId` | path | string | Yes | | ### Request body Fields marked **required** are the ones the server rejects the request without. Anything conditional, where a field becomes required only alongside another, is described under Request rules above rather than marked here. | Field | Type | Description | | --- | --- | --- | | `event` | string, **required** | Pick the event to fire so you can see the request, the response and any error your endpoint returns. required; the 18 values come from the WebhookEvent list. No other body key is accepted, so any extra property returns a 400. One of: `embed_recorder.created`, `embed_recorder.deleted`, `embed_recorder.recording_received`, `media.analyzed`, `media.created`, `media.deleted`, `media.failed`, `media.reanalyzed`, `media.updated`, `text.analyzed`, `text.created`, `text.deleted`, `text.failed`, `text.reanalyzed`, `meeting_assistant.status`, `chat.status`, `csv.uploaded`, `csv.failed`. |
```bash curl -X POST 'https://api.speakai.co/v1/webhook/test/659ee5c7350d7f6593fd36ea' \ -H 'x-speakai-key: sk_test_speak_0000000000000000' \ -H 'x-access-token: eyJhbGciOiJIUzI1NiJ9.test-access-token.0000000000' \ -H 'Content-Type: application/json' \ -d '{ "event": "media.created" }' ```
**`200` OK** Response body, `application/json`. | Field | Type | | --- | --- | | `status` | string | | `data` | object | | `data.isFirstAttempt` | boolean | | `data._id` | string | | `data.webhookId` | string | | `data.event` | string | | `data.requestBody` | string | | `data.responseBody` | string | | `data.responseTime` | integer | | `data.createdAt` | string (date-time) | | `data.__v` | integer | Example response (Success), `application/json`. ```json { "status": "success", "data": { "isFirstAttempt": true, "_id": "608854d7368c102ad3d3ad53", "webhookId": "60884fec4cb70a295c0ddf59", "event": "media.created", "requestBody": "{\"providedInternalUUID\":\"111222333\"}", "responseBody": "{\"message\":\"My UUID is 111222333.\"}", "responseTime": 48, "createdAt": "2021-04-27T18:15:51.686Z", "__v": 0 } } ``` Example response (Error), `application/json`. ```json { "status": "success", "data": { "isFirstAttempt": true, "_id": "608854d7368c102ad3d3ad53", "webhookId": "60884fec4cb70a295c0ddf59", "event": "media.created", "requestBody": "{\"providedInternalUUID\":\"111222333\"}", "responseBody": "{\"message\":\"invalid json response body at https://example.com/webhooks/speak reason: Unexpected token < in JSON at position 0\",\"type\":\"invalid-json\"}", "responseTime": 48, "createdAt": "2021-04-27T18:15:51.686Z", "__v": 0 } } ```
## Related pages - [API reference](/api/) for the base URL, authentication, and the error format. - [Authenticate with the Speak AI API using access tokens](/api/authentication/) - [Upload audio and video to Speak AI and read insights](/api/media/) - [Create and update live transcription sessions in Speak AI](/api/live-transcription/) - [Analyze text notes with the Speak AI text endpoints](/api/text/) Get an API key on the [Speak AI developer page](https://app.speakai.co/developers?utm_source=docs&utm_medium=referral&utm_campaign=api-reference&utm_content=api-webhooks). # Speak AI changelog > Every feature, fix, and improvement Speak AI has shipped, organized by year. Subscribe with RSS or JSON. Source: https://docs.speakai.co/changelog/ · Markdown: https://docs.speakai.co/changelog/index.md See what is new in Speak AI. Entries are grouped by year, newest first, and. ## How do you subscribe? Speak AI publishes the changelog as RSS and JSON feeds so you can follow along without checking this page. Point a feed reader or Slack integration at `/changelog/rss.xml` for RSS 2.0, or fetch `/changelog/feed.json` for JSON Feed 1.1 if you're rendering the changelog inside your own app. ## Browse by year - **2026** — [91 updates →](/changelog/2026/) - **2025** — [37 updates →](/changelog/2025/) - **2024** — [45 updates →](/changelog/2024/) - **2023** — [25 updates →](/changelog/2023/) - **2022** — [18 updates →](/changelog/2022/) # Speak AI changelog: every product update shipped in 2022 > Every product update Speak AI shipped in 2022: 18 updates from May through November, covering new features, fixes, and improvements to the product. Source: https://docs.speakai.co/changelog/2022/ · Markdown: https://docs.speakai.co/changelog/2022/index.md [Back to all changelog years](/changelog/) Speak AI shipped 18 updates in 2022, across 5 months. ## November 2022 ### New keyword, phrase and topic reports **Feature** · November 15, 2022 The Explore Insights dashboard now shows a summary report of topics, keywords and phrases. Search or click any visualization to see how often something is mentioned, how many files it appears in, its overall and sentence by sentence sentiment, the trend over time, and links to read, listen or watch key moments. ![New keyword, phrase and topic reports](/shots/2022-11/new-keyword-phrase-and-topic-reports.gif) ### Seven-level sentiment scoring per sentence **Improvement** · November 15, 2022 Speak scores every sentence across seven levels, from very positive through neutral to very negative. You see degrees of sentiment instead of a positive or negative label. ![Seven-level sentiment scoring per sentence](/shots/2022-11/more-detailed-sentiment-analysis.gif) ### Advanced data filtering in Explore Insights **Feature** · November 15, 2022 You can now build filters with multiple and or conditions to include and exclude data across speakers, sentiment, tags, category insights, folders and time. Saved filters let you repeatedly surface what matters most. ![Advanced data filtering in Explore Insights](/shots/2022-11/advanced-data-filtering-in-explore-insights.gif) ### Explore Insights button on files and folders **Improvement** · November 15, 2022 When viewing any file or folder in Speak you now see an Explore Insights button that opens the dashboard scoped to that selected data. ![Explore Insights button on files and folders](/shots/2022-11/explore-insights-button-on-files-and-folders.gif) ### White labeled data visualizations **Feature** · November 15, 2022 White label subscribers can add their brand color in the Account Customization area and Speak automatically restyles every visualization. You can then export branded visualizations for presentations, reports and content. ![White labeled data visualizations](/shots/2022-11/white-labeled-data-visualizations.gif) ## September 2022 ### Relationship detection and knowledge graphs **Feature** · September 15, 2022 Speak now has a relationship detection algorithm that goes beyond pulling out data to automatically find connections in it. It then builds visualizations and knowledge graphs so you can grasp and share those relationships. ![Relationship detection and knowledge graphs](/shots/2022-09/relationship-detection-and-knowledge-graphs.png) ### Add, edit and remove tags in bulk **Improvement** · September 15, 2022 Select many items at once and add, edit, or remove their tags in a single action. Organizing a large library no longer means opening each item. ![Add, edit and remove tags in bulk](/shots/2022-09/improved-bulk-editing-of-tags.png) ## July 2022 ### Multiple language Twitter analysis **Feature** · July 15, 2022 Speak can now pull and analyze thousands of tweets going back to 2006. Give the keywords, phrases and hashtags you care about, and optionally locations and languages, to understand how people feel about trends, products and events. ![Multiple language Twitter analysis](/shots/2022-07/multiple-language-twitter-analysis.png) ### Multiple language Amazon review analysis **Feature** · July 15, 2022 Speak can now scrape Amazon reviews so you can understand how people think about products, brands and service. Give the product URLs and Speak builds a dataset with the review text, dates, location, reviewer name and star rating. ![Multiple language Amazon review analysis](/shots/2022-07/multiple-language-amazon-review-analysis.png) ### Gender and age data enrichment **Feature** · July 15, 2022 Speak can now analyze the names of people in a dataset to predict their gender and age. Each prediction includes a confidence score and the number of names it is based on. ![Gender and age data enrichment](/shots/2022-07/gender-and-age-data-enrichment.png) ### Automatic audio stream clipping and analysis **Feature** · July 15, 2022 Speak can now hook into live audio streams, automatically detect when someone is speaking, and create clips of only those moments for transcription and analysis so you do not pay to process silence. ![Automatic audio stream clipping and analysis](/shots/2022-07/automatic-audio-stream-clipping-and-analysis.png) ## June 2022 ### Customize Explore Insights visualizations **Improvement** · June 15, 2022 On the Explore Insights page you can now change how many insights show on the word cloud and bar chart, so you can scale up or focus down on what matters most. ![Customize Explore Insights visualizations](/shots/2022-06/customize-explore-insights-visualizations.gif) ### Export Explore Insights data to CSV **Feature** · June 15, 2022 Click the three dots above the bar chart or word cloud on the Explore Insights page to export the displayed data as a CSV. Use the dashboard filters first and then take the insights into your own tools. ![Export Explore Insights data to CSV](/shots/2022-06/export-explore-insights-data-to-csv.gif) ### Merged default and custom categories **Improvement** · June 15, 2022 Default and custom categories are now combined on one Categories page. You can still add categories and include or exclude keywords and phrases just like before. ![Merged default and custom categories](/shots/2022-06/merged-default-and-custom-categories.gif) ### Set a recorder duration limit **Feature** · June 15, 2022 You can now set how many minutes people are allowed to record directly in your recorder settings, and the embeddable recorder updates instantly to enforce that limit. This needs the Individual Media Sharing and Recorder Customization add on. ![Set a recorder duration limit](/shots/2022-06/set-a-recorder-duration-limit.gif) ## May 2022 ### Transcription and analysis in five languages **Feature** · May 15, 2022 You can now transcribe and analyze audio, video and text in Danish, French, German, Portuguese and Spanish. Pick the language from a dropdown when you upload and the transcript, insights, players and reports all follow that language. ![Transcription and analysis in five languages](/shots/2022-05/transcription-and-analysis-in-five-languages.gif) ### Screen recording and text uploads in recorder **Feature** · May 15, 2022 The Speak recorder now lets people share their screen while recording video. Submitters can also upload Word, PDF and TXT files through the recorder, and required fields are removed so you can collect anonymous submissions. ![Screen recording and text uploads in recorder](/shots/2022-05/screen-recording-and-text-uploads-in-recorder.gif) ### Automatic earnings call analysis prototype **Feature** · May 15, 2022 Speak can now produce automatic reports on earnings calls covering revenue, profit, headwinds, guidance and more. This is an early prototype built for people who follow public companies. ![Automatic earnings call analysis prototype](/shots/2022-05/automatic-earnings-call-analysis-prototype.gif) # Speak AI changelog: every product update shipped in 2023 > Every product update Speak AI shipped in 2023: 25 updates from January through September, covering new features, fixes, and improvements to the product. Source: https://docs.speakai.co/changelog/2023/ · Markdown: https://docs.speakai.co/changelog/2023/index.md [Back to all changelog years](/changelog/) Speak AI shipped 25 updates in 2023, across 7 months. ## September 2023 ### Google and Outlook calendar sync **Feature** · September 15, 2023 You can now sync your Google or Microsoft Outlook Calendar so the Meeting Assistant automatically joins your scheduled calls. Preferences let you choose which events to join, which folder the files go to, who to share the player with, and the assistant name and image. ![Google and Outlook calendar sync](/shots/2023-09/google-and-outlook-calendar-sync.png) ### Custom assistant templates **Feature** · September 15, 2023 You can create your own custom Assistant templates in Account Preferences that set context for higher quality and more consistent outputs. You can reuse them in any manual or automated Magic Prompt and make several for different use cases. ![Custom assistant templates](/shots/2023-09/custom-assistant-templates.png) ### Filter out speakers in Magic Prompts **Feature** · September 15, 2023 You can filter out speakers such as the moderator, interviewer, sales reps or clients when running Magic Prompts analysis. You can also filter tags and speakers at the folder level. ![Filter out speakers in Magic Prompts](/shots/2023-09/filter-out-speakers-in-magic-prompts.png) ### Reanalyze media at file and folder levels **Feature** · September 15, 2023 You can reanalyze media at both the individual file and the folder level. You choose whether to reanalyze insights, sentiment, filler words, or everything at once. ### Remove filler words **Improvement** · September 15, 2023 You can remove filler words from your data for cleaner transcription and analysis. ### Remarks and prompts in shared libraries **Improvement** · September 15, 2023 You can easily add remarks and Magic Prompt capabilities to your Shareable Media Libraries. ### Microsoft single sign on **Feature** · September 15, 2023 You can now sign in to Speak with Microsoft Single Sign On. ## August 2023 ### Speak AI Meeting Assistant now live **Feature** · August 15, 2023 The Speak AI Meeting Assistant is now live and free. It automatically joins your meetings and records, transcribes and analyzes them. It works on Zoom, Microsoft Teams, Google Meet and Webex, and you add it by pasting your meeting link in the app. ![Speak AI Meeting Assistant now live](/shots/2023-08/speak-ai-meeting-assistant-now-live.png) ### Customize your Meeting Assistant **Improvement** · August 15, 2023 You can customize your Meeting Assistant name and image for personal and professional branding when it joins your calls. This is available as a premium add on. ## June 2023 ### Speak Automation is now live **Feature** · June 15, 2023 Speak Automation is now live. You can build an automation with a folder trigger that fires when a new file is analyzed and a Magic Prompt action that runs a preset prompt automatically, then get notified when the response is ready. ![Speak Automation is now live](/shots/2023-06/speak-automation-is-now-live.png) ### Transcript editor improvements **Improvement** · June 15, 2023 The transcript editor gets improvements. ## April 2023 ### Thirty nine new languages **Feature** · April 15, 2023 Speak adds 39 new languages, bringing the total to 64 languages available for transcription and analysis. ![Thirty nine new languages](/shots/2023-04/thirty-nine-new-languages.png) ### Automatic embeddings for your data **Feature** · April 15, 2023 Speak now automatically creates embeddings so you can query large data sets past model character limits, get faster and cheaper responses, and see the original sources with links to the exact moments. You can also share these knowledge bases through Shareable Media Libraries with your own branding. ![Automatic embeddings for your data](/shots/2023-04/automatic-embeddings-for-your-data.png) ### Magic Prompt response Zapier trigger **Feature** · April 15, 2023 A new Speak Magic Prompts Response trigger in Zapier lets you automatically send your prompt responses to more than 5,000 connected platforms, such as email, YouTube or your CRM. ![Magic Prompt response Zapier trigger](/shots/2023-04/magic-prompt-response-zapier-trigger.png) ## March 2023 ### Analyze many files with Magic Prompts **Feature** · March 15, 2023 You can now analyze many files at once with Speak Magic Prompts. Add the files to a folder, select Prompts, then choose a suggested or custom prompt to get one answer across all the data. ![Analyze many files with Magic Prompts](/shots/2023-03/analyze-many-files-with-magic-prompts.png) ### Much higher Magic Prompt character limit **Improvement** · March 15, 2023 Speak Magic Prompts now analyzes up to 60,000 characters, roughly 25,000 words, at once. The previous limit was 4,000 characters. ### Choose your Magic Prompt assistant type **Feature** · March 15, 2023 You can choose an assistant type of General, Researcher or Marketer. Each one sets context for the prompt engine so you get more concise and relevant outputs for your role. ## February 2023 ### Embeddable recorder question types **Feature** · February 15, 2023 The embeddable recorder now supports many question types such as checkboxes, drop downs, dates and numbers. This lets you collect both qualitative and quantitative data from almost anywhere. ![Embeddable recorder question types](/shots/2023-02/embeddable-recorder-question-types.png) ### Shareable media library filters **Feature** · February 15, 2023 You can now pass the data filters you create in your account through your Shareable Media Libraries. This lets you curate insights for clients and teams so they can instantly derive value from the data. ![Shareable media library filters](/shots/2023-02/shareable-media-library-filters.png) ### WebVTT to text converter tool **Feature** · February 15, 2023 A new WebVTT to Text Converter tool cleans WebVTT files that contain timestamps and sentence numbers so you can import and analyze them cleanly in Speak. ### Recorder API updates **Improvement** · February 15, 2023 Recorder API updates make recorders easier to create and update. ## January 2023 ### Lower transcription and analysis pricing **Improvement** · January 15, 2023 Speak permanently lowers transcription and analysis pricing from ten cents per minute to six cents per minute, a 40 percent reduction. Customers transcribing over 100 hours per month can ask about bigger discounts. ![Lower transcription and analysis pricing](/shots/2023-01/lower-transcription-and-analysis-pricing.png) ### Twenty new transcription languages **Feature** · January 15, 2023 Speak adds 20 new transcription and analysis languages, bringing the total to 25 languages you can use across the software and APIs. ![Twenty new transcription languages](/shots/2023-01/twenty-new-transcription-languages.png) ### Recorder minimum and maximum duration **Feature** · January 15, 2023 You can now set a minimum and maximum recording length on your embeddable recorders so people give enough feedback without recording too much. ![Recorder minimum and maximum duration](/shots/2023-01/recorder-minimum-and-maximum-duration.png) ### Explore insights button on recorder submissions **Improvement** · January 15, 2023 A new Explore Insights button sits at the top right of your recorder submissions so you can instantly analyze the responses coming in. ![Explore insights button on recorder submissions](/shots/2023-01/explore-insights-button-on-recorder-submissions.png) # Speak AI changelog: every product update shipped in 2024 > Every product update Speak AI shipped in 2024: 45 updates from March through December, covering new features, fixes, and improvements to the product. Source: https://docs.speakai.co/changelog/2024/ · Markdown: https://docs.speakai.co/changelog/2024/index.md [Back to all changelog years](/changelog/) Speak AI shipped 45 updates in 2024, across 6 months. ## December 2024 ### Pay with PayPal **Feature** · December 15, 2024 PayPal now works for subscriptions and balance top ups. When paying, just select the Pay With PayPal button, which supports people without credit cards. ![Pay with PayPal](/shots/2024-12/pay-with-paypal.png) ### AI chat conversation memory **Improvement** · December 15, 2024 AI chats now store previous questions and answers, giving the AI better context and stronger follow up answers. ![AI chat conversation memory](/shots/2024-12/ai-chat-conversation-memory.png) ### Store media in chosen regions **Security** · December 15, 2024 Speak can now store your media in selected regions for data compliance. This option is available on enterprise plans. ![Store media in chosen regions](/shots/2024-12/store-media-in-chosen-regions.png) ### Usage notifications and filters **Improvement** · December 15, 2024 Notifications now has filters for team members, actions and date range, plus search, so it is a useful place to monitor team usage. ![Usage notifications and filters](/shots/2024-12/usage-notifications-and-filters.png) ### Recorder cloning improvements **Improvement** · December 15, 2024 Recorder cloning was improved, and the UI for all payment methods and options was enhanced. ## October 2024 ### Share files with AI chat enabled **Feature** · October 15, 2024 When sharing an individual file or library you can let viewers chat with the media using an assistant template. Questions and answers appear in your chat history and characters come from your account. ![Share files with AI chat enabled](/shots/2024-10/share-files-with-ai-chat-enabled.png) ### Folder statistics view **Feature** · October 15, 2024 Every folder now has a statistics view with a breakdown of media types, speakers, dates, file types and durations to help you summarize your data set. ![Folder statistics view](/shots/2024-10/folder-statistics-view.png) ### Analyze fields without comparing **Improvement** · October 15, 2024 You can now analyze fields on their own without comparing data, and you can analyze comma separated outputs. ![Analyze fields without comparing](/shots/2024-10/analyze-fields-without-comparing.png) ### Instant translation in automations **Feature** · October 15, 2024 Automations can translate a file to a target language the moment it is uploaded, or on a set schedule. ![Instant translation in automations](/shots/2024-10/instant-translation-in-automations.png) ### Transcribe your files again **Feature** · October 15, 2024 You can now re run transcription on your files. ## August 2024 ### Custom vocabularies **Feature** · August 15, 2024 You can add up to 100 words or phrases per language to improve transcription accuracy right away. Available to all subscribers in English and French with more languages coming. ![Custom vocabularies](/shots/2024-08/custom-vocabularies.png) ### Word by word transcript playback **Feature** · August 15, 2024 Speak now plays transcripts word by word so you can jump to the exact moment instead of the start of a sentence. ![Word by word transcript playback](/shots/2024-08/word-by-word-transcript-playback.png) ### Pick speakers from past speaker list **Improvement** · August 15, 2024 Assign speakers on the media insight page by picking from people who appeared in earlier media. Team member photos appear when available, otherwise you see their initials. ![Pick speakers from past speaker list](/shots/2024-08/improved-speaker-editing.png) ### Professional captions **Improvement** · August 15, 2024 Captions now show only two lines at a time, align with speakers, appear on the video player, and can be exported as SRT and VTT. ![Professional captions](/shots/2024-08/professional-captions.png) ### Automatic AI summaries for meetings **Feature** · August 15, 2024 Meeting transcription users now receive automatic AI summaries. ### See who folders are shared with **Improvement** · August 15, 2024 You can now see who you have shared folders with. CSV mapping for uploads and the recorder page were also improved. ## May 2024 ### Side by side AI chat **Improvement** · May 15, 2024 Your AI chat now sits right beside your media for easy use. You can expand the transcript and chat, filter by speaker and use assistant templates. ![Side by side AI chat](/shots/2024-05/side-by-side-ai-chat.png) ### Return on investment calculator **Feature** · May 15, 2024 A new calculator shows how much money and time you save with Speak based on the hours of media or words you analyze. ![Return on investment calculator](/shots/2024-05/return-on-investment-calculator.png) ### Personalized AI automations **Feature** · May 15, 2024 New sign ups get personalized automations built from their onboarding details. One runs instantly and one runs weekly when files are uploaded, and you can edit or turn them off. ![Personalized AI automations](/shots/2024-05/personalized-ai-automations.png) ### Map automations to fields **Feature** · May 15, 2024 Automations can map AI responses to your fields, which you can then export to CSV or share through Zapier or the API. ![Map automations to fields](/shots/2024-05/map-automations-to-fields.png) ### Personalized plan recommendations **Feature** · May 15, 2024 Speak uses your onboarding details to recommend a plan suited to your needs, which you can adjust by changing your profile or inputs. ![Personalized plan recommendations](/shots/2024-05/personalized-plan-recommendations.png) ### Clone recorders and edit notifications **Feature** · May 15, 2024 You can clone recorders to speed up setup and choose which team members receive email notifications. ![Clone recorders and edit notifications](/shots/2024-05/clone-recorders-and-edit-notifications.png) ### Meeting assistant status webhooks **Feature** · May 15, 2024 You can now receive webhooks when a Meeting Assistant status changes. ### Reset speakers easily **Improvement** · May 15, 2024 You can now easily reset speakers if they were mapped incorrectly. ### Outlook calendar recurring events fix **Fix** · May 15, 2024 Fixed recurring events and event visibility for Outlook Calendar. ### Select many files at once **Improvement** · May 15, 2024 You can hold shift and select many files at once. Mobile responsiveness and the find and replace transcript editor were also improved. ## April 2024 ### Translate media in 99 languages **Feature** · April 15, 2024 You can now translate audio, video and text in 99 languages almost instantly. Speak calculates the cost, charges when you order, and creates labeled text notes for each translation. ### Scrape web pages and sitemaps **Feature** · April 15, 2024 You can scrape individual pages and full sitemaps, and Speak pulls the page text without headers and footers so you can analyze and visualize it right away. ### Map file analysis to fields **Feature** · April 15, 2024 You can run analysis on each file in a folder and map the responses to a chosen field, which lets you evaluate large data sets without model character limits. ### Intelligent meeting routing **Feature** · April 15, 2024 Speak can use calendar event titles to route meetings to specific folders and run the exact chat automations you set for each type of call. ### Live transcription in the app **Feature** · April 15, 2024 You can now transcribe audio or video in real time directly in Speak, then upload the file afterward for even more accurate transcription and analysis. ### Meeting assistant timelines **Feature** · April 15, 2024 You can review a timeline of meeting assistant activity for each call from the Meeting Assistant page. ### Update custom fields across files **Improvement** · April 15, 2024 You can now update fields at the folder or individual file level across selected files in just a few clicks. ### Two factor authentication **Security** · April 15, 2024 You can now turn on two factor authentication with Google Authenticator or another app, so Speak asks for a code every time you log in. ### Submit chat response feedback **Improvement** · April 15, 2024 You can leave quick thumbs up or thumbs down feedback on responses from the Chat History page, using standard options or your own words. ### Fixed recurring meeting events **Fix** · April 15, 2024 Fixed a recurring events issue for the Speak AI Meeting Assistant. ## March 2024 ### Chat with your data is live **Feature** · March 15, 2024 You can now have a back and forth chat with your media instead of single prompts. Chat keeps context, lets you reformat answers, and works inside shared media libraries. ![Chat with your data is live](/shots/2024-03/chat-with-your-data-is-live.png) ### Manage your table columns **Feature** · March 15, 2024 You can choose which columns show for your data using a drag and drop view, so you get a high level look at a folder without opening each file. Speak remembers your column choices. ![Manage your table columns](/shots/2024-03/manage-your-table-columns.png) ### Run Magic Prompts action in Zapier **Feature** · March 15, 2024 A new Run Magic Prompts in Speak action lets you pass data to Speak and generate responses inside no code Zapier workflows, and chain many actions together. ![Run Magic Prompts action in Zapier](/shots/2024-03/run-magic-prompts-action-in-zapier.png) ### Transcribe ten hour and 5 GB files **Improvement** · March 15, 2024 Speak can now handle files up to ten hours long and up to 5 GB in size. ### Automatic speaker labeling for meetings **Feature** · March 15, 2024 Speak now gathers the details of meeting attendees and labels the speakers automatically once the meeting is transcribed, so you can filter speakers across all your meetings. ![Automatic speaker labeling for meetings](/shots/2024-03/automatic-speaker-labeling-for-meetings.png) ### Redesigned media sharing interface **Improvement** · March 15, 2024 The interface for sharing individual media players and libraries was redesigned with all the latest options for logo, background, insights and functionality. ![Redesigned media sharing interface](/shots/2024-03/redesigned-media-sharing-interface.png) ### Data is now embedded automatically **Performance** · March 15, 2024 Speak now embeds your data automatically using retrieval augmented generation, so you can analyze very large data sets with quicker responses, lower character use and source references. ![Data is now embedded automatically](/shots/2024-03/data-is-now-embedded-automatically.png) ### Leave feedback on chat responses **Improvement** · March 15, 2024 You can now leave feedback on chat responses to help improve the quality of future answers. ### Cached answers for repeated questions **Performance** · March 15, 2024 Repeated questions now return cached answers quickly without using characters. # Speak AI changelog: every product update shipped in 2025 > Every product update Speak AI shipped in 2025: 37 updates from March through November, covering new features, fixes, and improvements to the product. Source: https://docs.speakai.co/changelog/2025/ · Markdown: https://docs.speakai.co/changelog/2025/index.md [Back to all changelog years](/changelog/) Speak AI shipped 37 updates in 2025, across 5 months. ## November 2025 ### Transcript Editor 2.0 **Improvement** · November 15, 2025 The transcript editor is rebuilt. You can edit timestamps inline, split or merge sections, delete, search, and replace text instantly, auto save every 30 seconds, restore the original transcript anytime, and use a focus mode for distraction free reviewing. ### New survey customization and controls **Feature** · November 15, 2025 Video surveys have new customization. You can hide titles, wavelengths, and branding for a clean look, start and stop recordings with simple API controls, and preview your configuration before you embed it. ### Smart join for the meeting assistant **Improvement** · November 15, 2025 A smart join setting brings the meeting assistant into meetings only when it is needed. ### Shareable invite links for teammates **Improvement** · November 15, 2025 You can onboard teammates at scale using shareable invite links. ### Favourite prompts **Improvement** · November 15, 2025 You can save and reuse your best prompts by marking them as favourites. ### Dedicated chat links **Improvement** · November 15, 2025 Every chat now has its own unique URL. ### Clone automations and folders **Improvement** · November 15, 2025 You can clone automations and folders to scale your setups in one click. ### Schedule automations on folders **Improvement** · November 15, 2025 You can schedule automations on a single folder or on several folders. ### Update speaker names through the API **Feature** · November 15, 2025 A new API lets you update speaker names accurately. ### Use the platform in more languages **Improvement** · November 15, 2025 The interface is available in more languages across the product. You work in your language and it stays consistent from screen to screen. ### File size column added **Improvement** · November 15, 2025 A file size column shown in gigabytes was added to your file list. ### Chat auto scroll **Improvement** · November 15, 2025 Chat now auto scrolls to the latest message. ## September 2025 ### Mac app in beta **Feature** · September 15, 2025 Speak now has a Mac app in beta with all the core functions of Speak. A coming update will let you record desktop audio and video such as YouTube and webinars, improve screen shares and recordings, and capture meetings without needing a meeting bot in your calls. ### Schedule meetings with a link **Feature** · September 15, 2025 You can now schedule meetings with just a link instead of only starting them in the moment. You can set times up to 7 days in advance, edit scheduled meetings inside Speak, and cancel if a meeting is within 5 minutes of starting. ### Bigger and cheaper voice translation **Improvement** · September 15, 2025 Voice translation now handles files up to 1 GB and 2.5 hours, raised from 100 MB and 45 minutes, and the price dropped from 90 dollars to 60 dollars per hour, a 33 percent reduction. This unlocks longer interviews, full meetings, and extended recordings. ### Analyze Data redesign **Feature** · September 15, 2025 You can now view and filter files across your entire account in a new media list inside Analyze Data. From one place you can bulk manage files, chat with them, map results to fields, translate, view statistics, and export, instead of opening folders one at a time. ### Download chat responses **Improvement** · September 15, 2025 You can export chat outputs as DOC, PDF, TXT, or Markdown. ### Match full phrases in every search **Improvement** · September 15, 2025 Phrase matching works across every search on the platform. You search for a whole phrase instead of matching its words separately. ### AI chat filters **Improvement** · September 15, 2025 You can choose between filtering chats or mapped fields for clearer insights in your chat history. ### Merge files into one Word document **Improvement** · September 15, 2025 You can export multiple files into a single polished DOCX. ### Transcript editing and saving fixes **Fix** · September 15, 2025 Fixed the hidden save button, made inline editing smoother, and reduced merge issues when editing transcripts. ### Dark mode timestamps now visible **Fix** · September 15, 2025 Timestamps are now clearly visible in the dark theme. ## June 2025 ### Chat across your entire library **Feature** · June 15, 2025 You can now chat across all your files instead of one folder at a time. Use the Advanced Filters in the Analyze Data section to isolate files by field, media type, and more for analysis across whole data sets. ![Chat across your entire library](/shots/2025-06/chat-across-your-entire-library.png) ### Clip individual words and sentences **Improvement** · June 15, 2025 Highlight any words or sentences in a transcript, right click, and choose Add to Clip. Order does not matter, and Create Clip builds the compilation in the Clips section. ![Clip individual words and sentences](/shots/2025-06/smoother-audio-and-video-clipping.png) ### Pick media from your gallery on iOS **Improvement** · June 15, 2025 On iOS you can now select audio and video from your gallery to transcribe and analyze. ### Record with your screen locked **Improvement** · June 15, 2025 On mobile you can now capture meetings and voice notes even while your screen is off. ### Share to Speak on iOS **Improvement** · June 15, 2025 On iOS you can use the Share function and select Speak to instantly add a file for transcription and analysis. ![Share to Speak on iOS](/shots/2025-06/share-to-speak-on-ios.png) ### Automatic AI management of your data **Improvement** · June 15, 2025 Speak now optimizes how it works with your data to give better results, avoid hitting AI model limits, provide references across multiple files, and keep costs low. For single meetings under 2 hours it includes the full context, and for folders or whole libraries it pinpoints the most relevant parts and links back to references. ![Automatic AI management of your data](/shots/2025-06/automatic-ai-management-of-your-data.png) ### New transcription and translation languages **Feature** · June 15, 2025 Transcription and translation now support more languages. Pick the language you want from the dropdown when you upload or translate files. ![New transcription and translation languages](/shots/2025-06/new-transcription-and-translation-languages.png) ### Smarter custom field filtering **Improvement** · June 15, 2025 You get smarter filtering for custom fields in the Analyze Data view. ## May 2025 ### Add a balance in the mobile apps **Feature** · May 15, 2025 You can now add a pay as you go balance to your account directly in the iOS and Android apps. Open your profile, go to Payment Settings, choose Add Balance, and pick 10, 30, or 100 dollars to buy in one tap. ![Add a balance in the mobile apps](/shots/2025-05/add-a-balance-in-the-mobile-apps.png) ### Set team members as Admin or Member **Improvement** · May 15, 2025 Set each team member as an Admin or a Member. Account owners hold a separate Owner role with full access and team management. ![Set team members as Admin or Member](/shots/2025-05/more-control-over-team-permissions.png) ### View trusted devices and save two factor logins **Security** · May 15, 2025 View your trusted devices with the time of each login. Save your two factor login for 14 days so you skip the code on devices you trust. ![View trusted devices and save two factor logins](/shots/2025-05/improved-two-factor-authentication.png) ### Custom fields in API uploads **Improvement** · May 15, 2025 You can now include custom fields when you upload files through the API. ### Deep links open the mobile app **Improvement** · May 15, 2025 Deep links now open the Speak app directly if it is installed on your phone. ### Collapsible fields in folder view **Improvement** · May 15, 2025 Fields in the folder view can now be collapsed for a cleaner interface. ## March 2025 ### Speak mobile apps for iOS and Android **Feature** · March 15, 2025 Speak now has iPhone and Android apps in beta so you can record, transcribe, and get insights on the go. The iPhone app comes through TestFlight and the Android app comes from the Google Play store. # Speak AI changelog: every product update shipped in 2026 > Every product update Speak AI shipped in 2026: 91 updates from January through August, covering new features, fixes, and improvements to the product. Source: https://docs.speakai.co/changelog/2026/ · Markdown: https://docs.speakai.co/changelog/2026/index.md [Back to all changelog years](/changelog/) Speak AI shipped 91 updates in 2026, across 8 months. ## August 2026 ### Select upcoming meetings for recording **Fix** · August 4, 2026 Pick which upcoming calendar meetings the assistant records from the meeting list. Set or clear the record checkbox on any event before it starts. ### Hide the media name column in dashboard tables **Improvement** · August 3, 2026 Turn off the automatic media name column in a dashboard table. The table then shows only the columns you chose. ### Volume trends by media date **Feature** · August 3, 2026 Dashboard widgets can now group records over time using each media item's creation date. You can build call and recording volume trends without creating a separate date field first. ### Previous period comparison for distributions **Feature** · August 3, 2026 Field distribution widgets can now compare the current date range against the previous matching period. Dashboards show clearer category shifts over time for both private and shared views. ### Percent formatting in table columns **Fix** · August 2, 2026 Dashboards now show percentage based table columns with the correct format instead of rounding values to whole numbers. Ratio metrics like booking rate render as percentages as expected. ## July 2026 ### SSO password reset guidance **Fix** · July 30, 2026 Users with single sign on accounts now see clear sign in guidance when they request a password reset. The reset flow no longer shows a misleading email sent message when no reset email will arrive. ### Usable meeting scheduling dialog **Fix** · July 28, 2026 You can now reach the time field and action buttons in the scheduling dialog without the form being cut off. Scheduled times also save more accurately for your timezone. ### Dashboard stat deltas and formatting **Feature** · July 25, 2026 Dashboard stat cards now show values as percentages or durations when appropriate. Cards can also compare the current period with the previous one, making changes easier to spot. ### Visible add credits top bar action **Fix** · July 25, 2026 You can now find the add credits action in the top bar across trial and pay as you go states. Eligible workspaces no longer lose the top up entry behind another call to action. ### Automation canvas for file workflows **Improvement** · July 24, 2026 You can now configure file based automations with clearer field mapping, action setup, export destinations, and email notifications. Automations also block export loops that could retrigger the same workflow repeatedly. ### Visible zero credit usage records **Fix** · July 23, 2026 Credit usage now records zero value events instead of silently skipping them when timing data is not ready. Missing ledger entries are easier to reconcile after upload and analysis start. ### Unified transcript selection clip actions **Feature** · July 23, 2026 You can now manage clips directly from transcript selections with one streamlined action menu. Clip boundaries also save more precisely, making selected moments easier to review and reuse. ### Unified credits balance display **Fix** · July 23, 2026 You can now see included credits and added credits together in one place. Plans and usage no longer split balances across separate labels, which makes remaining credits easier to understand. ### Labeled automation chat messages **Fix** · July 22, 2026 Automation generated chat results now show clearer context when no prompt text is stored. Chat history is easier to understand because answers no longer appear without a visible source. ### Stable large tool responses **Fix** · July 22, 2026 AI chat now handles oversized tool results more safely, preventing failed turns and missing message history. Large responses are constrained before they can break chat or saved conversations. ### Correct AI chat resume bubbles **Fix** · July 22, 2026 AI chat now keeps your prompt and the streamed answer in the right bubbles during resume. Confirmed actions also refresh the transcript view more reliably after the response completes. ### Graceful failed chat retries **Fix** · July 22, 2026 AI chat now fails more cleanly when a response cannot be recovered after retry attempts. Users see a proper no response state instead of a broken request. ### Calendar disconnect on deactivation **Security** · July 22, 2026 Deactivated users no longer keep calendar connections active in the background. Meeting assistant scheduling stops after account access is turned off, preventing unwanted joins. ### Live transcript refresh after edits **Feature** · July 22, 2026 Transcript edits made through AI chat now appear in the open transcript view without a reload. You can confirm a change in chat and immediately see the updated transcript. ### Speaker rename scope controls **Feature** · July 22, 2026 You can now choose whether a speaker rename applies to one paragraph or every matching paragraph. Speaker merges also ask for confirmation before combining names across the transcript. ### Millisecond transcript timestamp editing **Feature** · July 21, 2026 You can now view and edit transcript timestamps with full millisecond precision. Time fields show the exact timing already present in the transcript, which makes fine adjustments easier. ### Transcript speaker reset action **Feature** · July 21, 2026 You can now reset transcript speakers from the editor when labels need a fresh start. Speaker cleanup is faster when a transcript has widespread attribution mistakes. ### Restore the original transcript after edits **Fix** · July 21, 2026 Return an edited transcript to its original version. The untouched original stays available after you make changes, so you can go back to it. ### Cloud storage automation authoring **Feature** · July 21, 2026 You can now build automations that watch cloud storage folders and send files through Speak workflows. Automation setup also supports connected actions and transcript exports from the same canvas. ### Stable chat requests without media **Fix** · July 20, 2026 AI chat now handles requests more safely when no media selection is provided. Missing media inputs no longer trigger avoidable request failures. ### Folder picker for uploads **Feature** · July 17, 2026 You can now choose a destination folder more easily during upload setup. The upload flow makes folder selection clearer before media is added to your library. ### Stable browser audio recorder teardown **Fix** · July 17, 2026 Recorder sessions now close cleanly in affected browsers when you leave a live recording screen. Audio capture no longer throws an error during teardown in the survey recorder flow. ### Visible dashboard chat generation state **Fix** · July 17, 2026 You now see progress while dashboard chat responses are being generated instead of a blank message area. Dashboard widgets also refresh more smoothly after AI generated changes appear. ### Capture dialog for upload workflows **Feature** · July 17, 2026 You can now start uploads and translations from a shared capture dialog with clearer steps, faster shortcuts, and better folder preselection. Meeting capture links also open the correct join flow and dialog content displays with proper spacing. ### Recorder media detail loading **Fix** · July 16, 2026 Recorder created media now opens correctly in media detail views that previously failed to load. Media lookups accept the public recording identifier used by the recorder experience. ### AI dashboard builder and sections **Feature** · July 16, 2026 You can now build dashboards with a richer widget catalog, organized sections, and AI chat that helps generate dashboard layouts. Dashboards also support stronger validation and more complete team activity and widget data. ### Recorder branding and field toggles **Fix** · July 15, 2026 You can now save recorder branding changes reliably, including colors, fonts, themes, and custom styling. Default field toggles also save correctly during recorder setup and editing. ### Stable embedded player framing **Fix** · July 15, 2026 Embedded experiences now load without repeated browser security errors when framed on external sites. Legitimate cross site embeds continue working without disruptive console failures. ### Chat answer document exports **Fix** · July 15, 2026 You can now download chat answers as DOCX and PDF again, including streamed responses that previously failed to export. Exports now use the correct saved answer reference. ### Inline creation in selection menus **Feature** · July 14, 2026 You can now create folders and custom fields directly from selection menus without leaving your current workflow. Search also matches custom field values more accurately, and records with linked content are protected from accidental deletion. ### Broader media search matching **Improvement** · July 14, 2026 You can now find media by custom field values in search results, making folder and library searches more complete. Search also handles special characters more reliably and prevents invalid card deletions. ### Visible menus in full screen chat **Fix** · July 13, 2026 Dropdown menus now open correctly when the chat panel is maximized. Model, assistant, and recommendation pickers stay visible instead of appearing behind the full screen interface. ### Choose from Claude, GPT, Gemini, Grok and GLM models **Feature** · July 13, 2026 Pick the model that answers your chat from Claude Sonnet 5, Claude Opus 4.8, Claude Sonnet 4.6, GPT-5.6 Sol, GPT-5.6 Terra, GPT-5.5, Gemini 3.5 Flash, Gemini 3 Flash, Grok 4.5 and GLM 5.2. Your plan decides which of them you can use. ### Automation Library template picker **Feature** · July 11, 2026 You can now start automations from a curated template library instead of building from scratch every time. New automation opens the library first, with a blank canvas option pinned at the top. ### Create custom fields without a description **Fix** · July 9, 2026 Add a custom field with just a name and skip the description. The description stays optional whether you build the field yourself or have AI generate it. ### In app What's New hub **Feature** · July 9, 2026 You can now see the latest product announcements in a dashboard modal and reopen them later from the account menu. The changelog page also matches your app theme for a smoother reading experience. ### In app changelog access **Feature** · July 9, 2026 You can now open the latest product updates from the account menu. A new changelog page keeps release notes available inside the app with matching theme and layout. ### Search the full list in dropdowns **Improvement** · July 8, 2026 Dropdown search looks through your full list instead of only the items loaded on screen. You find folders and other items without scrolling to load them first. ### Visible prompt text on retry **Fix** · July 8, 2026 Retrying a failed chat message now keeps your original prompt visible while the new response is prepared. Chat history stays readable instead of showing a blank prompt bubble. ### Simplified recorder recovery behavior **Improvement** · July 6, 2026 Recorders now use a simpler recording flow without showing crash recovery states from older sessions. New recordings start cleanly instead of surfacing stale local recovery prompts. ### Record first mobile capture flow **Improvement** · July 6, 2026 Mobile recording now starts immediately without requiring a code or setup before capture. Recordings save offline first, and recorder selection, questions, and upload happen afterward from saved recordings. ### Unified workspace product switching **Improvement** · July 3, 2026 You can now move between Speak and Speak Agents from the sidebar with a smoother sign in handoff. New account setup also lands on a dedicated welcome flow that makes cross product access clearer. ### Canvas workspace for agent planning **Feature** · July 3, 2026 You can now start building agents in a new canvas workspace designed for visual planning. Agents gain a foundation for arranging steps and logic in a more flexible builder experience. ### Deep link return after SSO **Fix** · July 3, 2026 You can now return to the page you originally opened after signing in with single sign on. Email links and other deep links no longer drop you back on the home screen. ### Cross workspace sign in flow **Improvement** · July 3, 2026 You can now move between connected Speak AI workspaces with a smoother sign in experience. Eligible users land in the right workspace without repeating account setup steps. ### Expanded webhook automation integrations **Feature** · July 2, 2026 You can now connect outbound webhooks to more automation platforms with simpler setup. Integrations also support more reliable event delivery and push based triggers for faster downstream workflows. ### Pick the AI model for your chat **Feature** · July 1, 2026 You can now choose which AI model runs your chat from the latest top models, and set a default that sticks. Ask about one file or your whole library with the model you trust. ![Pick the AI model for your chat](/shots/2026-07/choose-model.png) [Open Chat →](https://app.speakai.co/chat/history) ### Automations on a visual canvas **Feature** · July 1, 2026 Automations got their biggest upgrade yet. You build a workflow on a visual canvas and Speak runs it for you. New triggers fire when a file finishes, a field changes, or a webhook comes in. You can add filter and branch steps, send alerts by email, Slack, or in the app, and review a full run history with test runs. ![Automations on a visual canvas](/shots/2026-07/automations-canvas.png) [Open Automations →](https://app.speakai.co/automations) ### A rebuilt integrations page **Feature** · July 1, 2026 We rebuilt the integrations page so you can connect in a couple of clicks. Link tools like Gmail, Slack, Notion, and Google Docs so Speak can act inside your automations. Sync Slack, Google Calendar, Outlook, Vimeo, and the Chrome extension, and connect Speak to ChatGPT, Claude, or Claude Code with one link. ![A rebuilt integrations page](/shots/2026-07/integrations-page.png) [Open Integrations →](https://app.speakai.co/integrations) ### A new recorder app for Android **Feature** · July 1, 2026 The new Speak mobile app is live on Android. You can record any conversation with no login and fully offline, whether it is a meeting, a call, or a chat in the field. Everything syncs to your workspace once you enter your recorder code. ![A new recorder app for Android](/shots/2026-07/android-recorder.png) [Open Surveys →](https://app.speakai.co/recorder) ### A cleaner and faster chat **Improvement** · July 1, 2026 Chat is cleaner and quicker. Press Enter to send, attach an audio or video file or paste a link, stop a reply while it is still writing, and chat with one file or your whole library. [Open Chat →](https://app.speakai.co/chat/history) ### Choose which meetings your notetaker joins **Improvement** · July 1, 2026 You can now choose exactly which meetings your notetaker joins, with simple rules to skip the calls you want to keep private. [Open Meeting Assistant →](https://app.speakai.co/meeting-assistant) ### Balance is now Credits **Improvement** · July 1, 2026 Your balance is now called Credits, and your trial status is always in view. ## June 2026 ### Build and share custom dashboards **Feature** · June 15, 2026 You can now build your own dashboards with cards and charts from your media fields, filter them, and share a public link or embed them. An optional email gate captures leads and shows you who viewed the dashboard. ![Build and share custom dashboards](/shots/2026-06/custom-dashboards.png) [Open Dashboards →](https://app.speakai.co/dashboards) ### An assistant that acts on your workspace **Feature** · June 15, 2026 The Speak assistant can take actions in your workspace using its tools and asks clarifying questions when it needs them. Anything destructive is held back until you confirm it. [Open Chat →](https://app.speakai.co/chat/history) ### Attach files to AI chat **Improvement** · June 15, 2026 You can add images, PDFs, or audio and video files directly to a chat message. Images and documents give the AI extra context, and audio or video is transcribed before the chat reads it. [Open Chat →](https://app.speakai.co/chat/history) ### Use your integrations inside AI chat **Feature** · June 15, 2026 Connect tools like Gmail, Slack, Notion, and Google Drive and let the assistant use them during a conversation. You can also trigger the same integrations from automations. [Open Integrations →](https://app.speakai.co/integrations) ### Variables in prompts **Feature** · June 15, 2026 You can drop variables into your chat and automation prompts. Speak swaps in real values from the current media, folder, user, or workspace before the prompt reaches the model. [Try it in Chat →](https://app.speakai.co/chat/history) ### Choose your chat assistant **Improvement** · June 15, 2026 You can now pick which assistant answers you from the chat input, including custom assistants you set up. Each assistant is tuned for a different style of help. [Open Chat →](https://app.speakai.co/chat/history) ### Trigger automations from any tool **Feature** · June 15, 2026 Automations can now start from an inbound webhook, so any external tool can kick off a Speak workflow. [Open Automations →](https://app.speakai.co/automations) ### Recorder pairing codes **Feature** · June 15, 2026 Turn on recorder pairing codes to connect the native recorder apps to your workspace with a six digit code. You can find the code on the recorder share tab and rotate it anytime. [Open Surveys →](https://app.speakai.co/recorder) ### The redesigned Speak app is live **Feature** · June 6, 2026 The Speak app has a fresh redesign and it is live. It is easier to move around and built around how you work, so you reach your recaps, decisions, and follow ups in fewer steps. The old version is still there and you can switch back any time. ![The redesigned Speak app is live](/shots/2026-06/new-app.png) ### Live meeting transcripts as they happen **Feature** · June 6, 2026 You can now pull a live meeting transcript in real time and act on the call while it is still going. ## May 2026 ### Speak connector for Claude, ChatGPT, and Cursor **Feature** · May 15, 2026 Speak now connects to Claude, ChatGPT, and Cursor through a connector URL. You paste the connector URL into your AI tool settings, then ask it to upload a recording or pull action items from your last meeting, using an API key from your developer settings. ![Speak connector for Claude, ChatGPT, and Cursor](/shots/2026-05/mcp-connector.png) [Set up the connector →](https://docs.speakai.co/mcp) ### Bulk import from a CSV file **Feature** · May 15, 2026 You can now upload a CSV to bring in many media links or text notes at once. This saves you from adding each item by hand. [Import media →](https://app.speakai.co/embed-media) ### Dub your videos into other languages **Feature** · May 15, 2026 Translation now includes audio dubbing and lets you set a different target language for each file. You see a clear cost breakdown before you start. [Open Translate →](https://app.speakai.co/translate) ### Bring in content from web pages **Feature** · May 15, 2026 A web scraper lets you pull text from a web page directly into Speak for analysis. You point it at a link and Speak imports the content. [Open Integrations →](https://app.speakai.co/integrations) ### Record your screen with a camera overlay **Feature** · May 15, 2026 The web recorder can now capture your screen together with a picture in picture camera view. This makes it easy to record walkthroughs and demos. [Open Surveys →](https://app.speakai.co/recorder) ### AI insights on text documents **Feature** · May 15, 2026 Speak now runs its AI analysis on text files and notes, not only audio and video. You get the same insights and fields from written content. [Open Analyze Data →](https://app.speakai.co/explore) ### Speak AI command line tool **Feature** · May 15, 2026 A command line tool lets you upload, transcribe, and manage your media from the terminal. It runs alongside the connector for scripted and developer workflows. [Read the CLI guide →](https://docs.speakai.co/sdk/) ## April 2026 ### Explore trends and sentiment across your library **Feature** · April 15, 2026 A new Explore view surfaces trending topics and sentiment across all your media. It shows how each metric changed compared to the previous period so you can see what is moving. [Open Analyze Data →](https://app.speakai.co/explore) ### Purpose built chat agents **Feature** · April 15, 2026 AI chat now offers different agent types tuned for different jobs instead of one generic assistant. You pick the agent that fits the question you are asking. [Open Chat →](https://app.speakai.co/chat/history) ## March 2026 ### Live Speak voice AI agent preview **Feature** · March 15, 2026 You can now try a live Speak voice AI agent on the web or by calling a phone number. The agent knows the Speak platform and can answer questions about features, workflows, and pricing and guide you step by step. [Try the voice agent →](https://speakai.co/voice-agents/) ### Live translation across languages **Feature** · March 15, 2026 Speak now supports live translation across multiple languages. [Open Translate →](https://app.speakai.co/translate) ## February 2026 ### Integrated help and AI chat panel **Feature** · February 15, 2026 Help and Chat now open in a panel across the whole app. There is a clear split between Help for support and Chat for analysis, and answers are grounded in the documentation and best practices. ![Integrated help and AI chat panel](/shots/2026-02/integrated-help-and-ai-chat-panel.png) [Open Chat →](https://app.speakai.co/chat/history) ### Transcript view upgrades **Improvement** · February 15, 2026 The transcript now opens in a full width view by default for easier reading. You can toggle the insights and chat panels on and off. ![Transcript view upgrades](/shots/2026-02/transcript-view-upgrades.png) ### Dashboard refresh **Improvement** · February 15, 2026 Quick Actions are grouped with clearer labels and recent and ongoing activity is easier to see. Account usage is expanded and there is a new Discover section for helpful resources. ![Dashboard refresh](/shots/2026-02/dashboard-refresh.png) [Open Home →](https://app.speakai.co/home) ### 31 more transcription languages **Feature** · February 15, 2026 Speak added transcription support for 31 more languages. ### Saved prompt templates **Feature** · February 15, 2026 Save your most used AI chat prompts as templates and reapply them in one click. This keeps recurring analysis consistent and faster to run. [Open Chat →](https://app.speakai.co/chat/history) ## January 2026 ### AI chat actions on transcripts **Feature** · January 15, 2026 You can now create clips, rename speakers, and edit transcript text directly from the AI chat. Changes apply instantly, you can revert them with revisions, and you can export to Word, PDF, and TXT. ![AI chat actions on transcripts](/shots/2026-01/ai-chat-actions-on-transcripts.png) [Open Chat →](https://app.speakai.co/chat/history) ### Intelligent account search **Feature** · January 15, 2026 The search in the top left is improved. You can filter results by data type and analyze your data with filters that are ready to use. ![Intelligent account search](/shots/2026-01/intelligent-account-search.png) ### Custom CSS branding for surveys **Feature** · January 15, 2026 Surveys now support custom CSS. You can style each survey on its own or apply the branding across your whole account. ![Custom CSS branding for surveys](/shots/2026-01/custom-css-branding-for-surveys.png) [Open Surveys →](https://app.speakai.co/recorder) ### SSO team invite links **Feature** · January 15, 2026 You can invite teammates with a shareable link and require team members to register through SSO. ![SSO team invite links](/shots/2026-01/sso-team-invite-links.png) [Open Team →](https://app.speakai.co/team) ### Pay as you go media retention **Improvement** · January 15, 2026 Media now stays live for 30 days and you get a reminder before files are archived. Subscribing to a plan keeps files live. ### AI powered data extraction fields **Feature** · January 15, 2026 You can now set field properties that tell the AI exactly what information to pull from each recording. Speak fills those fields automatically across your media and automations. [Open Analyze Data →](https://app.speakai.co/explore) ### Keyword alerts on transcripts **Feature** · January 15, 2026 Set up alerts that fire when chosen keywords appear in a transcript. Speak can notify you or start an automation the moment those words are detected. [Open Automations →](https://app.speakai.co/automations) # Speak AI Help > Every Speak AI help guide in one place: upload and record, transcribe, chat with your recordings, build dashboards, share and export, manage your account. Source: https://docs.speakai.co/help/ · Markdown: https://docs.speakai.co/help/index.md Guides for using Speak AI, grouped the way you actually work. Search below, or browse the sections. ## Get media in Record it, upload it, or let the assistant join the meeting and capture it for you. - **[Getting started](/help/start/)** 3 pages Upload or record audio, video and text, transcribe it across 135 languages with speakers identified, then summarize and analyze it with AI. - **[Uploads](/help/uploads/)** 6 pages Upload from your computer, import from a URL, pull from a connected integration, or record straight into the app. - **[Embeddable recorder](/help/recorder/)** 10 pages Collect audio and video from anyone through your website or a share link. Submissions upload and transcribe automatically. - **[Meeting Assistant](/help/meeting-assistant/)** 8 pages The Meeting Assistant joins Zoom, Google Meet, Microsoft Teams and Webex calls to record, transcribe and summarize them. ## Understand what is in it Transcription, then the answers and insights Speak AI pulls out of it. - **[Transcription](/help/transcription/)** 9 pages Speak AI transcribes audio and video automatically across 135 languages, separates speakers, and timestamps every line for review and editing. - **[AI Chat](/help/ai-chat/)** 6 pages Open AI Chat on a file or a folder, ask a question in plain language, and get an answer grounded in your own recordings. - **[Insights](/help/insights/)** 6 pages What Speak AI extracts from every recording, what each insight type means, and how to read them without opening the transcript. ## Put it to work Turn recurring analysis into something that runs itself, and watch it on a dashboard. - **[Automations](/help/automations/)** 5 pages Chain a trigger, conditions and actions on a visual canvas so work runs on every new recording without anyone starting it. - **[Dashboards](/help/dashboards/)** 2 pages Build an analytics surface from widgets, charts, KPI cards, tables and notes on a resizable grid scoped to chosen folders. ## Organize and share Find a recording again, send it to someone, or take the data out. - **[Folders](/help/folders/)** 4 pages Group files into folders, tag across them, save column views, and find anything with Cmd+K. - **[Sharing](/help/sharing/)** 4 pages Share a recording with a public link, embed the player on your site, cut a clip, or open a whole white-label library to a client. - **[Exports](/help/exports/)** 3 pages Download transcripts as PDF, DOCX, TXT, CSV, SRT, VTT, JSON or HTML, with options to redact names, emails, locations, brands and dates. ## Run your workspace Teammates and permissions, connected tools, and your plan. - **[Teams](/help/teams/)** 1 pages Invite teammates, group them, set folder-level permissions, and share a media library across your whole Speak AI workspace. - **[Integrations](/help/integrations/)** 4 pages Speak AI integrates with Google Drive, Slack, Zoom, Zapier, Vimeo and more, so recordings flow in and results flow out automatically. - **[Account](/help/account/)** 11 pages Manage your free trial, plan, credits, payment methods and invoices, change or cancel your subscription, set notifications, and delete your data. ## When something is wrong Fix a failed upload or export, and read how Speak AI handles your data. - **[Troubleshooting](/help/troubleshoot/)** 4 pages Fix a failed upload, a transcription that did not finish, an export that never arrived, or a declined payment, starting from what you saw on screen. - **[Security](/help/security/)** 42 pages Encryption in transit and at rest, access control, retention limits, sub-processors and the certifications Speak AI holds. # Account > Manage your free trial, plan, credits, payment methods and invoices, change or cancel your subscription, set notifications, and delete your data. Source: https://docs.speakai.co/help/account/ · Markdown: https://docs.speakai.co/help/account/index.md Your relationship with Speak AI in one place: what the [free trial](/help/account/free-trial/) includes, how [plans](/help/account/plans/) and [credits](/help/account/credits/) work, managing [payment methods](/help/account/payment-methods/) and [invoices](/help/account/invoices/), changing or pausing your [subscription](/help/account/subscription/), controlling [email preferences](/help/account/notifications/), and exactly what happens on [data deletion](/help/account/data-deletion/). Nothing here auto-charges and nothing surprises you: the trial converts to a free tier, credits reset each cycle, and deletion is permanent after a 7-day recovery window. - **[Affiliate program](/help/account/affiliate-program/)** - **[Credits and usage](/help/account/credits/)** - **[Data deletion](/help/account/data-deletion/)** - **[Email preferences](/help/account/email-preferences/)** - **[Free trial](/help/account/free-trial/)** - **[Invoices and receipts](/help/account/invoices/)** - **[Notifications](/help/account/notifications/)** - **[Payment methods](/help/account/payment-methods/)** - **[Plans and pricing](/help/account/plans/)** - **[Subscription](/help/account/subscription/)** Questions about billing on a team plan? [Book a free consult](https://calendly.com/speak-ai/consult?utm_source=docs&utm_campaign=consult). # Affiliate program > Earn 25% recurring commission on every customer you refer, with a 60-day cookie window and a real-time tracking dashboard. Source: https://docs.speakai.co/help/account/affiliate-program/ · Markdown: https://docs.speakai.co/help/account/affiliate-program/index.md The Speak AI affiliate program pays you a recurring commission for referring new customers. When someone signs up through your affiliate link and becomes a paying customer, you earn a share of their subscription for as long as they stay. ## Program details - **Commission:** 25% recurring on every payment from referred customers - **Duration:** the lifetime of the customer's subscription - **Cookie window:** 60 days from the click to the conversion - **Coverage:** every paid plan ## What you get - An affiliate dashboard that tracks clicks, conversions, and earnings in real time - Marketing materials including banners, deep links, and email templates - Freedom to promote Speak AI in your own way ## Apply Apply at [speakai.co/affiliates](https://speakai.co/affiliates/?utm_source=docs&utm_medium=referral&utm_campaign=help). Once you are approved, you get your tracking dashboard and your affiliate link, which you can share on your website, social media, newsletter, or anywhere else you reach an audience. For questions about the program, email success@speakai.co or send us a message in the app. Evaluating Speak AI for a team? [Book a demo and see your own recordings analyzed](https://calendly.com/speak-ai/demo?utm_source=docs&utm_campaign=book-demo). --- Related: [Account](/help/account/) · [Credits and usage](/help/account/credits/) # Credits calculator > Work out what your credits cover: transcription hours, Meeting Assistant time, translation characters and AI Chat questions on standard and premium models. Source: https://docs.speakai.co/help/account/credits-calculator/ · Markdown: https://docs.speakai.co/help/account/credits-calculator/index.md Every action in Speak AI draws on one credit balance, so the useful question is not "how many credits do I have" but "what does that buy". This page gives you the rates and the arithmetic to answer that before you spend anything. If you want the concepts first (what credits are, where to check your balance, what happens when you run low), read [credits and usage](/help/account/credits/). ## What one credit buys | What you do | One credit gets you | | --- | --- | | Transcribe uploaded audio or video | 1 hour | | Transcribe with the Azure or AWS engines | 40 minutes | | Record a meeting with the Meeting Assistant | 30 minutes | | Translate a transcript | about 16,700 characters | | Analyze text notes | 100 notes | | Import a YouTube video | 20 imports | | Ask AI Chat a question | about 10 questions | Transcription bills by the minute and is never rounded up to the hour, so a 12-minute file costs 0.2 credits, not a whole one. ## What a balance covers Pick the row closest to your balance. Every column assumes you spend the whole balance on that one thing, so treat these as ceilings rather than a budget you can hit all at once. | Credits | Transcription | Meeting Assistant | Translation | AI Chat questions | | --- | --- | --- | --- | --- | | 2 (the [free trial](/help/account/free-trial/)) | 2 hours | 1 hour | 33,000 characters | 20 | | 10 | 10 hours | 5 hours | 167,000 characters | 100 | | 25 | 25 hours | 12 hours 30 minutes | 417,000 characters | 250 | | 100 | 100 hours | 50 hours | 1,670,000 characters | 1,000 | The AI Chat column uses the cautious planning rate of 0.1 credits a question, which is the same figure your Usage screen shows. What a question actually costs depends on the model. ## AI Chat: standard versus premium models Speak charges a chat question on what the model itself costs, so the gap between a standard model and a premium one is large. These are averages measured over 30 days of real Speak traffic, not list prices. | Model | Tier | Credits a question | Questions per 10 credits | | --- | --- | --- | --- | | Gemini 2.5 Flash | Standard | about 0.04 | about 250 | | GPT-5.5 | Premium | about 0.63 | about 16 | | Claude Sonnet | Premium | about 0.75 | about 13 | | Claude Opus | Premium | about 1.20 | about 8 | A long question that sends a large transcript to the model costs more than a short one, and a short one costs less, so read these as typical rather than fixed. > **The free tier is locked to the standard model** > > On the free trial and the free tier, AI Chat runs on Gemini 2.5 Flash. Premium models appear in > the model picker with a lock and open up when you upgrade, so a trial balance always buys the > standard-model rate. ## Work out what a specific job costs Three formulas cover almost everything: - **Transcription:** minutes of audio ÷ 60. Use ÷ 40 on the Azure or AWS engines. - **Meeting Assistant:** minutes of meeting ÷ 30. - **Translation:** characters ÷ 16,700. If you only know the length of the recording, a minute of speech is roughly 800 characters. A worked example. You have a 45-minute interview and you want it transcribed, translated, and then a handful of questions asked about it on the standard model: | Step | Arithmetic | Credits | | --- | --- | --- | | Transcribe 45 minutes | 45 ÷ 60 | 0.75 | | Translate the transcript | 45 × 800 = 36,000 characters, ÷ 16,700 | 2.16 | | Ask 10 questions on Gemini 2.5 Flash | 10 × 0.04 | 0.40 | | **Total** | | **about 3.3** | Run the same interview through Claude Opus instead of Gemini and those 10 questions cost about 12 credits on their own, which is four times the rest of the job put together. ## Pay-As-You-Go doubles every rate On the Pay-As-You-Go plan every credit rate on this page doubles, so a credit buys half as much: 30 minutes of transcription instead of an hour, 15 minutes of Meeting Assistant instead of 30. Halve every figure in the tables above and you have your answer. ## What does not draw on credits Reviewing transcripts, reading insights, sharing, and exporting are free. Only processing new work costs credits, so you can go back through everything you have already made as often as you like. Re-transcribing a file is new work: it runs the whole pipeline again and charges again. For current credit amounts and per-seat pricing, see [speakai.co/pricing](https://speakai.co/pricing/?utm_source=docs&utm_medium=referral&utm_campaign=help). --- Related: [Credits and usage](/help/account/credits/) · [Free trial](/help/account/free-trial/) · [Plans and pricing](/help/account/plans/) · [Payment methods](/help/account/payment-methods/) # Credits and usage > Your plan carries a credit pool spent across transcription, AI Chat, translation and the Meeting Assistant. Credits reset each billing cycle. Source: https://docs.speakai.co/help/account/credits/ · Markdown: https://docs.speakai.co/help/account/credits/index.md Your Speak plan runs on **credits**. Each billing cycle your plan includes a pool of credits that you spend across everything you do in Speak: transcription, AI Chat, translation, the Meeting Assistant, and text notes. Credits carry a dollar value, so you can see what an action costs, and they reset at the start of each cycle. One balance covers all of it. The same credits can go toward transcription or toward AI Chat, so you are not locked into separate buckets, and Speak shows the estimated cost before you run something. ## What draws on your credits - **Transcription** is based on the length of the audio or video you process, not the time you spend in the app. A 30-minute recording uses 30 minutes of transcription. - **AI Chat** is based on how much text is processed: the transcript sent to the model plus the response generated. - **Re-transcribing** a file runs the full pipeline again, so it draws on your plan again. - Reviewing transcripts, reading insights, and exporting are free. Only processing new work draws on your plan. ## Check your balance and usage Open the profile menu at the bottom-left of the sidebar, then go to Settings > Billing > [Usage](https://app.speakai.co/profile/usage) to see your balance and what you have used this cycle. Your available balance and past invoices are under Settings > Billing > [Payment & Invoices](https://app.speakai.co/profile/payment). ## If you run low You are never hard-blocked. When you go past what your plan includes, the extra usage is billed from your Speak Credit balance, a prepaid balance in US dollars that never expires, and then from your card. You can top up at any time. ## Add prepaid credit 1. Go to [Payment & Invoices](https://app.speakai.co/profile/payment). 1. Select **Reload your credit**. 1. Enter the amount you want to add and confirm. Speak AI charges the card you have on file and your balance updates right away. If you have not added a card yet, use **Add a Card** on the same page first. See [payment methods](/help/account/payment-methods/) for the full steps. ## Accounts created before credits Accounts that existed before the move to credits use the earlier model: a monthly allowance of transcription hours and AI Chat characters, plus a Speak Credit balance in US dollars for anything beyond it. If that is your account, your Usage page shows hours and characters instead of credits. ## File size On the free plan, each file can be up to 2 GB. Paid plans can upload larger files. See [supported formats](/help/uploads/formats/) for the rest of the upload rules. For current credit amounts and per-seat pricing, see [speakai.co/pricing](https://speakai.co/pricing/?utm_source=docs&utm_medium=referral&utm_campaign=help). Evaluating Speak AI for a team? [Book a demo and see your own recordings analyzed](https://calendly.com/speak-ai/demo?utm_source=docs&utm_campaign=book-demo). --- Related: [Credits calculator](/help/account/credits-calculator/) · [Account](/help/account/) · [Plans and pricing](/help/account/plans/) · [Payment methods](/help/account/payment-methods/) # Data deletion > Deleted files enter a 7-day soft-delete window before permanent removal. Covers file deletion, account deletion and what is retained. Source: https://docs.speakai.co/help/account/data-deletion/ · Markdown: https://docs.speakai.co/help/account/data-deletion/index.md ## Deleting individual files When you delete a media file, transcript, or text note: 1. The file enters a **7-day soft delete** period 1. During this period, the file can be recovered if needed 1. After 7 days, the file is **permanently deleted** from our servers To delete a file, open it and select **Delete** from the actions menu, or select multiple files in a folder and use the bulk delete option. ## Deleting your account To permanently delete your entire account and all associated data: 1. Go to [Settings > Data Management](https://app.speakai.co/profile/data) 1. Click **Delete Account** 1. Confirm the deletion This action is **irreversible**. All your media files, transcripts, analysis data, and account settings will be permanently removed. We recommend exporting any data you want to keep before deleting. ## What gets deleted - The original audio/video file - The transcript text - All AI analysis results (insights, sentiment, keywords) - AI Chat conversation history for that file - Any clips created from the file ## Do you train AI on my data? **No.** Speak AI does not use your data to train AI models unless you explicitly instruct us to. Your content remains private and is only processed for the features you use. ## Data residency Speak AI data centers are located in Canada Central and North United States regions. Enterprise customers can request specific data storage locations. For details, see our [security overview](/help/security/). Evaluating Speak AI for a team? [Book a demo and see your own recordings analyzed](https://calendly.com/speak-ai/demo?utm_source=docs&utm_campaign=book-demo). --- Related: [Account](/help/account/) · [Affiliate program](/help/account/affiliate-program/) # Email preferences > Change which Speak AI emails you receive, or stop marketing email entirely, from the notification settings in your profile. Source: https://docs.speakai.co/help/account/email-preferences/ · Markdown: https://docs.speakai.co/help/account/email-preferences/index.md You choose which emails Speak AI sends you. Turn off the categories you do not want, such as product updates or the newsletter, and keep the ones tied to your account. ## Change your preferences in your profile Go to [Profile > Email Notifications](https://app.speakai.co/profile/notifications), uncheck any category you no longer want, and save. This is also where you control alerts for your own work, for example [recording submission notifications](/help/account/notifications/). ## Unsubscribe from a marketing email Every marketing email has an **Unsubscribe** or **Manage Preferences** link at the bottom. Clicking it stops that type of email without touching the rest of your settings. ## Emails you keep receiving either way Transactional email such as password resets and invoice notifications is not part of the marketing categories. Those messages carry account security and billing information, so they keep arriving while your account is open. ## If emails keep arriving after you unsubscribe Changes can take 24 to 48 hours to apply across every system, so a message already queued may still land. If you are still getting an email a few days later, send us a message and we will check it. Still stuck? Write to success@speakai.co or [book a free consult](https://calendly.com/speak-ai/consult?utm_source=docs&utm_campaign=consult). --- Related: [Account](/help/account/) · [Notifications](/help/account/notifications/) # Free trial > The trial runs 7 days with every premium feature on and 2 credits to spend: 2 hours of transcription, 1 hour of Meeting Assistant, or about 20 AI Chat questions. Source: https://docs.speakai.co/help/account/free-trial/ · Markdown: https://docs.speakai.co/help/account/free-trial/index.md Every Speak AI trial runs 7 days with **every premium feature turned on**: transcription, AI Chat, the Meeting Assistant, automations, insights, and exports. No credit card required, and nothing is charged when it ends. {/* fact:trial.days */}{/* fact:trial.no_card */} Your trial comes with **2 credits**. {/* fact:trial.credits */} One balance covers everything, so you choose whether to spend it on transcription, on AI Chat, on translation, or on a mix of all three. Credits carry a dollar value, and Speak shows the estimated cost before you run something. ## What 2 credits covers Spend the whole balance on one thing and you get: | What you do | Rate | 2 credits covers | | --- | --- | --- | | Transcribe uploaded audio or video | 1 credit an hour | **2 hours** | | Transcribe with the Azure or AWS engines | 1.5 credits an hour | 1 hour 20 minutes | | Record a meeting with the Meeting Assistant | 2 credits an hour | 1 hour | | Translate a transcript | 6 credits per 100,000 characters | about 33,000 characters, roughly 40 minutes of speech | | Ask AI Chat a question | 0.1 credits a question | about 20 questions | | Analyze text notes | 1 credit per 100 notes | 200 notes | | Import a YouTube video | 0.05 credits an import | 40 imports | Transcription is billed by the minute, not rounded up to the hour. A 12-minute file costs 0.2 credits and leaves the rest of your balance for something else. > **0.1 credits a question is the cautious figure** > > Speak plans AI Chat at 0.1 credits a question so your usage screen never promises more than it > can deliver. Measured over 30 days of real traffic, a question on the trial's model averages > closer to 0.04 credits, so 2 credits usually stretches well past 20 questions. Want to work out a different balance, or check what a specific recording costs before you upload it? Use the [credits calculator](/help/account/credits-calculator/). ## Which AI model the trial uses During the trial your account sits on the free tier, so AI Chat runs on **Gemini 2.5 Flash**. Premium models such as Claude Sonnet, Claude Opus, and GPT-5.5 show a lock in the model picker and open up when you upgrade. {/* fact:trial.free_tier_model */} That is what keeps chat cheap while you evaluate. A premium model costs roughly 16 to 30 times more per question, so the same 2 credits would cover one or two questions instead of twenty. Comparing models is a paid-plan exercise, not a trial one. ## Is 2 credits enough for you? Work it out against what you actually want to test: - **One interview or one podcast episode.** Yes. A 45-minute recording transcribes for 0.75 credits and leaves more than a credit for AI Chat and exports. - **A short meeting through the Meeting Assistant.** Yes. A 30-minute meeting costs 1 credit, which is half the balance. - **A transcript plus a translation.** Yes, for a short file. A 20-minute recording costs 0.33 credits to transcribe and about 0.96 credits to translate, so roughly 1.3 credits together. - **A full research study, a back catalogue, or a week of team meetings.** No. Two credits will not cover it, and running out mid-evaluation tells you nothing useful. If your evaluation is in that last group, ask us and we'll set up a custom trial sized to it: [book a free consult](https://calendly.com/speak-ai/consult?utm_source=docs&utm_campaign=consult) or write to success@speakai.co. ## What happens when the trial ends **You are not charged.** The account converts to the free tier: you keep access to Speak AI, your uploads, transcripts, and analysis. Limits apply to new work, not to what you already made. Upgrade whenever it's actually worth it to you: [compare plans](/help/account/plans/). ## Can I test with a long recording? Yes, and a single long file can use the whole balance. Two hours of audio is exactly 2 credits, so a two-hour recording spends the trial in one upload. That is a legitimate test, not a problem, as long as you know it leaves nothing for AI Chat afterwards. If you want both, upload something shorter first. ## Do trial transcripts work like paid ones? Yes: view, edit, export, and share them exactly as on a paid plan. That's the point of the trial: judge Speak AI on your own recordings, end to end. --- Related: [Credits calculator](/help/account/credits-calculator/) · [Plans and pricing](/help/account/plans/) · [Credits and usage](/help/account/credits/) · [Upload files](/help/uploads/) · Evaluating for a team? [Book a demo and see your own recordings analyzed](https://calendly.com/speak-ai/demo?utm_source=docs&utm_campaign=book-demo) # Invoices and receipts > Receipts email automatically from Stripe on every payment. Download past invoices, including VAT invoices, from your payment history. Source: https://docs.speakai.co/help/account/invoices/ · Markdown: https://docs.speakai.co/help/account/invoices/index.md ## Automatic email receipts When you make a payment on Speak AI AI, a receipt is automatically sent to the email address associated with your account. Check your inbox (and spam folder) for emails from Stripe, our payment processor. ## Viewing payment history 1. Go to your [Payment Information page](https://app.speakai.co/profile/payment) 1. Scroll down to see your payment history 1. Click on any transaction to view or download the invoice ## Downloading invoices From your payment history, you can download invoices as PDF files. Each invoice includes the date, amount, plan details, and payment method used. ## VAT and custom invoicing If you need invoices with VAT details, company information, or reverse charge formatting for your business, reach out to our support team. We can set up custom invoicing for enterprise and business accounts. ## Didn't receive a receipt? - Check your spam/junk folder for emails from Stripe - Make sure your account email is correct in your [profile settings](https://app.speakai.co/profile/usage) - Contact us and we can resend the receipt Still stuck? Write to success@speakai.co or [book a free consult](https://calendly.com/speak-ai/consult?utm_source=docs&utm_campaign=consult). --- Related: [Account](/help/account/) · [Affiliate program](/help/account/affiliate-program/) # Notifications > Email yourself and chosen teammates whenever someone submits to a recorder. Set per recorder, so each project notifies its own owner. Source: https://docs.speakai.co/help/account/notifications/ · Markdown: https://docs.speakai.co/help/account/notifications/index.md When someone submits a recording to one of your [recorders](/help/recorder/), Speak AI can email you and the teammates you choose. You set this per recorder, so each recorder notifies its own group. ## Turn notifications on for a recorder 1. Open the recorder and go to its **Settings** tab. 1. In the **Notifications** section, turn on **Upload notification** ("Send notification when survey is completed"). 1. Under **Notify team members**, select the teammates who should get the email. 1. Save your settings. You can also switch this on while creating a recorder, with the **Notify your team on every upload** toggle. ## Control whether you get the email Your own alerts come from your profile, not the recorder. Go to [Profile > Email Notifications](https://app.speakai.co/profile/notifications) and check that **Recording Submission** ("Get notified when a recording is submitted") is on. The two settings work independently. Teammates you select on a recorder are notified on every submission even if you have turned your own submission emails off. Your personal setting only controls whether **you** receive the email. The fastest way to reach us is the live chat in the app (the chat bubble in the bottom corner). You can also email [success@speakai.co](mailto:success@speakai.co). Want a hand setting this up? [Book a free consult](https://calendly.com/speak-ai/consult?utm_source=docs&utm_campaign=consult) and we'll do it together on your account. --- Related: [Account](/help/account/) · [Email preferences](/help/account/email-preferences/) · [Recorder](/help/recorder/) # Payment methods > Add a card, switch to a different one, or remove an old payment method from the Payment and Invoices page in your account. Source: https://docs.speakai.co/help/account/payment-methods/ · Markdown: https://docs.speakai.co/help/account/payment-methods/index.md Your saved cards live on the **Payment Methods** tab of the [Payment & Invoices page](https://app.speakai.co/profile/payment). Speak AI charges the card you have on file for subscriptions and for any usage beyond your plan. ## Add a card 1. Go to your [Payment & Invoices page](https://app.speakai.co/profile/payment). 1. Click **Add Card**. 1. Fill out your card details and click **Add**. ## Switch to a different card Add the new card first, then remove the old one. Click **Add Card**, enter the new details, and once the new card shows in the list, click the delete icon next to the card you no longer want. ## If your card is declined See [payment troubleshooting](/help/troubleshoot/payments/) for the common reasons a charge fails and what to do about each one. ## Add credit instead To top up your prepaid balance rather than change a card, use **Reload your credit** on the same page. See [credits and usage](/help/account/credits/) for how that balance is spent. Still stuck? Write to success@speakai.co or [book a free consult](https://calendly.com/speak-ai/consult?utm_source=docs&utm_campaign=consult). --- Related: [Account](/help/account/) · [Credits and usage](/help/account/credits/) · [Invoices and receipts](/help/account/invoices/) # Plans and pricing > Free trial, Pro and custom Enterprise pricing compared. Every paid plan includes transcription, AI Chat, Meeting Assistant, automations and insights. Source: https://docs.speakai.co/help/account/plans/ · Markdown: https://docs.speakai.co/help/account/plans/index.md Speak AI has three ways in: a [free trial](/help/account/free-trial/) with every feature on, a **Pro** plan for individuals and teams, and **Enterprise** for organizations with custom volume, security review, and white-label needs. Current prices are always on the [pricing page](https://speakai.co/pricing/?utm_source=docs&utm_campaign=consult), so this page never shows you a stale number. ## What every paid plan includes Transcription, AI Chat, the Meeting Assistant, automations, insights, exports, and the mobile app. Plans differ by volume and team features, not by which product you get. ## How billing works Your plan carries a pool of [credits](/help/account/credits/) spent across everything you do: transcription minutes, AI Chat, translation, the Meeting Assistant. Credits reset each billing cycle, and you can [add prepaid credit](/help/account/credits/) for overflow instead of surprise charges. ## Choosing - **Testing whether it works for you:** the [free trial](/help/account/free-trial/), no card required. - **Individual or small team doing real volume:** Pro. - **An organization with procurement, security review, or 50+ seats:** Enterprise. [Book a demo and see your own workflows priced](https://calendly.com/speak-ai/demo?utm_source=docs&utm_campaign=book-demo). **Buying for a team and not sure what volume you need?** Bring a week of real recordings to a [free consult](https://calendly.com/speak-ai/consult?utm_source=docs&utm_campaign=consult) and we'll size it with you. --- Related: [Free trial](/help/account/free-trial/) · [Credits and usage](/help/account/credits/) · [Subscription](/help/account/subscription/) · [Invoices](/help/account/invoices/) # Subscription > Upgrading unlocks AI Chat, premium exports, custom insights and higher limits. Changes apply immediately and bill pro rata. Source: https://docs.speakai.co/help/account/subscription/ · Markdown: https://docs.speakai.co/help/account/subscription/index.md You manage your plan from **Profile → Manage Plan**. From there you can move to a bigger plan, pause billing for a while, resume, or cancel. Upgrades take effect the moment your payment goes through. Pauses and cancellations never take away data you have already created. You need to be the account owner to change the plan. Team members see a "Contact Admin" message instead. ## Upgrade or change your plan 1. Go to [Profile > Manage Plan](https://app.speakai.co/pricing) and click **Change Plan**. 1. Compare the plans in the pricing table. See [plans and pricing](/help/account/plans/) for what each one includes. 1. Click **Upgrade** on the plan you want. 1. Confirm your payment method. You are charged pro rata straight away for the rest of the current cycle. New features unlock as soon as the payment succeeds. Your [credit pool](/help/account/credits/) moves to the new plan's amount at the start of the next cycle. ## Pause your subscription If you need a break but plan to come back, pause instead of canceling: 1. Go to [Profile > Manage Plan](https://app.speakai.co/pricing). 1. Click **Pause Subscription**. 1. Choose how long you want to pause. You are not charged while paused, and your media, transcripts, and analysis stay saved. ## Resume a paused subscription 1. Go to [Profile > Manage Plan](https://app.speakai.co/pricing). 1. Click **Resume Subscription**. Your plan reactivates immediately and billing picks up again on the next cycle. ## Cancel your subscription Go to [Profile > Manage Plan](https://app.speakai.co/pricing) and click **Cancel Subscription**. Canceling stops future billing. It does not delete anything. - On a monthly plan you keep access until the end of the current billing cycle. - On an annual plan you keep access through the end of the period you paid for. - After that, your account moves to the free tier. - Your data stays accessible and exportable. - There are no cancellation fees. If you are canceling because something is not working, send us a message first. We would rather fix the problem than lose you. ## Delete your account Canceling and deleting are different actions. Deleting removes your media, transcripts, and analysis data permanently, and you cannot undo it. Export anything you want to keep first, then follow [data deletion](/help/account/data-deletion/). ## If a payment fails Check whether your bank requires two-factor authentication for the charge, since that is the most common reason an upgrade is declined. For other causes and fixes, see [payment troubleshooting](/help/troubleshoot/payments/). Evaluating Speak AI for a team? [Book a demo and see your own recordings analyzed](https://calendly.com/speak-ai/demo?utm_source=docs&utm_campaign=book-demo). --- Related: [Account](/help/account/) · [Plans and pricing](/help/account/plans/) · [Invoices and receipts](/help/account/invoices/) # AI Chat > Open AI Chat on a file or a folder, ask a question in plain language, and get an answer grounded in your own recordings. Source: https://docs.speakai.co/help/ai-chat/ · Markdown: https://docs.speakai.co/help/ai-chat/index.md AI Chat answers questions about your recordings: one file, a whole folder, or your entire library. Ask for summaries, themes, action items, or charts, and get answers grounded in your own transcripts. It also acts on your workspace: [creating clips](/help/sharing/clips/), renaming speakers, and running [batch analysis](/help/ai-chat/batch-analysis/) across a folder. Save the [prompts](/help/ai-chat/prompts/) your team uses so everyone analyzes the same way, choose your [model](/help/ai-chat/models/), [attach files](/help/ai-chat/attachments/) for context, and connect [your other tools](/help/ai-chat/connectors/) so the assistant can use them mid-conversation. ![Your AI Chat history, with every past conversation listed](/help/media/ai-chat/ai-chat-index.jpg) - **[Attachments](/help/ai-chat/attachments/)** - **[Batch analysis](/help/ai-chat/batch-analysis/)** - **[Connectors](/help/ai-chat/connectors/)** - **[Date ranges](/help/ai-chat/date-ranges/)** - **[Models](/help/ai-chat/models/)** - **[Prompts](/help/ai-chat/prompts/)** ## Start a chat Open any file in Speak and select **AI Chat**. A window opens and asks "What do you want to find in your files?", with suggestions you can run straight away. On a recording those start as: 1. Summarize this recording in a few sentences 1. What were the main topics discussed? 1. Find any action items or decisions mentioned The suggestions change to suit the file, and you can browse them by category: **All**, **Favorites**, **Recent**, **Recommended** and **Templates**. To ask something else, type your question into the input box and press Enter. [Prompts](/help/ai-chat/prompts/) covers how to phrase a prompt and how to save the ones you use often. ## What you can ask for - **Answers about your content:** key takeaways, action items with owners, what was said about a topic, the questions that came up. - **Clips:** describe the section you want and Speak cuts it into a [clip](/help/sharing/clips/). - **Speaker and transcript edits:** rename a speaker, replace a word, strip filler words. - **Exports:** download a transcript as PDF, Word, or plain text. - **Search across a folder:** count files, filter by date, tag, or custom field. - **Charts:** pie, bar, and doughnut charts built from your [AI fields](/help/insights/fields/). [Prompts](/help/ai-chat/prompts/) has worked examples of each. ## File level versus folder level Where you open AI Chat decides what it can do. **On a file,** every tool is available. Create clips, rename speakers, edit transcript text, export, and ask questions about that one recording. **On a folder,** you search across files, generate charts, export several files at once, and ask questions that span the whole set. Turn on **Run on Each File** to apply one prompt to every file individually instead of getting a single combined answer. See [batch analysis](/help/ai-chat/batch-analysis/). ## Actions the assistant takes for you AI Chat does more than answer. It uses the same tools the Speak platform exposes, so it can create folders, manage recorders, toggle automations, build embeds, and update media details. When you make a request, the assistant picks the right tool and runs it for you. You can watch it work. Each step it takes, searching your library, calling a tool, planning, appears as a card in the chat that you can expand. When a request is ambiguous, the assistant pauses and asks a clarifying question. You get a card with the question and, where they apply, suggested answers you can tap. You can type your own reply instead, or skip the question and let the assistant use its best guess. Actions you cannot undo, such as deleting media or removing items in bulk, need your explicit approval. The assistant stops and asks "Confirm: run [action]?", showing exactly what it is about to do. Select **Approve** to go ahead or **Cancel** to stop. Nothing is deleted until you approve it. ## Agent modes The assistant works in one of several modes depending on what you asked for: **help** for questions, **task** for workspace actions, **research** for pulling information together across recordings, and **sales**. The active mode shows as a badge next to the chat title, so you can tell how the assistant is treating your request. ## Prompt templates Speak ships a library of prompt templates grouped by job, covering things like customer feedback synthesis, key themes, meeting overviews, customer pain points, follow-up planning, and strategic insights. Open them from the prompt library icon in the chat. You can also save your own as assistant templates, which [Prompts](/help/ai-chat/prompts/) explains. ## Models Pick which model powers a conversation from the model picker in the chat toolbar. Speak offers models from Anthropic, OpenAI, and Google, each shown with its provider logo. Speak routes each task to a strong default, and you can set your own default under your profile. On the free tier, premium models show a lock icon and an upgrade prompt, and you use the free model. See [Models](/help/ai-chat/models/). ## What AI Chat costs Your 7-day free trial includes AI Chat, so you can try it before you pay. Usage is based on how much text is processed: the transcript sent to the model, including speaker names and timestamps, plus the response that comes back. That is deducted from your plan's [credits](/help/account/credits/). Older character-based plans count it toward their monthly AI Chat characters instead. Either way, your plan's allowance resets at the start of each billing cycle and does not roll over, while a Speak Credit balance you top up yourself never expires. If a prompt fails to generate an output, it does not count. Check what you have left under **Billing > [Plan & Usage](https://app.speakai.co/profile/usage)** in your profile, which you reach from the profile menu at the bottom of the sidebar. ## Rate limits and slow prompts AI Chat accepts 15 requests per minute. If you need a higher limit for enterprise use, contact the team. Large files can take a few minutes to process. If a prompt runs longer than 10 minutes, delete it and run it again at no extra cost. The fastest way to reach us is the live chat in the app, the chat bubble in the bottom corner. You can also email [success@speakai.co](mailto:success@speakai.co). Evaluating AI analysis for a team? [Book a demo and ask AI Chat about your own recordings](https://calendly.com/speak-ai/demo?utm_source=docs&utm_campaign=book-demo). # Attachments > Add images, documents and spreadsheets to an AI Chat message for extra context. Which file types are read and how each is processed. Source: https://docs.speakai.co/help/ai-chat/attachments/ · Markdown: https://docs.speakai.co/help/ai-chat/attachments/index.md ## Supported file types ![The AI Chat composer, cropped to the input card. The placeholder reads Ask anything about your library, and the toolbar below it holds a highlighted paperclip button for attaching files, a microphone button, the Marketer assistant selector and a Gemini 2.5 Flash model dropdown.](/help/media/ai-chat/ai-chat-attachments.jpg) You can attach files to any AI Chat message to give the assistant more context. The attachment types differ by how they are processed: - **Images** (JPEG, PNG, WebP, GIF, and other common image formats), sent directly to the AI model as visual context alongside your message. Maximum 10 MB per file. - **PDFs**, sent directly to the AI model as document context. Maximum 10 MB per file. - **Audio and video files**, routed through Speak AI's standard transcription pipeline. The file is uploaded as a new media item, transcribed, and the transcript is added as context for your chat. This uses your transcription quota exactly as a normal upload would. ## Attach a file 1. Click the **paperclip** icon in the chat input toolbar. 1. Select one or more files from your device. Images and PDFs can be attached in batches. Only one audio or video file can be attached per message. 1. Your attachments appear as chips above the input box. Remove any you do not want by clicking the **X** on its chip. 1. Type your message and send. You can also **paste an image** directly from your clipboard into the chat input box instead of picking a file. ## Transcription quota note Audio and video attachments count against your transcription minutes just like any other upload. If you are on a Free Trial or Pay As You Go plan, charges apply at your plan's per-minute rate. Check your usage at any time under **Account**. The fastest way to reach us is the live chat in the app (the chat bubble in the bottom corner). You can also email [success@speakai.co](mailto:success@speakai.co). Want a hand setting this up? [Book a free consult](https://calendly.com/speak-ai/consult?utm_source=docs&utm_campaign=consult) and we'll do it together on your account. --- Related: [AI Chat](/help/ai-chat/) · [Batch analysis](/help/ai-chat/batch-analysis/) # Batch analysis > Run on Each File applies a single AI Chat prompt to every recording in a folder and returns one result per file, not one summary. Source: https://docs.speakai.co/help/ai-chat/batch-analysis/ · Markdown: https://docs.speakai.co/help/ai-chat/batch-analysis/index.md When you open [AI Chat](/help/ai-chat/) on a folder, you can turn on **Run on Each File**. Speak then runs your prompt against every file in that folder separately and gives you one result per file instead of a single combined answer. ## When to run a prompt on each file Reach for it when you want the same analysis applied to many recordings: - **Research:** "Extract the top 3 themes from each interview" - **Sales:** "What objections were raised in each call?" - **Meetings:** "Generate action items from each meeting this week" - **Customer feedback:** "Summarize the customer's main concern in each recording" - **Field extraction:** "What is the participant's age and role?" ## Turn it on 1. Open a folder in Speak. 1. Open AI Chat. 1. Toggle on **Run on Each File**. 1. Optionally pick a specific field to analyze. 1. Type your prompt and send it. Speak processes each file in the background and results appear as they finish, so a folder of 50 files takes longer than one with 5. Each file draws on your [credits](/help/account/credits/) separately. Results are saved, so you can come back and read them later. To run the same analysis on every new upload without asking, build it into an [automation](/help/automations/). ## How it differs from a normal folder prompt A normal folder prompt aggregates. Ask "What are the common themes across all these interviews?" and you get one answer covering the whole folder. Run on Each File does not aggregate. Ask "What are the main themes?" and you get a separate answer for every file, which you can then compare side by side. Want a hand setting this up? [Book a free consult](https://calendly.com/speak-ai/consult?utm_source=docs&utm_campaign=consult) and we'll do it together on your account. --- Related: [AI Chat](/help/ai-chat/) · [Attachments](/help/ai-chat/attachments/) # Connectors > Give AI Chat direct access to HubSpot, Salesforce, Zoho CRM and other connected apps so it can act on them inside a conversation. Source: https://docs.speakai.co/help/ai-chat/connectors/ · Markdown: https://docs.speakai.co/help/ai-chat/connectors/index.md ## What integrations are available ![The Integrations screen in Speak, filtered to All Integrations (37) with an app search box. An Agents section lists MCP, ChatGPT, Claude, Claude Code and OpenClaw, and an AI actions section below it opens with the CRM group: HubSpot, Salesforce and Zoho CRM. Every row has a Connect button on the right.](/help/media/ai-chat/ai-chat-connectors.jpg) You can connect third-party apps to Speak AI and use them as tools directly inside AI Chat. The current supported connectors are: - **CRM:** HubSpot, Salesforce, Zoho CRM, Attio, Close - **Helpdesk:** Zendesk, Freshdesk - **Project management:** Jira, Linear, Asana, ClickUp, Trello - **Storage:** Google Drive, Dropbox, OneDrive, Box - **Communications:** Gmail, Slack, Outlook, Telegram - **Documents:** Notion, Google Docs, Confluence - **Scheduling:** Calendly ## Connect an integration Most integrations use OAuth, meaning you authorize Speak AI to access the app without sharing your password. A few (such as Close and Freshdesk) connect with an API key you paste in. 1. Go to **Integrations** from the sidebar. 1. Find the app you want to connect and click **Connect**. 1. Complete the OAuth flow (or paste your API key) in the dialog that opens. ## Connecting from inside a chat If you ask the assistant to do something that requires an integration you have not connected yet, it pauses and shows an inline **Connect** card inside the chat. Click the card, complete the authorization, and the assistant continues automatically. For example: "Send a summary of this recording to the #product channel in Slack" will prompt a Slack connect card if Slack is not already linked. ## What you can do once connected After connecting, you can ask the assistant to perform actions such as: - Send a message or email summarizing a transcript (Slack, Gmail, Outlook) - Create a Notion page, Google Doc, or Confluence page from a recording - Add a CRM note or contact from meeting insights (HubSpot, Salesforce, Attio, etc.) - Create a task or ticket from action items (Jira, Asana, ClickUp, Trello, Linear) - Upload a file to cloud storage (Dropbox, Google Drive, OneDrive, Box) The fastest way to reach us is the live chat in the app (the chat bubble in the bottom corner). You can also email [success@speakai.co](mailto:success@speakai.co). Evaluating Speak AI for a team? [Book a demo and see your own recordings analyzed](https://calendly.com/speak-ai/demo?utm_source=docs&utm_campaign=book-demo). --- Related: [AI Chat](/help/ai-chat/) · [Attachments](/help/ai-chat/attachments/) # Date ranges > Every natural-language date pattern AI Chat understands, so you can scope a prompt to last week, a named month or a custom range. Source: https://docs.speakai.co/help/ai-chat/date-ranges/ · Markdown: https://docs.speakai.co/help/ai-chat/date-ranges/index.md Scope any AI Chat prompt to a period by naming the period in the prompt itself. You do not need a date picker or a fixed format: write the range the way you would say it, and the assistant reads it. - "Highlight unresolved key issues from **last 3 months**" - "Tell me the summary from **yesterday's** meeting" - "Compare revenue **between January and March 2024**" - "What milestones are due **next quarter**?" - "Show me progress **month to date**" ## Patterns AI Chat understands Every pattern below works anywhere in a prompt. ### Last N periods Use a digit or a written-out number, with days, weeks, months, or years. - "Show me all customer feedback from the **last 10 days**" - "What were the top issues reported in the **last 3 weeks**?" - "Analyze sales performance over the **last 6 months**" - "Compare our growth with competitors from the **last 2 years**" - "Summarize all project updates from the **last two days**" - "How has our team productivity changed over the **last five years**?" Written numbers one through ten are supported. ### Couple and few - "What urgent tasks came up in the **last couple of days**?" - "Highlight key decisions made in the **last few days**" - "What new opportunities arose in the **past couple of months**?" - "Analyze user feedback from the **past few weeks**" ### Next N periods - "What are the planned deliverables for the **next 3 weeks**?" - "Show me projected revenue for the **next 6 months**" - "List all upcoming events in the **next two days**" ### Past N periods - "Analyze user engagement trends from the **past 30 days**" - "What were our biggest achievements in the **past 2 years**?" - "Highlight security incidents from the **past two weeks**" - "What lessons can we take from the **past three months**?" ### Calendar periods - "What were the key accomplishments from **last week**?" - "Show me all invoices generated **last month**" - "How did our company perform **last year**?" - "What meetings were scheduled **previous week**?" - "Compare our growth metrics with **previous year**" ### Current periods - "What are the priorities for **this week**?" - "Show me all expenses recorded **this month**" - "How are we tracking against our goals for **this year**?" ### Named days - "What meetings do I have scheduled for **today**?" - "Show me the summary from **yesterday**'s stand-up" - "What deliverables are due **tomorrow**?" - "Remind me about the presentation **day after tomorrow**" - "What was discussed in the meeting **day before yesterday**?" ### Quarters - "What were our sales figures for **Q1**?" - "Show me the performance metrics from **Q2 2024**" - "What are the strategic initiatives for **Quarter 3**?" - "How did we perform in the **first quarter**?" - "What are the goals for **next quarter**?" - "Compare our results with **previous quarter**" ### To date - "What's our revenue performance **year to date**?" - "Show me all project completions **quarter to date**" - "What are the expenses **month to date**?" - "How many support tickets were resolved **week to date**?" - "What's the sales pipeline looking like **YTD**?" - "Show me customer acquisition numbers **QTD**" ### Months - "What were the hiring statistics for **January**?" - "Show me all project milestones from **March 2024**" - "What's been happening **since January**?" - "List all customer onboarding from **Dec**" - "What changes have occurred **since March 2024**?" Full month names and their three-letter abbreviations both work. ### Explicit ranges - "Compare our performance **between January and March 2024**" - "Show me all activities from **Jan to Mar 2025**" - "What trends emerged **from February to May 2023**?" - "Show me all transactions **2024-01-01 to 2024-12-31**" ### Years - "What were our major accomplishments in **2024**?" - "Show me all financial reports from **2023**" - "How did we perform compared to **2022**?" ### Halves and fiscal years - "What were our key metrics for **H1 2024**?" - "Show me the performance summary for **H2 2023**" - "What's the budget allocation for **FY2024**?" - "How did we close **fiscal year 2023**?" ### Anything else If a phrase does not match one of the patterns above, the assistant still tries to read it as a date. - "What meetings are scheduled for **next Friday**?" - "Show me all tasks completed **two weeks ago**" - "What deliverables are due **January 15th**?" - "What's planned **in 3 days**?" - "Show me notes from **last Monday**" Want a hand setting this up? [Book a free consult](https://calendly.com/speak-ai/consult?utm_source=docs&utm_campaign=consult) and we'll do it together on your account. --- Related: [AI Chat](/help/ai-chat/) · [Attachments](/help/ai-chat/attachments/) # Models > Pick which model powers a conversation from the AI Chat toolbar, and what each available model is best suited to. Source: https://docs.speakai.co/help/ai-chat/models/ · Markdown: https://docs.speakai.co/help/ai-chat/models/index.md ## Selecting a model for a conversation ![The Chat screen in Speak with the model picker open above the chat input. The dropdown has a Search models box and groups models by provider, showing a Gemini group with Gemini 2.5 Flash, Gemini 3 Flash and Gemini 3.5 Flash, each marked "Supports extended thinking", and an OpenAI group starting below it. The toolbar under the input shows the Marketer assistant and Gemini 2.5 Flash as the selected model.](/help/media/ai-chat/ai-chat-models.jpg) The chat input toolbar includes a model picker (the sparkle icon with the model name) that lets you choose which AI model powers the current conversation. The available models as of this writing are: - **Claude Sonnet 4.6** (Anthropic), fast and balanced. The default for most workspaces. - **Claude Opus 4.8** (Anthropic), Anthropic's highest-capability model; includes extended thinking. Indicated by a sparkle icon in the picker. - **GPT-5.5** (OpenAI) - **GPT-5.4 mini** (OpenAI) - **Gemini 2.5 Flash** (Google) Models that support extended thinking are marked with a sparkle icon next to their name in the dropdown. The model is fixed for the life of a conversation; to switch models start a new chat. ## Choosing an assistant Next to the model picker is an assistant picker (the person icon). Assistants give the model a persona and set of instructions that shape how it responds. The built-in assistants are: - **General**, default, all-purpose responses - **Researcher**, structured analysis and synthesis - **Marketer**, copy and content-oriented responses - **Sales**, deal and prospect-focused responses - **Recruiter**, hiring and candidate-oriented responses You can also create custom assistants with your own instructions. Click **Create new assistant** at the top of the assistant picker dropdown, or manage your assistants at **Profile** under the **AI Assistant** section. Custom assistants appear under **Your Assistants** in the picker. ## Setting a workspace default model To avoid picking a model every time, set a default at **Profile > AI Assistant**. Under the **Default AI model** section, choose the model you want from the dropdown and the setting saves immediately. Individual chats can still override the default using the model picker in the input toolbar. The fastest way to reach us is the live chat in the app (the chat bubble in the bottom corner). You can also email [success@speakai.co](mailto:success@speakai.co). Want a hand setting this up? [Book a free consult](https://calendly.com/speak-ai/consult?utm_source=docs&utm_campaign=consult) and we'll do it together on your account. --- Related: [AI Chat](/help/ai-chat/) · [Attachments](/help/ai-chat/attachments/) # Prompts > Write and save your own AI Chat prompts, then reuse them across files and folders so analysis stays consistent across the team. Source: https://docs.speakai.co/help/ai-chat/prompts/ · Markdown: https://docs.speakai.co/help/ai-chat/prompts/index.md ![The Prompt Library dialog open over the Chat screen. A search box sits above category chips for All, Customer Interview, General, Interviews, Meeting, Product Feedback, Product Review, Qualitative Analysis and Survey Data, and each card below pairs a prompt name such as Customer Feedback Synthesis or Key Themes Identification with a description and the prompt text it inserts.](/help/media/ai-chat/ai-chat-prompts.jpg) A prompt is the question or instruction you give [AI Chat](/help/ai-chat/). You can pick one of the suggested prompts, write your own, or save the ones you use often as templates so the whole team analyzes the same way. This page covers how to write and save prompts, which prompts work on a single file versus a folder, and how to phrase them for a few common jobs. ## Write your own prompt Open **AI Chat** on a file or a folder and type your prompt straight into the input box. Prompts can run to 50,000 characters, so there is room for detailed instructions. Press Enter to send it. ## Save a prompt as a template Save the prompts you run over and over as assistant templates. You stop retyping long instructions, and everyone who uses the template gets output in the same shape. 1. Go to **Profile > AI Assistant** and find the **AI Context** section. 2. Select **Add**. A **Create AI Context** panel opens. 3. Fill in **Assistant Name**, for example "SWOT analysis", and write your **Instructions**. 4. Save it. 5. The next time you run a prompt on a file, pick your assistant from the list instead of typing it from scratch. Prompts can include variables, which Speak fills in when the prompt runs. Use the **Insert variable** control to add one rather than typing it by hand. On a file you can use `{{media_name}}`, `{{folder_name}}` and `{{created_date}}`. On a folder you can use `{{folder_name}}` and `{{created_date}}`. Those are the only variables Speak recognizes. Share your assistants with your team so meeting summaries and reports come back in one format. If an assistant you created does not appear in the list, check whether you saved it in a different workspace, personal instead of team. ## Prompts for a single file These prompts work when you are chatting with one media file. ### Create clips Cut specific portions of your recording into new [clips](/help/sharing/clips/). | What you want | Example prompt | | --- | --- | | Create a clip by time | "Create a clip from 0:30 to 1:45" | | Clip a specific range | "Cut the section between 2 minutes and 5 minutes" | | Quick clip | "Make a 30-second clip starting at 1:00" | ### Edit speaker names Update who said what in your transcript. | What you want | Example prompt | | --- | --- | | Rename a speaker | "Change Speaker 1 to John Smith" | | Update multiple speakers | "Rename Speaker A to Sarah and Speaker B to Mike" | | Fix speaker names | "The interviewer is Jane Doe" | ### Edit the transcript Find and replace words or phrases. | What you want | Example prompt | | --- | --- | | Replace a word | "Replace 'gonna' with 'going to'" | | Fix a name | "Change 'Jon' to 'John' throughout" | | Remove filler words | "Remove all instances of 'um'" | | Correct terminology | "Replace 'product X' with 'ProductName Pro'" | ### Export a transcript Download the transcript as a document. Speak asks whether you want speaker names and timestamps included before it exports. | What you want | Example prompt | | --- | --- | | Export as PDF | "Export this transcript as PDF" | | Export as Word | "Download as a Word document" | | Export as text | "Export as TXT file" | | Custom options | "Export as PDF without timestamps" | ## Prompts for a folder These prompts work when you are chatting at the folder level, across several files. ### Search files | What you want | Example prompt | | --- | --- | | Count files | "How many files are in this folder?" | | Find by date | "Show files from last week" | | Find by date range | "Find files from November" | | Find by tags | "Show all files tagged 'interview'" | | Find by custom field | "Find files where Gender is Male" | | Combined search | "Files from last month tagged 'sales'" | ### Generate charts Charts work best when your files have [custom fields](/help/insights/fields/) set up, such as Gender or Category. | What you want | Example prompt | | --- | --- | | Pie chart | "Create a pie chart of gender distribution" | | Bar chart | "Show a bar chart of files by category" | | Doughnut chart | "Generate a doughnut chart of interview types" | ### Export several files at once Export multiple transcripts as a single merged document. | What you want | Example prompt | | --- | --- | | Export folder | "Export all files as PDF" | | Export by date | "Export files from last week as Word" | | Export by tag | "Export files tagged 'interview' as PDF" | | Export search results | "Find sales calls and export them as DOCX" | ## Get better answers Be specific. "Create a clip from 1:30 to 2:45" works. "Make a clip of the important part" does not give the assistant enough to go on. Chain requests in one prompt when they belong together, for example "Show the gender breakdown and create a pie chart" or "Find all interviews from last month and export as PDF". Ask follow-up questions. The assistant remembers the conversation, so you can ask "How many files are tagged 'interview'?" and then simply say "Export those as PDF". If the answer comes back as "Answer not found", the topic probably was not discussed in the recording. Rephrase the prompt more broadly and try again. ## Analyze meeting recordings Use prompts to pull decisions and next steps out of a meeting without rewatching it. These work well on a processed audio or video recording: - **Summary:** "Write a 3-sentence summary of this meeting." - **Action items:** "List all action items, who is responsible, and the deadline." - **Sentiment:** "What was the client's biggest concern based on their tone and words?" - **Decisions:** "List all final decisions made in this call." Start with the summary, then ask follow-up questions about the parts you care about. Saving these as templates gives you the same meeting notes every time. ## Analyze book text and characters Upload your book text or individual chapters, then use the insights Speak generates to track how characters develop. - **Find the characters:** Go to [Explore](/help/insights/explore/) and open **People**. The characters that appear most often stand out from the minor ones. - **Track their arc:** Filter by a character name and read the [sentiment](/help/insights/sentiment/) of the sentences that mention them. A shift from negative to positive usually marks conflict turning into resolution. - **Ask about personality:** In AI Chat, name the character in the prompt, for example "Describe the personality traits of Elizabeth Bennet based on her dialogue." - **See their vocabulary:** Build a [word cloud](/help/exports/word-clouds/) for a character to spot their most common words and recurring themes. For a long book, upload it a chapter at a time rather than as one file. Each chapter analyzes cleanly and you can compare them side by side. ## Analyze earnings calls and financial reports Upload an earnings call recording or a quarterly report, then prompt for the figures instead of reading through the whole document. - **Pull the numbers:** "Create a table of all financial figures mentioned, including Revenue, Net Income, and YoY growth." - **Read the room:** Ask AI Chat to analyze the Q&A segment and say whether investor questions came across as confident or nervous. - **Find the risks:** [Search](/help/folders/search/) for terms like "headwinds" or "inflation" to jump to where risk gets discussed. - **Compare periods:** Keep each quarter in its own folder and compare sentiment across them to see how confidence moves through the year. Check extracted figures against the official filing before you use them. Spoken numbers are easy to mishear, and "15" and "50" sound alike. --- Related: [AI Chat](/help/ai-chat/) · [Attachments](/help/ai-chat/attachments/) # Automations > Chain a trigger, conditions and actions on a visual canvas so work runs on every new recording without anyone starting it. Source: https://docs.speakai.co/help/automations/ · Markdown: https://docs.speakai.co/help/automations/index.md An automation does work you'd otherwise repeat by hand, like scoring a call, extracting fields, or sending a notification, **on its own**: either the instant new media arrives or on a schedule across your library. ![The Automations list: instant AI-prompt automations scoped to a folder](/help/media/automations/automations-index.jpg) Every automation is three decisions: - **[Trigger](/help/automations/triggers/)**: when it runs: each new file in a folder, a schedule, or an [inbound webhook](/help/automations/inbound-webhooks/) from another tool - **[Filter](/help/automations/filters/)**: which media qualifies, so a sales-call scorer never touches your research interviews - **[Action](/help/automations/actions/)**: what happens: run an AI prompt, write fields, send the result somewhere ## Create an automation 1. Open **Automations** in the sidebar and select **New automation**. 2. Choose the trigger. *Instant (run on each new media)* covers most workflows. 3. Scope it with filters: folder, tags, or media properties. 4. Add the action. An AI prompt with [variables](/help/automations/variables/) fills in each file's own transcript and fields. 5. Turn it on. The list shows every automation's run count and status; toggle any of them off without deleting. ## What teams automate first - **Score every sales call** against the same rubric, the moment it lands - **Extract the same 10 fields** from every customer interview - **Route recorder submissions**: transcribe, summarize, and file them by answer Want a second pair of eyes on your first workflow? [Book a free consult](https://calendly.com/speak-ai/consult?utm_source=docs&utm_campaign=consult) and we'll build it with you on your own data. --- Related: [Triggers](/help/automations/triggers/) · [Filters](/help/automations/filters/) · [Actions](/help/automations/actions/) · [Variables](/help/automations/variables/) · [Inbound webhooks](/help/automations/inbound-webhooks/) # Actions > The Speak Upload automation action ingests a file and transcribes it with no manual upload. Pair it with an inbound webhook trigger. Source: https://docs.speakai.co/help/automations/actions/ · Markdown: https://docs.speakai.co/help/automations/actions/index.md The **Speak Upload** action ingests a file into Speak AI and transcribes it automatically inside an automation, with no manual upload. Pair it with the **Catch inbound webhook** trigger to send a file URL from an outside tool and have Speak AI transcribe it hands-free. For how to build and trigger automations, see [How to use automations in Speak AI](/help/automations/). ![The AI Summary automation open on its canvas in Speak with its action step selected. Step 1 is a Speak trigger, Media analyzed in folder, connected by a passes media - transcript link to step 2, a Speak AI Chat step, which passes insight - text to END. The panel on the right reads Step 2, Speak AI Chat, on the Configure tab of its App, Action and Configure sequence. It holds a Prompt Title of AI Summary, the prompt itself, an AI Model set to Default model, an Assistant Type of General, and an Extract Fields box holding AI_Summary.](/help/media/automations/automations-actions.jpg) ## When you can add Speak Upload The **Speak Upload** action appears in the step list once a trigger earlier in the automation passes data downstream, such as the **Catch inbound webhook** trigger. Add the webhook trigger first, then add **Speak Upload** as a later step. ## Configure the Speak Upload step Open the step to set these fields: - **Name**: an optional name for the uploaded media. You can use a token here, for example a value from the webhook payload. - **Folder**: the destination folder for the media. This is required. - **Source**: choose **From URL** or **Uploaded file**. To ingest a file URL from the webhook, choose **From URL**. - **File URL**: the link to the file to upload. Use the captured value picker to insert a value from the webhook payload, for example a token like `#{{trigger.payload.<path>}}`. - **Processing language**: the language used to transcribe the file. Pick from the language list. ## Map custom fields Below the main form, the **Map custom fields** section lets you write captured webhook values into your custom fields on the media. The empty state reads **Map a captured webhook value into one of your custom fields**. Use this to carry metadata, such as a contact name or record ID, straight from the request onto the transcribed media. ## How the flow runs end to end 1. An external tool POSTs a request, including a file URL, to your inbound webhook URL. 1. The **Speak Upload** step reads the **File URL** from the payload, uploads the file into the chosen **Folder**, and transcribes it in the selected **Processing language**. 1. Any values set in **Map custom fields** are written onto the new media. You can watch each run land under the trigger’s **Recent deliveries** list, where a successful run shows the **Ran** status. The fastest way to reach us is the live chat in the app (the chat bubble in the bottom corner). You can also email [success@speakai.co](mailto:success@speakai.co). Want a hand setting this up? [Book a free consult](https://calendly.com/speak-ai/consult?utm_source=docs&utm_campaign=consult) and we'll do it together on your account. --- Related: [Automations](/help/automations/) · [Filters](/help/automations/filters/) # Filters > Scope an automation to the media it should touch by filtering on folder, tags and media properties like type, language and duration. Source: https://docs.speakai.co/help/automations/filters/ · Markdown: https://docs.speakai.co/help/automations/filters/index.md A filter decides **which media qualifies** before the action runs, so a sales-call scorer never touches your research interviews. ![The AI Summary automation on its canvas in Speak with a filter added between the trigger and the AI Chat step. The filter card reads Only continue if, above a line telling you to add conditions in the panel. The Filter panel on the right sets Match to AND of the conditions, offers an Add condition button, and notes that the flow carries media and transcript so only matching fields are offered. The footer reads 0 conditions and AND beside a Done button.](/help/media/automations/automations-filters.jpg) ## What you can filter on - **Folder**: the most common scope. The automation only sees media in the folders you pick. - **Tags**: run only on media carrying, or missing, a tag. - **Media properties**: type, language, duration, and other attributes of the file. Filters combine, so "in Sales Calls, tagged `inbound`, longer than 5 minutes" is one filter set. ## Why filters matter more as you grow Without filters, every automation sees everything, and the second team to adopt Speak AI breaks the first team's workflow. Scoped automations are what let one workspace run many workflows side by side. Set the folder filter on day one, even when the workspace is small. Want a hand scoping yours? [Book a free consult](https://calendly.com/speak-ai/consult?utm_source=docs&utm_campaign=consult). --- Related: [Automations](/help/automations/) · [Triggers](/help/automations/triggers/) · [Actions](/help/automations/actions/) # Inbound webhooks > Give any external tool a URL that starts a Speak AI automation. Works with Zapier, Make, GoHighLevel or your own script. Source: https://docs.speakai.co/help/automations/inbound-webhooks/ · Markdown: https://docs.speakai.co/help/automations/inbound-webhooks/index.md An inbound webhook lets any external tool start a Speak AI automation by sending it an HTTP request. Tools like Zapier, GoHighLevel, Make, or your own script can POST data to a unique URL, and your automation runs with that data available to every later step. For the basics of building automations, see [How to use automations in Speak AI](/help/automations/). ## Add the inbound webhook trigger 1. Open the automation canvas and add a trigger step. 1. Choose **Catch inbound webhook** from the trigger list. 1. Save the automation. The **Inbound URL** field generates a unique URL for this automation. Until you save, the field shows **Save this automation to generate the URL**. ## Copy the Inbound URL After saving, the **Inbound URL** field shows a copyable link with a Copy button. It looks like this: `https://api.speakai.co/v1/webhook/in/<your-token>` - The URL is unique to this one automation. Keep it private. Anyone with the URL can trigger the automation. - Send the data as an HTTP **POST** request to this URL. ## Send a sample request so Speak AI learns the payload Open the test step in the canvas. Under **Send a request to this URL**, the helper text reads **Send a sample request to this URL so Speak AI can learn the payload shape**. Send one real request from your external tool. Speak AI captures the fields from that request so you can reference them in later steps. ## Use payload data in later steps Once a field is captured, reference it with a token in any later step. The token format is: `#{{trigger.payload.<path>}}` For example, if your request sends a contact object with an email, you can use `#{{trigger.payload.contact.email}}` in a later step. Nested fields use a dot path. ## View recent deliveries The trigger shows a **Recent deliveries** list of incoming requests, newest first. Each delivery shows a status badge: - **Captured**: the request was received and its payload was captured as a sample. - **Ran**: the request was accepted and the automation ran. - **Rejected**: the request was refused, for example a failed signature check. - **Error**: another error occurred, shown with its code. If **No deliveries yet** shows, no request has reached the URL. Deliveries are kept for 90 days. ## Limits and optional signature checking - **Rate limit**: up to 60 requests per minute per URL and sending IP address. Extra requests get an HTTP `429` response with the message **Too many requests. Please retry shortly.**- **Optional signature verification**: if a signing secret is set on the webhook, each request must include an `x-speak-timestamp` header and an `x-speak-signature` header in the form `sha256=<hex-digest>`. The signature is HMAC-SHA256 over the timestamp and the raw request body, and the timestamp must be within 5 minutes. Failed checks return an HTTP `401`. If no signing secret is set, the unguessable URL is the only control. Next, chain a **Speak Upload** step after this trigger to transcribe a file URL from the payload automatically. The fastest way to reach us is the live chat in the app (the chat bubble in the bottom corner). You can also email [success@speakai.co](mailto:success@speakai.co). Want a hand setting this up? [Book a free consult](https://calendly.com/speak-ai/consult?utm_source=docs&utm_campaign=consult) and we'll do it together on your account. --- Related: [Automations](/help/automations/) · [Actions](/help/automations/actions/) # Triggers > Pick one trigger per automation: instant on each new file, scheduled on a cadence, or an inbound webhook when another system decides. Source: https://docs.speakai.co/help/automations/triggers/ · Markdown: https://docs.speakai.co/help/automations/triggers/index.md A trigger decides **when** an automation runs. Pick one per automation. ![The Trigger card in an automation's config panel, set to the Speak event Media analyzed in folder. Its three steps read App, Event and Configure, and Configure shows Trigger Folders set to Automated Summaries with Run mode set to Instant, when a file finishes processing.](/help/media/automations/automations-triggers.jpg) ## The triggers - **Instant**: runs on each new media file as it finishes processing. The default for score-every-call and extract-on-arrival workflows. - **Scheduled**: runs on a cadence across a folder or your library, for digests and batch jobs. - **[Inbound webhook](/help/automations/inbound-webhooks/)**: an external tool starts the run by sending an HTTP request, so Zapier, Make, or your own script can hand work to Speak AI. ## Choosing If the work belongs to one file, use Instant. If it summarizes many files, schedule it. If another system knows when to run, use the webhook. Scope any of them with [filters](/help/automations/filters/) so the automation only touches the media it should. Want a hand designing the first one? [Book a free consult](https://calendly.com/speak-ai/consult?utm_source=docs&utm_campaign=consult). --- Related: [Automations](/help/automations/) · [Filters](/help/automations/filters/) · [Actions](/help/automations/actions/) # Variables > Insert {{token}} placeholders into a chat or automation prompt and Speak AI substitutes real values before the model runs. Source: https://docs.speakai.co/help/automations/variables/ · Markdown: https://docs.speakai.co/help/automations/variables/index.md ## What variables are ![The chat panel open beside a folder's media list, with an Insert Variable menu floating above the composer. The menu lists the tokens available in folder scope, folder_name and created_date, and the plus button in the toolbar that opened it sits highlighted below.](/help/media/automations/automations-variables.jpg) Variables are `#{{token}}` placeholders you can insert into a chat prompt or an automation prompt. Before the prompt reaches the AI model, Speak AI replaces each token with a real value from the current context, so you can write reusable prompts without hardcoding file names, dates, or user details. ## Available variables - `#{{media_name}}`, the name of the media file(s) the chat is about. For multi-file chats, up to three names are listed and the rest are summarized. - `#{{folder_name}}`, the name of the folder the chat or automation is scoped to. - `#{{created_date}}`, the date the media file was created. For a date range, shows the earliest and latest date. - `#{{current_date}}`, today's date (server time, ISO format). - `#{{media_count}}`, the number of media files in the current chat. - `#{{user_name}}`, the full name of the person running the chat. - `#{{company_name}}`, the name of your workspace. Not all tokens are available in every context. `#{{media_name}}` and `#{{created_date}}` are available in media and automation scopes. `#{{folder_name}}` is available in folder and automation scopes. `#{{current_date}}`, `#{{media_count}}`, `#{{user_name}}`, and `#{{company_name}}` are available everywhere. ## Insert a variable There are two ways to add a variable to your prompt: - **Variable picker button**, click the **+** icon in the chat toolbar to open a menu listing the tokens available for your current scope. Click any token to insert it at your cursor. - **Type `#{{`** directly in the input box. An autocomplete menu appears showing matching tokens. Use the arrow keys to navigate and press **Enter** to insert, or press **Escape** to dismiss. ## Example prompt using variables `Summarize #{{media_name}} recorded on #{{created_date}}. Write the summary in the voice of #{{user_name}} at #{{company_name}}.` The fastest way to reach us is the live chat in the app (the chat bubble in the bottom corner). You can also email [success@speakai.co](mailto:success@speakai.co). Want a hand setting this up? [Book a free consult](https://calendly.com/speak-ai/consult?utm_source=docs&utm_campaign=consult) and we'll do it together on your account. --- Related: [Automations](/help/automations/) · [Actions](/help/automations/actions/) · [AI Chat prompts](/help/ai-chat/prompts/) # Dashboards > Build an analytics surface from widgets, charts, KPI cards, tables and notes on a resizable grid scoped to chosen folders. Source: https://docs.speakai.co/help/dashboards/ · Markdown: https://docs.speakai.co/help/dashboards/index.md Dashboards are build-your-own analytics surfaces over your folders: KPI cards, charts, tables, and notes arranged on a resizable grid. Scope one to a project folder and it stays live as new recordings arrive; [share it](/help/dashboards/sharing/) as a link or embed it where your stakeholders already look. The [widget reference](/help/dashboards/widgets/) covers every block you can place. ![The Dashboards list, showing each saved dashboard and when it was updated](/help/media/dashboards/dashboards-index.jpg) - **[Dashboard sharing](/help/dashboards/sharing/)** - **[Widgets](/help/dashboards/widgets/)** Want a dashboard built on your own data? [Book a free consult](https://calendly.com/speak-ai/consult?utm_source=docs&utm_campaign=consult). ## Creating and using Dashboards ## What is a Dashboard? A Dashboard in Speak AI is a build-your-own analytics surface where you compose widgets, charts, KPI cards, tables, and notes, on a resizable grid scoped to your chosen folders. Every widget reads from the same data scope and date range, which you control from a single **Filters** panel. Dashboards are saved and sharable, and they update live as new media is uploaded. **Dashboards are available on Speak AI Enterprise plans.** If you do not see **Dashboards** in your sidebar, contact us to turn it on. Dashboards are separate from the [Explore insights](/help/insights/explore/) feature. Explore lets you run ad-hoc queries across recordings; Dashboards let you save and share a persistent view you configure once and return to repeatedly. ## Creating a dashboard Open **Dashboards** in the sidebar. Click **Create dashboard**. A two-step wizard opens. **Step 1, Start from**- **Blank dashboard**, opens an empty grid seeded with a **Usage overview**, **Uploads over time**, and **Recent media** widget to give you something to work with. - **New from template**, choose one of the curated templates: **Conversation Overview**, **Voice of the Customer**, **Team Productivity**, or **Content Performance**. Each template pre-populates a matched set of widgets. **Step 2, Scope and sharing**- Enter a **Dashboard title**. - Pick one or more **Folders**. At least one folder is required, it defines which media the dashboard shows. The "Shared with" field auto-populates with the groups that already have access to those folders (shown as locked chips). You can optionally add more groups. - Click **Create dashboard**. If you have an onboarding goal set, the empty state may show a **recommended dashboard** pre-scoped to your goal's folder (for example, "Sales Call Insights" or "Voice of the Customer"). Clicking it opens the same wizard at step 2 with the recommended layout already chosen. ## Edit mode and view mode A dashboard opens in **view mode** after you navigate to it from the list. Click **Edit** to enter edit mode. In edit mode you can: - Drag widgets to rearrange them on the grid. - Resize widgets by dragging their bottom-right corner. - Click **Add widget** to open the widget picker dialog and add a new widget. - Click the gear icon on a widget to open **Widget settings** in a side panel. - Remove a widget using its remove button. - Edit the dashboard title in-line. Click **Done** to exit edit mode and return to view mode. Layout changes are saved automatically. Only the dashboard owner and team members with company-wide folder access can edit, share, or delete a dashboard. Other members with access can view it in view mode. ## Adding and arranging widgets In edit mode, click **Add widget**. The **Add a widget** dialog groups every widget type by purpose: - **Overview**, Usage overview, Total files (KPI trend) - **Metrics**, Field metric, Metrics group - **Breakdowns**, Field breakdown, Themes, Sentiment, People breakdown - **Trends**, Uploads over time, Period comparison, Sentiment over time - **Content & team**, Recent media, Team activity You can also type in the search box to filter by name or description. Click a widget card to add it to the dashboard. To configure a widget after adding it, click the gear icon in its top-right corner while in edit mode. The **Widget settings** side panel opens. Every widget lets you change its title and accent color. Depending on the widget type you can also choose a field, a measure, an aggregation method, or a chart type. You can also turn on **Override dashboard filters** to give a single widget its own date range and folder scope. ## Applying filters Click the **Filters** button in the dashboard toolbar to open the Filters panel. Changes stay local until you click **Apply filters**. The panel lets you set: - **Date range**, choose a preset (for example, "Last 30 days"). Toggle **Compare to previous period** to add period-over-period context to every widget that supports it. - **Folder**, narrow the scope to one specific folder within the dashboard's allowed folders. - **Filter files by field**, add one or more custom-field filters. Only files where the chosen field has one of the selected values will appear. Files without the field set are excluded. Click **Add filters** to add a row; remove a row with the trash icon. The active filter count is shown next to the **Filters** button. These settings apply to every widget on the dashboard, including the public share view. ## Exporting widget data to CSV Widgets that display tabular data include an **Export CSV** action in their header menu. The following widget types support CSV export: **Recent media**, **People breakdown**, **Team activity**, **Field breakdown**, **Uploads over time**, and **Period comparison**. Widgets that show only charts or summary numbers (Sentiment, Themes, KPI trend, Note, Usage overview) do not include a CSV export. ## Other dashboard actions From the dashboard list or the three-dot menu on an open dashboard you can **Duplicate** a dashboard to use it as a starting point for a new one. Open **Settings** from the three-dot menu to rename a dashboard, change its icon, or update which groups have access. The fastest way to reach us is the live chat in the app (the chat bubble in the bottom corner). You can also email [success@speakai.co](mailto:success@speakai.co). # Dashboard sharing > Publish a dashboard to a public link or embed it in your own site. The dashboard must be scoped to at least one folder first. Source: https://docs.speakai.co/help/dashboards/sharing/ · Markdown: https://docs.speakai.co/help/dashboards/sharing/index.md ## Sharing a dashboard publicly ![The confirmation Speak shows before a dashboard goes public, headed Share this dashboard publicly. It warns that anyone with the link can see the data and no sign-in is required, then summarizes what gets exposed: data from 1 folder, 3 recordings in the selected date range, and aggregated numbers only with no individual recordings listed.](/help/media/dashboards/dashboards-sharing.jpg) Any dashboard owner (or a team member with company-wide folder access) can generate a public link for a dashboard. The dashboard must be scoped to at least one folder before sharing is allowed. To share a dashboard, open it and click the three-dot menu, then click **Share**. Speak AI creates a shareable link and opens the **Share** dialog. ## The Share dialog The dialog has tabs: **Customization**, **Statistics**, and **Views**. **Customization tab** At the top you will see a type selector and a link field. The type selector defaults to **Branding**(a Speak AI-branded share page). Switch to **iFrame** to get an embed code you can paste into a website. Copy the link or code with the clipboard button, or open the preview in a new tab with the external-link button. Below the link field, the **Require viewers to enter their email** toggle enables a lead-capture gate (see below). Click **Save Changes** to apply any customization edits. ## Lead capture (email gate) Toggle **Require viewers to enter their email** to on. Viewers who open your public link will be asked to enter their email address before the dashboard loads. The toggle saves immediately; you do not need to click **Save Changes** to activate it. Optionally fill in the **Consent text (optional)** field with a short statement viewers must agree to (for example, "I agree to be contacted about this dashboard."). This field also saves on blur. To disable the gate, toggle the switch off. ## Viewing who has seen your shared dashboard Open the **Views** tab in the Share dialog. The tab is available whenever lead capture is in use. It shows the count of people who have viewed the dashboard and lists each viewer with: - Name (if collected) and email address - Location - Last seen time - Total view count If no one has viewed the shared link yet, the panel shows "No viewers yet." Viewers only appear here once they enter their email through the gate. ## Public viewer experience Someone who opens the public link sees the dashboard in view mode, the same data and filters as the saved dashboard, scoped to the folders and date range the owner last applied. They cannot edit the dashboard, change the filters, or see any settings. If lead capture is on, they must enter their email before the dashboard loads. ## Disabling sharing Deleting a shared dashboard disables its public link and removes viewer access. If you want to stop sharing without deleting the dashboard, contact us. ## Sharing within your team Internal sharing is managed through the dashboard's groups, not the public link. During creation (or via **Settings** in the three-dot menu) you assign the dashboard to one or more groups. Members of those groups can open the dashboard from their Dashboards list in view mode. The owner and members with company-wide folder access can also edit it. The fastest way to reach us is the live chat in the app (the chat bubble in the bottom corner). You can also email [success@speakai.co](mailto:success@speakai.co). Evaluating Speak AI for a team? [Book a demo and see your own recordings analyzed](https://calendly.com/speak-ai/demo?utm_source=docs&utm_campaign=book-demo). --- Related: [Dashboards](/help/dashboards/) · [Widgets](/help/dashboards/widgets/) # Widgets > Every dashboard widget, what it plots, which data it draws on, and the settings each one exposes when you configure it. Source: https://docs.speakai.co/help/dashboards/widgets/ · Markdown: https://docs.speakai.co/help/dashboards/widgets/index.md ## Overview group ![A dashboard open with four widgets stacked down the page. The AI insights panel at the top is waiting for a summary to be generated, Usage overview below it reports 3 media files, 19m of duration, 3,320 words and 7 unique speakers, and a Sentiment over time chart and a Themes word cloud sit underneath. Add widget and Edit buttons are in the header.](/help/media/dashboards/dashboards-widgets.jpg) **Usage overview** A row of summary cards showing key totals across your media: files, words, speakers, and duration. You can choose which cards appear and reorder them in **Widget settings** under **Metrics**. Supports CSV export. **Total files** (KPI trend card) A compact card that shows a single metric (for example, total files, total words, or total duration) with a trend line. In **Widget settings** choose one or more metrics under **Metrics**; the widget shows one tile per metric. When "Compare to previous period" is on in the Filters panel, a delta arrow appears. You can also override the dashboard date range and folder for this widget individually. ## Metrics group **Field metric** A KPI card that aggregates one custom field across all in-scope media. In **Widget settings** choose a **Field** and an **Aggregation**: **Sum**, **Average**, **Minimum**, **Maximum**, or **Count**. Sum, Average, Min, and Max apply to numeric fields; Count works for any field (how many files have it set). A period delta is shown when "Compare to previous period" is on. **Metrics group** Several field metric tiles displayed together as compact scorecards in one widget. In **Widget settings** click **Add metric** to add tiles; each tile needs a **Field** and an **Aggregation**. Useful for placing multiple KPIs side-by-side without taking up a separate widget slot per metric. ## Breakdowns group **Field breakdown** Shows how media files split across the values of a chosen custom field. In **Widget settings** pick the **Field** and a **Measure**, what each bar's value represents: **Media files**(count), **Total words**, **Total duration**, or, for numeric fields, **Average of <field>** or **Sum of <field>**. Supports CSV export. **Themes** Displays the most frequent themes extracted from media in scope. In **Widget settings** choose a **Chart type**: **Word cloud** or **Bar**. **Sentiment** A pie chart of the overall positive, neutral, and negative sentiment split across in-scope media. No configuration required beyond title and accent color. **People breakdown** Groups media by identified person (speaker or contact). Supports CSV export. ## Trends group **Uploads over time** A line chart of upload volume across the selected date range. Useful for spotting spikes or drops in recording activity. Supports CSV export. **Period comparison** Compares key metrics between the current date range and the previous period of the same length. In **Widget settings** choose which metrics to compare under **Metrics** (for example, total files, total words, sentiment). Supports CSV export. **Sentiment over time** A line chart showing how sentiment shifts over the selected date range. No configuration required beyond title and accent color. ## Content and team group **Recent media** A sortable table of recent files in scope. Clicking a row opens that file. Supports CSV export. **Team activity** Shows activity broken down by team member. Supports CSV export. ## Note widget A static text widget with no data connection. Use it to add context, section labels, or instructions to the dashboard. In **Widget settings** fill in an optional **Heading** and the **Text** body. Note widgets do not have a CSV export or a scope override. ## Per-widget settings available on all widgets - **Title**, rename any widget. - **Accent color**, enter a hex value or use the color picker. Leave empty to use the company brand color. Click **Reset to brand** to clear a custom color. - **Override dashboard filters**, give this widget its own **Date range** and **Folder**, independent of the dashboard-level Filters panel. Available on all widgets except the Note widget. The fastest way to reach us is the live chat in the app (the chat bubble in the bottom corner). You can also email [success@speakai.co](mailto:success@speakai.co). Want a hand setting this up? [Book a free consult](https://calendly.com/speak-ai/consult?utm_source=docs&utm_campaign=consult) and we'll do it together on your account. --- Related: [Dashboards](/help/dashboards/) · [Dashboard sharing](/help/dashboards/sharing/) # Exports > Download transcripts as PDF, DOCX, TXT, CSV, SRT, VTT, JSON or HTML, with options to redact names, emails, locations, brands and dates. Source: https://docs.speakai.co/help/exports/ · Markdown: https://docs.speakai.co/help/exports/index.md Everything Speak AI produces can leave: transcripts as PDF, Word, TXT, CSV, SRT, VTT, JSON, or HTML, [insight data](/help/exports/insights/) for your analysis tools, and [word clouds](/help/exports/word-clouds/) for decks. Exports carry speaker labels and timestamps when you want them, and can redact names, emails, locations, brands, and dates on the way out, which is what makes them safe to circulate. ![The export panel on a single recording. A Choose format dropdown is set to Text, and below it sit checkboxes for Display speaker names and Display timestamps, both ticked, and Redact PII, left unticked, with an Export button in the footer.](/help/media/exports/exports-index.jpg) - **[Insight data](/help/exports/insights/)** - **[Transcripts](/help/exports/transcripts/)** - **[Word clouds](/help/exports/word-clouds/)** ## Available export formats ### Documents - **PDF** - Formatted document, great for sharing and printing - **DOCX (Word)** - Editable document for Microsoft Word or Google Docs - **TXT** - Plain text, universal compatibility - **HTML** - Web-ready format for embedding on websites ### Subtitles and captions - **SRT** - SubRip subtitle format, widely supported by video players and YouTube - **VTT (WebVTT)** - Web Video Text Tracks, used for HTML5 video captions ### Data formats - **JSON** - Structured data for developers and integrations - **CSV** - Spreadsheet-compatible for data analysis ### Video editing - **Premiere Pro XML** - Import transcript as markers in Adobe Premiere Pro ## Export a single file 1. Open your transcribed media file 1. Click the **Export** button (or use AI Chat: "Export this transcript as PDF") 1. Choose your format 1. Select what to include 1. Download the file Three options change what lands in the file: - **Include speaker names:** Show who said what - **Include timestamps:** Add time markers throughout - **Include insights:** Embed keyword and sentiment visualizations Format by format detail, and which types need the Premium Export Add-On, is on [transcripts](/help/exports/transcripts/). ## PII redaction For sensitive content, you can redact personally identifiable information before exporting: - **People names** - Replace with \[PERSON\] - **Locations** - Replace with \[LOCATION\] - **Email addresses** - Replace with \[EMAIL\] - **Brand/company names** - Replace with \[ORGANIZATION\] - **Dates** - Replace with \[DATE\] This is especially useful for research ethics compliance, legal discovery, and data privacy requirements. ## Bulk export You can export multiple files at once: 1. Go to a folder and select the files you want to export 1. Click **Export** in the top bar 1. Choose your format 1. Files will be merged into a single document or downloaded as a batch You can also export via AI Chat: "Export files from last week as PDF" or "Find all interviews and export as DOCX". Some export formats are available as premium features. Check your plan details at [speakai.co/pricing](https://speakai.co/pricing/). ## Convert WebVTT to plain text We created a tool for you to convert your Transcript in WebVTT format to Plain Text to analyze text data on Speak. The format required to convert into Plain Text successfully is below: ```text WEBVTT 1 00:01:14.510 --> 00:01:17.380 Zoom 2 Curion: Hello, This is a sample Zoom file response. 2 00:01:17.510 --> 00:01:19.759 Zoom 2 Curion: Please ensure you follow the Zoom export 3 00:01:20.010 --> 00:01:21.140 Zoom 2 Curion: WebVTT format to generate the only text output. ``` Please ensure the format follows the same otherwise, it will break the output. The output will look like as below: ```text Hello, This is a sample Zoom file response. Please ensure you follow the Zoom export WebVTT format to generate the only text output. ``` Need a compliance-ready export workflow? [Book a free consult](https://calendly.com/speak-ai/consult?utm_source=docs&utm_campaign=consult). # Insight data > Move insight data into Tableau, Salesforce or a spreadsheet on demand, or on a schedule through a Speak AI automation. Source: https://docs.speakai.co/help/exports/insights/ · Markdown: https://docs.speakai.co/help/exports/insights/index.md Everything Speak AI detects in a recording, sentiment, keywords, brands, locations, themes and your own [custom categories](/help/insights/categories/), can leave the account. Pull it into a spreadsheet for a one-off analysis, push it into Tableau or Salesforce, or wire it into another app so it arrives without anyone clicking Export. This page covers all three routes. ![The export dialog for a multi-file selection, headed Export 3 files. Format is set to Text, and the Options list holds Include speaker names and Include timestamps, both ticked, alongside Redact PII and Merge into single file.](/help/media/exports/exports-insights.jpg) ## Include insights in a CSV export Insights ride along with a normal export. Open a media file or a folder, click **Export**, and choose **CSV**. There is no checkbox to tick: if the file has been analyzed and insights exist, they are in the download. The CSV carries an `Insight Category` column and an `Insight` column. Each detected insight gets its own row, so a single recording produces one row per keyword, brand, location, or custom category value. Choose CSV rather than a document format whenever you want that full breakdown, because PDF and Word exports summarize the insights instead of listing every occurrence. Two things to check when a CSV comes back thinner than you expected: - The file has finished analysis. Insights only appear in the export once they have been generated. See [transcription status](/help/transcription/) if a file is still processing. - You picked CSV and not one of the document formats. Format options and what each one includes are listed under [transcripts](/help/exports/transcripts/). If you want a plain list of keywords with no timestamps or row-per-occurrence detail, download the [word cloud](/help/exports/word-clouds/) data instead, or copy the list straight from the Insights tab. ## Export dashboard widgets Dashboard widgets that hold tabular data have their own **Export CSV** action in the widget header menu. That is the route to take when you want the numbers behind a chart rather than the raw insight rows for a set of files. See [dashboards](/help/dashboards/) for which widget types support it. ## Send insight data to other apps with Zapier Zapier moves insight data out of Speak AI on its own, with no export step. Use the **New Media Processed** trigger to fire on each finished file, or the **New AI Chat Response** trigger when you want structured output from a prompt rather than the raw insights. Pair either one with an action such as creating a row in Google Sheets or updating a HubSpot contact. For structured fields like action items or contact names, set up an [automation](/help/automations/) in Speak AI first so the prompt runs on every new file, then use the AI Chat response trigger to collect the result. Full setup steps and the list of supported triggers are on the [Zapier page](/help/integrations/zapier/). If a working Zap suddenly stops, check whether your Speak AI API key has been regenerated. Regenerating the key breaks the existing Zapier connection, and you need to reconnect the account in Zapier with the new key. ## Pull insight data from the API The API returns the most detailed version of the data, including word-level timestamps that CSV exports aggregate away. Call `GET /media/insight/{mediaId}` to read the insights for a processed file, and poll `GET /media/status/{mediaId}` to know when a file is ready. Both endpoints, along with the response shape, are documented in the [media API reference](/api/media/). Want a hand setting this up? [Book a free consult](https://calendly.com/speak-ai/consult?utm_source=docs&utm_campaign=consult) and we'll do it together on your account. --- Related: [Exports](/help/exports/) · [Transcripts](/help/exports/transcripts/) # Transcripts > Export one recording or a whole selection, choosing format, whether to include insights, and how speakers and timestamps appear. Source: https://docs.speakai.co/help/exports/transcripts/ · Markdown: https://docs.speakai.co/help/exports/transcripts/index.md ![The export panel on a single recording with its format list open. The choices read Original File, Thumbnail as PNG, Word, PDF, Text which is ticked, SubRip and WebVTT, with a search box above them and an Export button in the footer.](/help/media/exports/exports-transcripts.jpg) Export a single recording or a whole folder of them, and choose the file type and what travels with it: speaker names, timestamps, insight visualizations, and redacted personal information. ## Export a single file Open the file and select **Export**, in the tab to the right of **Sentiment**. A modal opens where you set the format and the options. Every account can export these: - TXT - SRT - Original file The Premium Export Add-On unlocks the rest: - Word - PDF - TXT - SRT - VTT - CSV - JSON Before you download, choose what to include: - Speaker names - Timestamps - Insight visualizations - Redacted personally identifiable information (PII) Select **Export** when the selection looks right. Rendering takes a moment, so wait for the spinner to stop and the success notification to appear. The download then starts in your browser. To get the audio or video itself rather than a transcript, choose **Source file** instead of a document format. ## Export a folder of files at once Bulk export comes with access to Bulk Edit. With it, you can download every file in a folder in one pass. 1. Open the folder holding the files, from [your folder list](https://app.speakai.co/folder). 1. Select the files you want. Use the checkbox at the top of the left column to take every file on the page, and raise the items per page setting first if you want more of them on one page. 1. Select **Export** in the top right. 1. Pick a format: Word, PDF, TXT, SRT, VTT, CSV, or JSON. 1. Choose whether to include speaker names, timestamps, insight visualizations, and PII redaction. 1. Select **Export All**. The more files you select, the longer the render takes. Wait for the spinner to stop and the success notification to appear, and the files download through your browser. If anything goes wrong along the way, send us a message. Want a hand setting this up? [Book a free consult](https://calendly.com/speak-ai/consult?utm_source=docs&utm_campaign=consult) and we'll do it together on your account. --- Related: [Exports](/help/exports/) · [Insight data](/help/exports/insights/) # Word clouds > Build a word cloud from any recording or folder, then download it as an image for reports, decks and client presentations. Source: https://docs.speakai.co/help/exports/word-clouds/ · Markdown: https://docs.speakai.co/help/exports/word-clouds/index.md ![The Keywords tab of Analysis and Data Visualization. A Top 25 words bar chart sits on the left and the Wordcloud panel on the right, each with its own Top N selector and the download button you use to save the picture, and a table of terms with counts and percentages starts below them.](/help/media/exports/exports-word-clouds.jpg) Speak builds a word cloud from a single recording or from many files at once, so you can see at a glance what a conversation or a whole project keeps coming back to. Open a file to see the cloud for that recording. To build one across multiple files, go to **Explore Insights** in the left navigation. Set the number of words you want on the cloud, and select any term to jump to that topic across your media library. ## Download the cloud and its data Download the cloud as a PNG when you want the picture for a report or a deck, or as a CSV when you want the counts behind it. For a plain list of keywords with the surrounding context, export the [insight data](/help/exports/insights/) instead. Want a hand setting this up? [Book a free consult](https://calendly.com/speak-ai/consult?utm_source=docs&utm_campaign=consult) and we'll do it together on your account. --- Related: [Exports](/help/exports/) · [Insight data](/help/exports/insights/) # Folders > Folders group your files, tags cut across them, saved views set the columns, and Spotlight finds anything. Source: https://docs.speakai.co/help/folders/ · Markdown: https://docs.speakai.co/help/folders/index.md Every recording, transcript, and note in Speak AI sits in a folder. [Folders](/help/folders/manage/) organize by project or client, [tags](/help/folders/tags/) cut across folders, [saved views](/help/folders/saved-views/) remember the columns each folder should show, and [Spotlight search](/help/folders/search/) finds anything, full transcript text included, from anywhere in the app with Cmd+K. ![The Folders screen in Speak, listing the Automated Summaries and Content Team's Files folders in a table with Created By, Assigned To, Source Type, Files, Created and Updated At columns. Search, type, time range and ordering filters sit above the table, with Share Folder and New Folder buttons at the top right.](/help/media/folders/folders-index.jpg) - **[Manage folders](/help/folders/manage/)** - **[Saved views](/help/folders/saved-views/)** - **[Spotlight search](/help/folders/search/)** - **[Tags](/help/folders/tags/)** Migrating an existing library in? [Book a free consult](https://calendly.com/speak-ai/consult?utm_source=docs&utm_campaign=consult). # Manage folders > Create a folder, rename it, assign it to a user group so the right people see it, and move recordings between folders. Source: https://docs.speakai.co/help/folders/manage/ · Markdown: https://docs.speakai.co/help/folders/manage/index.md Folders group your recordings, transcripts, and notes by project, client, or meeting series. Each folder holds its own files, its own [saved views](/help/folders/saved-views/), and its own [automations](/help/automations/), so a folder is usually the unit you set up once and reuse for every file that lands in it. ![The Create Folder dialog on its first step. Folder Details is selected ahead of Generate Fields and Setup Automation, with boxes for the folder Name and a Description, an Assign To picker for team members, and a Next button that moves on to field generation.](/help/media/folders/folders-manage.jpg) ## Create a folder 1. Click **Folders** in the sidebar. 1. Click **New Folder** in the top right. 1. Name the folder and add a description. 1. Pick the user groups that get access from the **Assign To** list. 1. Click **Next**. Speak creates the folder. On a desktop browser the window carries on to generating fields and setting up automation. ## Rename a folder or change who can see it 1. Go to your folder list. 1. Click the **three-dot menu** next to the folder name. 1. Select **Edit**. 1. Change the name, the description, or the groups in **Assign To**. 1. Click **Save**. Create and edit open the same window, so you set **Assign To** when you first create the folder and you change it any time afterwards. You do not have to get access right on the first try. The list holds your user groups, and the groups you pick control who can see the files inside the folder. See [Groups and permissions](/help/teams/permissions/) for how that works. **Assign To** shows up only on a team workspace, and only when your own permissions include assigning folders. ## Choose between folders and tags A file lives in one folder, so use folders for the thing that owns the file: one folder per research project, client, or meeting series. A file can carry many [tags](/help/folders/tags/), so use tags for themes that cut across folders, like "urgent", "follow-up", or "reviewed". You can filter and search on either. Set up an automation per folder when you want every new file to get analyzed the moment it arrives, without anyone starting it. Want a hand setting this up? [Book a free consult](https://calendly.com/speak-ai/consult?utm_source=docs&utm_campaign=consult) and we'll do it together on your account. --- Related: [Library](/help/folders/) · [Saved views](/help/folders/saved-views/) # Saved views > Define a named set of columns for a folder's file list, then switch between saved views in one click instead of retoggling. Source: https://docs.speakai.co/help/folders/saved-views/ · Markdown: https://docs.speakai.co/help/folders/saved-views/index.md ## What are saved column views? ![The Manage columns panel on a folder. A Views section at the top lists the Default view, a saved view and a New View option, then Duration and Created At appear under Visible with the rest, including Sentiment, Media Type, Tags and Size, under Hidden. Save as View and Manage Views sit at the bottom.](/help/media/folders/folders-saved-views.jpg) A saved column view lets you define a named set of columns for a folder's file list and switch between views with one click. Instead of toggling columns on and off every time you open a folder, you create a view once, for example, "Sentiment + Tags" or "Full details", and apply it whenever you need it. Views are stored per folder, so each folder can have its own collection. ## Opening the column panel 1. Open any folder in the table layout. 1. In the folder toolbar, click **Manage columns**. A side panel opens showing two sections: **Views** at the top, and the column list below it. ## Creating a new view 1. In the Manage columns panel, click **New View** in the Views section, or click **Save as View** at the bottom of the panel to save your current column selection. 1. Give the view a name. 1. Check **Set as default view** if you want this view to load automatically every time you open this folder. 1. Add or remove columns using the available column list, and drag them to reorder. 1. Click **Create view** to save. ## Switching between views The Views section at the top of the Manage columns panel lists all saved views for the folder alongside a **Default** option (which restores the standard column set). Click any view name to apply it immediately. A checkmark shows the active view. You can also switch views from the view selector dropdown in the folder toolbar without opening the full panel. ## Editing or deleting a view Hover over a view name in the panel and click the columns icon that appears. The view editor opens where you can rename it, change which columns are included, reorder them, or toggle the default setting. To remove the view entirely, click **Delete view** at the bottom of the editor. ## Why use views? - Quickly switch between a compact view for everyday browsing and a detailed view for analysis. - Include custom fields in a view so your team always sees the data that matters for a specific project. - Set a default view so the folder always opens exactly how your workflow requires. The fastest way to reach us is the live chat in the app (the chat bubble in the bottom corner). You can also email [success@speakai.co](mailto:success@speakai.co). Want a hand setting this up? [Book a free consult](https://calendly.com/speak-ai/consult?utm_source=docs&utm_campaign=consult) and we'll do it together on your account. --- Related: [Library](/help/folders/) · [Folders](/help/folders/manage/) # Spotlight search > Press Cmd+K or Ctrl+K anywhere in Speak AI to search full transcript text, file names, folders, insights and speaker names at once. Source: https://docs.speakai.co/help/folders/search/ · Markdown: https://docs.speakai.co/help/folders/search/index.md Press **Cmd+K**(Mac) or **Ctrl+K** (Windows) anywhere in Speak AI, or click the search icon in the top bar, to open Spotlight search. Type your term and results appear as you type. Click one to jump straight to that file, transcript section, or folder. ![Spotlight search open over the folder list, with sales typed into the query box and an ESC hint beside it. Category chips for All, Folders, Media, Recorder, Recordings and Automations run underneath, and three matching files are listed below them, each labeled Media on the right. The footer offers Explore Insights and shows the keys for Navigate and Select.](/help/media/folders/folders-search.jpg) Spotlight search covers: - Full text of all your transcripts - Media file names and descriptions - Folder names - Insights and keywords - Speaker names ## Search inside one transcript When you are viewing a media file, use the search bar above the transcript to search that file alone. Matching text is highlighted, and clicking a match jumps to that section and starts playback from there. ## Narrow the file list with filters From your media library or a folder view, filter by: - **Media type:** audio, video, or text - **Date range:** files from a specific period - **Speaker:** files where a specific person spoke - **Sentiment:** files with positive or negative sentiment - **Tags:** the [tags](/help/folders/tags/) you have applied - **Folders:** files inside specific folders ## Search with AI Chat For questions a keyword cannot answer, ask [AI Chat](/help/ai-chat/) at the folder level: - "How many files are in this folder?" - "Show files from last week" - "Find all files tagged 'interview'" - "Find files where Gender is Male", using [AI fields](/help/insights/fields/) AI Chat can also act on what it finds: "Find all sales calls from last month and export them as PDF." Want a hand setting this up? [Book a free consult](https://calendly.com/speak-ai/consult?utm_source=docs&utm_campaign=consult) and we'll do it together on your account. --- Related: [Library](/help/folders/) · [Folders](/help/folders/manage/) # Tags > Tag files from Explore so you can filter and group them across folders. Tags apply to a whole selection, and the box replaces whatever is already there. Source: https://docs.speakai.co/help/folders/tags/ · Markdown: https://docs.speakai.co/help/folders/tags/index.md A tag is a label you attach to a file so you can find it later. Unlike a [folder](/help/folders/manage/), a file can carry as many tags as you want, which makes tags the right place for themes that cut across projects. Tags are applied to a selection of files from **Explore**. There is no per-file tag box: the Edit panel on a single file covers its name and description only. ![The bulk edit dialog for three selected files. A comma-separated Tags box warns that what you type replaces the existing tags on every selected file, a Category box sits below it, and an Apply button commits the change to all three.](/help/media/folders/folders-tags.jpg) ## Tag files 1. Open **Explore** and select the **Media** tab. 1. Tick the checkbox next to each file you want to tag. To take everything at once, use the **Select all media** checkbox in the header row. 1. Click **Edit selected**. A window titled **Edit 3 files** opens, counting whatever you picked. 1. In **Tags (comma-separated)**, type the tags separated by commas, for example `interview, q3, churn`. 1. Click **Apply**. **Category** sits in the same window and is optional. Leave a box empty to leave that value alone. If both boxes are empty, Speak AI tells you there are no changes to apply and nothing is sent. ## Change or remove tags The Tags box **replaces** what is already on the selected files rather than adding to it. The window says so under the box: "Tags will replace existing tags on all selected files." That has two consequences worth knowing before you apply anything: - To drop one tag, retype the tags you want to keep and apply that list. The tags you leave out are gone. - Clearing the box does not clear the tags. An empty box counts as "no change", so the field is skipped entirely. There is no way to strip every tag from a file in one pass today. Because tagging replaces rather than merges, select narrowly. Applying `q3` to everything in a folder overwrites the tags each of those files already carried. Want a hand setting this up? [Book a free consult](https://calendly.com/speak-ai/consult?utm_source=docs&utm_campaign=consult) and we'll do it together on your account. --- Related: [Folders](/help/folders/) · [Manage folders](/help/folders/manage/) # Insights > What Speak AI extracts from every recording, what each insight type means, and how to read them without opening the transcript. Source: https://docs.speakai.co/help/insights/ · Markdown: https://docs.speakai.co/help/insights/index.md Every recording is analyzed the moment it's transcribed: keywords, sentiment, entities, and topics extracted automatically, no prompt required. Read one file's insights on its page, tune the [categories](/help/insights/categories/) to your domain, set [keyword alerts](/help/insights/keywords/) for the phrases that matter, define [AI fields](/help/insights/fields/) for structured extraction, and use [Explore](/help/insights/explore/) to compare it all across your library, where [themes](/help/insights/themes/) show what recurs and what's changing. ![The Insights tab of Analysis and Data Visualization, summarizing the last 30 days. Recording Activity reports 8 team recordings and 7k words transcribed across 8 speakers, Team Activity lists the account and its recordings, and Sentiment splits the results into positive, neutral and negative with a count and a percentage each.](/help/media/insights/insights-index.jpg) - **[AI fields](/help/insights/fields/)** - **[Categories](/help/insights/categories/)** - **[Explore](/help/insights/explore/)** - **[Keywords](/help/insights/keywords/)** - **[Sentiment scores](/help/insights/sentiment/)** - **[Themes](/help/insights/themes/)** ## Keywords and topics The terms and subjects mentioned most often in a recording. Read them first to tell what a conversation was about before you open the transcript. Explore and folder statistics also render keywords as a [word cloud](/help/exports/word-clouds/), where the largest words are the most frequent. Topics are extracted from audio and video only. ## Sentiment Speak scores the emotional tone of your content at both the document level and the individual sentence level: - **Positive:** optimistic, supportive, or enthusiastic language - **Negative:** critical, frustrated, or concerning language - **Neutral:** factual, informational statements - **Compound score:** an overall score from -1 (most negative) to +1 (most positive) [Sentiment scores](/help/insights/sentiment/) explains the bands each score falls into. ## Named entities Speak identifies and labels the specific things mentioned in your content: - **People:** names of individuals mentioned - **Organizations:** companies, institutions, brands - **Locations:** cities, countries, addresses - **Products:** product and brand names - **Dates and times:** specific dates, deadlines, time references - **Money:** dollar amounts, pricing, financial figures Entities are useful as a filter. Narrow your library to files that mention a competitor, then read the sentiment on just those files to see how people talk about them. ## Speaker analytics For recordings with more than one speaker, Speak tracks: - **Speaking time:** how long each person spoke - **Word count:** total words per speaker - **Words per minute:** speaking pace for each person - **Speaking percentage:** share of the conversation ## Categories Speak sorts content into a set of default categories that work with no configuration. You can add your own keywords to any of them so specific terms are always captured. See [Categories](/help/insights/categories/) for the full list and the steps. You can also create categories of your own, such as "Product Feedback", "Action Items", or "Customer Complaints": 1. Go to your [account settings](https://app.speakai.co/profile/usage) 1. Find **Custom Categories** 1. Add your categories and define what each one means 1. New media is analyzed against your custom categories Speak can also suggest categories based on the content you already have. ## Where insights appear - **Media detail page:** the full breakdown for one file - **Folder statistics:** aggregate insights across every file in a folder - **[Explore](/help/insights/explore/):** cross-media analytics and trends - **[AI Chat](/help/ai-chat/):** ask questions about insights, such as "What were the most negative moments?" - **[Exports](/help/exports/insights/):** include insights in CSV, PDF, and other formats Analyzing a real dataset? [Book a demo and see your own recordings analyzed](https://calendly.com/speak-ai/demo?utm_source=docs&utm_campaign=book-demo). # Categories > Every analysis extracts keywords, topics, sentiment, entities, brands and emotions by default, with no configuration required. Source: https://docs.speakai.co/help/insights/categories/ · Markdown: https://docs.speakai.co/help/insights/categories/index.md Every time Speak AI analyzes your media, it extracts insights across a set of default categories. They work out of the box, and you can add your own keywords to any of them so terms that matter to you are always captured. ![The Keywords panel open beside a transcript, grouping what the analysis extracted. Keywords holds 25 entries such as Customer interviews and Research tooling, People holds 5, and Brands holds 7 including UX, Northwind, Zoom and Google Drive. Every chip carries the number of times that term appears.](/help/media/insights/insights-categories.jpg) ## Default categories 1. **Keywords** - The most important terms and phrases 1. **Topics** - Main subject areas discussed (audio/video only) 1. **People** - Names of individuals mentioned 1. **Organizations** - Companies, institutions, and brands 1. **Products** - Product and brand names referenced 1. **Geopolitical Entities** - Countries, cities, regions 1. **Locations** - Physical places and addresses 1. **Events** - Named events, conferences, meetings 1. **Time Indicators** - Time references and scheduling mentions 1. **Dates** - Specific dates mentioned 1. **Money** - Dollar amounts, prices, financial figures 1. **Percentages** - Percentage values mentioned 1. **Ordinals** - Ordered items (first, second, etc.) 1. **Artifacts** - Objects, tools, and specific items 1. **Natural Phenomena** - Weather, environmental references ## Add your own keywords Adding a keyword to a default category tells future analysis to always look for that term: 1. Go to **Default Categories** in the left sidebar, under **Insights Customizations** 1. Click **Edit** in the top right corner 1. Type the keyword into the **Include** field of the category you want it in 1. Press **Enter** after each keyword to complete the entry 1. Click **Save** in the top right corner Your keywords apply to media analyzed after you save. Older files keep the insights they already have unless you **Re-analyze** them. ## Custom categories Beyond the defaults, you can create entirely new categories for your own work, such as "Product Feedback", "Action Items", or "Customer Complaints". See [Insights](/help/insights/) for the steps. ## Where to see your insights - **Media detail page:** insights for each individual file - **[Explore](/help/insights/explore/):** aggregate insights across all your files - **Folder statistics:** insights for every file in a specific folder - **[Exports](/help/exports/insights/):** include insights in CSV, PDF, and other formats Want a hand setting this up? [Book a free consult](https://calendly.com/speak-ai/consult?utm_source=docs&utm_campaign=consult) and we'll do it together on your account. --- Related: [Insights](/help/insights/) · [Explore](/help/insights/explore/) # Explore > The Explore page compares insights across your whole library instead of one file, surfacing patterns, trends and shifts over time. Source: https://docs.speakai.co/help/insights/explore/ · Markdown: https://docs.speakai.co/help/insights/explore/index.md [Explore](https://app.speakai.co/explore) analyzes insights across all of your recordings in one place. Instead of reading files one at a time, you see the patterns, trends, and comparisons across your whole library or a single folder. ![The Stats tab of Analysis and Data Visualization. Cards for Audio, Video and Text break out files, words, duration and speakers, with an Upload Counts by Date bar chart and a File Types pie chart below them, and a Last 30 days range selector at the top right.](/help/media/insights/insights-explore.jpg) ## What you can compare - **Keywords:** which terms appear most often across recordings - **Sentiment:** how sentiment moves over time or across groups - **Topics:** the themes that recur in your content - **Speakers:** speaking patterns across multiple recordings - **Entities:** people, organizations, and locations mentioned across files This is how you answer questions that no single file can: the themes running through 50 interview transcripts, the sentiment trend across support calls, the objections that come up most in sales calls, the topics your podcast keeps returning to. ## Filter down to what matters Filters narrow the set of files behind every chart on the page: - **Folders:** analyze one project folder - **Date range:** look at a period of time - **Speakers:** focus on specific speakers - **Sentiment:** keep positive, negative, or neutral files - **Tags:** group by your own tags - **Categories:** filter by insight category Combine filters with AND and OR conditions to include and exclude data until the view is exactly what you want, then save the filter so you can return to it without rebuilding it. ## Read the charts Explore shows your data as charts and tables. You can also ask [AI Chat](/help/ai-chat/) for a visualization of your own: - "Create a pie chart of sentiment distribution" - "Show a bar chart of top keywords this month" - "Generate a doughnut chart of speaker distribution" ## Analyze a large set of files To go from a pile of raw files to aggregate insights: 1. **Upload:** bring in your audio, video, and text files, or [import a CSV](/help/uploads/csv-import/) of written responses. Check [supported formats](/help/uploads/formats/) first, and make sure you have enough transcription hours for the batch. 1. **Organize:** move the files into a single folder. 1. **Open the folder insights:** the folder's **Insights** tab aggregates every file in it, with a word cloud of frequent terms, the positive and negative balance across the set, and top mentions of brands, people, and locations. 1. **Ask across the set:** select all the files and run one AI Chat prompt, such as "What is the main pain point?", to get an answer for every file. Analytics for a large folder take a moment to generate the first time. ## Look at one day, or one day of the week Click the calendar icon in the top right of Explore or your dashboard and pick a single day, for example October 13 to October 13. Every chart on the page redraws for that day alone, so you can see the volume, sentiment, and keywords it produced. There is no filter for a repeating day such as "every Monday". To study that, select all files in Explore, click **Export CSV**, open the file in a spreadsheet, and group the rows with a formula like `=WEEKDAY(Date)`. If you need it as a live filter instead, tag files by their creation day through an [automation](/help/automations/) and then filter on that tag. Day boundaries follow your account timezone, so set it to your local time before you read a single-day view. Evaluating Speak AI for a team? [Book a demo and see your own recordings analyzed](https://calendly.com/speak-ai/demo?utm_source=docs&utm_campaign=book-demo). --- Related: [Insights](/help/insights/) · [Categories](/help/insights/categories/) # AI fields > The four properties that control how AI extracts and formats data from media in Fields and Automations, and when to use each. Source: https://docs.speakai.co/help/insights/fields/ · Markdown: https://docs.speakai.co/help/insights/fields/index.md An AI field turns a recording into a value you can filter, report on, and sort by. Four properties control that extraction: **Prompt** tells the AI what to look for, **Allowed Values** lists what it may answer, **Other Values** decides whether it can answer with anything else, and **Not Applicable Values** decides what it says when it finds nothing. Configure them once at [Settings → Fields](https://app.speakai.co/profile/fields), then map the field in an [automation](/help/automations/). ![The Fields page under Settings, listing every custom field in the workspace. Each row gives the field name, such as AI_Key_Quote or Call_To_Action, its type, an Active status, a Public privacy setting and the date it was created, with Create Field and Sample Fields buttons at the top right.](/help/media/insights/insights-fields.jpg) ## Prompt The prompt is your instruction to the AI. It names the exact information to pull out of the audio, video, or text: - Extract an entity: "Identify all company names mentioned in the conversation" - Classify content: "Determine the sentiment of the speaker (positive, negative, neutral)" - Extract structured data: "Find all dates and times mentioned in the transcript" - Identify topics: "List all product names or services discussed" Be specific rather than vague, say what format you expect the answer in, and test the prompt against a sample file before you run it across a library. When you select the field in an automation, its prompt auto-populates, which keeps every run consistent. Editing the prompt on the field definition does **not** update automations that already use it. Update those automations yourself, or create new ones. ## Allowed Values Allowed Values is a list of the answers you want back. It standardizes extraction, so you get "Support" every time instead of "support", "support request", and "help desk" across three files. Use values that do not overlap in meaning, name them consistently, and keep the list manageable. Five to fifteen values usually works well. Think about how the values will read later in filters, reports, and dashboards. Typical lists look like: - Department: \["Sales", "Support", "Marketing", "Product"\] - Workflow status: \["Active", "Pending", "Completed", "Cancelled"\] - Priority: \["Low", "Medium", "High", "Urgent"\] - Product type: \["Software", "Hardware", "Service", "Consulting"\] ### Single and multiple selection Selection mode controls how many of those values the AI may return: - **Single:** the AI picks the one value that best matches, and returns it on its own, for example `value1`. - **Multiple:** the AI picks every value that applies and returns them comma separated, for example `value1, value2, value3`. ## Other Values Other Values is a toggle that decides whether the AI may answer with something outside your list. Turn it **on** and Allowed Values becomes a list of preferred answers. The AI can return a value that is not on the list when that value is more accurate. If your list is \["Sales", "Support"\] and a file is clearly about customer success, it can answer "Customer Success". This handles synonyms and terminology you did not anticipate, and it is the right setting while you are still discovering what your data contains. Turn it **off** and the list becomes mandatory. The AI answers only with values from Allowed Values, and nothing else gets through. Use this once you know the values you want, and whenever reporting or compliance depends on a fixed vocabulary. A good sequence is to run with Other Values on at first, review what comes back, promote the recurring answers into Allowed Values, then turn it off. ## Not Applicable Values This is the answer the AI gives when it finds nothing relevant, either nothing matching Allowed Values or, if you left that empty, nothing worth extracting at all. It keeps missing data consistent instead of scattered across blanks and improvised phrasings. If you leave it empty, the field falls back to `N/A`. The AI returns that value alone and nothing else. Pick something that clearly reads as absent data, keep it distinct from your Allowed Values, and use the same value across similar fields. | Field type | Common values | | --- | --- | | Boolean | "false", "No", "N/A" | | Text | "Unknown", "Not Specified", "N/A", "-" | | Categorical | "Uncategorized", "Other", "None" | | Status | "Not Applicable", "Pending", "Unknown" | ## A field with all four set Take a field that classifies the type of a call: - **Prompt:** "Identify the primary purpose or type of this call from the conversation" - **Allowed Values:** \["Sales Call", "Support Request", "Product Demo", "Follow-up"\] - **Selection mode:** Multiple, because one call can serve more than one purpose - **Other Values:** on, to catch types you have not listed yet, such as "Training" or "Onboarding" - **Not Applicable Values:** "Uncategorized" Run that field and the AI looks for the four listed types, returns any additional type it finds, lists several comma separated when a call covers several, and answers "Uncategorized" when the recording gives it nothing to go on. ## Using fields in automations When you build an automation with an AI Chat action, selecting a field brings its configured properties into the automation. You can override them there for a one-off case, and the extracted value is written back to that field on the media in your library. Setting the properties on the field is what keeps results consistent; the override is the escape hatch. ## When results look wrong - **The AI returns values that are not in your list.** Turn Other Values off to enforce the list, or add the returned values to Allowed Values. - **The AI returns "N/A" too often.** Check that the prompt is clear, that Allowed Values is not too narrow, and that the content really does contain what you are asking for. - **You get several values when you expected one.** Set selection mode to single, and make the prompt ask for one answer. - **A prompt edit did not reach an existing automation.** That is expected. Update the automation, or rebuild it against the field. Want a hand setting this up? [Book a free consult](https://calendly.com/speak-ai/consult?utm_source=docs&utm_campaign=consult) and we'll do it together on your account. --- Related: [Insights](/help/insights/) · [Categories](/help/insights/categories/) # Keywords > Get notified when a chosen word or phrase appears in any new transcript, so escalations and competitor mentions surface immediately. Source: https://docs.speakai.co/help/insights/keywords/ · Markdown: https://docs.speakai.co/help/insights/keywords/index.md Keyword alerts tell you when a word or phrase you care about shows up in a new transcript, so you can act on an escalation, a competitor mention, or a churn signal the day it happens instead of finding it weeks later. Set them up in **Settings → Keywords** in your Speak AI dashboard. There are two ways to send the notification: through Zapier, or through a keyword set in Speak. ![The Keywords tab of Analysis and Data Visualization, ranking terms across the whole library. A Top 25 words bar chart puts Interviews and Recording at the top, a word cloud beside it sizes each term by how often it appears, and a table below gives every term a count and a percentage.](/help/media/insights/insights-keywords.jpg) ## Alert through Zapier Use this route when you want the alert to land in a tool you already work in, such as Gmail or Slack: 1. **Trigger:** set up a Zapier trigger on Speak AI's **New Media Processed** event. 1. **Filter:** add a Zapier filter step that continues only if the `Keywords` field from Speak contains the term you want to watch. 1. **Action:** send an email through Gmail, or post a channel message through Slack, to whoever needs to see it. ## Alert through a keyword set Some plans include email alerts on keyword sets, with no other tool involved: 1. Go to the **Insights** or **Keywords** settings in your account. 1. Create a **Keyword Set** with the terms you want to monitor. 1. If your plan includes it, turn on **Email Notifications** for that keyword set. Test each alert with a term you know appears in a recent file before you rely on it. Want a hand setting this up? [Book a free consult](https://calendly.com/speak-ai/consult?utm_source=docs&utm_campaign=consult) and we'll do it together on your account. --- Related: [Insights](/help/insights/) · [Categories](/help/insights/categories/) # Sentiment scores > Sentiment runs from -1 to 1, split into seven bands from very negative to very positive. What each band means in practice. Source: https://docs.speakai.co/help/insights/sentiment/ · Markdown: https://docs.speakai.co/help/insights/sentiment/index.md Sentiment scores range from -1 to 1 and can carry several decimals. Speak AI scores each file overall and each sentence inside it, then places the score in one of seven bands so you can read the tone without interpreting the raw number. ![The Sentiment panel open beside a transcript. A Sentiment Summary bar splits the recording into 30 percent positive, 61 percent neutral and 9 percent negative and labels the whole file mostly neutral, and a chart below plots the score of every sentence from the start of the conversation to the end.](/help/media/insights/insights-sentiment.jpg) | Sentiment | Score | | --- | --- | | Very Positive | 0.75 to 1 | | Positive | 0.26 to 0.74 | | Slightly Positive | 0.01 to 0.25 | | Neutral | 0 | | Slightly Negative | -0.01 to -0.25 | | Negative | -0.26 to -0.74 | | Very Negative | -0.75 to -1 | Sentiment appears on the media detail page for one file, in folder statistics for a set of files, and in [Explore](/help/insights/explore/), where you can compare it across groups and watch it move over time. Evaluating Speak AI for a team? [Book a demo and see your own recordings analyzed](https://calendly.com/speak-ai/demo?utm_source=docs&utm_campaign=book-demo). --- Related: [Insights](/help/insights/) · [Categories](/help/insights/categories/) # Themes > Find recurring themes across recordings, classify each mention, and count how often each theme appears and who raised it. Source: https://docs.speakai.co/help/insights/themes/ · Markdown: https://docs.speakai.co/help/insights/themes/index.md ![The Create field panel open over the Fields page under Settings, with the list of fields the workspace already holds sitting behind it. Name is empty behind a Field name placeholder, Type is set to Text and Privacy is set to Public. Below them sit a Description box, an optional Prompt box for guiding AI extraction, an Allowed values box that takes one value per Enter, and a Not-applicable values box, with Cancel and Create field buttons at the bottom.](/help/media/insights/insights-themes.jpg) Qualitative work slows down at the point where you have to name the themes in your data, tag every response against them, and count the results. Speak AI does all three with one prompt: it reads the files, writes the theme it finds into an [AI field](/help/insights/fields/), and gives you a column you can sort, filter, and export. This page walks through the whole run, from upload to a count in a spreadsheet. ## Video walkthrough The walkthrough analyzes a synthetic Spotify cancellation survey and identifies, classifies, and counts its themes from start to finish: [watch the walkthrough](https://embed.speakai.co/how-to-identify-classify-quantify-themes-in-speak-9d5ec1b88d6f). ## Upload and organize the data Bring in the data you want to analyze. Speak AI takes audio, video, and text, through the app, a [CSV import](/help/uploads/csv-import/) of written responses, the [Zapier integration](/help/integrations/zapier/), or the API. Upload from [your dashboard](https://app.speakai.co/dashboard) or from the **Quick Actions** menu anywhere in the app. [Uploads](/help/uploads/) covers each route in full. Put every file you want in the analysis into one folder. Choose the folder while you upload, or move the files into it afterwards. ## Create the fields that hold your themes The analysis writes its answer into a field, so create the fields first at [Settings → Fields](https://app.speakai.co/profile/fields). You can create as many as you need. [AI fields](/help/insights/fields/) explains the properties that control what each field accepts. ### When you do not know the themes yet Create a text field named **Exploratory Themes** and let the AI name what it finds. This is theme identification: you are looking for the language your data already uses. Once you can see which themes recur, turn them into a fixed list and run the process again to classify against it. ### When you already know the themes Name the field **Themes** or **Standardized Themes** and give the AI the list to choose from in the prompt. The AI picks one or several of the themes you listed instead of inventing wording. This is theme classification, and it is what makes the counting step possible, because every file uses the same labels. ### Put the fields in view Open the folder, select **Columns** in the top right, and drag the fields you created from the right side to the left. Speak stores the choice for your session. If the columns disappear after you clear your cache, add them back the same way. ## Run the analysis 1. Open the folder holding your data. Your folders are listed on the left. 1. Select the files you want. If you select none, Speak analyzes every file in the folder. 1. Select **Prompt** in the top right. 1. Choose **Map Response to Field** and pick the field you created, so each answer lands in that column. 1. Write your prompt and run it. How long the run takes depends on how much data you selected. Results fill in the columns as each file finishes. To try different wording or an updated theme list, run it again the same way and the fields update with the new results. [Batch analysis](/help/ai-chat/batch-analysis/) covers running one prompt across every file in a folder in more detail. ### Prompt for identifying new themes ```text Review this [type of] data and give the main theme for why [question]. Be concise and return only the theme name. ``` ### Prompt for classifying against a list ```text Review this [type of] data and give me only one theme from this list: 1. Theme 1 2. Theme 2 3. Theme 3 4. Theme 4 5. Theme 5 Respond with nothing but the selected theme from the list above. Do not include the number. For example, return only: "EXAMPLE THEME". Consistency matters, because these are standardized themes we need to count. ``` ## Count the themes in a spreadsheet Export the folder to CSV to do the counting. Select the files you want, choose **More → Export → Media Details (.csv)**, then select **Export All**. Speak builds a single structured CSV of your data with the theme columns included. CSV is one of the formats the Premium Export Add-On unlocks, and [Transcripts](/help/exports/transcripts/) lists what each plan includes. Open the file in Excel, Google Sheets, or your own tool, and the theme column gives you how many files fall under each theme, the share of the set each one accounts for, and which themes come up most and least often. ## Automate it for every new file To classify themes without running the prompt yourself, build the same prompt and field mapping into an [automation](/help/automations/). It then runs on each new file as it arrives, so the theme column is filled in by the time you open the folder. ## Get help with your theme analysis Book a paid session with a Speak AI specialist and go through your own data together: 1. [30-minute session](https://calendly.com/speak-ai/30-minute-customer-support?utm_source=docs&utm_campaign=consult) 1. [45-minute session](https://calendly.com/speak-ai/45-minute-paid-customer-support?utm_source=docs&utm_campaign=consult) 1. [60-minute session](https://calendly.com/speak-ai/60-minute-paid-customer-support?utm_source=docs&utm_campaign=consult) Evaluating Speak AI for a team? [Book a demo and see your own recordings analyzed](https://calendly.com/speak-ai/demo?utm_source=docs&utm_campaign=book-demo). --- Related: [Insights](/help/insights/) · [Categories](/help/insights/categories/) # Integrations > Speak AI integrates with Google Drive, Slack, Zoom, Zapier, Vimeo and more, so recordings flow in and results flow out automatically. Source: https://docs.speakai.co/help/integrations/ · Markdown: https://docs.speakai.co/help/integrations/index.md Connect the tools your recordings come from and the tools your results go to. [Zoom](/help/integrations/zoom/) and [Vimeo](/help/integrations/vimeo/) bring media in, [Google Calendar](/help/meeting-assistant/google-calendar/) and [Microsoft Calendar](/help/meeting-assistant/microsoft-calendar/) drive the Meeting Assistant, the [Chrome extension](/help/integrations/chrome-extension/) captures the web, and [Zapier](/help/integrations/zapier/) connects everything else: 5,000+ apps sending files in and results out automatically. Developers get the [API](/api/) and [webhooks](/api/webhooks/) directly. ![The Integrations page scrolled to the Native Integrations list, where Slack, Google Calendar, Microsoft Outlook, Vimeo and the Google Chrome Extension each carry a Connect button. The iOS and Android app downloads sit above them, and Calendly sits under Scheduling.](/help/media/integrations/integrations-index.jpg) - **[Chrome extension](/help/integrations/chrome-extension/)** - **[Vimeo](/help/integrations/vimeo/)** - **[Zapier](/help/integrations/zapier/)** - **[Zoom](/help/integrations/zoom/)** ## Find and connect an app Open [Integrations](https://app.speakai.co/integrations) in the sidebar. Apps are grouped by category by default. Search by name, or filter to a category such as CRM, Communication or Storage. Anything you have already connected shows a green **Connected** badge. Most apps connect through OAuth, so you sign in and approve access. Apps that use an API key instead open a dialog where you paste the key. Once a key-based app is connected, an **Update key** button appears on its row so you can rotate the key without disconnecting first. ## What connects natively - **Google Drive** watches a Drive folder and imports new audio and video files automatically. This suits teams that already save recordings to Drive. - **Google Calendar** tells the [Meeting Assistant](/help/meeting-assistant/) about upcoming meetings so it can join them. See the [Google Calendar guide](/help/meeting-assistant/google-calendar/). - **Microsoft Outlook Calendar** does the same for Outlook and Office 365. See the [Microsoft Calendar guide](/help/meeting-assistant/microsoft-calendar/). - **Slack** sends transcription results, notifications and media to your channels, and delivers Speak AI notifications back to you in Slack. - **Vimeo** imports your video library for transcription and analysis. See the [Vimeo guide](/help/integrations/vimeo/). - **Chrome extension** captures web content, YouTube videos and audio from any browser tab in one click. See the [Chrome extension guide](/help/integrations/chrome-extension/). ## Get phone calls into Speak AI Speak AI does not tap into your phone line, and neither the Chrome extension nor the mobile app records calls. You get call audio in one of four ways: - **Upload the recordings.** If your phone system exports call recordings as audio files, [upload them](/help/uploads/) the same way you upload anything else. - **Route Twilio through Zapier.** Twilio call recordings can be sent to Speak AI automatically with a [Zap](/help/integrations/zapier/). - **Use Zapier for other phone systems.** RingCentral, Aircall, Dialpad and similar tools connect the same way. - **Build it on the API.** Upload call recordings programmatically from any system with the [Speak AI API](/api/). Once the audio is in, calls behave like any other media: full transcription, [speaker identification](/help/transcription/speakers/), summaries, [sentiment analysis](/help/insights/sentiment/), and questions you can ask in [AI Chat](/help/ai-chat/). ## What Zapier reaches [Zapier](/help/integrations/zapier/) covers the apps that have no native connector. Common pairings include: - **Zoom** to import meeting recordings - **YouTube** to transcribe uploaded videos - **Dropbox, OneDrive and Box** to import from cloud storage - **Airtable** to send transcription data into a structured base - **Google Sheets** to export insights to a spreadsheet - **Gmail** to process audio attachments - **Twilio** to transcribe phone call recordings - **HubSpot and Salesforce** to push insights into your CRM ## Build your own connection - **[Webhooks](/api/webhooks/)** notify your systems in real time when media is created, analyzed or deleted. [Inbound webhooks](/help/automations/inbound-webhooks/) work the other way and start an automation from an outside event. - **[API](/api/)** covers everything the app can do. Manage your keys under [Developers > API Keys](https://app.speakai.co/developers/apikeys). - **[MCP server](/mcp/)** connects Speak AI to assistants like Claude, ChatGPT, Cursor and VS Code through the Model Context Protocol, so they can read your transcripts and analysis directly. Wiring Speak AI into a team workflow? [Book a free consult](https://calendly.com/speak-ai/consult?utm_source=docs&utm_campaign=consult). # Chrome extension > Import text from any web page into Speak AI in one click, then run sentiment analysis and named-entity recognition on what you captured. Source: https://docs.speakai.co/help/integrations/chrome-extension/ · Markdown: https://docs.speakai.co/help/integrations/chrome-extension/index.md Import text from any web page into Speak AI in one click, then analyze it like any other file. Use it on emails, social posts, competitor pages, profiles, blog posts, press releases, and news articles. [Install the Chrome extension](https://chrome.google.com/webstore/detail/speak-ai-import-analyze-t/ocojnbhkbjgnlknabhicoodhmlapfodp?hl=en), then sign in with your Speak AI credentials. ## Capture a whole page Select **Fetch the Page** in the extension to import the full article or page. ## Capture only what you select Highlight the text you want, right-click, and choose **Speak AI - Import - Analyze Selected Text**. ## What you get back Imported text is analyzed the same way a transcript is: - [Insight categories](/help/insights/categories/) such as people, brands, locations, numbers, and events - Custom categories you define, so you can track the words and phrases that matter to you - [Sentiment](/help/insights/), so you can sort by the most positive and most negative passages - Everything feeds your [dashboards](/help/insights/explore/), which analyze across multiple files - [Exports](/help/exports/) to PDF and Word when you need to send the analysis on Evaluating Speak AI for a team? [Book a demo and see your own recordings analyzed](https://calendly.com/speak-ai/demo?utm_source=docs&utm_campaign=book-demo). --- Related: [Integrations](/help/integrations/) · [Vimeo](/help/integrations/vimeo/) # Vimeo > Link a Vimeo account to Speak AI to import videos for transcription and analysis without downloading them first. Source: https://docs.speakai.co/help/integrations/vimeo/ · Markdown: https://docs.speakai.co/help/integrations/vimeo/index.md ![The Integrations page filtered to Vimeo. The search box holds Vimeo, the counter beside it reads All Integrations 37, and the single result under Native Integrations offers to link your account to sync videos, folders or showcases, with a Connect button on the right.](/help/media/integrations/integrations-vimeo.jpg) Connect Vimeo once and Speak AI pulls your videos in directly, so you never download a file just to upload it again. Each video you import is transcribed and analyzed like any other upload. ## Connect your Vimeo account 1. Go to [Integrations](https://app.speakai.co/integrations/vimeo) in Speak AI. 1. Select **Manage** under Vimeo. 1. Select **Connect**. Speak AI sends you to Vimeo to authorize access. 1. Sign in to Vimeo and grant access. 1. Choose **All Videos**, **All Folders**, or **All Showcases** from the dropdown. Your Vimeo account name appears at the top of the screen once authorization succeeds. If it does not, connect again, or reach us on the in-app chat. ## Permissions Speak AI asks for Vimeo shows these on the authorization screen: - Access your video files - Access your private videos, Showcases, Groups, Channels, and Portfolios - Access your public videos, Showcases, Groups, Channels, and Portfolios ## Disconnect your Vimeo account Select **Disconnect** to remove your Vimeo information from Speak AI. Reconnecting later means going through authorization again. ## What you get on an imported video Every video you import behaves like a normal upload: - An [interactive transcript](/help/transcription/) you can read, search, and edit. Order a [human transcription](/help/transcription/human/) when you need a cleaned-up version. - Search across your whole [library](/help/folders/), with keyword, topic, and sentiment analysis synced to the timeline. - [Folders and tags](/help/folders/manage/) to organize videos by project or use case. - [Clips and exports](/help/exports/) to share the moments that matter. Want a hand setting this up? [Book a free consult](https://calendly.com/speak-ai/consult?utm_source=docs&utm_campaign=consult) and we'll do it together on your account. --- Related: [Integrations](/help/integrations/) · [Chrome extension](/help/integrations/chrome-extension/) # Zapier > Zapier links Speak AI to 5,000+ apps. Which triggers and actions to use for transcription, AI Chat analysis and media workflows. Source: https://docs.speakai.co/help/integrations/zapier/ · Markdown: https://docs.speakai.co/help/integrations/zapier/index.md Zapier connects Speak AI to more than 5,000 other apps without any code. It works in both directions. When a recording lands in Zoom, Google Drive or Slack, Zapier uploads it to Speak AI. When a file finishes processing in Speak AI, Zapier pushes the transcript and the analysis out to Google Sheets, Google Docs, Airtable, Slack or your CRM. Browse the current list on the [Speak AI page in Zapier](https://zapier.com/apps/speak-ai/integrations). ![The Integrations page filtered to Zapier. The Zapier Integration section describes the ready-to-use templates, and the single result carries a Manage button rather than a Connect button, because the connection itself is made on Zapier's side.](/help/media/integrations/integrations-zapier.jpg) ## Triggers Speak AI sends to Zapier Speak AI offers two triggers, and picking the right one matters. **New media processed** fires when a file finishes transcription. It returns the transcript text, the media ID and basic metadata. Use it when you only need the raw transcript. **New AI Chat response** fires when an AI Chat prompt finishes running on a file. It returns the prompt response, the structured data and every extracted field, so it carries both the transcript and the analysis. Use it for most workflows. If you need structured values such as contact names, action items or [custom fields](/help/insights/fields/), pair this trigger with an [automation](/help/automations/) that runs the prompt on every new file. ## Build a Zap 1. In Zapier, click **Create Zap**. 1. Search for **Speak AI** and select it as the trigger app. 1. Choose **New Media Processed** or **New AI Chat Response**. 1. Connect your Speak AI account with your [API key](/api/authentication/). 1. Choose the action app, such as Google Sheets, Slack or Airtable. 1. Map the Speak AI fields to your destination. 1. Test the Zap and turn it on. Upload at least one file to Speak AI before you build the Zap. Zapier needs a real sample to pull field names from, and an empty account gives it nothing to map. ## Send recordings into Speak AI The **Upload Media** action accepts a file or a URL, so any app that exposes a download link can feed Speak AI. The action takes a name for the file, the media URL, and an optional destination [folder](/help/folders/manage/). ### Zoom Turn on cloud recording in Zoom before you start. See the [Zoom guide](/help/integrations/zoom/) for the rest of the Zoom setup. 1. **Trigger:** select **Zoom** and choose **New Audio Recording** or **New Recording**. 1. Authenticate your Zoom account in Zapier. 1. **Action:** select **Speak AI** and choose **Upload Media**. 1. Map the fields as below. 1. Run a test to confirm the file reaches Speak AI, then turn the Zap on. | Speak AI field | Map from Zoom | Notes | | --- | --- | --- | | Name | Zoom Topic or Start Time | Helps you identify the recording in Speak AI. | | Media URL | `download_url` | The direct link to the Zoom cloud recording. | | Folder | Optional | Routes the recording into a specific Speak AI folder. | Zoom share links must be reachable without a password. If a file never arrives, turn off password protection on the recording and confirm the link opens in a private browser window. ### Google Drive 1. **Trigger:** select **Google Drive** and choose the folder you want to watch. 1. Check the sample response Zapier returns and confirm it includes the **File** value. 1. **Action:** select **Speak AI** and choose **Upload Media**. 1. Pick the file from the **File/URL** dropdown and set **Video or Audio** to match the file format. 1. Create a test, review the response, then open Speak AI to confirm the file is there. If the test returns an error, one of the fields is still unmapped. Recheck each mapping before you turn the Zap on. ### Slack 1. **Trigger:** select **Slack** and choose **New File Shared** or **New Saved File**. 1. **Action:** select **Speak AI** and choose **Upload Media**. 1. Map the Slack download URL to the **File URL** field in Speak AI. Private Slack files often need extra authentication before Zapier can read the download link. If those uploads fail, route through Google Drive instead: one Zap copies the Slack file to a Drive folder, and a second Zap uploads new files in that folder to Speak AI. Permissions are easier to manage that way. ## Send results out of Speak AI ### Documents Send finished transcripts straight into Google Docs, Word or any other document app so you do not copy and paste them by hand. 1. **Trigger:** select **Speak AI** and choose **New Media Processed**. 1. **Action:** select your document app and choose **Create Document from Text**. 1. Map the **Transcript** field into the document content. Speaker names and timestamps come through when the transcript format includes them. 1. Test the Zap, confirm the document reads correctly, then turn it on. Every file you analyze from that point on creates a document automatically. ### Airtable Recordings submitted through an embedded [recorder](/help/recorder/) can populate an Airtable base, which is useful when you are collecting responses from many people and want them in rows. 1. Go to **Recorder** in the sidebar and create a recorder or open an existing one. 1. Adjust the settings and [questions](/help/recorder/questions/), save, then copy the [embed code](/help/recorder/embedding/) or shareable link. 1. In Zapier, set the **Speak AI** trigger to **New Media Processed** and connect your account with your API key. 1. **Action:** select **Airtable** and choose **Create Record**. 1. Map the Speak AI fields, such as media URL, transcript, insight and name, to your Airtable columns. 1. Test the Zap and turn it on. Each new submission then appears as a row in the base. ### Other destinations The same pattern covers most reporting workflows: - **Meeting notes to Slack:** AI Chat response trigger, then send a channel message. - **Transcripts to Google Sheets:** new media processed trigger, then create a row. - **Customer feedback to your CRM:** AI Chat response trigger with fields, then create or update a record. ## When a Zap stops working - Check your API key. A regenerated key breaks the Zapier connection until you reconnect the account. - Confirm the source link is public. Zoom and Slack links that require a login return an error to Zapier. - Reread the test response. A missing configuration shows up there before it shows up in production runs. If the error is not obvious, send us a message in live chat with the Zap name and the failed run. Want a hand setting this up? [Book a free consult](https://calendly.com/speak-ai/consult?utm_source=docs&utm_campaign=consult) and we'll do it together on your account. --- Related: [Integrations](/help/integrations/) · [Chrome extension](/help/integrations/chrome-extension/) # Zoom > Zoom runs through Zapier rather than a direct connection. What to switch on in Zoom, and where the Zap setup lives. Source: https://docs.speakai.co/help/integrations/zoom/ · Markdown: https://docs.speakai.co/help/integrations/zoom/index.md Speak AI does not connect to Zoom directly. Zoom recordings arrive through [Zapier](/help/integrations/zapier/), using the ready-made [Zoom template](https://zapier.com/apps/speak-ai/integrations/zoom/696924/analyze-and-transcribe-new-zoom-recordings-with-speak-ai). In the app, Zoom is listed under Zapier on the [Integrations](/help/integrations/) page with a link out rather than a Connect button. ## Turn on cloud recording first Zapier can only pick up a recording Zoom has stored in the cloud. 1. Sign in to Zoom and open **Settings**, then **Recording**. 1. Turn on **Cloud recording**. 1. Record a meeting and wait for Zoom to finish processing it. Zoom share links have to be reachable without a password. If a recording never arrives in Speak AI, turn off password protection on it and check the link opens in a private browser window. ## Then build the Zap The trigger, the action and the field mapping are on the Zapier page: [Zoom](/help/integrations/zapier/#zoom). ## What you get - Recordings transcribe automatically and are stored as searchable text. - Your audio, video and text sit in one library, so you can find a moment across all of them at once. - Tags group files by project. See [Tags](/help/folders/tags/). - You can share or export a clip of the part that matters. See [Clips](/help/sharing/clips/). Want a hand setting this up? [Book a free consult](https://calendly.com/speak-ai/consult?utm_source=docs&utm_campaign=consult). --- Related: [Zapier](/help/integrations/zapier/) · [Integrations](/help/integrations/) # Meeting Assistant > The Meeting Assistant joins Zoom, Google Meet, Microsoft Teams and Webex calls to record, transcribe and summarize them. Source: https://docs.speakai.co/help/meeting-assistant/ · Markdown: https://docs.speakai.co/help/meeting-assistant/index.md The Meeting Assistant joins your Zoom, Google Meet, Microsoft Teams, and Webex calls, records them, and delivers speaker-labeled transcripts and summaries to your library. Connect a calendar once and it handles every meeting you tell it to. ![The Meeting Assistant screen in Speak, with Capture Live Meeting and Assistant Preferences buttons at the top right and a Connect Calendar prompt under the heading. Three cards sit below: Capture every call automatically with Connect to Google and Connect to Outlook buttons, Join Live Meeting, and Already have a file? with an Upload File button.](/help/media/meeting-assistant/meeting-assistant-index.jpg) - **[Auto-join](/help/meeting-assistant/auto-join/)** - **[Customization](/help/meeting-assistant/customization/)** - **[Exclusions](/help/meeting-assistant/exclusions/)** - **[Folder routing](/help/meeting-assistant/folder-routing/)** - **[Google Calendar](/help/meeting-assistant/google-calendar/)** - **[Microsoft Calendar](/help/meeting-assistant/microsoft-calendar/)** - **[Recording controls](/help/meeting-assistant/recording-controls/)** - **[Summaries](/help/meeting-assistant/summaries/)** ## Supported platforms The Meeting Assistant works with: - **Zoom**- **Google Meet**- **Microsoft Teams**- **Webex** ## Set up auto-join Connect your calendar so the Meeting Assistant joins your calls on its own: 1. Go to [Meeting Assistant](https://app.speakai.co/meeting-assistant) 1. Select **Connect to Google** or **Connect to Outlook** 1. Open **Assistant Preferences**, select the **Auto Join Settings** tab, and choose a rule for each platform ### Auto-join options, per platform Every platform gets its own dropdown, and each one offers the same five choices: - **All Meetings** - join every calendar event with that platform's link - **None (Manual only)** - never auto-join, send the assistant yourself instead - **Only when I'm the host** - join only the meetings you organize - **Only meetings where I invite the assistant** - join only events you have added the assistant to - **When team members attend (not as host)** - join when a teammate is on the call and you are not hosting ### Filtering meetings The **Exclude Join Conditions** tab keeps your own assistant out of meetings the rule would otherwise catch. It matches on: - **Meeting titles** - meetings with these words in the title are not joined - **Attendees Emails** - meetings with these attendees are not joined For example, skip all events titled "Lunch" or "Personal". Admins can also set company-wide rules under **Global Settings**, covered in [exclusions](/help/meeting-assistant/exclusions/). ## Upcoming meetings The **Upcoming** tab lists all events from your connected calendar for the next 7 days. This includes every calendar event, not only ones the Meeting Assistant has been confirmed for. Past events and events beyond the 7-day window are hidden automatically. Each event row has a **Record** toggle that controls whether the assistant will join that specific meeting. The toggle is disabled for events that have no meeting link, the assistant can only join a call when a supported meeting URL is present in the calendar event. ## Instant join, no calendar needed You can also have the assistant join any meeting on demand: 1. Select **Meeting** in the Quick Actions panel on the dashboard, or **Capture Live Meeting** on the Meeting Assistant page 1. Fill in **Meeting Title** and paste the meeting URL 1. The assistant joins within seconds ## Scheduling versus recording The Meeting Assistant records meetings that are already on your calendar. It does not book them, so it is not a replacement for a scheduling tool like Calendly. The two jobs fit together: a client books a slot with your booking tool, the event lands on your Google or Outlook calendar, and Speak AI sees it there and joins to record. ## Customizing your assistant Select **Assistant Preferences** on the [Meeting Assistant page](https://app.speakai.co/meeting-assistant). The dialog has a tab for each area: - **Customize:** set **Assistant Name** and **Assistant Image**, plus **Recording Mode** and **Screen share recording**. Needs the **Branded Media Sharing** add-on. See [customization](/help/meeting-assistant/customization/). - **Share Media Player With:** control who gets the recording afterwards, with **All Attendees**, **Host Only** or **Disabled** - **Meeting Routing to Folder:** choose where recordings are saved, with routing rules by event title. See [folder routing](/help/meeting-assistant/folder-routing/). - **Exclude Join Conditions:** keep your assistant out of meetings by title or attendee - **Live Transcription** and **Live Translation:** follow the call as it happens - **Global Settings:** company-wide rules, for admins. See [exclusions](/help/meeting-assistant/exclusions/). ## During the meeting - The assistant joins and begins recording automatically - You can pause and resume recording at any time. See [recording controls](/help/meeting-assistant/recording-controls/). - Live transcription is available during the call once you turn it on ## After the meeting Once the meeting ends, the assistant automatically: 1. Uploads the recording to your specified folder 1. Transcribes the audio 1. Runs AI analysis (keywords, sentiment, speakers) 1. Sends email notifications based on your settings ## When the assistant leaves The assistant leaves automatically when: - All participants leave the meeting - It's stuck in the waiting room for more than 5 minutes - No participants join within 10 minutes - Silence is detected for more than 15 minutes - The recording reaches the maximum duration ## When the assistant does not join - **Assistant didn't join:** Make sure the meeting URL is in the calendar event's Location or Description field. Check your auto-join settings for that platform, and check that the event title does not match one of your filters. - **Stuck in waiting room:** The host needs to admit the assistant. It will wait up to 5 minutes before leaving. - **Recording permission denied:** On Zoom, the host must grant recording permission. The assistant will leave after 30 seconds if denied. - **Meeting requires registration:** The assistant cannot join meetings that require pre-registration or sign-in. - **Only bots detected:** If only bots are in the meeting for 10+ minutes, the assistant will leave to save resources. The Meeting Assistant is included free with all plans. Custom assistant name and image needs the **Branded Media Sharing** add-on. Rolling this out to a team? [Book a demo](https://calendly.com/speak-ai/demo?utm_source=docs&utm_campaign=book-demo) and we'll set it up on your own calls. # Auto-join > Connect a calendar and the assistant joins matching calls on its own. What it joins, when it joins and how to stop it. Source: https://docs.speakai.co/help/meeting-assistant/auto-join/ · Markdown: https://docs.speakai.co/help/meeting-assistant/auto-join/index.md ![Auto Join Settings, with a separate join rule for Zoom, Google Meet, Microsoft Teams and Webex](/help/media/meeting-assistant/meeting-assistant-auto-join.jpg) The Speak AI Meeting Assistant joins your meetings, records them, and transcribes and analyzes them for you. You stop waiting on a host to export a recording, and your calls build a library you can search later. The assistant is included free with every plan. ## Meeting platforms it works on - Zoom - Microsoft Teams - Google Meet - Webex ## Join a meeting right now Give Speak your meeting link and the assistant joins in seconds: 1. From the dashboard, select **Meeting** in the Quick Actions panel. You can also select **Capture Live Meeting** on the [Meeting Assistant page](https://app.speakai.co/meeting-assistant). 1. Fill in **Meeting Title** and paste the URL from Google Meet, Zoom, Microsoft Teams, or Webex. The assistant joins within seconds and starts recording, transcribing, and analyzing straight away. ## Join meetings from your calendar Connect [Google Calendar](/help/meeting-assistant/google-calendar/) or [Microsoft Calendar](/help/meeting-assistant/microsoft-calendar/) and the assistant works from your schedule instead. Open **Assistant Preferences** on the Meeting Assistant page, then **Auto Join Settings**. Each platform gets its own dropdown, so you can treat Zoom differently from Google Meet. Every dropdown offers the same five choices: - **All Meetings** - join every calendar event with that platform's link - **None (Manual only)** - never auto-join, send the assistant yourself instead - **Only when I'm the host** - join only the meetings you organize - **Only meetings where I invite the assistant** - join only events you have added the assistant to - **When team members attend (not as host)** - join when a teammate is on the call and you are not hosting Filters on event title or attendee email let you skip meetings the rule would otherwise catch, and an admin can set company-wide [exclusions](/help/meeting-assistant/exclusions/). ## Change the assistant's name and image You can give the assistant your own name and avatar so it matches your branding on the call. That needs the **Branded Media Sharing** add-on on your subscription: turn it on from the [in-app pricing page](https://app.speakai.co/pricing), then follow [customization](/help/meeting-assistant/customization/). ## Recording length The clock starts when the assistant reaches **In Call (Recording)** status. A recording runs up to 4 hours, or up to 10 hours for subscribers. Speak sends you a notification at 3 hours 55 minutes so a long call does not end without warning. ## When the assistant leaves on its own The assistant leaves a call rather than sit in an empty or silent room: | Condition | Trigger description | Timeout duration | Activation delay | | --- | --- | --- | --- | | **Everyone left the meeting** | All participants exit the meeting. | 1 second | Activates after 30 seconds of everyone leaving. | | **Waiting room timeout** | The meeting stays in the waiting room without starting. | 5 minutes | None | | **No one joined the meeting** | No participants join after the meeting starts. | 10 minutes | None | | **Recording permission denied** | The host or the platform denies recording permission. | 30 seconds | None | | **Silence detection** | Silence continues during the meeting. | 15 minutes | Activates after 20 minutes of meeting inactivity. | | **Bot detection** | Only bots are on the call and nobody is speaking. | 10 minutes | Activates after 20 minutes of meeting inactivity. | Evaluating Speak AI for a team? [Book a demo and see your own recordings analyzed](https://calendly.com/speak-ai/demo?utm_source=docs&utm_campaign=book-demo). --- Related: [Meeting Assistant](/help/meeting-assistant/) · [Customization](/help/meeting-assistant/customization/) # Customization > Set the assistant's name, image, recording mode and screen share behavior before it appears in your calls. Source: https://docs.speakai.co/help/meeting-assistant/customization/ · Markdown: https://docs.speakai.co/help/meeting-assistant/customization/index.md ![The Assistant Preferences dialog on its Customize panel, where you set the assistant name, recording mode and image](/help/media/meeting-assistant/meeting-assistant-customization.jpg) You can change the name and image the Meeting Assistant shows when it joins a call, so it appears as your brand rather than a generic bot. This needs the **Branded Media Sharing** add-on on your subscription. Without it the **Customize** tab shows a lock and its fields stay read-only. ## Change the name and image 1. Open the [Meeting Assistant page](https://app.speakai.co/meeting-assistant). 1. Select **Assistant Preferences** at the top right of the page. 1. Stay on the **Customize** tab, the first one in the left menu. 1. Enter a name in **Assistant Name**. It has to be at least 3 characters and at most 100. 1. Under **Assistant Image**, select **Upload** and choose the image the assistant uses on calls. 1. Select **Save**. Speak updates your assistant right away. ## Choose how the assistant records The **Customize** tab also controls what the recording looks like. Both settings apply to every call the assistant joins. **Recording Mode** decides how Speak captures video: - **Speaker View (only record the active speaker)** - **Gallery View (display speakers in a gallery view)** - **Audio Only (do not record video)** **Screen share recording** decides what happens to the speaker's video while someone shares their screen: - **Overlap (Show active speaker and screen share)** - **Side-by-Side (Show active speaker and screen share)** - **Hide (Show only screen share)** ## Image size and quality Meeting platforms display the avatar as a participant tile, so treat it like a video frame: - **Format:** JPEG - **Aspect ratio:** 16:9, landscape - **Maximum size:** 1280 x 720 pixels - **Maximum file size:** 1.3 MB - **Quality:** High, around JPEG quality 85 to 95 - **Text:** Bold, at least 50px, so it stays readable when the tile shrinks Design at a larger resolution, for example 2560 x 1440 pixels, then downscale for a sharper result. Keep the branding simple: heavy gradients and fine detail lose their definition once the image is compressed and resized. ## Keep artwork inside the safe zone Some platforms, Google Meet among them, resize participant tiles depending on how many people are on the call. Edges get cropped. Keep your logo and any text near the center of the frame so it stays visible at every tile size. Want a hand setting this up? [Book a free consult](https://calendly.com/speak-ai/consult?utm_source=docs&utm_campaign=consult) and we'll do it together on your account. --- Related: [Meeting Assistant](/help/meeting-assistant/) · [Auto-join](/help/meeting-assistant/auto-join/) # Exclusions > Exclude rules let an admin keep the Meeting Assistant out of named meetings, recurring events or whole calendars company-wide. Source: https://docs.speakai.co/help/meeting-assistant/exclusions/ · Markdown: https://docs.speakai.co/help/meeting-assistant/exclusions/index.md ## What exclude rules do ![The Exclude Meetings section of Global Settings, with one rule matching attendee emails that contain @acme.com and a live count of the meetings it would exclude](/help/media/meeting-assistant/meeting-assistant-exclusions.jpg) Exclude rules let an admin stop the Speak AI Meeting Assistant from joining specific meetings across the whole company. This is useful when you never want the assistant to join a particular organization's calls, or any meeting a certain person schedules. ## Who can set them Exclude rules are a company-wide setting, so they are managed by team admins who have the **Global Settings** permission. They live in **Assistant Preferences**, on the **Global Settings** tab, under **Exclude Meetings**. ## Company-wide rules versus your own **Assistant Preferences** has two places that keep the assistant out of a meeting, and they do different jobs: - **Global Settings** > **Exclude Meetings** applies across your whole company. It needs the **Global Settings** permission. - **Exclude Join Conditions** applies to your own assistant only. It matches on **Meeting titles** or **Attendees Emails**, and it needs the **Exclude Meetings** permission. Use Global Settings when nobody at your company should record a given organization. Use Exclude Join Conditions when it is only your own calendar you want to filter. ## Add an exclude rule 1. Open **Assistant Preferences** on the Meeting Assistant page and select **Global Settings**. 1. Find the **Exclude Meetings** section and select **Add rule**. 1. Choose what the rule matches on from the first dropdown: - **Attendee email contains** - matches part of an address, so `@acme.com` catches everyone at that company - **Attendee email is** - matches one exact address, for example `scheduling@acme.com` - **Meeting link contains** - matches part of a meeting URL, for example `speakai.zoom.us` 1. Enter the value to match. As you type, a live preview shows how many upcoming meetings the rule would exclude, or **No upcoming meetings match** if it catches nothing. 1. Each rule has its own toggle, so you can turn a rule on or off without deleting it. The **X** beside a rule removes it. 1. Select **Save**. ## A note on Google Meet links Meeting-link rules work well for Zoom. Google Meet links do not identify an organization, so a Google Meet link would only match a single meeting. To exclude a whole company on Google Meet, use an attendee email or email domain rule instead. ## See what was excluded The **Excluded** tab lists the meetings the assistant skipped and the reason each one was excluded, so you can confirm your rules are doing what you expect. ## If a meeting still gets recorded Message us on live chat in the app or email [success@speakai.co](mailto:success@speakai.co). Evaluating Speak AI for a team? [Book a demo and see your own recordings analyzed](https://calendly.com/speak-ai/demo?utm_source=docs&utm_campaign=book-demo). --- Related: [Meeting Assistant](/help/meeting-assistant/) · [Auto-join](/help/meeting-assistant/auto-join/) # Folder routing > Send recordings captured by the Meeting Assistant to a specific folder so meetings file themselves as soon as they finish. Source: https://docs.speakai.co/help/meeting-assistant/folder-routing/ · Markdown: https://docs.speakai.co/help/meeting-assistant/folder-routing/index.md ![The Meeting Routing to Folder panel, with a default folder and one condition row of event title, condition and destination folder](/help/media/meeting-assistant/meeting-assistant-folder-routing.jpg) Every recording the Meeting Assistant captures lands in a folder. Set a default so nothing goes stray, then add conditions that send particular meetings somewhere more specific. ## Set the default folder 1. Open the [Meeting Assistant page](https://app.speakai.co/meeting-assistant). 1. Select **Assistant Preferences** at the top right. A dialog opens. 1. Select the **Meeting Routing to Folder** tab in the left menu. 1. Pick a folder from the **Default Folder** dropdown. Until you choose one it reads `-- Select Folder --`. 1. Select **Save**. From then on, every meeting the assistant records is uploaded to that folder. ## Route specific meetings elsewhere Conditions match on the calendar event's title, so a recurring call can file itself away from the default. You can add as many as you need. 1. On the **Meeting Routing to Folder** tab, select **Add Condition**. 1. Fill in **Event Title** with the words to match. Speak suggests your upcoming calendar events as you type, so you can pick one instead of retyping it. 1. Set **Condition** to either **Contains** or **Exact Match**. **Contains** matches any title with those words somewhere in it. **Exact Match** matches only the title in full. 1. Choose the destination in **Save To Folder**. 1. Select **Save**. To remove a condition, select the bin icon in its **Delete** column. Every condition needs both an **Event Title** and a **Save To Folder** value. Speak will not save the tab while either one is empty. Want a hand setting this up? [Book a free consult](https://calendly.com/speak-ai/consult?utm_source=docs&utm_campaign=consult) and we'll do it together on your account. --- Related: [Meeting Assistant](/help/meeting-assistant/) · [Auto-join](/help/meeting-assistant/auto-join/) # Google Calendar > Link Google Calendar so the Meeting Assistant sees your schedule and joins the calls you have chosen automatically. Source: https://docs.speakai.co/help/meeting-assistant/google-calendar/ · Markdown: https://docs.speakai.co/help/meeting-assistant/google-calendar/index.md Connect Google Calendar once and the Meeting Assistant sees your schedule and joins the calls you choose on Zoom, Google Meet, Microsoft Teams, or Webex. It records, transcribes, and summarizes each one into your library. ![The Google Calendar page in Speak before any calendar is linked. The status under the heading reads Not connected, a Connect to Google button sits on the right, and the panel below offers a See how to connect Google Calendar link.](/help/media/meeting-assistant/meeting-assistant-google-calendar.jpg) - No bot invites to remember: auto-join handles it from your calendar - You decide which meetings it joins: everything, only ones you organize, or none by default - Recordings land in the folder you choose, transcribed with speakers labeled ## Connect your calendar 1. In Speak AI, open **Meeting Assistant** from the sidebar. 2. Select **Connect to Google** (or **Connect Calendar** in the banner). 3. Sign in with Google and allow calendar access. Speak AI reads event times and join links, nothing else. Your upcoming meetings appear once the calendar syncs. From here the assistant can join automatically or wait for you to send it per meeting. ## Choose which meetings it joins 1. Open **Assistant Preferences** (top right of the Meeting Assistant page), then the **Auto Join Settings** tab. It only appears once a calendar is connected. 2. Each meeting platform has its own dropdown. Pick the rule that fits: **All Meetings**, **None (Manual only)**, **Only when I'm the host**, **Only meetings where I invite the assistant**, or **When team members attend (not as host)**. [Auto-join](/help/meeting-assistant/auto-join/) explains what each one does. 3. To keep it out of specific meetings company-wide, an admin can add [exclusions](/help/meeting-assistant/exclusions/). ## Which meeting does a recording belong to? Each recording is matched to its calendar event, named after it, and filed by your [folder routing](/help/meeting-assistant/folder-routing/) rules, so a Tuesday of back-to-backs sorts itself. ## Why didn't the assistant join? The usual causes, in order: the meeting had no join link on the calendar event, auto-join rules excluded it, or the calendar disconnected (you'll see **Calendar is disconnected** on the Meeting Assistant page; reconnecting fixes it). Still stuck? [Book a free consult](https://calendly.com/speak-ai/consult?utm_source=docs&utm_campaign=consult) and we'll get it joining your next call. --- Related: [Meeting Assistant](/help/meeting-assistant/) · [Auto-join](/help/meeting-assistant/auto-join/) · [Microsoft Calendar](/help/meeting-assistant/microsoft-calendar/) · [Summaries](/help/meeting-assistant/summaries/) # Microsoft Calendar > Link Microsoft 365 or Outlook Calendar so the Meeting Assistant can join your scheduled Teams and Zoom calls automatically. Source: https://docs.speakai.co/help/meeting-assistant/microsoft-calendar/ · Markdown: https://docs.speakai.co/help/meeting-assistant/microsoft-calendar/index.md ![The Microsoft Outlook page in Speak before any calendar is linked. The status under the heading reads Not connected, a Connect to Outlook button sits on the right, and the panel below offers a See how to connect Microsoft Outlook link.](/help/media/meeting-assistant/meeting-assistant-microsoft-calendar.jpg) ## Step 1: Start the Connection - Open the [Meeting Assistant page](https://app.speakai.co/meeting-assistant) and select **Connect to Outlook**. ## Step 2: Grant the Required Permissions - When prompted, review and accept the following permissions to enable full calendar integration: * Calendars.Read: View your calendars and events. * offline_access: Maintain access even when you’re not actively using the app (so your events keep syncing). * (Optional, if your workflow needs email or user profile access): * User.Read: View your basic profile. * Mail.Read: View your email messages. - Note: If you do not provide all the required permissions, your calendar events will not sync fully. - If your an organization then ask your admin to approve the Speak AI Inc application ## Step 3: Fetching Your Events And Scheduling Meeting Assistants - Once permissions are granted, your events will be automatically fetched and displayed. - Meeting Assistants will be scheduled automatically ## Troubleshooting: If You Cannot Approve Permissions - If you see a message stating that you cannot grant the needed permissions: * Your organization’s admin may need to approve or whitelist the application (Speak AI Inc) within your Microsoft/Azure portal. * Please contact your IT administrator and provide them with the application details so they can enable access for your account. --- Tip: For admins/IT teams, ensure “Speak AI Inc” is allowed under Azure Active Directory > Enterprise Applications, and that the above permissions are approved for user consent.

Please contact support for any questions Want a hand setting this up? [Book a free consult](https://calendly.com/speak-ai/consult?utm_source=docs&utm_campaign=consult) and we'll do it together on your account. --- Related: [Meeting Assistant](/help/meeting-assistant/) · [Auto-join](/help/meeting-assistant/auto-join/) # Recording controls > Control a live recording, pause it for a private moment, then analyze and share whatever the assistant captured afterwards. Source: https://docs.speakai.co/help/meeting-assistant/recording-controls/ · Markdown: https://docs.speakai.co/help/meeting-assistant/recording-controls/index.md The Meeting Assistant starts recording the moment it joins, and you stay in control while the call runs. Pause it over a confidential stretch, resume when you are ready, and share the finished recording once Speak AI has processed it. ## Pause and resume a live recording Open the [Meeting Assistant page](https://app.speakai.co/meeting-assistant) and find the active call on the **Upcoming** tab. Open the menu at the end of its row and select **Pause Recording** before a confidential part of the conversation, then **Resume Recording** from the same menu when it is safe to continue. Speak confirms each one with a **Recording paused** or **Recording resumed** message. The menu only offers what the call's current status allows. **Pause Recording** appears while the status is **In Call (Recording)**, and **Resume Recording** replaces it once the status is **Paused**. Anything said while the recording is paused is not captured, so it never reaches the transcript. ## When recording stops The assistant leaves and the recording ends when the meeting ends. You can also end it yourself with **Remove From Meeting** in the same row menu. If the host removes the assistant from the call, recording stops immediately. For the full list of conditions that end a recording, see [auto-join](/help/meeting-assistant/auto-join/). ## Share what the assistant captured Once processing finishes, open the file in your library. Select **Share** to send attendees a link, or grab the embed code to put the player somewhere else. [Share links](/help/sharing/links/) covers who can see what. Want a hand setting this up? [Book a free consult](https://calendly.com/speak-ai/consult?utm_source=docs&utm_campaign=consult) and we'll do it together on your account. --- Related: [Meeting Assistant](/help/meeting-assistant/) · [Auto-join](/help/meeting-assistant/auto-join/) # Summaries > Every recorded call returns a summary with decisions and action items, generated as soon as the transcript completes. Source: https://docs.speakai.co/help/meeting-assistant/summaries/ · Markdown: https://docs.speakai.co/help/meeting-assistant/summaries/index.md ![The Insights panel open beside a recorded call. It reports the length and word count of the conversation, names the dominant topic cluster as Research and Insights, and adds that the recording is a one-to-one call with a balanced, matter-of-fact tone.](/help/media/meeting-assistant/meeting-assistant-summaries.jpg) Speak AI records, transcribes, and summarizes your calls so nobody has to take notes by hand. You can have a summary written for you every time a new recording lands in a folder, or run one yourself on a single meeting. ## Summarize every meeting automatically First decide which folder your Meeting Assistant recordings go to. If you have not set that up, follow [folder routing](/help/meeting-assistant/folder-routing/). Then create an automation that writes a summary whenever a new file arrives in that folder: 1. Open [Automations](https://app.speakai.co/automations) and select **New automation**. 1. Add a name and a description. 1. Select the folder your Meeting Assistant recordings go to. 1. Select your assistant type. You can customize your own on the same page. 1. Select or write your prompt. A good default is: "Summarize the meeting with agenda, action items, and next steps." 1. Set **Run type** to **Instant** so the automation runs every time a new recording is added to the folder. 1. Select **Update** to create the automation. You get a notification every time it runs, and every response is kept on the [chat history page](https://app.speakai.co/chat/history). ## Summarize one meeting on its own If you only need minutes for a single call, skip the automation and run the prompt yourself: 1. Capture the meeting. Let the [Meeting Assistant](/help/meeting-assistant/auto-join/) join the call, or [upload the recording](/help/uploads/) yourself. 1. Once the transcript finishes, open the file and run the **Meeting Minutes** prompt in [AI Chat](/help/ai-chat/). It pulls out the agenda items, the key decisions, and the action items with the person responsible for each one. 1. Read the action items and correct anything that looks off. 1. Copy the response into an email, or send your team a [share link](/help/sharing/links/) to the full transcript. Evaluating Speak AI for a team? [Book a demo and see your own recordings analyzed](https://calendly.com/speak-ai/demo?utm_source=docs&utm_campaign=book-demo). --- Related: [Meeting Assistant](/help/meeting-assistant/) · [Auto-join](/help/meeting-assistant/auto-join/) # Embeddable recorder > Collect audio and video from anyone through your website or a share link. Submissions upload and transcribe automatically. Source: https://docs.speakai.co/help/recorder/ · Markdown: https://docs.speakai.co/help/recorder/index.md The embeddable recorder collects audio and video from other people: customers, research participants, applicants. Put it on your site or share a link, ask questions alongside the recording, and every submission lands in your library transcribed and analyzed. ![The Recorder list with a demo recorder scoped to a folder](/help/media/recorder/recorder-index.jpg) - **[Browser support](/help/recorder/browser-support/)** - **[Custom CSS](/help/recorder/custom-css/)** - **[Custom domains](/help/recorder/custom-domain/)** - **[Downloads](/help/recorder/downloads/)** - **[Embedding](/help/recorder/embedding/)** - **[Field mapping](/help/recorder/field-mapping/)** - **[Limits](/help/recorder/limits/)** - **[Microphone and camera permissions](/help/recorder/permissions/)** - **[Pairing codes](/help/recorder/pairing-codes/)** - **[Questions](/help/recorder/questions/)** ## What people use it for - **Research interviews.** Participants record their responses at their own pace. - **Customer feedback.** Collect what customers say in their own voice. - **Surveys.** Add spoken answers to a form. - **Testimonials.** Gather video testimonials from customers. - **Education.** Collect student presentations or language assessments. ## Create a recorder There are two ways to reach the new recorder page. Select **Survey** in the Quick Actions panel on the dashboard, or open [Surveys](https://app.speakai.co/recorder) in the left sidebar under **Content** and select **New recorder** in the top right. Setup runs in four steps, and each one ends with a button that carries you to the next. ### Settings The **Settings** step is grouped into four sections: - **Basic Information:** the recorder name and description, the language submissions are transcribed in, and the folder they are saved to. - **Recording Options:** what people can submit. Toggle **Audio**, **Video**, **Screen Share** and **File Upload** on or off, and use **Transcribe & Analyze** to have Speak process each submission automatically. **Live Transcription** transcribes as the person records. - **Duration Limits:** the minimum and maximum recording length, both entered in seconds. - **Notifications:** **Send confirmation email to client** emails the respondent, and **Notify your team on every upload** alerts the team members you pick under **Notify team members**. Select **Create & Continue** at the bottom to move on. ### Questions On the **Questions** step you add what each respondent answers. Under **Default Fields**, **Collect Name** and **Collect Email** are on by default and you can turn either off. Select **Add Question** to open the Add Question dialog, write the question, pick the answer type, and confirm. The question appears in the list below, where you can edit or delete it at any time. You can also set up **Consent Configuration** here, which asks respondents to agree before they record. Repeat for as many questions as you need, then select **Continue**, or **Skip** to move on without any. For the answer types you can choose, and for saving answers into structured fields, see [Questions](/help/recorder/questions/) and [Field mapping](/help/recorder/field-mapping/). ### Customize On the **Customize** step you set **Primary Color**, **Font Family**, **Theme** (Light or Dark) and **Logo**. Branding is a Pro feature, so on lower plans these controls prompt you to upgrade. Logos must be PNG, JPG, GIF or WebP and under 2 MB. For finer control over buttons, cards, inputs and players, see [Custom CSS](/help/recorder/custom-css/). Select **Save & Continue** to carry on, or **Skip**. ### Share The final **Share** step has three sub-tabs: - **Link.** Send it to anyone and they record directly in their browser. A **QR Code** is provided here too. - **Embed.** Paste it into your website, landing page or app. Choose **Static (iframe)** or **Script (advanced)**, and position it **Embedded (Inline)**, **Floating Bottom-Left** or **Floating Bottom-Right**. See [Embedding](/help/recorder/embedding/) for the query parameters and the fix for site builders that strip microphone permissions. - **Mobile App.** Pair a phone or tablet to record on the go. See [Pairing codes](/help/recorder/pairing-codes/). Select **Finish** to save, **Create Another** to save and start another one, or **Back to List** to return to your recorders. ## What happens when someone records 1. They open your recorder link or visit the page you embedded it on. 1. They answer the questions you configured. 1. They record their audio or video. 1. The recording uploads to your Speak AI library. 1. Speak transcribes and analyzes it. 1. You get a notification when it is ready. ## Where submissions land Recordings arrive in the folder you chose during setup. Each submission carries the recording, the transcript, the insights and the answers to your questions. ## Send new submissions to other tools You can fire a webhook when a new recording is submitted, which lets you send the data to Airtable, Google Sheets or your CRM, notify your team on Slack, or trigger a follow-up email. For which browsers respondents can record in, see [Browser support](/help/recorder/browser-support/). Collecting recordings at scale for research or hiring? [Book a demo](https://calendly.com/speak-ai/demo?utm_source=docs&utm_campaign=book-demo) and we'll build a recorder for your use case. # Browser support > Chrome, Edge, Firefox, Safari, Opera and Vivaldi on desktop, plus iOS and Android mobile browsers, with minimum versions. Source: https://docs.speakai.co/help/recorder/browser-support/ · Markdown: https://docs.speakai.co/help/recorder/browser-support/index.md The Speak embeddable audio and video recorder has been built to be compatible as listed below: 1. Desktop PC * Microsoft Edge 12+ * Google Chrome 28+ * Mozilla Firefox 22+ * Safari 11+ * Opera 18+ * Vivaldi 1.9+ * Brave 1. Android * Google Chrome 28+ (enabled by default since 29) * Mozilla Firefox 24+ * Opera Mobile 12+ 1. Chrome OS 1. Firefox OS 1. BlackBerry 10 1. iOS * MobileSafari/WebKit (iOS 11+) 1. Tizen 3.0 Besides those compatibility requirements, we see some edge cases on old devices and browsers; we do our absolute best. If you have any problems, send us a note, and we will identify ways to correct any errors for you. Evaluating Speak AI for a team? [Book a demo and see your own recordings analyzed](https://calendly.com/speak-ai/demo?utm_source=docs&utm_campaign=book-demo). --- Related: [Embeddable recorder](/help/recorder/) · [Custom CSS](/help/recorder/custom-css/) # Custom CSS > Restyle recorder buttons, cards, inputs, dropdowns, media players, waveforms and dialogs to match your own brand. Source: https://docs.speakai.co/help/recorder/custom-css/ · Markdown: https://docs.speakai.co/help/recorder/custom-css/index.md The recorder ships a set of hooks you can style with plain CSS, so it can match your brand instead of looking like a bolted-on widget. Add your rules in the **Custom CSS** section of the recorder settings and save. The recorder picks them up on the next load. Only the appearance changes: recording, uploading and analysis work exactly as before. ![The Customize tab of a recorder, scrolled to Branding. A light and dark theme switch sits beside a font family picker, hex boxes set the button background and font colors, and the Custom CSS box below holds a commented example rule with a note that it takes up to 50,000 characters. Save Customization sits at the bottom.](/help/media/recorder/recorder-custom-css.jpg) ## What you can restyle | **Component**| **CSS class**| **Description** | | --- | --- | --- | | Primary buttons | `.sp-custom-primary-btn` | Start, Stop, Submit, Upload, Record again | | Secondary buttons | `.sp-custom-secondary-btn` | Cancel and Back actions | | Card containers | `.sp-custom-card` | Wrappers for grouped content | | Input fields | `.sp-custom-input` | Text and password inputs | | Dropdowns | `.sp-custom-dropdown` | Custom select inputs | | Waveform | `.sp-custom-waveform` | The audio waveform | | Audio player | `.sp-custom-audio-player` | Embedded audio playback controls | | Video player | `.sp-custom-video-player` | Video playback controls | | Dialogs | `.sp-custom-dialog` | Confirmation and modal windows | | Titles | `.sp-custom-title-1` to `.sp-custom-title-6` | Title headings, one class per heading level | | Description | `.sp-custom-desc` | The recorder description text | Write a rule against any of these class names and the recorder applies it. You can override colors, typography, borders, padding, animation and shadows. You do not need `!important`: the recorder already gives these classes higher priority than its own defaults. ## Example stylesheet This block covers a title, the description text, both button styles, a card, an input, a dropdown, the waveform, both players and a dialog. Swap the colors and the font for your own and you have a full theme. ```css /* Title */ /* Available classes: sp-custom-title-1 through sp-custom-title-6 */ .sp-custom-title-3 { color: #0F0F0F; font-family: 'Poppins', sans-serif; font-size: 1.75rem; font-weight: 600; margin-bottom: 16px; } /* Description text below the title */ .sp-custom-desc { color: #666666; font-family: 'Poppins', sans-serif; font-size: 1rem; font-weight: 400; line-height: 1.6; margin-bottom: 20px; } /* Primary button */ .sp-custom-primary-btn { background-color: #0F0F0F; color: white; border: none; border-radius: 8px; padding: 12px 24px; font-family: 'Poppins', sans-serif; font-size: 16px; font-weight: 600; cursor: pointer; transition: all 0.2s ease; } .sp-custom-primary-btn:hover { background-color: #545454; } /* Secondary button */ .sp-custom-secondary-btn { background-color: transparent; color: #0F0F0F; border: 2px solid #0F0F0F; border-radius: 8px; padding: 10px 22px; font-family: 'Poppins', sans-serif; font-size: 16px; font-weight: 600; cursor: pointer; transition: all 0.2s ease; } .sp-custom-secondary-btn:hover { background-color: #FAFAFA; } /* Card */ .sp-custom-card { background-color: #FAFAFA; border: 1px solid #E0E0E0; border-radius: 8px; padding: 16px; box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); } /* Input field */ .sp-custom-input { border: 1px solid #E0E0E0; border-radius: 4px; padding: 8px 12px; background-color: white; font-family: 'Poppins', sans-serif; font-size: 14px; color: #0F0F0F; } .sp-custom-input:focus { border-color: #0F0F0F; outline: 2px solid rgba(15, 15, 15, 0.2); outline-offset: 2px; } /* Dropdown */ .sp-custom-dropdown { border: 1px solid #E0E0E0; border-radius: 4px; background-color: white; font-family: 'Poppins', sans-serif; } .sp-custom-dropdown:focus { border-color: #0F0F0F; outline: 2px solid rgba(15, 15, 15, 0.2); outline-offset: 2px; } /* Waveform */ .sp-custom-waveform { background-color: #FAFAFA; border: 1px solid #E0E0E0; border-radius: 4px; height: 80px; width: 100%; } /* Audio player */ .sp-custom-audio-player { width: 100%; height: 40px; border-radius: 4px; } /* Video player */ .sp-custom-video-player { width: 100%; height: auto; border-radius: 8px; background-color: #000000; } /* Dialog */ .sp-custom-dialog { background-color: white; border-radius: 8px; padding: 24px; box-shadow: 0 4px 16px rgba(0, 0, 0, 0.15); } ``` ## Best practices for your CSS - **Target the classes above.** A broad selector such as `button` reaches parts of the recorder you did not mean to touch. - **Test in light and dark themes.** Pick colors with enough contrast that the text stays readable on both backgrounds. - **Define hover and focus states.** Focus styles are what keyboard users navigate by, so do not remove the outline without replacing it. - **Make disabled buttons look disabled.** They should read as clearly not clickable. - **Keep transitions short.** Somewhere between 0.2s and 0.3s is enough, and the interface still feels fast. - **Set every related property when you override one.** If some of the default styling shows through, declare background, border, padding and font together rather than one at a time. Never write a rule that removes a control or blocks a click. It leaves respondents unable to finish a recording: ```css /* Avoid this, it breaks the recorder */ .sp-custom-primary-btn { display: none; pointer-events: none; } ``` ## Stop the recorder capitalizing typed text Text fields can capitalize the first letter of an answer, which gets in the way when you need the input kept exactly as typed. Add this to your custom CSS to turn it off: ```css input, textarea { text-transform: none !important; } ``` Some mobile keyboards still capitalize the first letter on their own. That comes from the device settings and CSS cannot override it. ## If your styles do not apply - Check the spelling of the class, character for character: `.sp-custom-primary-btn`, `.sp-custom-secondary-btn`, `.sp-custom-card`, `.sp-custom-input`, `.sp-custom-dropdown`, `.sp-custom-waveform`, `.sp-custom-audio-player`, `.sp-custom-video-player` or `.sp-custom-dialog`. - Look for a missing semicolon or a missing closing brace. One broken rule can take the rest of the block with it. - Reload the page without the cache, with Ctrl+Shift+R on Windows or Cmd+Shift+R on a Mac, so you are looking at the latest version. If it still looks wrong, send support your CSS and a screenshot. We can work out the rule with you without touching your integration. Want a hand setting this up? [Book a free consult](https://calendly.com/speak-ai/consult?utm_source=docs&utm_campaign=consult) and we'll do it together on your account. --- Related: [Embeddable recorder](/help/recorder/) · [Browser support](/help/recorder/browser-support/) # Custom domains > Serve a Speak AI recorder from your own domain so the capture experience stays on your brand from link to submission. Source: https://docs.speakai.co/help/recorder/custom-domain/ · Markdown: https://docs.speakai.co/help/recorder/custom-domain/index.md Follow these steps to set up a custom domain for your Speak AI service (Recorder, Player, or Library). The process is the same for all service types. ## Add your domain 1. Go to **Settings**→ **Custom Domains** 1. Select your service type (**Recorder**, **Player**, or **Library**) 1. Enter your custom domain (e.g., **`recorder.yourdomain.com`**, **`player.yourdomain.com`**, or **`library.yourdomain.com`**) * Do not include **`http://`** or **`https://`** * Do not include trailing slashes ## Add the DNS records After adding your domain, you’ll receive **2 CNAME records** that need to be added to your domain’s DNS settings. **How to add:** 1. Log in to your domain provider’s DNS management panel 1. Find the DNS records section 1. Add the first CNAME record with the name and value provided by Speak AI 1. Add the second CNAME record with the name and value provided by Speak AI 1. Save the changes **NOTE: Ensure the Proxy Status is set to DNS Only.** **Note:** Copy the exact values provided - they must match exactly. If the second CNAME record is not immediately available, check back in a few minutes. ## Wait for verification Once you’ve added both CNAME records: 1. **DNS Propagation:** DNS changes can take 5-15 minutes to propagate (sometimes up to 48 hours) 1. **Automatic Verification:** Speak AI automatically checks your DNS records every 2 minutes. You’ll see status updates in your dashboard: * **Pending:** DNS records not yet verified * **Verified:** DNS records verified, processing * **Active:** Domain is ready to use * **Failed:** Verification did not succeed. Check your DNS records and try again. **Total time:** Typically 30-60 minutes from when DNS records are added, but can take up to 2 hours. --- ## If the DNS records do not verify **Possible causes:** 1. **DNS propagation delay:** Wait 15-30 minutes after adding records 1. **Incorrect values:** Double-check that you copied the CNAME values exactly (including trailing dots if present) 1. **Wrong record type:** Ensure you’re adding CNAME records, not A records 1. **Subdomain vs root domain:** If using a subdomain (e.g., **`recorder.domain.com`**), add the CNAME at the subdomain level **Solution:**- Verify records using DNS lookup tools (e.g., **`dig`** or online DNS checkers) - Ensure the CNAME value matches exactly what Speak AI provided - Try manually triggering verification from the dashboard ## If the SSL certificate does not issue **Possible causes:** 1. SSL validation CNAME not added correctly 1. DNS propagation delay 1. Certificate validation taking longer than expected **Solution:** - Verify the SSL validation CNAME record is added correctly - Wait up to 30 minutes for certificate validation - Check that the SSL CNAME name and value match exactly ## Check your domain status You can check your domain status at any time: 1. Go to **Settings**→ **Custom Domains** 1. Find your domain in the list 1. Check the status indicators: * **Domain CNAME:** Shows if verified (green checkmark) * **SSL Certificate:** Shows status (Pending, Issued, Failed) * **CloudFront Status:** Shows deployment status * **Overall Status:** Pending, Verified, or Active ## Remove a custom domain If you need to remove a custom domain: 1. Go to **Settings**→ **Custom Domains** 1. Find the domain you want to remove 1. Select the delete icon, then confirm **Delete Domain** in the **Delete Custom Domain** dialog 1. The system will automatically: * Remove the domain from CloudFront * Clean up the SSL certificate (if not in use elsewhere) * Remove the domain from your account --- ## What to know before you start - **One domain per service:** You can only have one active custom domain per service type at a time - **DNS propagation:** DNS changes can take time to propagate globally - **Automatic processing:** The system automatically verifies and activates domains - no manual steps needed after adding DNS records - **HTTPS only:** Custom domains are configured for HTTPS only - **CloudFront deployment:** Each domain gets its own CloudFront distribution, which takes 15-30 minutes to deploy ## If you are still stuck If you encounter any issues: 1. Check the domain status in your dashboard 1. Verify your DNS records are correct using DNS lookup tools 1. Wait for DNS propagation (up to 48 hours in rare cases) 1. Contact Speak AI support with: * Your domain name * The DNS records you added * Screenshots of your DNS configuration * Any error messages you’re seeing Evaluating Speak AI for a team? [Book a demo and see your own recordings analyzed](https://calendly.com/speak-ai/demo?utm_source=docs&utm_campaign=book-demo). --- Related: [Embeddable recorder](/help/recorder/) · [Browser support](/help/recorder/browser-support/) # Downloads > Download the raw audio or video a respondent submitted, individually or in bulk, from the recorder's submissions list. Source: https://docs.speakai.co/help/recorder/downloads/ · Markdown: https://docs.speakai.co/help/recorder/downloads/index.md ## Download one recording 1. Open [Surveys](https://app.speakai.co/recorder) in the left sidebar, under **Content**. 1. Select the recorder that has received files. The **Responses** column shows how many each one has. 1. The recorder opens on its **Responses** tab, listing every submission. 1. Select the download icon on a row to save that recording to your computer. To listen without downloading, select the play arrow on the row instead. ## Download in bulk Assign the recorder to a folder and every new submission is filed there automatically. From the folder you can select several recordings at once and export them together, rather than saving them one at a time. Want a hand setting this up? [Book a free consult](https://calendly.com/speak-ai/consult?utm_source=docs&utm_campaign=consult) and we'll do it together on your account. --- Related: [Embeddable recorder](/help/recorder/) · [Browser support](/help/recorder/browser-support/) # Embedding > Add the Speak AI recorder to any page. Includes the fix for Wix and Webflow, which strip microphone and camera permissions. Source: https://docs.speakai.co/help/recorder/embedding/ · Markdown: https://docs.speakai.co/help/recorder/embedding/index.md The recorder runs inside an iframe, so you can put it on any page and keep visitors on your own site. This page covers the iframe itself, the query parameters that change what it shows, and the postMessage commands that let your own buttons drive it. You can try any of it against a live recorder on the [embed tester](https://recorder.speakai.co/assets/embed-tester.html). ## Add the iframe to your page Paste the iframe where you want the recorder to appear, and replace `YOUR_TOKEN_HERE` with the token from the embed code on your recorder's share step. ![The Share tab of a recorder, on its Embed sub-tab. Static (iframe) is selected next to Script (advanced), with Width set to 100%, Height set to 600 and Preselect Recording Type set to None (User Selects). The Embed Code box below is masked here, above a Copy Embed Code button and a note about using your own branded domain instead of the default Speak AI one.](/help/media/recorder/recorder-embedding.jpg) ```html ``` Keep the `allow` attribute. Without it the browser blocks the recorder from reaching the microphone and camera, and recording never starts. Give the frame enough height, around 700px, so your questions and the record button both fit without scrolling. ## Site builders that strip the permissions Site builders such as Wix and Webflow rewrite the iframes they render and drop the `allow` attribute. The recorder loads, but it cannot reach the microphone or camera in any browser. Add this script at the end of the body to put the permissions back on every iframe on the page, including iframes the builder injects after load. ```html ``` ### Where the script goes in Wix Go to **Settings** and scroll to **Advanced**, the last section, where you will find **Custom Code**. Add the script under the **body - END** option. Wix then asks whether to apply it to all pages or only specific ones. ## Change what the recorder shows Add query parameters to the iframe `src` to hide parts of the interface, preselect a recording type, or prefill answers. ```html ``` | **Parameter**| **Type**| **Default**| **Description** | | --- | --- | --- | --- | | hideWaveform | boolean | false | Hide the audio waveform | | hideTitle | boolean | false | Hide the title and header text | | submitLabel | string | "Upload" | Set the submit button text | | hideSubmit | boolean | false | Hide the submit button | | preselect | string | none | Preselect the recording type: `audio`, `video`, `upload` or `screenshare` | | name | string | "" | Prefill the name field | | email | string | "" | Prefill the email field | | folderId | string | "" | Prefill the folder ID | | field1 to field10 | string | "" | Prefill the answers to your custom questions, up to 10 | | isDownload | boolean | false | Let the respondent download their own recording | | redirectUrl | string | "" | Send the respondent to this URL once the recording is submitted | The same parameters work on a shared recorder link, not only the iframe: put them after `https://recorder.speakai.co/your-custom-url`. Join parameters with `&`, and URL encode any value that contains a space or a symbol. ```text ?hideWaveform=true&hideTitle=true&submitLabel=Complete ?preselect=video ?name=John%20Doe&email=john.doe@example.com ?folderId=123456 ?field1=Answer%201&field2=Answer%202 ``` ## Start and stop recording from your own buttons Send a command to the iframe with `postMessage` and listen for the reply on the parent window. ```js // Get iframe reference const iframe = document.querySelector('iframe'); // Start recording iframe.contentWindow.postMessage({ action: 'start' }, 'https://recorder.speakai.co'); // Stop recording iframe.contentWindow.postMessage({ action: 'stop' }, 'https://recorder.speakai.co'); // Listen for responses window.addEventListener('message', (event) => { if (event.origin !== 'https://recorder.speakai.co') return; const response = JSON.parse(event.data); console.log('Response:', response); }); ``` A command takes an `action` of `start` or `stop`, plus an optional `timestamp`. The recorder replies with a success or an error message, both stamped with `source: 'speak-embed-recorder'` so you can tell them apart from other traffic on the page. ```js // Success { source: 'speak-embed-recorder', status: 'success', message: 'Recording started', timestamp: '2025-10-09T10:30:00.000Z', data: { action: 'start' } } // Error { source: 'speak-embed-recorder', status: 'error', message: 'Recording already in progress', timestamp: '2025-10-09T10:30:00.000Z' } ``` Put the two together and your page can carry its own controls while the recorder handles capture and upload. ```html
Ready
``` Always check `event.origin` before you trust a message, and send commands to `https://recorder.speakai.co` rather than `*`. ## Embed in React, Vue or Angular The pattern is the same in every framework: render the iframe, add the message listener when the component mounts, and remove it when the component unmounts. ### React ```jsx import { useEffect, useRef } from 'react'; function RecorderEmbed({ token }) { const iframeRef = useRef(null); useEffect(() => { const handleMessage = (event) => { if (event.origin !== 'https://recorder.speakai.co') return; const response = JSON.parse(event.data); console.log('Recorder:', response); }; window.addEventListener('message', handleMessage); return () => window.removeEventListener('message', handleMessage); }, []); const startRecording = () => { iframeRef.current?.contentWindow.postMessage({ action: 'start' }, 'https://recorder.speakai.co'); }; const stopRecording = () => { iframeRef.current?.contentWindow.postMessage({ action: 'stop' }, 'https://recorder.speakai.co'); }; return (
` }) export class RecorderComponent implements OnInit, OnDestroy { @ViewChild('recorder') iframeElement: ElementRef; iframeUrl = 'https://recorder.speakai.co/iframe/TOKEN?hideWaveform=true'; ngOnInit() { window.addEventListener('message', this.handleMessage); } ngOnDestroy() { window.removeEventListener('message', this.handleMessage); } handleMessage = (event: MessageEvent) => { if (event.origin !== 'https://recorder.speakai.co') return; const response = JSON.parse(event.data); console.log('Recorder:', response); }; startRecording() { const iframe = this.iframeElement.nativeElement as HTMLIFrameElement; iframe.contentWindow.postMessage({ action: 'start' }, 'https://recorder.speakai.co'); } stopRecording() { const iframe = this.iframeElement.nativeElement as HTMLIFrameElement; iframe.contentWindow.postMessage({ action: 'stop' }, 'https://recorder.speakai.co'); } } ``` ## If the embed does not work Open the browser console first. Most problems show up there as a permissions error, a blocked frame, or a script that never ran. ### The iframe does not load ```js const iframe = document.querySelector('iframe'); console.log('Iframe loaded:', iframe.contentWindow !== null); iframe.addEventListener('load', () => { console.log('Iframe loaded successfully'); }); ``` ### postMessage does nothing ```js const iframe = document.querySelector('iframe'); console.log('Iframe found:', iframe !== null); console.log('ContentWindow:', iframe.contentWindow); function sendDebugMessage(action) { console.log('Sending:', action); iframe.contentWindow.postMessage({ action: action }, 'https://recorder.speakai.co'); console.log('Message sent'); } sendDebugMessage('start'); ``` ### Parameters are ignored ```js const iframe = document.querySelector('iframe'); console.log('Iframe src:', iframe.src); const url = new URL(iframe.src); console.log('hideWaveform:', url.searchParams.get('hideWaveform')); console.log('hideTitle:', url.searchParams.get('hideTitle')); console.log('submitLabel:', url.searchParams.get('submitLabel')); ``` If the recorder loads but the microphone stays silent, the permission is the usual cause. See [Microphone and camera permissions](/help/recorder/permissions/). Still stuck? Send us the page URL at [success@speakai.co](mailto:success@speakai.co). Evaluating Speak AI for a team? [Book a demo and see your own recordings analyzed](https://calendly.com/speak-ai/demo?utm_source=docs&utm_campaign=book-demo). --- Related: [Embeddable recorder](/help/recorder/) · [Browser support](/help/recorder/browser-support/) # Field mapping > Link each recorder question to a Speak AI field so every submission populates structured data you can filter and export. Source: https://docs.speakai.co/help/recorder/field-mapping/ · Markdown: https://docs.speakai.co/help/recorder/field-mapping/index.md ![The Add Question dialog for a recorder. Under the question text and an Answer Type set to Single Line, a Map response to field dropdown reads No field mapping and explains that it links the answer to an Explore field, with a Required toggle below it.](/help/media/recorder/recorder-field-mapping.jpg) Map a recorder question to a Speak AI field and every answer lands as structured data next to the recording. You can then filter, sort and export responses instead of opening each submission one at a time. ## Map a question to a field 1. Open the recorder and go to the **Questions** tab. 1. Add a new question, or open an existing one. 1. Find the **Map to field** control. 1. Select the field you want the answer saved to. If the field does not exist yet, create it first, then select it. 1. Save the question. Name the question and the field around the same subject so the pairing stays obvious months later. When a recording arrives, Speak links the answers to the media file for you. ## Sync answers collected before the mapping Mapping applies from the moment you save it, so answers collected earlier stay where they are. To bring them across, open the question settings, select the sync icon beside the field name, and confirm **Sync** in the **Sync Answers to Field** dialog. Speak then writes every past answer to the field you selected. ## Review the answers in your library Open the folder your recorder saves to, select **Manage columns**, and add your fields under **Add Columns**. Each recording then shows its answers in the list, so you can read every response at a glance and export them together. ## If an answer does not reach the field - Check that the question is mapped. Mapping is set per question, so a question you add later starts unmapped. - Check when the answer arrived. If it came in before you set the mapping, run **Sync Answers to Field** on that question. - Match the answer type to the field. A free-text answer written into a date field can come back empty. See [Questions](/help/recorder/questions/) for the answer types you can choose. - Give every field a distinct name. Two fields with the same name make it hard to tell where an answer went. - Use **Dropdown**, **Radio Button** or **Checkbox** answers wherever the values are known in advance. Standard values keep the field clean and make filtering reliable. - Remember that an optional question can be skipped, so an empty field sometimes just means the respondent left it blank. For what a field can do once it holds data, see [AI fields](/help/insights/fields/). Want a hand setting this up? [Book a free consult](https://calendly.com/speak-ai/consult?utm_source=docs&utm_campaign=consult) and we'll do it together on your account. --- Related: [Embeddable recorder](/help/recorder/) · [Browser support](/help/recorder/browser-support/) # Limits > Maximum recording length is set by your plan. Longer limits are available on request for research and interview use cases. Source: https://docs.speakai.co/help/recorder/limits/ · Markdown: https://docs.speakai.co/help/recorder/limits/index.md Currently, we limit the recording based on different **[pricing plans](https://speakai.co/pricing/?utm_source=docs&utm_medium=referral&utm_campaign=help)**. If you have custom needs, you can reach out to us and we will make adjustments so that you can extend the time longer if that is valuable for you. We've had the pause button enabled in the past but on certain devices and browsers there is a timeout not in our control that sometimes would corrupt files. To ensure people don't lose their recordings we've turned off the pause. They can listen back to ensure it's good before submitting and restart if they want. We've continued to explore the best way to re-add the pause but for the moment it's a risk and people get very upset when they lose their recordings. Evaluating Speak AI for a team? [Book a demo and see your own recordings analyzed](https://calendly.com/speak-ai/demo?utm_source=docs&utm_campaign=book-demo). --- Related: [Embeddable recorder](/help/recorder/) · [Browser support](/help/recorder/browser-support/) # Pairing codes > Pairing codes let a Speak AI recorder app on a device connect to a specific recorder in your account and upload into it. Source: https://docs.speakai.co/help/recorder/pairing-codes/ · Markdown: https://docs.speakai.co/help/recorder/pairing-codes/index.md ## What are recorder pairing codes? Pairing codes let a Speak AI native recorder app on a device connect to a specific recorder you have created in your account. When pairing codes are enabled, each new recorder you create automatically receives a unique 6-digit code. You enter that code in the native app to link it to the correct recorder and folder. ## Enabling pairing codes in your account 1. Click your avatar or name and go to **Account Preferences** (path: `/profile/preferences`). 1. Find the **Recorder Pairing Codes** section. 1. Toggle the switch on. The preference saves automatically. Once the toggle is on, any recorder you create from that point forward will have a pairing code generated for it automatically. ## Finding the pairing code for a recorder 1. Open the recorder from the **Surveys** list in the left sidebar. 1. Go to the **Share** tab, then its **Mobile App** sub-tab. 1. Find the **Record with the Speak Recorder app** section. The 6-digit code sits under **Pairing code**. 1. Select the copy icon beside the code to copy it, then enter it in the recorder app on your device. If no code is shown yet, click **Generate Pairing Code** to create one. ## Rotating a pairing code Click **Generate New Code** in the Pair a Device section. A confirmation dialog warns you that the current code will be invalidated, any device already paired will need to enter the new code to re-pair. Confirm to proceed. ## Recorders created before the toggle was enabled Recorders created before you turned on Recorder Pairing Codes will not have a code automatically. Open the recorder, go to the Share tab, and click **Generate Pairing Code** to add one. The fastest way to reach us is the live chat in the app (the chat bubble in the bottom corner). You can also email [success@speakai.co](mailto:success@speakai.co). Want a hand setting this up? [Book a free consult](https://calendly.com/speak-ai/consult?utm_source=docs&utm_campaign=consult) and we'll do it together on your account. --- Related: [Embeddable recorder](/help/recorder/) · [Browser support](/help/recorder/browser-support/) # Microphone and camera permissions > Grant browser access to the microphone and camera so the embeddable recorder can capture audio and video from your visitors. Source: https://docs.speakai.co/help/recorder/permissions/ · Markdown: https://docs.speakai.co/help/recorder/permissions/index.md The recorder captures audio and video through the browser, so the browser has to grant it access to the microphone and camera first. The first time someone opens a recorder, the browser asks. Click **Allow** and recording works straight away. If the request was blocked or dismissed earlier, the browser remembers that answer and the recorder stays silent until you reset it. Two things to check before you go looking in browser settings. The page has to be served over HTTPS, because browsers only release the microphone and camera on a secure connection. And after any permission change, reload the page: nothing takes effect until you do. ## Chrome When Chrome asks, click **Allow** in the prompt under the address bar. If you do not see a prompt, the answer is already stored and you need to change it by hand. On desktop: 1. Click the three-dot menu in the top right and select **Settings**. 1. Go to **Privacy and security**> **Site settings**. 1. Click either **Camera** or **Microphone**. 1. Review the blocked and allowed sites listed under Permissions. 1. If the recorder site sits under "Blocked", select it and change it to **Allow**. 1. Reload the page. On Android: 1. Open Chrome and go to the recorder page. 1. Tap the lock icon beside the address bar. 1. Tap **Site settings**. 1. Under Permissions, tap **Camera** or **Microphone** and select **Allow**. 1. Refresh the page. On iPhone and iPad: 1. Open the Chrome app and go to the recorder page. 1. Tap **Allow** when prompted. 1. If you denied it before, open the device **Settings**, scroll to **Chrome**, and turn on **Camera** and **Microphone**. ## Firefox On desktop: 1. Open Firefox and go to the recorder page. 1. Click **Allow** in the prompt. 1. To set it by hand, click the padlock icon in the address bar, click the arrow for **More information**, then set **Camera** and **Microphone** to **Allow** on the **Permissions** tab. 1. Reload the page. To manage the defaults for every site, go to the Firefox menu > **Settings**> **Privacy & Security**> **Permissions**. On mobile, tap **Allow** when prompted. If you denied it before, open the browser's **Settings**> **Site permissions**, find the recorder site, and turn on **Camera** and **Microphone**. ## Safari On a Mac: 1. Open Safari and go to the recorder page. 1. Click **Safari** in the top menu, then **Settings**. 1. Open the **Websites** tab. 1. Click **Camera**, then **Microphone**, in the sidebar. 1. Set the recorder site to **Allow**. 1. Restart Safari. On iPhone and iPad: 1. Open the recorder page in Safari and tap **Allow** when prompted. 1. If no prompt appears, tap the page settings button (**aA**) in the address bar, then **Website Settings**. 1. Set **Camera** and **Microphone** to **Allow**. 1. To manage the app itself, go to iOS **Settings**> **Safari**> **Camera** and **Microphone**. ## Edge, Opera and Vivaldi These browsers follow Chrome closely. Go to **Settings**> **Site Settings**> **Camera** or **Microphone** and set the recorder site to **Allow**. On mobile, the permission usually sits in the app settings or behind the security icon in the address bar. ## When the permission still does not stick - Reload the page after every change. Most "it still does not work" reports are a stale tab. - On an embedded recorder, both the page hosting the iframe and the recorder domain need permission. See [Embedding](/help/recorder/embedding/) for the iframe attribute that grants it. - On a managed device from a school or workplace, an administrator may have locked camera and microphone access. You will need their help to change it. - Clear the browser cache or restart the device if a change does not seem to apply. - On mobile, check both the browser permission and the operating system permission for that browser app. Either one can block the recorder. ## Official browser guides - [Manage camera and microphone permissions in Chrome](https://support.google.com/chrome/answer/2693767?hl=en&co=GENIE.Platform=Desktop) - [Manage camera and microphone permissions in Firefox](https://support.mozilla.org/en-US/kb/how-manage-your-camera-and-microphone-permissions) Still stuck? Write to success@speakai.co or [book a free consult](https://calendly.com/speak-ai/consult?utm_source=docs&utm_campaign=consult). --- Related: [Embeddable recorder](/help/recorder/) · [Browser support](/help/recorder/browser-support/) # Questions > Ask respondents questions alongside their recording, using short text, multi-line text, choice and rating answer types. Source: https://docs.speakai.co/help/recorder/questions/ · Markdown: https://docs.speakai.co/help/recorder/questions/index.md ## Adding questions to a recorder ![The Questions tab of a recorder, listing what respondents are asked](/help/media/recorder/recorder-questions.jpg) Your recorder can ask respondents questions alongside their recording. To set them up: 1. Open the recorder and go to the **Questions** tab. 1. Click **Add Question**. 1. Enter the question text, choose an **answer type**, optionally map it to a field, and mark it required if needed. 1. Save the question. ## Available answer types You can choose from: - **Single Line**:a short text answer - **Multiple Line**:a longer, free-form written answer - **Checkbox**:choose more than one option - **Radio Button**:choose one option - **Dropdown**:choose one option from a list - **Date** and **Date & Time** Respondents always record their audio or video answer. These question types capture the structured details you want to collect alongside that recording. ## Prefill and control the recorder from the URL You can preselect a recording type, prefill the name, email, folder and question answers, let the respondent download their recording, or send them somewhere after they submit. Add the values as query parameters on the recorder link: ```text https://recorder.speakai.co/your-custom-url?preselect=audio&name=John%20Doe ``` Someone arriving with their answers already filled skips the questionnaire and goes straight to recording. The full parameter list, with types and defaults, is in [Embedding and iframe controls](/help/recorder/embedding/). If there is something else you want to collect, message us on live chat in the app and we will look at whether it can be added. Want a hand setting this up? [Book a free consult](https://calendly.com/speak-ai/consult?utm_source=docs&utm_campaign=consult) and we'll do it together on your account. --- Related: [Embeddable recorder](/help/recorder/) · [Browser support](/help/recorder/browser-support/) # Security > Encryption in transit and at rest, access control, retention limits, sub-processors and the certifications Speak AI holds. Source: https://docs.speakai.co/help/security/ · Markdown: https://docs.speakai.co/help/security/index.md Your recordings are business records: customer conversations, research data, meetings you can't repeat. Speak AI treats them that way. Data is encrypted in transit and at rest , access is controlled at the [team level](/help/teams/permissions/), and deletion is yours to control: files you delete enter a 7-day recovery window, then are permanently removed {/* fact:security.deletion */}. Speak AI has served research teams, healthcare organizations, and enterprises since 2018; 250,000+ people and teams use it, rated 4.9 on G2. ## The questions security reviews ask **Where does my data live, and who can see it?** Your workspace's data is isolated to your account; inside it, [groups and permissions](/help/teams/permissions/) control which teammates see which folders. **Is my data used to train AI models?** See the [third-party data privacy policy](/help/security/policies/third-party-data-privacy/) for the contractual position on sub-processors and data use. **Can I redact sensitive content?** Exports can redact names, emails, locations, brands, and dates. *(Language coverage documented after middleware verification.)* **What happens when I delete data?** [Data deletion](/help/account/data-deletion/): 7-day soft delete, then permanent removal. ## The policy library All 41 security, privacy, and governance policies, published in full for security reviews and procurement. Each one is its own page, so you can send a reviewer a direct link rather than a PDF. ## Running a security review? Send us your questionnaire, or talk it through directly: [book a security review call](https://calendly.com/speak-ai/demo?utm_source=docs&utm_campaign=security-review). We answer procurement and compliance questions for a living. --- Related: [Policies](/help/security/policies/) · [Data deletion](/help/account/data-deletion/) · [Groups and permissions](/help/teams/permissions/) # Policies > Read the complete library of Speak AI security, privacy and governance policies, grouped by topic and published for security reviews and procurement. Source: https://docs.speakai.co/help/security/policies/ · Markdown: https://docs.speakai.co/help/security/policies/index.md The complete library of Speak AI security, privacy, and governance policies, published for security reviews and procurement. Questions about any of them: [talk to us](https://calendly.com/speak-ai/demo?utm_source=docs&utm_campaign=security-review). # Acceptable use policy > What customers and staff may and may not do with Speak AI systems, accounts and data. Source: https://docs.speakai.co/help/security/policies/acceptable-use/ · Markdown: https://docs.speakai.co/help/security/policies/acceptable-use/index.md **1. Purpose**

This Acceptable Use Policy (AUP) outlines the responsible use of Speak AI Inc.’s information systems, networks, and assets to protect company resources, ensure compliance, and prevent misuse. **2. Scope**

This policy applies to all employees, contractors, third-party vendors, and any individuals granted access to Speak AI Inc.'s systems, devices, applications, and data. **3. Acceptable Use Guidelines** **3.1 General Responsibilities** - Users must act responsibly and ethically when accessing company systems. - Company resources must be used for business purposes only unless otherwise authorized. - Any activity that jeopardizes the security, integrity, or availability of Speak AI’s systems is strictly prohibited. **3.2 Data Protection & Confidentiality**- Users must comply with the **Data Classification Policy** regarding handling sensitive information. - Personally identifiable information (PII) and customer data must be protected and not shared outside authorized personnel. - Data encryption must be used where applicable. **3.3 Network & System Security** - Users must not bypass security controls, such as firewalls, VPNs, or access restrictions. - Unauthorized scanning, monitoring, or tampering with networks, servers, or data is strictly prohibited. - Personal devices used for company purposes must comply with security requirements outlined in the **Remote Network Access Policy**. **3.4 Email & Communication Guidelines** - Emails must be used for professional communication; phishing or social engineering attempts should be reported immediately. - Unsolicited bulk emails (spam), harassment, or offensive content transmission is prohibited. - Users must not impersonate others or misrepresent Speak AI in any way. **3.5 Internet & Software Usage** - Users must not access, download, or distribute illegal, offensive, or unauthorized content. - Only approved and licensed software may be installed on Speak AI systems. - The use of personal cloud storage or unauthorized file-sharing services is prohibited. **3.6 Physical & Endpoint Security** - Devices must be locked when unattended to prevent unauthorized access. - Lost or stolen devices must be reported immediately to **success@speakai.co**. - Company-issued devices must only be used by authorized users. **4. Prohibited Activities** - Attempting unauthorized access to systems or data. - Engaging in fraudulent or illegal activities. - Disabling or circumventing security controls. - Using company resources for personal gain without authorization. **5. Monitoring & Enforcement** - Speak AI reserves the right to monitor system usage to ensure compliance. - Violations may result in disciplinary action, including termination of access or employment. - Users must report suspected violations to **success@speakai.co**. **6. References & Supporting Documents**- Speak AI **Data Classification Policy**: [/help/security/policies/data-classification/](/help/security/policies/data-classification/) - Speak AI **Remote Network Access Policy**: [/help/security/policies/remote-network-access/](/help/security/policies/remote-network-access/) - Speak AI **Encryption Policy**: [/help/security/policies/encryption/](/help/security/policies/encryption/) **7. Contact Information** For any questions regarding this policy, contact **success@speakai.co**. --- This policy will be reviewed periodically to align with best practices and compliance requirements. # Access management policy > How access to Speak AI systems is granted, reviewed and revoked, including least privilege and joiner-mover-leaver handling. Source: https://docs.speakai.co/help/security/policies/access-management/ · Markdown: https://docs.speakai.co/help/security/policies/access-management/index.md **1. Purpose and Scope**

The purpose of this Access Management Policy is to establish guidelines and procedures for managing access to Speak AI Inc.'s ("Speak AI") information systems and data. This policy aims to ensure that access is granted appropriately based on the principle of least privilege and that it is managed and monitored effectively to protect the confidentiality, integrity, and availability of information. --- **2. Policy Statement**

Speak AI is committed to protecting its information assets by ensuring that access to its systems and data is controlled and restricted to authorized individuals only. This policy outlines the processes for granting, reviewing, and revoking access, as well as the responsibilities of all users in maintaining secure access controls. --- **3. User Access Management**- **User Account Creation:** Access to Speak AI’s internal systems and data will only be granted to individuals with a legitimate business need. - **Authentication:** All users must authenticate using strong authentication methods, including complex passwords and, where applicable, multi-factor authentication (MFA). Speak AI supports MFA through Google Workspace and is expanding additional authentication integrations. - **Authorization:** Access rights will be assigned based on the user's role and responsibilities, ensuring adherence to the principle of least privilege. - **Security Controls:** Security measures are in place to prevent unauthorized access, including rate-limiting authentication attempts and automated detection of suspicious login behavior. --- **4. Access Reviews and Audits**- **User Access Reviews:** * Standard user accounts are reviewed **quarterly** to ensure appropriate access levels. * Privileged user accounts undergo **monthly** reviews to maintain strict security controls. - **Audit Logs:** Speak AI maintains detailed audit logs of access to critical systems and data. Logs are reviewed at the following frequencies: * **Real-time monitoring** through automated security tools (AWS Security Hub, GitHub Dependabot). * **Daily log analysis** for security insights. * **Weekly security reviews** for compliance verification. * **Comprehensive monthly audits** to detect anomalies and patterns. --- **5. Access Revocation**- **Termination of Access:** Access rights will be revoked immediately upon termination of employment or contract. Managers are responsible for notifying the IT Security Team to deactivate accounts and remove access. - **Role Changes:** Access rights will be adjusted appropriately if a user changes roles within the organization. This ensures that users retain access only to the resources necessary for their new role. --- **6. Privileged Access Management**- **Definition of Privileged Access:** Privileged access refers to accounts with elevated permissions that allow for administrative control over systems and data. - **Controls for Privileged Accounts:** * Privileged accounts must be strictly controlled and monitored. * Users with privileged access must use separate accounts for administrative tasks and regular activities. - **Monitoring and Review:** * Privileged account usage is logged and reviewed. * Privileged access reviews are conducted **monthly**. --- **7. Remote Access**- **Multi-Factor Authentication (MFA):** Remote access requires multi-factor authentication to ensure an additional layer of security. - **Encrypted Communications:** Secure protocols such as TLS 1.2+ are used for all remote connections. --- **8. Third-Party Access**- **Vendor and Partner Access:** Third-party vendors and partners who require access to Speak AI's systems must comply with this Access Management Policy. Access will be granted based on contractual agreements and will be limited to the minimum necessary. - **Monitoring and Audits:** Third-party access will be monitored and audited to ensure compliance with Speak AI's security policies and procedures. --- **9. Responsibilities**- **IT Team:** Responsible for implementing and maintaining access controls, conducting regular access reviews, and ensuring compliance with this policy. - **Chief Technology Officer (CTO):** Responsible for approving access requests, conducting periodic reviews of user access, and notifying the IT Security Team of any role changes or terminations. - **All Users:** Responsible for adhering to access management policies, safeguarding their authentication credentials, and reporting any suspicious activities or security incidents. --- **10. Policy Review**

This policy will be reviewed annually or as needed to ensure its effectiveness and alignment with industry best practices and regulatory requirements. Changes to the policy will be communicated to all users. --- **11. Contact Information**

For any inquiries or issues related to this Access Management Policy, please contact the IT Team at **success@speakai.co**. # Anti-bribery and anti-corruption policy > Speak AI's prohibitions on bribery, facilitation payments, gifts and hospitality, and how to report a concern. Source: https://docs.speakai.co/help/security/policies/anti-bribery-anti-corruption/ · Markdown: https://docs.speakai.co/help/security/policies/anti-bribery-anti-corruption/index.md ## 1. Purpose Speak AI Inc. is committed to conducting business with integrity and transparency. This Anti-Bribery and Anti-Corruption Policy establishes guidelines to ensure compliance with applicable anti-bribery laws and regulations, preventing unethical business practices, and fostering a culture of honesty. --- ## 2. Scope This policy applies to all employees, officers, directors, contractors, vendors, and third parties acting on behalf of Speak AI Inc. --- ## 3. Prohibited Activities Speak AI Inc. strictly prohibits the following activities: - **Bribery:** Offering, promising, giving, or accepting anything of value to improperly influence business decisions. - **Facilitation Payments:** Small, unofficial payments made to expedite routine actions. - **Kickbacks:** Illicit payments to obtain or retain business advantages. - **Improper Gifts and Hospitality:** Providing or receiving gifts, travel, or entertainment beyond reasonable business courtesies. - **Political and Charitable Contributions:** Making contributions to gain improper business advantages. --- ## 4. Compliance Measures To ensure adherence to this policy, Speak AI Inc. has implemented the following controls: - **Due Diligence:** Screening third-party vendors and partners for corruption risks. - **Training and Awareness:** Educating employees on bribery risks and compliance obligations. - **Record-Keeping:** Maintaining accurate records of financial transactions and business dealings. - **Internal Controls:** Ensuring financial and operational procedures prevent bribery and corruption. --- ## 5. Reporting Mechanisms Employees and third parties are encouraged to report suspected violations of this policy via success@speakai.co. Speak AI Inc. ensures confidentiality and prohibits retaliation against whistleblowers. --- ## 6. Enforcement & Consequences Violations of this policy may result in disciplinary action, including termination and legal consequences. Speak AI Inc. reserves the right to take appropriate action against any individual or entity found in violation. --- ## 7. Policy Review This policy will be reviewed periodically to ensure compliance with evolving legal standards and business practices. For any questions, please contact **success@speakai.co**. # Anti-competitive practices policy > Speak AI's rules on competition law, market conduct and dealings with competitors, customers and suppliers. Source: https://docs.speakai.co/help/security/policies/anti-competitive-practices/ · Markdown: https://docs.speakai.co/help/security/policies/anti-competitive-practices/index.md ## 1. Purpose Speak AI is committed to conducting business fairly, ethically, and in compliance with all applicable competition and antitrust laws. This policy ensures that Speak AI does not engage in anti-competitive behavior, including price-fixing, monopolistic practices, or other unfair competition strategies. ## 2. Scope This policy applies to all employees, contractors, partners, and any third parties acting on behalf of Speak AI. It governs all business activities, including sales, marketing, procurement, and partnerships. ## 3.1 Compliance with Competition Laws Speak AI and its employees must comply with all applicable antitrust and competition laws in the jurisdictions in which the company operates. ## 3.2 Prohibited Practices The following anti-competitive behaviors are strictly prohibited: - **Price Fixing:** Agreements or understandings with competitors to fix, set, or control prices. - **Market Allocation:** Agreements with competitors to divide markets, customers, or territories. - **Bid Rigging:** Collusion with competitors to manipulate bidding processes. - **Monopolistic Practices:** Actions intended to unfairly eliminate competitors or restrict market access. - **Tying & Exclusive Agreements:** Imposing unfair conditions on customers that limit their ability to choose competing products. - **Misuse of Market Power:** Using a dominant market position to exclude competitors or impose unfair pricing. ## 4. Competitive Practices Speak AI is committed to engaging in fair competition by: - Offering competitive prices based on market conditions. - Providing truthful and non-misleading advertising. - Competing on the merits of product quality, innovation, and customer service. - Avoiding any discussions or agreements with competitors that may suggest collusion or anti-competitive intent. ## 5. Compliance & Reporting - Employees must report any suspected anti-competitive behavior to Speak AI’s the leadership team at **success@speakai.co**. - Speak AI will investigate all reports confidentially and take appropriate corrective actions if necessary. - Employees engaging in anti-competitive behavior may face disciplinary action, including termination. ## 6. Training & Awareness - Speak AI will periodically provide guidance and training on anti-trust laws and fair competition practices to relevant employees. ## 7. Enforcement & Review - This policy will be reviewed annually and updated as necessary to reflect changes in competition laws or business operations. - Speak AI reserves the right to modify this policy at any time to ensure continued compliance with regulatory requirements. **For further inquiries, contact us at success@speakai.co.** # Asset management policy > How Speak AI inventories, assigns ownership of, maintains and disposes of hardware, software and data assets. Source: https://docs.speakai.co/help/security/policies/asset-management/ · Markdown: https://docs.speakai.co/help/security/policies/asset-management/index.md **1. Purpose and Scope**

The purpose of this Asset Management Policy is to establish guidelines for the effective management and security of Speak AI Inc.'s ("Speak AI") physical and digital assets. This policy applies to all employees, contractors, and third parties who manage or use Speak AI's assets. **2. Policy Statement**

Speak AI is committed to the proper management and security of its assets to ensure their optimal use and protection. This policy outlines the procedures for acquiring, managing, and disposing of assets and establishes controls to safeguard these assets against loss, theft, and misuse. **3. Asset Inventory & Review**- **Asset Register:** Speak AI will maintain an up-to-date inventory of all physical and digital assets, including laptops, phones, software licenses, and cloud services. The asset register should include details such as asset type, serial number, assigned user, location, and status. - **Asset Identification:** All assets will be tagged with unique identifiers to facilitate tracking and management. - **Review Frequency:** Speak AI conducts **quarterly** asset inventory reviews to ensure accuracy and compliance with security policies. **4. Asset Acquisition**- **Approval Process:** The acquisition of new assets must be approved by the relevant department head or manager. This process will include an assessment of business needs, budget considerations, and security requirements. - **Vendor Selection:** Assets must be procured from reputable vendors who meet Speak AI’s quality and security standards. **5. Asset Assignment and Usage**- **Assignment:** Assets will be assigned to employees based on their roles and responsibilities. The assignment will be documented in the asset register. - **Usage:** Employees are responsible for the proper use and care of Speak AI assets. Assets must be used in accordance with Speak AI’s policies and procedures and should not be used for personal purposes. **6. Asset Security**- **Physical Security:** Employees must take necessary precautions to protect physical assets, such as laptops and phones, from theft, damage, or unauthorized access. This includes securing devices when not in use and using privacy screens to prevent unauthorized viewing. - **Data Security:** Employees must ensure that all data stored on Speak AI assets is encrypted and backed up regularly. Sensitive data should be transmitted using secure channels, such as VPNs and encrypted communication tools. - **Access Control:** Access to digital assets, including software and cloud services, must be restricted to authorized personnel only. Multi-factor authentication (MFA) should be used to enhance security. - **Removable Media:** The use of removable media (USBs, external hard drives) for storing sensitive information is **prohibited** unless explicitly approved. - **Mobile Device Security:** Mobile devices used for company operations must adhere to **encryption, remote wipe capabilities, and mobile device management (MDM) enforcement.** **7. Asset Maintenance**- **Regular Maintenance:** Speak AI will ensure that all assets are maintained regularly to keep them in good working condition. This includes applying software updates, patches, and hardware servicing as needed. - **Support:** Employees should report any issues with their assigned assets to the IT support team for prompt resolution. **8. Asset Disposal**- **Disposal Procedures:** When assets are no longer needed, they must be disposed of securely and in an environmentally responsible manner. This includes data wiping, physical destruction, or recycling as appropriate. - **Documentation:** The disposal of assets must be documented in the asset register, including details of the disposal method and the personnel involved. **9. Backup & Offsite Storage**- **Backup Frequency:** Speak AI performs daily backups of all critical data assets. - **Offsite Storage:** Backups are securely stored in AWS cloud infrastructure with encryption enforced both at rest and in transit. - **Backup Integrity Testing:** Restoration tests are conducted **quarterly** to validate data integrity and recovery capabilities. **10. Incident Reporting**- **Lost or Stolen Assets:** Employees must report any lost or stolen assets immediately to the IT Security Team at success@speakai.co. An incident report should include details of the asset, the circumstances of the loss or theft, and any actions taken. - **Incident Response:** The IT Security Team will investigate reported incidents and take appropriate measures to mitigate any risks associated with the loss or theft of assets. **11. Monitoring & Audit**- **User Access Review:** General user access rights are reviewed **quarterly**, while privileged accounts are reviewed **monthly** to ensure access remains appropriate. - **Log Review Frequency:** Security and system logs undergo **real-time automated monitoring**, with **weekly manual reviews** and a **full monthly audit** to detect anomalies or security threats. **12. Risk Assessment & Compliance Monitoring**- **Risk Assessment Frequency:** Speak AI conducts **formal risk assessments annually** and performs **ad-hoc reviews** when significant changes occur. **13. Training and Awareness**- **Employee Training:** All employees will receive training on asset management policies and procedures, including the proper use, security, and disposal of assets. - **Ongoing Awareness:** Continuous awareness programs will be conducted to keep employees informed about the importance of asset management and security best practices. **14. Compliance and Auditing**- **Policy Compliance:** Compliance with this policy is mandatory for all employees, contractors, and third parties involved in asset management. Non-compliance may result in disciplinary actions. - **Regular Audits:** Regular audits will be conducted to ensure adherence to this asset management policy and identify areas for improvement. **15. Policy Review**

This policy will be reviewed annually or as needed to ensure its effectiveness and alignment with industry best practices and emerging security threats. Changes to the policy will be communicated to all employees. **16. Contact Information**

For any inquiries or issues related to this Asset Management Policy, please contact the IT Asset Management Team at success@speakai.co. # Business continuity plan > How Speak AI keeps the service running through a disruption, including roles, recovery priorities and communication. Source: https://docs.speakai.co/help/security/policies/business-continuity-plan/ · Markdown: https://docs.speakai.co/help/security/policies/business-continuity-plan/index.md **Purpose:** This policy outlines the process and frequency for testing Speak AI’s Business Continuity Plan (BCP) to ensure ongoing resilience, operational continuity, and preparedness for potential disruptions. **Scope:** This policy applies to all critical business operations and functions within Speak AI and its infrastructure providers, including Amazon Web Services (AWS), MongoDB, and external service providers like OpenAI and Anthropic. **Policy Statement:** Speak AI’s Business Continuity Plan will be tested on an annual basis to ensure its effectiveness in maintaining business operations in the event of disruptions or emergencies. In addition to scheduled annual testing, the plan may be reviewed and updated as needed, based on significant changes to the business environment, technology infrastructure, or service providers. **Testing Objectives:** - Validate the procedures to ensure the swift resumption of critical business processes. - Identify and address gaps or areas of improvement in the plan. - Ensure staff familiarity with BCP procedures, roles, and responsibilities. - Evaluate Speak AI's response to simulated real-world incidents, including external provider failures (e.g., AWS, MongoDB). **Testing Schedule:** 1. **Annual Test:**
An annual BCP test will be conducted, with scenarios designed to simulate different types of operational disruptions (e.g., data center failure, service outage). This test will include all critical stakeholders and relevant external service providers. 1. **Review and Update:**
The BCP will also be reviewed in the event of significant changes to the infrastructure, providers, or business operations. Any changes will be communicated to the necessary employees and stakeholders. **Documentation and Reporting:**
All BCP test results will be documented, and any gaps identified will be addressed with corrective actions. The test outcomes and action plans will be reviewed by the executive team and external auditors, if applicable. **Responsibility:**
The Chief Technology Officer is responsible for ensuring the BCP testing schedule is followed and any updates are implemented promptly. Relevant teams and third-party providers will be involved in testing and remediation efforts. # Change management policy > How changes to Speak AI production systems are proposed, reviewed, tested, approved and rolled back. Source: https://docs.speakai.co/help/security/policies/change-management/ · Markdown: https://docs.speakai.co/help/security/policies/change-management/index.md ## 1. Purpose and Scope The purpose of this Change Management Policy is to establish a structured approach for managing changes to Speak AI Inc.'s ("Speak AI") information systems, infrastructure, and processes. This policy aims to ensure that changes are made in a controlled and coordinated manner, minimizing the risk of disruption to services and maintaining the integrity and security of Speak AI's environment. This policy applies to all employees, contractors, and third parties involved in making changes to Speak AI's systems. ## 2. Policy Statement Speak AI is committed to maintaining a stable and secure operational environment. This policy outlines the procedures and responsibilities for requesting, approving, implementing, and reviewing changes to ensure that all modifications are carried out systematically and with minimal risk. ## 3. Change Management Process - **Change Classification:** Changes will be classified based on their potential impact and urgency. Categories may include: * **Standard Changes:** Pre-approved, low-risk changes that follow established procedures. * **Normal Changes:** Changes that require assessment and approval due to their potential impact. * **Emergency Changes:** Changes that need to be implemented urgently to address critical issues. ## 4. Roles and Responsibilities - **Chief Technology Officer (CTO):** * **Oversight:** The CTO is responsible for the overall oversight of the change management process. This includes ensuring that the process aligns with Speak AI’s strategic objectives and risk management framework. * **Approval Authority:** The CTO has the authority to approve or reject significant change requests, particularly those that have a broad impact on the organization’s operations or security posture. * **Policy Enforcement:** The CTO ensures that the Change Management Policy is enforced and adhered to across the organization. * **Communication:** The CTO communicates the importance of the change management process to all stakeholders and ensures that changes are communicated effectively within the organization. - **IT Manager/Team:** * **Change Coordination:** The IT Manager/Team is responsible for coordinating the change management process. This includes receiving change requests, assessing their impact, and ensuring that they are processed in a timely and efficient manner. * **Assessment and Documentation:** The IT Manager/Team will conduct a thorough assessment of each change request, documenting the potential impact, risks, resource requirements, and rollback plans. * **Implementation Planning:** The IT Manager/Team is responsible for developing detailed implementation plans for approved changes. This includes defining the steps, resources, and timeline required to implement the change successfully. * **Testing:** The IT Manager/Team ensures that all changes are tested in a controlled environment before deployment to production. This includes validating that the change works as intended and does not introduce new issues. * **Monitoring:** The IT Manager/Team will monitor the implementation of changes, ensuring that they are executed according to the plan and that any issues are addressed promptly. * **Post-Implementation Review:** The IT Manager/Team conducts post-implementation reviews to evaluate the success of the change and identify any lessons learned. This includes documenting the outcomes and any deviations from the plan. * **Emergency Changes:** The IT Manager/Team is authorized to handle emergency changes. They must ensure that these changes are documented and communicated as soon as possible and reviewed retrospectively by the CTO. - **Change Requester:** The individual or team proposing the change is responsible for completing the CR form and providing all necessary information for assessment. ## 5. Change Approval - **Assessment:** Each change request will be assessed for its potential impact, risks, resource requirements, and alignment with business objectives. This assessment will be documented and reviewed by the CTO and IT Team. - **Approval:** The team will review the assessment and either approve, reject, or request additional information for the change request. Approved changes will be prioritized and scheduled for implementation. ## 6. Change Implementation - **Implementation Plan:** An implementation plan will be developed for each approved change. This plan will include detailed steps for executing the change, assigned responsibilities, and a timeline for completion. - **Testing:** Changes will be tested in a controlled environment before deployment to ensure that they function as intended and do not introduce new issues. - **Prevention of Developer Access to Production Environments:** Developers do not have access to production environments or any environments containing production data. Access to these environments is restricted to our operations team, who are responsible for deploying changes into production under strict procedural controls. - **Security Review of Changes:** A security review is mandatory for all changes before they are deployed into production. This review assesses the potential impact of the change on the security posture of our systems and ensures that all security requirements are met. The code is reviewed by branch management, and with automated vulnerability scan that alerts any possible issues. - **Communication:** Relevant stakeholders will be informed about the change schedule, potential impacts, and any required actions before, during, and after the implementation. ## 7. Post-Implementation Review - **Verification:** After the change is implemented, it will be verified to ensure that it has achieved its intended objectives without causing adverse effects. - **Documentation:** The results of the change implementation, including any issues encountered and how they were resolved, will be documented in the change log. - **Review:** The team will conduct a post-implementation review to evaluate the change process, identify lessons learned, and make recommendations for future improvements. ## 8. Emergency Changes - **Procedure:** Emergency changes must be documented and communicated as soon as possible. The Change Manager or a designated authority will approve emergency changes. - **Review:** All emergency changes will be reviewed retrospectively by the team to ensure that they were necessary and appropriately managed. ## 9. Compliance and Monitoring - **Policy Compliance:** Compliance with this policy is mandatory for all employees, contractors, and third parties involved in the change process. Non-compliance may result in disciplinary actions. - **Monitoring:** Regular audits will be conducted to ensure adherence to the change management process and identify areas for improvement. ## 10. Training and Awareness - **Employee Training:** All employees involved in the change management process will receive regular training on the policy, procedures, and best practices. - **Ongoing Education:** Continuous education programs will be conducted to keep staff informed about the latest change management techniques and tools. ## 11. Policy Review This policy will be reviewed annually or as needed to ensure its effectiveness and alignment with industry best practices and emerging technologies. Changes to the policy will be communicated to all stakeholders. ## 12. Contact Information For any inquiries or issues related to this Change Management Policy, please contact the Change Manager at [success@speakai.co](mailto:success@speakai.co). # Cloud hosting compliance policy > How Speak AI's cloud infrastructure is configured, monitored and audited against its compliance obligations. Source: https://docs.speakai.co/help/security/policies/cloud-hosting-compliance/ · Markdown: https://docs.speakai.co/help/security/policies/cloud-hosting-compliance/index.md **1. Purpose**

This policy establishes the compliance and audit requirements for cloud hosting providers utilized by Speak AI Inc. It ensures that cloud services meet security, privacy, and regulatory compliance obligations through independent audits, contractual controls, and continuous monitoring. **2. Scope**

This policy applies to all cloud hosting providers used by Speak AI Inc., including but not limited to Infrastructure as a Service (IaaS), Platform as a Service (PaaS), and Software as a Service (SaaS) providers. **3. Compliance & Security Requirements** **3.1 Independent Security Assessments** - Cloud providers must undergo independent security audits and provide valid compliance certifications, including but not limited to: * SOC 2 Type II * ISO 27001 * NIST 800-53 * GDPR Compliance (if applicable) * HIPAA Compliance (if applicable) * PCI-DSS Compliance (if applicable) - Audit reports must be reviewed at least annually to assess ongoing compliance. **3.2 Contractual Obligations** - All cloud service agreements must include provisions for: * Data ownership and protection measures. * Incident response obligations and breach notification timelines. * Security responsibilities, including encryption, access control, and data segregation. * The right to request security assessment reports. * Compliance with relevant privacy laws and regulatory requirements. **3.3 Monitoring & Continuous Compliance** - Cloud environments must be monitored for security vulnerabilities and misconfigurations. - Automated tools must be used for real-time security logging and event detection. - Cloud security policies must be reviewed regularly to align with evolving threats and regulatory changes. **3.4 Data Protection & Access Control** - Data stored in the cloud must be encrypted both in transit and at rest. - Multi-Factor Authentication (MFA) must be enforced for administrative access to cloud resources. - Access to cloud environments must be granted based on the principle of least privilege (PoLP). - Vendor access must be restricted and subject to periodic review. **4. Compliance Validation & Reporting** - Speak AI Inc. reserves the right to conduct audits of cloud service providers, either directly or through third-party assessments. - Compliance validation reports must be maintained for regulatory and contractual requirements. - Any significant security findings must be remediated within an agreed-upon timeframe. **5. References & Supporting Documents**- Speak AI **Third-Party Security Policy**: [/help/security/policies/third-party-security/](/help/security/policies/third-party-security/) - Speak AI **Information Security Program Policy**: [/help/security/policies/information-security-program/](/help/security/policies/information-security-program/) **6. Contact Information** For any inquiries related to cloud hosting compliance and security, please contact **success@speakai.co**. --- This policy will be reviewed periodically to ensure compliance with evolving security standards and regulatory requirements. # Collaborative computing policy > Controls on shared workspaces, conferencing and collaboration tools, including recording and remote access. Source: https://docs.speakai.co/help/security/policies/collaborative-computing/ · Markdown: https://docs.speakai.co/help/security/policies/collaborative-computing/index.md **1. Purpose**

This policy establishes security requirements for collaborative computing tools, including video conferencing, virtual whiteboards, document sharing, and other shared platforms used within Speak AI. The goal is to protect sensitive data, prevent unauthorized access, and ensure compliance with cybersecurity best practices. **2. Scope**

This policy applies to all employees, contractors, and third parties utilizing collaborative computing tools within Speak AI’s environment, including but not limited to Zoom, Microsoft Teams, Google Meet, Miro, and shared cloud-based document platforms. **3. Security Standards** **3.1 Authentication & Access Control** - Multi-Factor Authentication (MFA) must be enabled for all collaborative computing platforms. - User access must be granted based on least privilege principles. - External participants must be approved before accessing collaboration sessions. **3.2 Data Protection & Privacy** - Meeting recordings, chat logs, and shared documents containing sensitive information must be encrypted and stored securely. - Confidential discussions must be restricted to authorized personnel only. - Screen sharing must be disabled by default and enabled only when necessary. **3.3 Session Security & Monitoring** - Meetings and collaborative sessions must have unique passwords or authentication links. - Auto-lock features must be enabled to prevent unauthorized access after a session starts. - Sessions must be monitored for unusual activity or unauthorized users. **3.4 Third-Party Integrations & Compliance** - Third-party applications integrated into collaborative computing platforms must undergo security review. - All tools must comply with Speak AI’s **Privacy Policy** and **Third-Party Security Policy**. **3.5 Usage Guidelines & Employee Responsibilities**- Employees must follow Speak AI’s **Acceptable Use Policy** when using collaborative computing tools. - Any security incidents related to collaborative tools must be reported immediately. - Sensitive discussions should take place in private sessions with restricted participants. **4. Compliance & Enforcement** - Regular security audits must be conducted on collaborative computing tools. - Unauthorized use or security violations may result in access restrictions or disciplinary actions. **5. References & Supporting Documents**- Speak AI **Privacy Policy**: [https://speakai.co/privacy-policy/](https://speakai.co/privacy-policy/?utm_source=docs&utm_medium=referral&utm_campaign=help) - Speak AI **Third-Party Security Policy**: [/help/security/policies/third-party-security/](/help/security/policies/third-party-security/) - Speak AI **Acceptable Use Policy**: \[Link to Acceptable Use Policy\] **6. Contact Information**

For security concerns or policy clarifications, contact **success@speakai.co**. --- This policy is subject to periodic review and updates to align with emerging security threats and best practices. # Data classification policy > The tiers Speak AI classifies data into and the handling, storage and sharing rules that follow from each. Source: https://docs.speakai.co/help/security/policies/data-classification/ · Markdown: https://docs.speakai.co/help/security/policies/data-classification/index.md ## 1. Purpose and Scope The purpose of this Data Classification Policy is to establish a framework for categorizing Speak AI Inc.'s ("Speak AI") data based on its sensitivity and value to the organization. This classification guides the application of appropriate security controls to protect data according to its level of sensitivity. This policy applies to all employees, contractors, and third parties who handle Speak AI's data. ## 2. Policy Statement Speak AI is committed to ensuring the confidentiality, integrity, and availability of its data by implementing a formal data classification policy. This policy categorizes data to apply suitable security measures, ensuring that sensitive data is adequately protected against unauthorized access, disclosure, alteration, and destruction. ## 3. Data Classification Framework - **Public:** Data that can be made publicly available without any restrictions. Examples include marketing materials and publicly released white papers. - **Internal Use Only:** Data that is sensitive to the company but not classified as confidential. This may include internal emails, internal project documents, and non-sensitive business operations data. - **Confidential:** Data that, if disclosed, could potentially harm the company or its clients. Examples include business contracts, client information, and proprietary business processes. - **Restricted:** The most sensitive data that requires the highest level of security. This category includes data such as personal identification information (PII) and financial records. We ensure that such data is managed in compliance with applicable privacy standards and organizational policies. ## 4. Implementation of Security Controls - **Public Data:** * No specific security controls are required beyond general access management practices. - **Internal Use Only Data:** * Protected with access controls to ensure only authorized personnel can access this data. - **Confidential Data:** * Encrypted at rest. * Access controlled through role-based access controls (RBAC). * Audit logs maintained for all access and processing activities. - **Restricted Data:** * Strong encryption measures applied both at rest. * Strict access controls with multi-factor authentication (MFA). * Comprehensive audit logs and real-time monitoring. * Regular security assessments and compliance checks. ## 5. Regular Review and Updating The data classification policy is reviewed at least annually or more frequently if significant changes occur in our business environment or in relevant laws and regulations. This ensures that the policy remains effective and relevant to current conditions. ## 6. Training and Awareness All employees receive training on the data classification policy as part of their onboarding process, with regular refresher courses annually or whenever significant updates to the policy are made. This training ensures that employees understand the importance of data classification and know how to handle data appropriately. ## 7. Compliance and Enforcement Compliance with the data classification policy is mandatory for all employees. Our the leadership team conducts regular audits to ensure that the policy is properly enforced and that data is handled according to its classification. ## 8. Documentation and Accessibility The data classification policy is well-documented and readily accessible to all employees. Documentation includes detailed guidelines on how to classify data and the specific security controls that must be applied to each classification level. ## 9. Roles and Responsibilities - **IT Team**: Responsible for implementing and maintaining security controls based on data classification levels. - **Department Managers**: Responsible for ensuring that data within their departments is classified appropriately and that employees adhere to the policy. - **All Employees**: Responsible for understanding and applying the data classification policy to their daily activities, ensuring data is handled according to its classification. ## 10. Policy Review This policy will be reviewed annually or as needed to ensure its relevance and effectiveness. Changes to the policy will be communicated to all employees. ## 11. Contact Information For any inquiries or issues related to this Data Classification Policy, please contact the IT Team at [success@speakai.co](mailto:success@speakai.co). # Disaster recovery plan > Recovery objectives, backup restoration steps and the sequence Speak AI follows to bring systems back after a major failure. Source: https://docs.speakai.co/help/security/policies/disaster-recovery-plan/ · Markdown: https://docs.speakai.co/help/security/policies/disaster-recovery-plan/index.md **Purpose:**

This policy defines the frequency and procedures for testing Speak AI’s Disaster Recovery (DR) Plan to ensure that Speak AI can recover critical IT services in case of a disaster or failure, including reliance on providers such as AWS, Google Translation, MongoDB, and other infrastructure providers. **Scope:**

This policy applies to all critical IT infrastructure supporting Speak AI’s services, including data storage, transcription, and translation services. **Policy Statement:**

Speak AI will conduct regular tests of its Disaster Recovery Plan to ensure that all critical IT infrastructure and services can be recovered promptly in the event of a disaster. The DR plan will be tested annually, and additional tests will be conducted if significant infrastructure changes are made. **Testing Objectives:** - Ensure the integrity and recoverability of data stored on AWS S3 and MongoDB. - Validate that critical services such as transcription, translation, and large language model integrations (e.g., OpenAI GPT-4, Anthropic Claude-3) can be restored in case of failure. - Assess communication and coordination protocols between Speak AI and its service providers. **Testing Schedule:** 1. **Annual Test:**
A full DR test will be conducted annually. This test will involve a simulated failure scenario (e.g., AWS S3 outage, MongoDB corruption) to ensure the effectiveness of the recovery process. 1. **Review and Update:**
The DR plan will be updated based on the results of the test or in response to any significant infrastructure updates or changes to service providers. Any changes to the plan will be communicated to relevant stakeholders. **Documentation and Reporting:**

All test results will be documented, and any deficiencies or gaps will be addressed through corrective actions. Test outcomes will be shared with the executive team, and improvements will be implemented as needed. **Responsibility:**

The CTO is responsible for overseeing the Disaster Recovery Plan testing and ensuring all necessary resources, including third-party provider cooperation, are in place to conduct tests effectively. # DMZ security policy > How Speak AI isolates internet-facing systems from internal networks and what may be placed in the DMZ. Source: https://docs.speakai.co/help/security/policies/dmz-security/ · Markdown: https://docs.speakai.co/help/security/policies/dmz-security/index.md **1. Purpose**

This policy establishes security requirements for Speak AI Inc.'s Demilitarized Zone (DMZ) to protect internal networks from external threats while ensuring controlled access to public-facing services. **2. Scope**

This policy applies to all systems, services, and network devices within Speak AI Inc.'s DMZ infrastructure, including firewalls, web servers, application servers, and proxy servers. **3. DMZ Security Requirements** **3.1 Network Segmentation** - The DMZ must be logically and physically separated from internal and external networks. - Firewalls must enforce strict access control between the DMZ, internal network, and the internet. - Direct connections between internal systems and the internet must be prohibited. **3.2 Access Restrictions** - Only explicitly authorized services should be hosted within the DMZ. - External access to the DMZ must be limited to necessary protocols and services (e.g., HTTPS, DNS, and SMTP) with restricted source and destination IPs. - Internal access from the DMZ to core network resources should be strictly controlled and monitored. **3.3 Authentication & Authorization** - All remote administrative access to DMZ systems must require multi-factor authentication (MFA). - Role-based access control (RBAC) must be enforced to limit user privileges based on job responsibilities. - Service accounts must have the least privilege necessary for functionality and must not be shared. **3.4 Monitoring & Logging** - All network traffic into and out of the DMZ must be logged and monitored for anomalies. - Intrusion detection and prevention systems (IDS/IPS) must be deployed to analyze DMZ traffic. - Logs from DMZ systems must be forwarded to a centralized log management system and reviewed regularly. **3.5 Patching & Vulnerability Management**- All DMZ systems must be regularly patched and updated following the **Vulnerability Management Policy**. - Regular security assessments, including penetration testing, must be performed on DMZ-hosted services. - Unnecessary services, ports, and protocols must be disabled to reduce the attack surface. **3.6 Encryption & Secure Communications** - All data transmitted between DMZ servers and internal networks must be encrypted using industry-standard protocols (e.g., TLS, IPsec). - Insecure communication protocols (e.g., FTP, Telnet) must be prohibited. **3.7 Incident Response & Containment**- Security incidents involving DMZ systems must be escalated following the **Incident Reporting and Response Policy**. - Compromised DMZ systems must be isolated immediately to prevent lateral movement into internal networks. **4. Compliance & Enforcement** - Periodic security audits must be conducted to verify compliance with this policy. - Non-compliant systems or services must be remediated or removed from the DMZ. **5. References & Supporting Documents**- Speak AI **Network Security Policy**: /help/security/policies/network-security/ - Speak AI **Vulnerability Management Policy**: /help/security/policies/vulnerability-management/ - Speak AI **Incident Reporting and Response Policy**: /help/security/policies/incident-reporting-response/ **6. Contact Information** For questions or concerns regarding DMZ security, please contact **success@speakai.co**. --- This policy is subject to periodic review and updates to align with evolving security best practices and industry regulations. # Encrypted communications policy > Which channels must be encrypted, the protocols required, and how keys and certificates are handled. Source: https://docs.speakai.co/help/security/policies/encrypted-communications/ · Markdown: https://docs.speakai.co/help/security/policies/encrypted-communications/index.md **1. Purpose**

This policy establishes encryption requirements for all remote network connections to ensure data protection in transit and prevent unauthorized access to sensitive information. **2. Scope**

This policy applies to all employees, contractors, and third parties who access Speak AI Inc. systems remotely. It covers all communications involving the transmission of sensitive or confidential data. **3. Encryption Requirements** **3.1 General Encryption Standards** - All remote connections must use industry-standard encryption protocols such as TLS 1.2 or higher, IPsec, and SSH. - Data in transit must be encrypted using AES-256 or an equivalent secure encryption standard. - Legacy encryption protocols (e.g., SSL 3.0, TLS 1.0, and TLS 1.1) are prohibited. **3.2 Secure Remote Access** - Virtual Private Network (VPN) connections must use strong encryption protocols (e.g., OpenVPN, WireGuard, or IPsec-based VPNs). - Multi-Factor Authentication (MFA) is required for all remote access to internal systems. - Remote desktop access must be tunneled through a secure VPN or an encrypted remote access gateway. **3.3 Email & Communication Encryption** - All sensitive emails must be encrypted using end-to-end encryption tools such as S/MIME or PGP. - Internal messaging and collaboration tools must support encryption for data in transit. - File transfers containing sensitive data must be performed using encrypted channels (e.g., SFTP instead of FTP). **3.4 Wireless & Mobile Encryption** - Wireless networks accessing internal systems must enforce WPA3 encryption (or WPA2 if WPA3 is unavailable). - Mobile device communications must be encrypted using secure mobile device management (MDM) tools. - Employees using mobile devices for work must enable device encryption and secure their connections via VPN. **3.5 Monitoring & Compliance** - Network traffic must be monitored for compliance with encryption standards. - Any unauthorized or unencrypted remote connections will be blocked and investigated. - Periodic audits must be conducted to ensure encryption policies are followed. **4. Compliance & Enforcement** - Violations of this policy may result in disciplinary action, including termination of access to remote systems. - Employees are responsible for reporting any suspected breaches of encryption policies to the security team at **success@speakai.co**. **5. References & Supporting Documents**- Speak AI **Network Security Policy**: /help/security/policies/network-security/ - Speak AI **Access Management Policy**: /help/security/policies/access-management/ - Speak AI **Vulnerability Management Policy**: /help/security/policies/vulnerability-management/ **6. Contact Information** For any questions regarding this policy, contact **success@speakai.co**. --- This policy is subject to periodic review and updates to align with evolving security best practices and industry regulations. # Encryption policy > The algorithms, key lengths and key management practices Speak AI applies to data at rest and in transit. Source: https://docs.speakai.co/help/security/policies/encryption/ · Markdown: https://docs.speakai.co/help/security/policies/encryption/index.md ## 1. Purpose and Scope The purpose of this Encryption Policy is to establish guidelines for the use of encryption to protect the confidentiality, integrity, and availability of Speak AI Inc.'s ("Speak AI") sensitive data. This policy applies to all employees, contractors, and third parties who handle Speak AI's data, whether in transit or at rest. ## 2. Policy Statement Speak AI is committed to protecting its data by implementing robust encryption methods. This policy outlines the requirements for encrypting sensitive data to safeguard against unauthorized access, data breaches, and other security threats. ## 3. Data Classification - **Sensitive Data:** Includes, but is not limited to, personal information, financial data, proprietary information, and any other data classified as sensitive by Speak AI. - **Public Data:** Information that is intended for public use and does not require encryption. ## 4. Encryption Standards - **Data in Transit**: All sensitive data transmitted over networks must be encrypted using industry-standard encryption protocols, such as TLS (Transport Layer Security) or IPsec (Internet Protocol Security). - **Data at Rest**: All sensitive data stored on devices, servers, and storage systems must be encrypted using strong encryption algorithms such as AES (Advanced Encryption Standard) with a minimum key length of 256 bits. ## 5. Encryption Key Management - **Key Generation:** Encryption keys must be generated using approved algorithms and processes to ensure their strength and security. - **Key Storage:** Encryption keys must be stored securely, using key management solutions that comply with industry standards. Keys must not be stored in plaintext or hardcoded into software applications. - **Key Access:** Access to encryption keys must be restricted to authorized personnel only. Multi-factor authentication (MFA) should be used to access key management systems. - **Key Rotation:** Encryption keys must be rotated regularly and upon suspicion or detection of compromise. Key rotation schedules will be defined based on the sensitivity of the data and regulatory requirements. ## 6. Implementation and Usage - **Application Encryption:** Developers must integrate encryption into applications handling sensitive data, ensuring that data is encrypted during processing, storage, and transmission. - **Database Encryption:** Databases storing sensitive data must use encryption to protect data at rest. This includes full-database encryption or column-level encryption for specific sensitive fields. - **File and Disk Encryption:** Sensitive files and disks, including backups, must be encrypted to prevent unauthorized access. ## 7. Compliance and Monitoring - **Monitoring and Auditing:** Regular audits and monitoring will be conducted to verify compliance with this policy. Encryption practices will be reviewed to identify and address any gaps or weaknesses. ## 8. Incident Response - **Breach Response:** In the event of a data breach involving encrypted data, the IT Security Team will assess the extent of the breach and take appropriate measures to mitigate the impact. This includes re-encrypting data, rotating keys, and notifying affected parties as required by law. - **Reporting:** Any incidents involving encryption keys or encrypted data must be reported immediately to the IT Security Team. ## 9. Employee Training - **Security Awareness:** All employees and contractors must undergo regular training on encryption best practices and the importance of protecting sensitive data. - **Ongoing Education:** Continuous education programs will be conducted to keep users informed about the latest encryption technologies and threats. ## 10. Policy Review This policy will be reviewed annually or as needed to ensure its effectiveness and alignment with industry best practices and emerging security threats. Changes to the policy will be communicated to all users. ## 11. Contact Information For any inquiries or issues related to this Encryption Policy, please contact the IT Security Team at [success@speakai.co](mailto:success@speakai.co). # ESG policy > Speak AI's commitments on environmental impact, social responsibility and corporate governance. Source: https://docs.speakai.co/help/security/policies/esg/ · Markdown: https://docs.speakai.co/help/security/policies/esg/index.md ## Overview Speak AI Inc. is committed to responsible and sustainable business practices through our Environmental, Social, and Corporate Governance (ESG) initiatives. This policy outlines our commitment to ethical business operations, environmental sustainability, social responsibility, and strong governance practices. ## Environmental Commitment Speak AI recognizes the impact of business activities on the environment and is committed to reducing our carbon footprint and promoting sustainability. ## Key Initiatives: - **Energy Efficiency:** Optimize cloud computing usage and adopt energy-efficient technologies. - **Waste Reduction:** Minimize digital and physical waste, promoting paperless operations. - **Sustainable Procurement:** Favor vendors and partners who align with our environmental standards. - **Compliance with Regulations:** Adhere to all applicable environmental laws and regulations. ## Social Responsibility Speak AI values diversity, equity, and inclusion while ensuring the well-being of our employees, customers, and communities. ## Key Initiatives: - **Diversity and Inclusion:** Promote an inclusive work environment that respects all individuals regardless of race, gender, ethnicity, sexual orientation, or background. - **Employee Well-being:** Support employee mental health and work-life balance. - **Community Engagement:** Engage in initiatives that positively impact local and global communities. - **Customer Privacy & Security:** Maintain robust data protection practices to safeguard user information. ## Governance & Ethical Business Practices Strong governance is essential to ensure compliance, ethical behavior, and long-term business success. ## Key Initiatives: - **Transparency & Accountability:** Uphold high ethical standards in all business dealings. - **Regulatory Compliance:** Adhere to all applicable industry standards, laws, and policies. - **Risk Management:** Implement internal controls to identify and mitigate risks. - **Stakeholder Engagement:** Maintain open communication with employees, investors, and customers. ## References & Supporting Documents - **Speak AI Privacy Policy:** [https://speakai.co/privacy-policy/](https://speakai.co/privacy-policy/?utm_source=docs&utm_medium=referral&utm_campaign=help) - **Speak AI Business Continuity Plan:** [/help/security/policies/business-continuity-plan/](/help/security/policies/business-continuity-plan/) - **Speak AI Information Security Program Policy:** [/help/security/policies/information-security-program/](/help/security/policies/information-security-program/) For any ESG-related inquiries, contact us at **success@speakai.co**. # Ethical sourcing policy > The standards Speak AI requires of suppliers on labour, environmental and ethical conduct. Source: https://docs.speakai.co/help/security/policies/ethical-sourcing/ · Markdown: https://docs.speakai.co/help/security/policies/ethical-sourcing/index.md ## 1. Purpose Speak AI Inc. is committed to responsible procurement practices that uphold ethical labor, environmental sustainability, and strong governance standards. This policy establishes expectations for our suppliers, vendors, and partners to ensure ethical sourcing in our supply chain. ## 2. Scope This policy applies to all suppliers, vendors, and third-party service providers engaged with Speak AI Inc. It outlines the minimum standards required to do business with us and aligns with global ethical sourcing best practices. ## 3. Ethical Sourcing Standards Suppliers and vendors working with Speak AI Inc. are expected to adhere to the following principles: ## 3.1. Labor and Human Rights - No use of child labor or forced labor, including slavery or human trafficking. - Compliance with local labor laws regarding wages, benefits, working hours, and working conditions. - Freedom of association and the right to collective bargaining. - A workplace free from discrimination, harassment, and abuse. ## 3.2. Environmental Responsibility - Compliance with environmental laws and regulations. - Sustainable sourcing of materials and minimization of environmental impact. - Responsible waste management, water conservation, and energy efficiency. - Reduction of greenhouse gas emissions where applicable. ## 3.3. Business Integrity and Governance - Prohibition of bribery, corruption, and unethical business practices. - Compliance with all applicable laws and regulations, including anti-trust and anti-competition laws. - Transparent financial reporting and proper record-keeping. - Respect for intellectual property rights. ## 4. Supplier Compliance and Monitoring Speak AI Inc. reserves the right to assess supplier compliance with this policy through: - Self-assessment questionnaires. - Periodic audits and reviews. - Supplier certifications attesting compliance with ethical sourcing principles. Failure to meet the requirements of this policy may result in remediation actions, contract termination, or disengagement from our supply chain. ## 5. Reporting Violations Suppliers, employees, or stakeholders may report concerns regarding ethical sourcing violations to Speak AI Inc. at success@speakai.co. Reports will be handled confidentially, and retaliation against whistleblowers is strictly prohibited. ## 6. Continuous Improvement Speak AI Inc. is dedicated to continuous improvement in ethical sourcing. We will periodically review and update this policy to align with evolving best practices and regulatory changes. # Fraud detection and prevention policy > How Speak AI detects, reports and responds to suspected fraud against the company, its customers or its systems. Source: https://docs.speakai.co/help/security/policies/fraud-detection-prevention/ · Markdown: https://docs.speakai.co/help/security/policies/fraud-detection-prevention/index.md **1. Purpose**

This Fraud Detection & Prevention Policy establishes guidelines for identifying, preventing, and responding to fraudulent activities within Speak AI Inc. The policy aims to safeguard the company’s assets, ensure compliance with legal requirements, and promote ethical business conduct. **2. Scope**

This policy applies to all employees, contractors, vendors, and third parties who conduct business with Speak AI Inc. It encompasses all business operations, financial transactions, and digital activities related to fraud prevention. **3. Definition of Fraud**

Fraud includes, but is not limited to, the following activities: - Misrepresentation of financial statements - Identity theft and unauthorized access to company systems - Embezzlement or misappropriation of funds - Bribery and corruption - Manipulation of data for personal gain - Vendor or procurement fraud - Phishing, cyber fraud, and other digital fraud schemes **4. Fraud Prevention Measures**

Speak AI Inc. implements the following preventative measures to mitigate fraud risks: - **Internal Controls:** Regular audits and checks on financial transactions and access to sensitive information. - **Segregation of Duties:** Ensuring that no single employee has sole authority over critical financial processes. - **Background Checks:** Screening of new employees and vendors before engagement. - **Training & Awareness:** Mandatory fraud prevention training for all employees. - **Access Controls:** Implementation of multi-factor authentication and role-based access to sensitive data. - **Whistleblower Protection:** Confidential reporting mechanisms to encourage the reporting of suspected fraud without retaliation. **5. Fraud Detection Methods**

Speak AI Inc. utilizes the following methods to detect fraudulent activities: - **Automated Monitoring:** Use of AI and analytics to identify anomalies in financial transactions and system usage. - **Internal Audits:** Routine and surprise audits to identify discrepancies and suspicious activities. - **Incident Reporting:** A defined process for employees and stakeholders to report suspected fraud. - **Third-Party Assessments:** Periodic reviews of vendors and business partners to assess compliance with ethical standards. **6. Incident Response Procedures**

If fraudulent activity is suspected, Speak AI Inc. follows these steps: 1. **Immediate Reporting:** Employees must report suspected fraud to their manager or the leadership team at **success@speakai.co**. 1. **Investigation:** The the leadership team conducts a confidential investigation with support from legal and IT teams as necessary. 1. **Corrective Action:** If fraud is confirmed, Speak AI Inc. takes appropriate disciplinary action, including termination, legal action, or criminal prosecution. 1. **Process Improvement:** Post-incident analysis to strengthen internal controls and prevent future occurrences. **7. Compliance & Enforcement**

All employees and stakeholders must adhere to this policy. Violations of this policy may result in disciplinary action, including termination and legal prosecution. **8. Policy Review & Updates**

This policy is reviewed annually and updated as necessary to align with industry best practices and legal requirements. **9. Supporting Documents & References** - Speak AI Business Continuity Plan: [/help/security/policies/business-continuity-plan/](/help/security/policies/business-continuity-plan/) - Speak AI Incident Reporting and Response Policy: [/help/security/policies/incident-reporting-response/](/help/security/policies/incident-reporting-response/) For any questions or concerns, please contact **success@speakai.co**. # Health and safety compliance policy > Speak AI's obligations and practices for a safe working environment across offices and remote work. Source: https://docs.speakai.co/help/security/policies/health-safety-compliance/ · Markdown: https://docs.speakai.co/help/security/policies/health-safety-compliance/index.md ## 1. Purpose This Health & Safety Compliance Policy establishes Speak AI Inc.'s commitment to maintaining a safe and healthy workplace for all employees, contractors, and visitors. It outlines measures to prevent workplace hazards, ensure regulatory compliance, and promote a culture of safety and well-being. ## 2. Scope This policy applies to all employees, contractors, and third parties operating within Speak AI Inc. premises or engaged in company activities, whether on-site or remote. ## 3. Responsibilities - **Management:** Ensures compliance with health and safety regulations, provides necessary resources, and fosters a culture of safety. - **Employees & Contractors:** Follow established safety protocols, report hazards, and participate in health and safety training. - **Supervisors:** Monitor adherence to safety guidelines, address concerns, and take corrective action as needed. ## 4. Workplace Hazard Prevention - Conduct regular workplace risk assessments to identify potential hazards. - Implement measures to mitigate identified risks (e.g., ergonomic workspace adjustments, proper equipment maintenance, and protective measures for high-risk tasks). - Ensure proper labeling and handling of hazardous materials, where applicable. ## 5. Emergency Preparedness & Response - Develop and communicate an emergency response plan, including evacuation procedures, fire safety protocols, and first aid guidelines. - Maintain emergency contact information and ensure accessibility of first aid kits in all work locations. - Conduct periodic emergency drills to ensure readiness. ## 6. Health & Safety Training - Provide mandatory health and safety training for all employees and contractors. - Ensure employees are aware of workplace safety procedures and responsibilities. - Conduct periodic refresher training to reinforce compliance with safety standards. ## 7. Regulatory Compliance - Adhere to all relevant local, provincial, and federal occupational health and safety laws and regulations. - Conduct periodic compliance audits and address any identified gaps. - Maintain up-to-date documentation of health and safety policies and procedures. ## 8. Reporting & Incident Management - Establish a clear reporting mechanism for workplace injuries, near-misses, and safety concerns. - Investigate all incidents promptly and implement corrective actions to prevent recurrence. - Protect whistleblowers and employees who report safety concerns from retaliation. ## 9. Remote Work Safety - Provide guidelines for maintaining ergonomic home office setups. - Encourage employees to take regular breaks and follow best practices for remote work health and safety. - Offer resources for mental health and well-being. ## 10. Continuous Improvement - Regularly review and update health and safety policies to align with evolving regulations and industry best practices. - Seek feedback from employees to improve workplace safety initiatives. - Engage with external health and safety experts as needed to enhance compliance efforts. ## 11. Contact Information For any questions or concerns regarding health and safety compliance, employees may contact **success@speakai.co**. --- This Health & Safety Compliance Policy reflects Speak AI Inc.'s commitment to fostering a safe and compliant work environment for all stakeholders. # Human resource policy > Hiring, screening, onboarding, conduct and offboarding practices, including the security duties attached to each. Source: https://docs.speakai.co/help/security/policies/human-resource/ · Markdown: https://docs.speakai.co/help/security/policies/human-resource/index.md ## 1. Purpose and Scope The purpose of this Human Resource Policy is to establish guidelines for managing Speak AI Inc.'s ("Speak AI") workforce effectively and to ensure compliance with relevant employment laws and regulations. This policy applies to all employees, contractors, and interns working at Speak AI. ## 2. Policy Statement Speak AI is committed to creating a positive, inclusive, and productive work environment. This policy outlines the company's approach to recruitment, onboarding, training, performance management, and employee relations, ensuring fair and equitable treatment for all. ## 3. Recruitment and Hiring - **Equal Opportunity Employment:** Speak AI is an equal opportunity employer and does not discriminate based on race, color, religion, gender, sexual orientation, national origin, age, disability, or any other protected characteristic. - **Job Postings:** Job vacancies will be advertised internally and externally to attract a diverse pool of qualified candidates. - **Selection Process:** Candidates will be selected based on their qualifications, experience, and suitability for the role. The selection process may include interviews, assessments, and background checks as necessary. ## 4. Onboarding - **Orientation:** New employees will undergo an orientation program to familiarize them with Speak AI's culture, policies, and procedures. - **Training:** New hires will receive job-specific training to equip them with the necessary skills and knowledge to perform their roles effectively. ## 5. Employee Development - **Continuous Learning:** Speak AI encourages continuous learning and professional development. Employees are provided with opportunities to attend training programs, workshops, and conferences relevant to their roles. - **Career Advancement:** Speak AI supports career growth and advancement. Employees are encouraged to discuss their career aspirations with their managers and seek opportunities for promotion and development within the company. ## 6. Performance Management - **Performance Reviews:** Employees will participate in regular performance reviews to assess their progress, set goals, and receive feedback. Reviews will be conducted quarterly. - **Performance Improvement:** Employees who do not meet performance expectations will receive support and guidance to improve. This may include additional training, mentoring, or a performance improvement plan. ## 7. Compensation and Benefits - **Competitive Salaries:** Speak AI offers competitive salaries that are commensurate with industry standards and employee experience. - **Benefits Package:** Employees are eligible for a comprehensive benefits package, which may include health insurance, retirement plans, paid time off, and other perks. Details of the benefits package will be provided upon hire. ## 8. Employee Conduct - **Code of Conduct:** Employees are expected to adhere to Speak AI's Code of Conduct, which outlines the expected standards of behavior, ethics, and professionalism. - **Conflict Resolution:** Speak AI is committed to resolving workplace conflicts promptly and fairly. Employees are encouraged to report any issues to their manager or the HR department. ## 9. Diversity and Inclusion - **Inclusive Workplace:** Speak AI is dedicated to fostering an inclusive workplace where all employees feel valued and respected. The company actively promotes diversity and inclusion initiatives. - **Anti-Harassment Policy:** Speak AI has a zero-tolerance policy for harassment and discrimination. Any reported incidents will be investigated promptly, and appropriate action will be taken. ## 10. Health and Safety - **Safe Work Environment:** Speak AI is committed to providing a safe and healthy work environment. Employees are required to follow all safety protocols and report any hazards or incidents immediately. - **Wellness Programs:** Speak AI offers wellness programs to support employees' physical and mental well-being. ## 11. Termination and Off-boarding - **Voluntary Termination:** Employees who choose to resign are required to provide two weeks notice. An exit interview will be conducted to gather feedback and facilitate a smooth transition. - **Involuntary Termination:** In cases of involuntary termination, Speak AI will follow a fair and transparent process, ensuring compliance with employment laws and providing appropriate severance if applicable. - **Return of Company Property:** Departing employees must return all company property, including laptops, access cards, and documents, before their last working day. ## 12. Policy Review This policy will be reviewed annually or as needed to ensure its effectiveness and compliance with legal and regulatory requirements. Any changes to the policy will be communicated to all employees. ## 13. Contact Information For any inquiries or issues related to this Human Resource Policy, please contact the HR department at [success@speakai.co](mailto:success@speakai.co). # Incident reporting and response policy > How a security incident is reported, triaged, escalated, contained and communicated, including customer notification. Source: https://docs.speakai.co/help/security/policies/incident-reporting-response/ · Markdown: https://docs.speakai.co/help/security/policies/incident-reporting-response/index.md ## 1. Purpose and Scope The purpose of this Incident Reporting and Response Policy is to outline the procedures and responsibilities for identifying, reporting, and responding to security incidents at Speak AI Inc. ("Speak AI"). This policy applies to all employees, contractors, and third parties who use Speak AI's information systems and resources. ## 2. Policy Statement Speak AI is committed to maintaining the security and integrity of its information systems and data. This policy establishes a structured approach for managing security incidents to minimize impact, ensure rapid resolution, and prevent recurrence. ## 3. Definitions - **Security Incident:** Any event that has the potential to compromise the confidentiality, integrity, or availability of Speak AI's information systems or data. Examples include data breaches, malware attacks, unauthorized access, and loss or theft of devices. ## 4. Incident Reporting - **Immediate Reporting:** All employees, contractors, and third parties must immediately report any suspected or confirmed security incidents to the IT Team. Reports can be made via email at [success@speakai.co](mailto:success@speakai.co). - **Incident Details:** When reporting an incident, the following information should be provided: * Description of the incident * Date and time of discovery * Systems and data affected * Contact information of the person reporting the incident ## 5. Incident Response Procedure - **Identification and Assessment:** * The IT Team will verify and classify the reported incident. * An initial assessment will determine the severity and potential impact of the incident. - **Containment:** * Immediate steps will be taken to contain the incident and prevent further damage. This may include isolating affected systems, revoking access, and applying temporary fixes. - **Investigation:** * A thorough investigation will be conducted to identify the root cause of the incident. * Evidence will be collected and documented for analysis and potential legal actions. - **Mitigation and Eradication:** * The IT Team will develop and implement a remediation plan to address the root cause and eliminate the threat. * Systems will be thoroughly cleaned, and security patches or updates will be applied. - **Recovery:** * Affected systems and services will be restored to normal operations. * Data integrity will be verified, and backups will be used if necessary. - **Communication:** * Relevant stakeholders, including affected users, management, and regulatory bodies, will be informed about the incident, its impact, and the steps taken for resolution. * Regular updates will be provided throughout the incident response process. - **Post-Incident Review:** * A post-incident review will be conducted to evaluate the response and identify areas for improvement. * Lessons learned will be documented, and corrective actions will be implemented to prevent future incidents. ## 6. Training and Awareness - **Employee Training:** All employees and contractors must undergo regular training on incident reporting and response procedures. Training sessions will cover how to recognize security incidents and the steps to report them. - **Awareness Programs:** Ongoing awareness programs will be conducted to reinforce the importance of timely incident reporting and adherence to response procedures. ## 7. Documentation and Record Keeping - **Incident Log:** An incident log will be maintained to record all reported incidents, including details of the incident, response actions taken, and final resolution. - **Reports:** Detailed incident reports will be prepared and stored for reference and compliance purposes. ## 8. Compliance and Review - **Policy Compliance:** Compliance with this policy is mandatory for all employees, contractors, and third parties. Non-compliance may result in disciplinary actions. - **Policy Review:** This policy will be reviewed annually or as needed to ensure its effectiveness and alignment with industry best practices and regulatory requirements. ## 9. Contact Information For any inquiries or issues related to this Incident Reporting and Response Policy, please contact the IT Team at [success@speakai.co](mailto:success@speakai.co). # Information classification policy > How information is labeled by sensitivity and the handling requirements each label carries. Source: https://docs.speakai.co/help/security/policies/information-classification/ · Markdown: https://docs.speakai.co/help/security/policies/information-classification/index.md ## 1. Purpose The purpose of this policy is to establish a framework for classifying and protecting information assets at Speak AI Inc. based on sensitivity, regulatory requirements, business value, and risk exposure. This policy ensures that information is handled appropriately to maintain confidentiality, integrity, and availability. ## 2. Scope This policy applies to all employees, contractors, and third parties who have access to Speak AI Inc.'s information assets, including but not limited to digital records, emails, reports, audio/video data, customer data, and documentation. ## 3. Information Classification Levels Speak AI Inc. classifies information into the following categories: ## 3.1. Public - Description: Information that is intended for public release and poses no risk if disclosed. - Examples: Marketing materials, website content, published reports, blog posts. - Handling: No restrictions on access, storage, or distribution. ## 3.2. Internal Use - Description: Information that is restricted to Speak AI Inc. employees and authorized partners. - Examples: Internal emails, process documentation, operational reports, internal training materials. - Handling: Shared only with authorized individuals within Speak AI Inc.; minimal security controls required. ## 3.3. Confidential - Description: Information that, if disclosed, could cause moderate damage to Speak AI Inc., its customers, or stakeholders. - Examples: Customer communications, unpublished research, business development plans, pricing strategies. - Handling: Encryption required for storage and transmission; limited access based on business need. ## 3.4. Restricted - Description: Highly sensitive information that, if compromised, could cause significant harm to Speak AI Inc. or its customers. - Examples: Personally Identifiable Information (PII), payment details, authentication credentials, proprietary code, and confidential legal agreements. - Handling: Strong encryption required; access limited to essential personnel only; storage in secure environments. ## 4.1. Management - Approves and oversees the implementation of this policy. - Ensures adherence to legal and regulatory requirements. ## 4.2. Employees & Contractors - Understand and apply information classification levels when handling company data. - Report any suspected policy violations or data breaches. ## 4.3. IT & Security Team - Implements technical controls to enforce classification policies. - Conducts periodic reviews to ensure compliance. ## 5. Information Handling & Protection Requirements | Classification Level | Access Control | Storage | Transmission | Disposal | | --- | --- | --- | --- | --- | | Public | No restrictions | No restrictions | No restrictions | No restrictions | | Internal Use | Limited to employees/authorized personnel | Basic security controls | Secure transmission recommended | Secure disposal preferred | | Confidential | Role-based access control (RBAC) | Encryption at rest | Encrypted transmission | Secure deletion required | | Restricted | Strict access controls | Strong encryption | Encrypted transmission with multi-factor authentication (MFA) | Secure destruction required | ## 6. Compliance & Enforcement Failure to comply with this policy may result in disciplinary actions, including but not limited to access revocation, termination, or legal action as necessary. ## 7. Review & Updates This policy will be reviewed annually or as required by changes in business operations or legal requirements. --- For additional information, please refer to Speak AI's **[Data Classification Policy](/help/security/policies/data-classification/)** or contact **[success@speakai.co](mailto:success@speakai.co)**. # Information security program policy > The governing document for Speak AI's security program: scope, roles, responsibilities and review cadence. Source: https://docs.speakai.co/help/security/policies/information-security-program/ · Markdown: https://docs.speakai.co/help/security/policies/information-security-program/index.md ## 1. Purpose and Scope The purpose of this Information Security Program Policy is to establish the framework and principles for protecting the confidentiality, integrity, and availability of information and systems within Speak AI Inc. ("Speak AI"). This policy applies to all employees, contractors, and third parties accessing Speak AI's information systems and data. ## 2. Policy Statement Speak AI is committed to maintaining a robust information security program that aligns with industry best practices and regulatory requirements. This policy outlines the strategies and controls implemented to safeguard sensitive data, manage risks, and ensure compliance with applicable laws and standards. ## 3. Information Security Objectives The primary objectives of Speak AI's information security program are: - To protect the confidentiality, integrity, and availability of information. - To identify and mitigate security risks. - To ensure compliance with relevant legal, regulatory, and contractual requirements. - To promote a security-conscious culture within the organization. ## 4. Roles and Responsibilities - **Chief Technology Officer (CTO):** Responsible for the overall development, implementation, and management of the information security program. - **IT Team:** Tasked with monitoring, assessing, and responding to security threats and incidents. - **All Employees and Contractors:** Required to adhere to the information security policies and procedures and report any security incidents. ## 5. Risk Management Speak AI employs a risk-based approach to information security management, which includes: - Conducting regular risk assessments to identify potential threats and vulnerabilities. - Implementing appropriate controls to mitigate identified risks. - Continuously monitoring and reviewing the effectiveness of risk management activities. ## 6. Data Protection - **Data Encryption:** All sensitive data, including personal and sensitive information, is encrypted at rest and in transit using industry-standard encryption protocols. - **Data Retention and Deletion**: Data is retained only for as long as necessary to fulfill its intended purpose and is securely deleted according to the Data Retention Policy. - **Access Controls:** Access to sensitive data is restricted to authorized personnel only and is enforced through strong authentication and authorization mechanisms. ## 7. Incident Response Speak AI has established an incident response plan to effectively manage and respond to security incidents. This includes: - Immediate containment and mitigation of the incident. - Investigation and analysis to determine the root cause. - Communication with affected stakeholders. - Implementation of corrective actions to prevent recurrence. ## 8. Security Awareness and Training All employees and contractors are required to participate in regular security awareness and training programs. These programs are designed to educate staff on security best practices, the importance of data protection, and how to recognize and respond to security threats. ## 9. Compliance and Audit Speak AI ensures compliance with relevant legal, regulatory, and contractual requirements through: Regular internal and external audits of the information security program. Continuous monitoring and updating of security policies and procedures to reflect changes in regulatory requirements and industry standards. ## 10. Policy Review This policy will be reviewed on an annual basis or as needed to ensure its relevance and effectiveness in addressing information security challenges. The review process will consider feedback from stakeholders, changes in the threat landscape, and advancements in security technologies. ## 11. Contact Information For any inquiries or requests related to this Information Security Program Policy, please contact the Information Security Team at [success@speakai.co](mailto:success@speakai.co). # Internal compliance and ethics program > How Speak AI governs ethical conduct, raises concerns, investigates them and protects those who report. Source: https://docs.speakai.co/help/security/policies/internal-compliance-ethics-program/ · Markdown: https://docs.speakai.co/help/security/policies/internal-compliance-ethics-program/index.md **1. Purpose**

The Internal Compliance & Ethics Program outlines Speak AI Inc.’s commitment to ethical business practices, legal compliance, and integrity in all aspects of its operations. This policy provides guidance on compliance expectations, ethical behavior, and mechanisms for reporting violations, including whistleblower protections. **2. Scope**

This policy applies to all Speak AI Inc. employees, contractors, and business partners engaged in activities on behalf of the company. **3. Ethical Conduct & Compliance Expectations** - All employees must comply with applicable laws, regulations, and company policies. - Employees are expected to act with honesty, integrity, and professionalism in all business dealings. - Conflicts of interest must be disclosed and avoided. - Speak AI Inc. does not tolerate fraud, bribery, or corrupt practices. **4. Whistleblower Protection & Reporting Mechanisms** - Employees and stakeholders are encouraged to report suspected unethical behavior, misconduct, or violations of law. - Reports can be submitted anonymously via **success@speakai.co**. - Speak AI Inc. strictly prohibits retaliation against individuals who report concerns in good faith. - Investigations will be conducted fairly, promptly, and confidentially when possible. **5. Compliance Training & Awareness** - Employees will receive periodic training on compliance and ethics-related topics. - Compliance materials and updates will be readily available. - Employees must certify their understanding of and adherence to compliance policies annually. **6. Disciplinary Measures**

Violations of this policy may result in disciplinary action, up to and including termination of employment or legal action where applicable. **7. Continuous Improvement & Policy Review**

Speak AI Inc. is committed to regularly reviewing and updating this policy to ensure alignment with legal requirements and best practices. **8. Supporting Documents & References** - Speak AI Terms of Service: [https://speakai.co/terms-of-service/](https://speakai.co/terms-of-service/?utm_source=docs&utm_medium=referral&utm_campaign=help) - Speak AI Privacy Policy: [https://speakai.co/privacy-policy/](https://speakai.co/privacy-policy/?utm_source=docs&utm_medium=referral&utm_campaign=help) For any questions or clarifications regarding this policy, please contact **success@speakai.co**. # Internet of Things security policy > Controls for connected devices on Speak AI networks, covering approval, segmentation, patching and monitoring. Source: https://docs.speakai.co/help/security/policies/internet-things-security/ · Markdown: https://docs.speakai.co/help/security/policies/internet-things-security/index.md **1. Purpose**

This policy establishes security standards and best practices for Internet of Things (IoT) devices connected to Speak AI’s infrastructure to mitigate risks, protect sensitive data, and ensure compliance with cybersecurity regulations. **2. Scope**

This policy applies to all IoT devices deployed within Speak AI’s environment, including but not limited to smart sensors, industrial control systems, security cameras, and connected office equipment. **3. Security Standards** **3.1 Device Authentication & Access Control** - All IoT devices must support authentication mechanisms to prevent unauthorized access. - Unique credentials must be assigned to each device; default passwords must be changed before deployment. - Multi-Factor Authentication (MFA) must be enabled where supported. - Access to IoT devices must be restricted based on least privilege principles. **3.2 Data Encryption & Transmission Security** - All data transmitted to and from IoT devices must be encrypted using industry-standard protocols (e.g., TLS 1.2+ or IPsec). - Sensitive data stored on IoT devices must be encrypted at rest. - IoT communications should be segmented from the corporate network using VLANs or dedicated networks. **3.3 Patch Management & Software Updates** - All IoT devices must be regularly updated with security patches and firmware updates. - Automated patching mechanisms should be enabled where possible. - Devices that cannot be updated must be reviewed for potential replacement or mitigation strategies. **3.4 Network Segmentation & Monitoring** - IoT devices must be isolated from critical business systems through network segmentation. - Anomaly detection and logging must be enabled to monitor device activity for security threats. - Unauthorized IoT devices detected on the network must be immediately investigated and, if necessary, removed. **3.5 Physical Security & Asset Management** - IoT devices must be physically secured to prevent tampering. - An asset inventory must be maintained for all IoT devices, including device details, firmware versions, and ownership. - Decommissioned devices must be securely wiped or destroyed before disposal. **4. Compliance & Enforcement**- IoT devices must be compliant with Speak AI’s **Network Security Policy** and **Vulnerability Management Policy**. - Regular security audits must be conducted to identify and mitigate IoT-related risks. - Non-compliant devices must be removed or remediated immediately. **5. References & Supporting Documents**- Speak AI **Network Security Policy**: [/help/security/policies/network-security/](/help/security/policies/network-security/) - Speak AI **Vulnerability Management Policy**: [/help/security/policies/vulnerability-management/](/help/security/policies/vulnerability-management/) - Speak AI **Asset Management Policy**: [/help/security/policies/asset-management/](/help/security/policies/asset-management/) **6. Contact Information** For security concerns or policy clarifications, contact **success@speakai.co**. --- This policy is subject to periodic review and updates to align with emerging security threats and best practices. # Log management policy > What Speak AI logs, how long logs are kept, how they are protected from tampering and who may read them. Source: https://docs.speakai.co/help/security/policies/log-management/ · Markdown: https://docs.speakai.co/help/security/policies/log-management/index.md ## 1. Purpose and Scope The purpose of this Log Management Policy is to establish guidelines for the collection, retention, and management of log data to ensure the security, availability, and integrity of Speak AI Inc.'s ("Speak AI") information systems. This policy applies to all employees, contractors, and third parties responsible for managing and maintaining Speak AI's systems. ## 2. Policy Statement Speak AI is committed to maintaining effective log management practices to support security monitoring, incident response, and regulatory compliance. This policy outlines the requirements for generating, storing, and analyzing log data to detect and respond to security incidents and ensure accountability. ## 3. Log Generation - **Log Sources:** Logging must be enabled on all critical systems, applications, and network devices, including servers and databases. - **Log Types:** Logs should capture relevant events, such as user authentication, access to sensitive data, system errors, configuration changes, and security alerts. - **Time stamping:** All log entries must include accurate timestamps synchronized with a reliable time source to ensure consistency across systems. ## 4. Log Collection and Storage - **Centralized Logging:** Log data should be collected and aggregated in a centralized logging system to facilitate monitoring and analysis. This system should be protected against unauthorized access and tampering. - **Storage Duration:** Log data are retained securely for investigation for any security breach incident. - **Storage Security:** Logs must be stored securely to prevent unauthorized access, alteration, or deletion. This includes using encryption and access controls to protect log data. ## 5. Log Analysis and Monitoring - **Regular Monitoring:** Logs should be monitored regularly to detect suspicious activities, potential security incidents, and operational issues. Automated tools and alerts should be used to identify anomalies and trigger timely responses. - **Log Review:** Periodic reviews of log data should be conducted by authorized personnel to ensure that logging mechanisms are functioning correctly and to identify any gaps or weaknesses in log management practices. - **Incident Response:** In the event of a security incident, relevant logs should be analyzed promptly to determine the cause, impact, and necessary remediation steps. Logs should be preserved for potential legal or forensic investigations. ## 6. Access Controls - **Restricted Access:** Access to log data should be restricted to authorized personnel only. Role-based access controls should be implemented to ensure that users have access only to the logs necessary for their job functions. - **Audit Trails:** Access to log data must be logged and monitored to ensure accountability and detect any unauthorized access attempts. ## 7. Compliance and Reporting - **Reporting:** Regular reports on log management activities, including log generation, storage, and analysis, should be provided to relevant stakeholders to ensure transparency and accountability. ## 8. Training and Awareness - **Employee Training:** All employees involved in log management activities must receive regular training on log management policies, procedures, and best practices. - **Ongoing Education:** Continuous education programs will be conducted to keep staff informed about the latest developments in log management technologies and techniques. ## 9. Policy Review This policy will be reviewed annually or as needed to ensure its effectiveness and alignment with industry best practices and emerging security threats. Changes to the policy will be communicated to all stakeholders. ## 10. Contact Information For any inquiries or issues related to this Log Management Policy, please contact the IT Security Team at [success@speakai.co](mailto:success@speakai.co). # Modern slavery policy > Speak AI's position and due-diligence practices on forced labour and trafficking in its operations and supply chain. Source: https://docs.speakai.co/help/security/policies/modern-slavery/ · Markdown: https://docs.speakai.co/help/security/policies/modern-slavery/index.md **1. Purpose** Speak AI Inc. is committed to ensuring that modern slavery and human trafficking do not take place within our business operations or supply chains. This policy outlines our commitment to ethical labor practices, compliance with applicable laws, and the steps we take to prevent and mitigate the risks of forced labor and human trafficking. **2. Scope** This policy applies to all employees, contractors, suppliers, and business partners of Speak AI Inc. It sets out expectations for ethical labor practices and responsible sourcing throughout our operations and supply chains. **3. Commitment to Preventing Modern Slavery & Human Trafficking** Speak AI Inc. strictly prohibits the use of forced labor, human trafficking, child labor, or any form of modern slavery in our operations and supply chains. We are dedicated to: - Conducting business with integrity and ethical responsibility. - Ensuring that all employees and contractors are employed voluntarily and under fair working conditions. - Encouraging our suppliers and business partners to adopt similar ethical labor standards. **4. Compliance & Legal Framework** This policy aligns with international human rights principles and labor laws, including but not limited to: - The United Nations Guiding Principles on Business and Human Rights. - The International Labour Organization (ILO) conventions. - The Modern Slavery Act (where applicable, such as in the UK, Australia, or Canada). **5. Supplier & Business Partner Expectations** We expect all suppliers and business partners to: - Comply with local labor laws and international human rights standards. - Prohibit forced labor, human trafficking, and child labor in any part of their operations. - Provide fair wages and safe working conditions for their employees. - Allow workers the right to freely terminate their employment without penalties. **6. Due Diligence & Risk Assessment** Speak AI Inc. will take the following actions to prevent modern slavery: - Conduct periodic risk assessments of suppliers and contractors to identify any potential risks related to modern slavery. - Implement screening measures when engaging new suppliers to ensure compliance with our ethical sourcing requirements. - Require suppliers to certify that they adhere to ethical labor practices. **7. Training & Awareness** To enhance our commitment to ethical labor practices, Speak AI Inc. will: - Provide training to employees on recognizing and preventing modern slavery and human trafficking. - Raise awareness about ethical labor practices across our supply chain. **8. Reporting & Whistleblower Protection** Speak AI Inc. encourages employees, suppliers, and stakeholders to report any concerns related to modern slavery. We ensure that: - Reports can be made anonymously through success@speakai.co. - There will be no retaliation against individuals who report concerns in good faith. - Investigations will be conducted promptly and appropriate actions taken. **9. Monitoring & Continuous Improvement** We are committed to continuously improving our approach to preventing modern slavery and human trafficking by: - Regularly reviewing and updating this policy to align with evolving legal and ethical standards. - Strengthening our supplier engagement processes and compliance monitoring. **10. Policy Review** This policy will be reviewed annually to ensure its effectiveness and compliance with evolving legal requirements. --- For any concerns or inquiries related to this policy, please contact us at success@speakai.co. # Network device hardening standards > The baseline configuration Speak AI applies to routers, switches and firewalls before they carry production traffic. Source: https://docs.speakai.co/help/security/policies/network-device-hardening-standards/ · Markdown: https://docs.speakai.co/help/security/policies/network-device-hardening-standards/index.md **1. Purpose**

This document establishes security configuration requirements for network devices, including firewalls, switches, routers, and wireless access points, to protect against unauthorized access, data breaches, and system vulnerabilities. **2. Scope**

This policy applies to all network devices used within Speak AI Inc.'s infrastructure, including cloud-hosted and cloud-based environments. **3. Hardening Requirements** **3.1 General Security Configuration** - All network devices must run the latest stable firmware and software versions. - Default credentials must be changed before deployment. - Unused services and protocols must be disabled to reduce attack surfaces. **3.2 Authentication & Access Control** - Unique administrator credentials must be assigned to each network device. - Multi-Factor Authentication (MFA) must be enabled where supported. - Role-based access control (RBAC) must be implemented to restrict permissions based on job responsibilities. - Remote management interfaces must be restricted to authorized personnel and require encrypted connections (e.g., SSH, HTTPS). **3.3 Patch Management & Updates** - Security patches and firmware updates must be applied within 30 days of release, subject to internal testing. - Automated vulnerability scans must be conducted regularly to identify outdated or vulnerable network device configurations. **3.4 Firewall & Traffic Control** - All firewall rules must be documented and reviewed periodically. - Default-deny rules must be enforced to block all traffic except explicitly allowed connections. - Intrusion detection and prevention systems (IDS/IPS) must be configured to monitor network traffic for anomalies. **3.5 Logging & Monitoring**- Network device logs must be collected, stored securely, and retained per the **Records Retention Policy**. - Automated alerts must be configured for unauthorized access attempts, configuration changes, and other security-relevant events. - Regular audits must be conducted to verify compliance with logging requirements. **3.6 Encryption & Secure Communication** - Network traffic between devices must be encrypted using industry-standard protocols (e.g., TLS, IPsec, WPA3 for wireless networks). - Secure network management protocols (e.g., SNMPv3, SSH) must be used instead of insecure alternatives (e.g., SNMPv1/v2, Telnet). **3.7 Wireless Security** - Wireless access points must enforce WPA3 encryption (or WPA2 if WPA3 is unavailable). - Guest wireless networks must be logically separated from internal networks. - MAC address filtering and network segmentation must be implemented for enhanced security. **4. Compliance & Enforcement** - Network devices must be configured following these standards before being deployed. - Periodic security assessments must be performed to ensure adherence. - Non-compliant devices must be remediated immediately or removed from the network. **5. References & Supporting Documents**- Speak AI **Network Security Policy**: /help/security/policies/network-security/ - Speak AI **Vulnerability Management Policy**: /help/security/policies/vulnerability-management/ - Speak AI **Access Management Policy**: /help/security/policies/access-management/ **6. Contact Information** For questions or concerns regarding network device security, please contact **success@speakai.co**. --- This policy is subject to periodic review and updates to align with evolving security best practices and industry regulations. # Network security policy > How Speak AI's networks are designed, segmented, monitored and defended, and the rules for connecting to them. Source: https://docs.speakai.co/help/security/policies/network-security/ · Markdown: https://docs.speakai.co/help/security/policies/network-security/index.md ## 1. Purpose and Scope The purpose of this Network Security Policy is to establish guidelines and procedures to protect the integrity, confidentiality, and availability of Speak AI Inc.‘s (“Speak AI”) network infrastructure. This policy applies to all employees, contractors, and third parties who have access to Speak AI’s network resources. ## 2. Policy Statement Speak AI is committed to maintaining a secure network environment to protect against unauthorized access, data breaches, and other security threats. This policy outlines the measures and controls implemented to safeguard network infrastructure and ensure the secure transmission of data. ## 3. Network Security Controls - **Firewall Management:** Firewalls must be configured with appropriate rule sets and are set to “deny by default” to ensure only authorized traffic is allowed. Firewall rules will be reviewed and updated regularly to ensure they align with current security requirements. Additionally, traffic from countries other than specified trusted countries will be denied. - **Network Segmentation:** The network will be segmented into different zones based on security requirements. Critical systems and sensitive data will be isolated from less secure areas of the network to minimize the risk of unauthorized access. ## 4. Access Controls - **User Authentication:** All users must authenticate using strong authentication methods before accessing the network. Multi-factor authentication (MFA) is required for accessing critical systems and sensitive data. - **Access Permissions:** Network access permissions will be granted based on the principle of least privilege. Users will only have access to the resources necessary for their job functions. ## 5. Data Encryption - **Data in Transit:** All sensitive data transmitted over the network must be encrypted using industry-standard encryption protocols to protect against eavesdropping and interception. - **Data at Rest:** Sensitive data stored on networked devices must also be encrypted to protect against unauthorized access in the event of compromise. ## 6. Network Monitoring and Maintenance - **Continuous Monitoring:** The network will be continuously monitored for security threats, performance issues, and other anomalies. Automated tools and manual reviews will be used to detect and respond to potential incidents. Monitoring will be enhanced through services such as AWS CloudFront and Cloudflare to provide additional security insights and protections. - **Patch Management:** Network devices, including routers, switches, and firewalls, will be kept up to date with the latest security patches and firmware updates. Regular maintenance schedules will be established to ensure timely updates. - **Vulnerability Management:** Regular vulnerability assessments and penetration tests will be conducted to identify and address security weaknesses within the network infrastructure. ## 7. Incident Response - **Incident Reporting:** Any suspected or confirmed network security incidents must be reported immediately to the IT Security Team. Incident reports should include a description of the incident, affected systems, and any actions taken. - **Response Procedures:** The IT Security Team will follow established incident response procedures to contain, investigate, and resolve network security incidents. Lessons learned from incidents will be used to improve network security measures. ## 8. Third-Party Network Access - **Vendor and Partner Access:** Third-party vendors and partners who require access to Speak AI's network must comply with this Network Security Policy. Access will be granted based on contractual agreements and will be limited to the minimum necessary. - **Monitoring and Audits:** Third-party network access will be monitored and audited to ensure compliance with Speak AI's security policies and procedures. ## 9. Training and Awareness - **Employee Training:** All employees and contractors must undergo regular training on network security best practices and the importance of protecting network resources. - **Awareness Programs:** Ongoing awareness programs will be conducted to keep users informed about the latest network security threats and the measures they can take to protect the network. ## 10. Policy Review This policy will be reviewed annually or as needed to ensure its effectiveness and alignment with industry best practices and regulatory requirements. Changes to the policy will be communicated to all users. ## 11. Contact Information For any inquiries or issues related to this Network Security Policy, please contact the IT Security Team at [success@speakai.co](mailto:success@speakai.co). # Network segmentation policy > How Speak AI separates network zones so a compromise in one does not reach production data in another. Source: https://docs.speakai.co/help/security/policies/network-segmentation/ · Markdown: https://docs.speakai.co/help/security/policies/network-segmentation/index.md **1. Purpose**

This policy establishes security controls for network segmentation and segregation to mitigate security risks, prevent unauthorized access, and enhance data protection within Speak AI’s infrastructure. **2. Scope**

This policy applies to all networks, systems, and devices within Speak AI’s environment, including corporate, cloud, and third-party integrated networks. **3. Network Segmentation Standards** **3.1 Segmentation Principles** - Network segmentation must be implemented to isolate sensitive systems and data from general access networks. - Internal networks must be logically and physically separated based on risk levels, business functions, and data sensitivity. - Guest and employee networks must be segmented from production and administrative networks. **3.2 Access Controls & Monitoring** - Firewall rules must restrict traffic between network segments based on business needs. - Multi-Factor Authentication (MFA) and least privilege principles must be enforced for access to segmented networks. - Network traffic must be monitored for anomalies, with alerts for unauthorized access attempts. **3.3 Secure Data Flow & Connectivity** - Data flow between network segments must be controlled via approved gateways, proxies, or firewalls. - Remote access to segmented networks must be secured with VPN and encrypted tunnels. - Direct external access to sensitive network segments must be prohibited unless explicitly authorized. **3.4 Segmentation Testing & Validation** - Regular penetration tests and vulnerability assessments must be conducted to validate network segmentation controls. - Network segmentation policies must be reviewed at least annually and updated to address emerging threats. **4. Compliance & Enforcement**- All systems and applications must comply with Speak AI’s **Network Security Policy** and **Access Management Policy**. - Non-compliance with segmentation policies will result in corrective actions, including access revocation or network redesign. **5. References & Supporting Documents**- Speak AI **Network Security Policy**: [/help/security/policies/network-security/](/help/security/policies/network-security/) - Speak AI **Access Management Policy**: [/help/security/policies/access-management/](/help/security/policies/access-management/) - Speak AI **Vulnerability Management Policy**: [/help/security/policies/vulnerability-management/](/help/security/policies/vulnerability-management/) **6. Contact Information**

For security concerns or policy clarifications, contact **success@speakai.co**. --- This policy is subject to periodic review and updates to align with evolving security threats and industry best practices. # Offsite backup storage policy > Where Speak AI backups are stored, how they are encrypted and protected, and how restoration is tested. Source: https://docs.speakai.co/help/security/policies/offsite-backup-storage/ · Markdown: https://docs.speakai.co/help/security/policies/offsite-backup-storage/index.md **1. Purpose**

The purpose of this policy is to define the backup and offsite storage procedures for Speak AI Inc. to ensure data availability, integrity, and recoverability in the event of system failures, cyber incidents, or other unforeseen disruptions. **2. Scope**

This policy applies to all critical business data, databases, and system configurations stored within Speak AI's infrastructure, including cloud services and offsite storage solutions. **3. Backup Procedures**- **Backup Frequency:** Full backups are performed daily, with incremental backups occurring every six hours. - **Backup Retention:** Backups are retained for 90 days, after which older backups are securely deleted unless required for compliance or legal purposes. - **Storage Location:** Backups are securely stored in AWS cloud infrastructure within the designated data center (AWS Canada, ca-central-1). - **Backup Verification:** Automated checks and periodic integrity tests are conducted to ensure the reliability and recoverability of backup data. **4. Offsite Storage**- **Cloud-Based Storage:** Speak AI uses AWS S3 for secure storage of backup data with encryption enabled at rest and in transit. - **Encryption Standards:** Backups are encrypted using AES-256 encryption at rest and TLS 1.2+ for in-transit data protection. - **Geographic Redundancy:** Critical backups are replicated across multiple AWS availability zones to ensure resilience and accessibility in case of data center failures. **5. Access Control & Security**- **Restricted Access:** Backup data access is strictly limited to authorized personnel and requires multi-factor authentication (MFA). - **Monitoring & Logging:** Access to backup files is logged and monitored to detect unauthorized access attempts. - **Incident Response:** In the event of unauthorized access or corruption of backup data, immediate action will be taken as per Speak AI’s Incident Response Policy. **6. Restoration Procedures**- **Recovery Time Objective (RTO):** Critical data restoration is targeted within 4 hours, while non-critical data restoration may take up to 24 hours. - **Testing & Validation:** Backup recovery tests are conducted quarterly to ensure data integrity and effectiveness of restoration processes. **7. Compliance & Review**- **Regulatory Compliance:** Speak AI ensures that backup storage and retention policies comply with industry standards and regulations such as GDPR, PIPEDA, and HIPAA. - **Policy Review:** This policy will be reviewed annually and updated as needed to incorporate best practices and emerging security threats. **8. Contact Information**

For inquiries related to backup and offsite storage, contact Speak AI’s IT Security Team at **success@speakai.co**. --- # Pandemic and infectious disease plan > How Speak AI keeps operating through a public health event, covering remote work, staffing and service continuity. Source: https://docs.speakai.co/help/security/policies/pandemic-infectious-disease-plan/ · Markdown: https://docs.speakai.co/help/security/policies/pandemic-infectious-disease-plan/index.md ## 1. **Purpose** The purpose of this document is to outline Speak AI Inc.'s contingency plans for pandemics or infectious disease outbreaks to ensure business continuity, protect employee health, and maintain service availability. ## 2. **Scope** This plan applies to all employees, contractors, and stakeholders of Speak AI Inc., including remote and in-office personnel. ## 3. **Governance & Responsibilities**- The **Executive Team** is responsible for activating and overseeing the response plan. - **HR & Operations** will manage employee well-being and remote work arrangements. - **IT & Security** will ensure secure and continued operations of Speak AI's services. ## 4. **Risk Assessment & Preparedness** - Monitoring global health advisories (e.g., WHO, CDC, Health Canada). - Maintaining a remote work infrastructure to support smooth transitions. - Ensuring robust cybersecurity and secure data handling for remote operations. - Identifying critical dependencies on third-party vendors and ensuring redundancy where possible. ## 5. **Workplace Policies**- **Remote Work Enablement:** Employees may work remotely in case of an outbreak. - **Flexible Leave Policies:** Employees experiencing symptoms should take paid sick leave. - **Hygiene & Sanitation:** Office spaces will be cleaned and disinfected regularly. - **Employee Support:** Mental health resources and support will be provided. ## 6. **Business Continuity Strategy** - Ensuring critical business operations continue remotely. - Leveraging cloud-based systems to facilitate communication and collaboration. - Establishing clear communication channels with customers regarding service availability. - Implementing a tiered response plan based on severity levels. ## 7. **Communication Plan** - Regular updates to employees via internal channels (Slack, email, meetings). - Customer communications via email, website, and support channels. - Designated response team to handle inquiries related to operational changes. ## 8. **Incident Response & Recovery** - Activation of the crisis response team during a pandemic outbreak. - Clear protocol for managing infected individuals in the workplace. - Phased reintegration plan for returning to normal operations post-crisis. ## 9. **Review & Maintenance** - This plan will be reviewed and updated annually or as needed. - Simulated pandemic response drills will be conducted periodically to ensure preparedness. # Password policy > Password strength, rotation, storage and multi-factor requirements for Speak AI accounts and systems. Source: https://docs.speakai.co/help/security/policies/password/ · Markdown: https://docs.speakai.co/help/security/policies/password/index.md ## 1. Purpose and Scope The purpose of this Password Policy is to establish guidelines for creating, using, and managing passwords to protect the security and integrity of Speak AI Inc.'s ("Speak AI") information systems and data. This policy applies to all employees, contractors, third parties, and users of the Speak AI product ("Speak"). ## 2. Policy Statement Speak AI is committed to maintaining the highest security standards by enforcing strong password practices. This policy outlines password creation, management, and protection requirements to prevent unauthorized access to Speak AI's systems and data. ## 3. Password Creation - **Complexity Requirements:** Passwords must meet the following complexity requirements: * Minimum length of 8 characters - **Prohibited Elements:** Passwords must not contain easily guessable information such as common words, phrases, or personal information (e.g., names, birthdays). ## 4. Password Management - **Account Lockout:** Accounts will be locked out after 3 failed login attempts within a minute. The account can be unlocked after a 1 minute period. ## 5. Password Protection - **Confidentiality:** Passwords must be kept confidential and not shared with anyone. Users are responsible for the security of their passwords. - **Storage:** Passwords must not be written down or stored in plain text. Passwords should be stored in secure password management tools approved by Speak AI. - **Phishing Awareness:** Users must be aware of phishing attacks and avoid clicking on suspicious links or providing passwords in response to unsolicited requests. ## 6. Multi-Factor Authentication (MFA) - **Requirement:** Multi-factor authentication (MFA) is required to access critical systems and sensitive data. Speak AI supports MFA through Google Workspace and is in the process of adding Microsoft Single Sign-On. ## 7. Administrative Access - **Privileged Accounts:** Users with privileged accounts must use separate, unique passwords for administrative tasks. Privileged account passwords must adhere to stricter complexity and expiration requirements. - **Monitoring:** Usage of privileged accounts will be monitored for any unusual or unauthorized activities. ## 8. Password Changes and Recovery - **Password Changes:** Users must change their passwords immediately if they suspect that their password has been compromised. - **Password Recovery:** Password recovery mechanisms must include secure verification processes to authenticate the identity of the user requesting the password reset. ## 9. Employee Training - **Security Awareness:** All employees and contractors must undergo regular security awareness training, including best password management and protection practices. - **Ongoing Education:** Continuous education programs will be conducted to keep users informed about the latest security threats and password protection techniques. ## 10. Compliance and Enforcement - **Policy Compliance:** All users must comply with this policy. Non-compliance may result in disciplinary actions, including termination of access to Speak AI's systems. - **Audits:** Regular audits will be conducted to ensure compliance with this password policy. Any identified weaknesses will be addressed promptly. ## 11. Policy Review This policy will be reviewed annually or as needed to ensure its effectiveness and alignment with industry best practices and emerging security threats. Changes to the policy will be communicated to all users. ## 12. Contact Information For any inquiries or issues related to this Password Policy, please contact the IT Security Team at [success@speakai.co](mailto:success@speakai.co). # Physical security policy > Controls over physical access to Speak AI premises, equipment and any media holding customer data. Source: https://docs.speakai.co/help/security/policies/physical-security/ · Markdown: https://docs.speakai.co/help/security/policies/physical-security/index.md ## 1. Purpose and Scope The purpose of this Physical Security Policy is to establish guidelines for protecting Speak AI Inc.'s ("Speak AI") physical assets and ensuring the safety and security of employees working remotely in the Greater Toronto Area (GTA), Ontario, Canada. This policy applies to all employees, contractors, and third parties who have access to Speak AI's assets and facilities. ## 2. Policy Statement Speak AI is committed to ensuring the physical security of its remote work environment and protecting its assets from physical threats. This policy outlines the measures and controls implemented to safeguard equipment, data, and personnel. ## 3. Remote Work Environment Security - **Home Office Security:** Employees are required to ensure that their home office environments are secure. This includes securing personal computers and other work-related equipment when not in use. - **Secure Storage:** Employees must store all Speak AI assets, such as laptops and documents, in a secure location when not in use. Sensitive documents should be stored in locked cabinets or drawers. - **Access Control:** Employees should not allow unauthorized individuals to access their work equipment or view confidential information. Family members, friends, and visitors must not be permitted to use Speak AI devices or access Speak AI data. ## 4. Equipment Security - **Asset Management:** All hardware assets provided by Speak AI must be recorded in an asset management system. Employees are responsible for the care and security of these assets. - **Device Encryption**: All company-provided laptops and mobile devices must be encrypted to protect data in case of loss or theft. - **Antivirus and Firewall:** All devices must have up-to-date antivirus software and firewalls enabled to protect against malware and unauthorized access. ## 5. Data Security - **Backup Procedures:** Employees are responsible for following Speak AI's data backup procedures to ensure that important data is regularly backed up to secure cloud storage. ## 6. Incident Reporting - **Security Incidents:** Any security incidents, such as theft, loss, or unauthorized access to Speak AI assets or data, must be reported immediately to the IT Team at [success@speakai.co](mailto:success@speakai.co). An incident report should include details of the incident, affected assets, and any actions taken. - **Response Plan**: The IT Team will respond to reported incidents by investigating the cause, assessing the impact, and implementing measures to prevent recurrence. ## 7. Employee Training and Awareness - **Security Training:** All employees must undergo regular training on physical security practices, including securing their remote work environment, protecting equipment, and handling sensitive information. - **Ongoing Awareness:** Continuous awareness programs will be conducted to keep employees informed about the latest security threats and best practices for maintaining physical security. ## 8. Compliance and Auditing - **Policy Compliance:** Compliance with this policy is mandatory for all employees, contractors, and third parties who access Speak AI's assets. Non-compliance may result in disciplinary actions. - **Regular Audits:** Regular audits will be conducted to ensure adherence to physical security controls and identify areas for improvement. ## 9. Policy Review This policy will be reviewed annually or as needed to ensure its effectiveness and alignment with industry best practices and emerging security threats. Changes to the policy will be communicated to all employees. ## 10. Contact Information For any inquiries or issues related to this Physical Security Policy, please contact the IT Security Team at [success@speakai.co](mailto:success@speakai.co). # Records retention policy > How long Speak AI keeps each class of record, where it is held and how it is destroyed at end of life. Source: https://docs.speakai.co/help/security/policies/records-retention/ · Markdown: https://docs.speakai.co/help/security/policies/records-retention/index.md ## 1. Purpose This Records Retention Policy establishes guidelines for managing, retaining, and disposing of records at Speak AI Inc. in compliance with legal, regulatory, and contractual obligations. It ensures that records are retained for appropriate periods to support operational needs, mitigate risks, and facilitate business continuity. ## 2. Scope This policy applies to all records created, received, or maintained by Speak AI Inc., including electronic, paper, and other media formats. It covers all departments, employees, contractors, and third parties handling company records. ## 3. Responsibilities - **Management:** Ensures compliance with this policy and provides resources for proper records management. - **Employees:** Follow retention schedules and properly store, archive, or dispose of records. - **IT & Security Team:** Maintain electronic records in accordance with data security protocols and ensure secure disposal. - **Legal & the leadership team:** Review and update retention schedules based on evolving legal requirements. ## 4. Retention Periods Records shall be retained based on the following general guidelines, unless otherwise specified by law or contractual obligations: | **Record Type**| **Retention Period** | | --- | --- | | Financial records (invoices, tax filings) | 7 years | | Employee records (HR files, payroll) | 7 years after termination | | Customer records | As required by contract or 5 years post-engagement | | Contracts & agreements | Duration of contract + 5 years | | IT system logs | 1 year | | Audit logs & compliance reports | 5 years | | Marketing materials & communication | 3 years | | Legal & regulatory documents | Permanent, unless otherwise specified | ## 5. Storage & Security - **Electronic Records:** Must be stored in secure cloud-based or on-premise environments with access controls. - **Physical Records:** Should be stored in locked, access-restricted areas. - **Confidential Information:** Requires encryption and restricted access. ## 6. Disposal of Records - **Electronic Records:** Must be permanently deleted using secure deletion methods. - **Paper Records:** Must be shredded or disposed of securely to prevent unauthorized access. - **Backup Copies:** Retired according to IT security procedures to prevent data breaches. ## 7. Legal & Regulatory Compliance This policy aligns with applicable laws and industry standards, including: - Canada’s **Personal Information Protection and Electronic Documents Act (PIPEDA)**- **General Data Protection Regulation (GDPR)** (if applicable to EU customers) - **Local provincial and federal data retention laws** ## 8. Policy Review & Updates This policy will be reviewed annually or as required by regulatory changes. Any updates must be approved by the leadership team and communicated to relevant stakeholders. ## 9. Contact Information For questions or concerns regarding this policy, contact **success@speakai.co**. ## 10. References - Speak AI **Business Continuity Plan**: [Business Continuity Plan](/help/security/policies/business-continuity-plan/) - Speak AI **Data Classification Policy**: [Data Classification Policy](/help/security/policies/data-classification/) # Remote network access policy > Requirements for connecting to Speak AI systems remotely, covering VPN, device posture and authentication. Source: https://docs.speakai.co/help/security/policies/remote-network-access/ · Markdown: https://docs.speakai.co/help/security/policies/remote-network-access/index.md **1. Purpose**

This policy establishes secure remote access requirements to ensure the confidentiality, integrity, and availability of Speak AI Inc.'s network and systems. It defines controls for Virtual Private Network (VPN) use, encryption, multi-factor authentication (MFA), and monitoring. **2. Scope**

This policy applies to all employees, contractors, and third parties who require remote access to Speak AI Inc.'s internal systems, applications, and data. **3. Secure Remote Access Requirements** **3.1 VPN Usage** - Remote access to Speak AI Inc. systems must be conducted through an approved VPN. - VPN connections must use strong encryption protocols (e.g., AES-256, TLS 1.2 or higher). - Split tunneling must be disabled to prevent unauthorized traffic flow. **3.2 Authentication & Authorization** - Multi-Factor Authentication (MFA) is mandatory for all remote access users. - Unique credentials must be issued to each authorized user. - Access must be granted based on the principle of least privilege (PoLP). - Remote access accounts must be reviewed periodically and disabled if inactive. **3.3 Device Security Requirements** - Only company-approved and secured devices may be used for remote access. - Endpoints must have up-to-date antivirus software and security patches. - Personal devices are prohibited unless explicitly authorized and secured. **3.4 Encryption & Data Protection** - All remote sessions must be encrypted using industry-standard protocols. - Sensitive data must not be stored on local devices without encryption. - File transfers between remote devices and internal networks must be logged and monitored. **3.5 Monitoring & Logging** - All remote access activity must be logged and monitored for suspicious behavior. - Automated alerts must be enabled for unauthorized access attempts. - Regular audits must be conducted to ensure compliance with this policy. **3.6 Access Revocation** - Remote access privileges must be revoked immediately upon termination or role change. - Temporary remote access must be approved with an expiration date. **4. Compliance & Enforcement** - Any violations of this policy may result in disciplinary action, including termination. - IT security teams must conduct regular security assessments to enforce compliance. - Users must acknowledge this policy before receiving remote access privileges. **5. References & Supporting Documents**- Speak AI **Network Security Policy**: /help/security/policies/network-security/ - Speak AI **Access Management Policy**: /help/security/policies/access-management/ - Speak AI **Encryption Policy**: /help/security/policies/encryption/ - Speak AI **Vulnerability Management Policy**: /help/security/policies/vulnerability-management/ **6. Contact Information**

For questions or concerns regarding remote network access, please contact **success@speakai.co**. --- This policy is subject to periodic review and updates to align with evolving security best practices and industry regulations. # Sanctions compliance policy > How Speak AI screens customers and partners against sanctions lists and what happens on a match. Source: https://docs.speakai.co/help/security/policies/sanctions-compliance/ · Markdown: https://docs.speakai.co/help/security/policies/sanctions-compliance/index.md **1. Purpose**

This policy establishes guidelines for ensuring compliance with international sanctions, trade restrictions, and country-blocking measures applicable to Speak AI Inc. The objective is to prevent unauthorized transactions with sanctioned entities and individuals. **2. Scope**

This policy applies to all Speak AI employees, contractors, and third-party vendors engaged in business operations, transactions, and service delivery. **3. Compliance Requirements** **3.1 Screening & Due Diligence** - Speak AI must conduct due diligence to ensure that business partners, customers, and vendors are not listed on applicable sanctions lists (e.g., OFAC, EU, UN, UK, Canada). - Automated screening tools should be utilized to identify restricted parties before engaging in business activities. - Ongoing monitoring of business relationships must be maintained to detect changes in sanction status. **3.2 Transaction Monitoring & Restrictions** - Transactions with individuals, organizations, or countries subject to sanctions must be blocked and reported to the appropriate authorities. - Payments, financial transactions, and service access to sanctioned entities must be restricted or denied. - Employees must report any suspected violation of sanctions laws immediately to the CTO or designated security lead. **3.3 Training & Awareness** - Employees handling international transactions, customer relationships, and financial matters must receive periodic training on sanctions regulations. - Regular updates and internal communications should be provided to keep staff informed of changes in sanctions policies. **3.4 Reporting & Compliance Enforcement** - Any suspected violations of sanctions laws must be promptly reported to the CTO or designated security lead and legal team. - Speak AI must cooperate with regulatory authorities in the investigation of any potential breaches. - Disciplinary actions, including termination, may be taken against employees or vendors found in violation of this policy. **4. Compliance Audits & Reviews** - Speak AI will conduct periodic internal audits to ensure adherence to sanctions compliance policies. - Compliance findings will be documented, and corrective actions will be implemented to address any identified gaps. - Speak AI’s the CTO or designated security lead is responsible for maintaining up-to-date knowledge of sanctions regulations and updating this policy accordingly. **5. References & Supporting Documents**- Speak AI **Third-Party Security Policy**: [/help/security/policies/third-party-security/](/help/security/policies/third-party-security/) - Speak AI **Business Ethics and Corporate Compliance Policy** - U.S. Department of the Treasury OFAC Sanctions List: https://home.treasury.gov/policy-issues/financial-sanctions/sanctions-programs-and-country-information - European Union Sanctions List: [https://www.sanctionsmap.eu](https://www.sanctionsmap.eu) **6. Contact Information**

For compliance concerns or policy clarifications, contact **success@speakai.co**. --- This policy is subject to periodic review and updates to align with regulatory changes and best practices. # Service continuity policy > The availability commitments behind the Speak AI service and the controls that maintain them. Source: https://docs.speakai.co/help/security/policies/service-continuity/ · Markdown: https://docs.speakai.co/help/security/policies/service-continuity/index.md ## 1. Purpose and Scope The purpose of this Service Continuity Policy / Business Continuity Policy is to establish the framework for ensuring the continuous operation of Speak AI Inc.'s ("Speak AI") critical business functions and services in the event of a disruption. This policy applies to all employees, contractors, and third parties involved in Speak AI's operations. ## 2. Policy Statement Speak AI is committed to maintaining the availability of its services and ensuring that critical business operations can continue with minimal interruption during and after a disruption. This policy outlines the procedures and responsibilities for business continuity planning, incident response, and recovery. Speak AI is fully capable of accommodating customer requirements for Recovery Point Objective (RPO) and Recovery Time Objective (RTO) as part of our disaster recovery and business continuity strategies. ## 3. Business Continuity Planning - **Business Impact Analysis (BIA):** A BIA will be conducted to identify and prioritize critical business functions and processes. The BIA will assess the potential impact of various disruption scenarios on these functions. - **Risk Assessment:** Regular risk assessments will be performed to identify potential threats to business continuity and to evaluate the effectiveness of existing controls and mitigation strategies. - **Continuity Plans:** Business continuity plans will be developed and maintained for all critical functions. These plans will include detailed procedures for response, recovery, and restoration activities. - **Customizable RPO/RTO**: •**Recovery Point Objective (RPO):** Our RPO settings are tailored to minimize data loss in the event of a system failure. We provide a standard RPO setting of 30 minutes, which can effectively address the needs of most clients. This frequent data backup ensures that any lost data is limited to a maximum of 30 minutes’ work, which is suitable for various operational needs. •**Recovery Time Objective (RTO):** Our RTO capabilities are designed to ensure rapid restoration of services after a disruption. We can configure our systems to achieve RTOs that vary depending on the client’s operational requirements, generally ranging from a few minutes to several hours. This is supported by our cloud infrastructure, which includes high availability and failover solutions. ## 4. Roles and Responsibilities - **CEO:** Responsible for overseeing the development, implementation, and maintenance of the business continuity program. This includes coordinating with all relevant departments and stakeholders. - **Department Managers:** Responsible for developing, maintaining, and testing continuity plans for their respective departments. They will also ensure that their teams are trained on these plans. - **All Employees:** Responsible for understanding their roles in the business continuity plan and participating in training and exercises as required. ## 5. Incident Response and Recovery - **Incident Detection and Reporting:** Any disruption or potential threat to business continuity must be reported immediately to the Business Continuity Manager. A designated incident response team will assess and categorize the incident. - **Response Procedures:** The incident response team will activate the relevant business continuity plans based on the nature and severity of the disruption. This includes communication protocols, resource allocation, and coordination with external parties if necessary. - **Recovery Procedures:** Detailed recovery procedures will be followed to restore critical business functions and services to normal operations. This includes data recovery, system restoration, and continuity of customer services. We engage with our clients to understand their specific operational and business needs, allowing us to configure our disaster recovery solutions accordingly. ## 6. Communication - **Internal Communication:** Clear and effective communication channels will be established to keep all employees informed during a disruption. This includes updates on the status of the incident, response actions, and recovery efforts. - **External Communication:** Communication with customers, partners, and other stakeholders will be managed to provide timely and accurate information about the impact of the disruption and the steps being taken to address it. Recovery objectives are discussed and agreed upon with clients, ensuring that expectations are clear and that Speak AI is aligned with the client’s business requirements. ## 7. Training and Awareness - **Employee Training:** All employees will receive regular training on the business continuity policy and their specific roles and responsibilities during a disruption. This training will include participation in simulated exercises and drills. - **Ongoing Awareness:** Continuous awareness programs will be conducted to keep employees informed about the importance of business continuity and the procedures in place to ensure it. ## 8. Testing and Maintenance - **Plan Testing:** Business continuity plans will be tested regularly through simulations and drills to ensure their effectiveness and identify any areas for improvement. Testing schedules will be determined based on the criticality of the functions and services. Our recovery procedures are tested regularly to ensure that they effectively meet the designated RPO and RTO settings. These tests help confirm the effectiveness of our backup systems and disaster recovery plans, and they provide opportunities for ongoing improvement. - **Plan Maintenance:** Continuity plans will be reviewed and updated regularly to reflect changes in business operations, technology, and external threats. Lessons learned from tests and actual incidents will be incorporated into the plans. ## 9. Compliance and Review - **Regulatory Compliance:** Speak AI will ensure that its business continuity practices comply with relevant laws, regulations, and industry standards. - **Policy Review:** This policy will be reviewed annually or as needed to ensure its relevance and effectiveness. Changes to the policy will be communicated to all employees. ## 10. Contact Information For any inquiries or issues related to this Service Continuity Policy / Business Continuity Policy, please contact the Business Continuity Manager at [success@speakai.co](mailto:success@speakai.co). # Third-party data privacy policy > How Speak AI vets and contracts with sub-processors that may handle customer personal data. Source: https://docs.speakai.co/help/security/policies/third-party-data-privacy/ · Markdown: https://docs.speakai.co/help/security/policies/third-party-data-privacy/index.md **1. Purpose**

This policy establishes privacy obligations for third-party vendors that access, process, or store Speak AI Inc.'s data. It ensures compliance with applicable privacy laws and regulatory requirements while protecting sensitive information from unauthorized use or disclosure. **2. Scope**

This policy applies to all third-party vendors, contractors, and service providers engaged by Speak AI Inc. that have access to personal, confidential, or proprietary data. **3. Privacy Obligations** **3.1 Data Use & Limitation** - Third parties may only use Speak AI Inc.'s data for the specific purpose defined in their contractual agreements. - Any secondary use, processing, or transfer of data must receive prior written approval from Speak AI Inc. - Vendors must implement industry-standard security measures to prevent unauthorized data access, processing, or sharing. **3.2 Data Retention & Disposal** - Third parties must securely store data only for the duration necessary to fulfill contractual obligations. - Upon contract termination or request, vendors must securely delete all data in accordance with Speak AI Inc.'s **Records Retention Policy**. - All data disposal processes must comply with industry standards and regulatory requirements. **3.3 Data Disclosure & Sharing** - Third parties must not disclose Speak AI Inc.’s data to any unauthorized entity. - If required by law, disclosure of data must be preceded by notifying Speak AI Inc. in writing unless legally prohibited. - Vendors must ensure that any subcontractors handling Speak AI Inc.'s data comply with equivalent privacy and security requirements. **3.4 Compliance with Privacy Laws**- Third parties must adhere to applicable data protection regulations, including **GDPR**, **CCPA**, and other relevant privacy laws. - Vendors must support Speak AI Inc. in responding to data subject rights requests, including access, correction, and deletion of personal data. - Any security incidents or data breaches must be reported to Speak AI Inc. within 24 hours of detection. **4. Security Controls**- Vendors must implement encryption for data in transit and at rest as per Speak AI Inc.'s **Encryption Policy**. - Multi-factor authentication (MFA) must be enforced for accessing sensitive data. - Vendors must conduct periodic audits to ensure compliance with security and privacy policies. **5. Compliance & Enforcement** - Speak AI Inc. reserves the right to audit third-party vendors for compliance with this policy. - Non-compliance may result in contract termination, legal action, or other remedial measures. - Vendors must provide documentation upon request to demonstrate compliance with privacy and security obligations. **6. References & Supporting Documents**- Speak AI **Privacy Policy**: [https://speakai.co/privacy-policy/](https://speakai.co/privacy-policy/?utm_source=docs&utm_medium=referral&utm_campaign=help) - Speak AI **Encryption Policy**: [/help/security/policies/encryption/](/help/security/policies/encryption/) - Speak AI **Records Retention Policy**: [/help/security/policies/records-retention/](/help/security/policies/records-retention/) **7. Contact Information** For inquiries regarding third-party data privacy obligations, contact **success@speakai.co**. --- This policy is subject to periodic review and updates to align with evolving regulatory and security requirements. # Third-party security policy > Security requirements Speak AI places on vendors and partners, and how their compliance is assessed. Source: https://docs.speakai.co/help/security/policies/third-party-security/ · Markdown: https://docs.speakai.co/help/security/policies/third-party-security/index.md ## 1. Purpose and Scope The purpose of this Third-Party Security Policy is to establish guidelines and procedures for managing the security risks associated with third-party vendors, partners, and service providers ("third parties") who have access to Speak AI Inc.'s ("Speak AI") information systems and data. This policy applies to all third-party relationships that involve access to Speak AI's systems, networks, or data. ## 2. Policy Statement Speak AI is committed to ensuring the security and integrity of its information assets by implementing rigorous security controls for third-party relationships. This policy outlines the requirements for assessing, managing, and monitoring the security practices of third parties to protect Speak AI's data and systems. ## 3. Third-Party Risk Assessment - **Initial Assessment:** Before engaging with a third party, a thorough risk assessment will be conducted to evaluate their security practices, policies, and potential impact on Speak AI's security posture. This includes reviewing their compliance with relevant security standards and regulations. - **Ongoing Assessment:** Third parties will be subject to periodic security assessments to ensure ongoing compliance with Speak AI's security requirements. The frequency and scope of these assessments will be based on the level of access and risk associated with the third party. ## 4. Security Requirements for Third Parties - **Contractual Agreements:** All third parties must sign a contractual agreement that includes specific security requirements and obligations. These agreements will outline the third party's responsibilities for protecting Speak AI's data and systems, including compliance with relevant security policies and standards. - **Access Control:** Third parties will be granted access to Speak AI's systems and data based on the principle of least privilege. Access will be restricted to the minimum necessary to perform their duties and will be regularly reviewed and adjusted as needed. - **Data Protection:** Third parties must implement appropriate measures to protect the confidentiality, integrity, and availability of Speak AI's data. This includes encrypting data at rest and in transit, as well as ensuring secure data handling and storage practices. ## 5. Monitoring and Auditing - **Activity Monitoring:** Speak AI will monitor third-party activities on its systems and networks to detect any unauthorized access or suspicious behavior. Automated tools and manual reviews will be used to ensure compliance with security policies. - **Regular Audits:** Third parties will be subject to regular security audits to verify their adherence to Speak AI's security requirements. Audit results will be reviewed, and any identified issues will be addressed promptly. ## 6. Incident Response - **Incident Reporting:** Third parties are required to report any security incidents or breaches involving Speak AI's data or systems immediately upon discovery. Incident reports should include a description of the incident, affected systems, and any actions taken. - **Response Coordination:** Speak AI will work with third parties to investigate and resolve security incidents. This includes coordinating response efforts, conducting root cause analysis, and implementing corrective actions to prevent recurrence. ## 7. Termination of Access - **End of Engagement:** Upon the termination of the third-party relationship, all access to Speak AI's systems and data will be revoked. Third parties must return or securely destroy any Speak AI data in their possession and provide confirmation of such actions. - **Post-Termination Review:** A post-termination review will be conducted to ensure that all access has been properly revoked and that no data remains with the third party. ## 8. Compliance and Enforcement - **Policy Compliance:** Compliance with this policy is mandatory for all third parties. Non-compliance may result in the termination of the third-party relationship and potential legal actions. - **Enforcement:** Speak AI reserves the right to enforce this policy through audits, assessments, and monitoring activities. Third parties must cooperate with these efforts to ensure compliance. ## 9. Roles and Responsibilities - **Vendor Management Team:** Responsible for overseeing third-party relationships, conducting risk assessments, and ensuring compliance with this policy. - **IT Security Team:** Responsible for monitoring third-party activities, coordinating incident response efforts, and conducting security audits. - **Third Parties:** Responsible for adhering to Speak AI's security requirements, reporting security incidents, and cooperating with audits and assessments. ## 10. Policy Review This policy will be reviewed annually or as needed to ensure its effectiveness and alignment with industry best practices and regulatory requirements. Changes to the policy will be communicated to all third parties. ## 11. Contact Information For any inquiries or issues related to this Third-Party Security Policy, please contact the Vendor Management Team at [success@speakai.co](mailto:success@speakai.co). # Vulnerability management policy > How Speak AI scans for, prioritizes, patches and verifies vulnerabilities, including remediation timeframes. Source: https://docs.speakai.co/help/security/policies/vulnerability-management/ · Markdown: https://docs.speakai.co/help/security/policies/vulnerability-management/index.md ## 1. Purpose and Scope The purpose of this Vulnerability Management Policy is to outline the processes and procedures that Speak AI Inc. ("Speak AI") will follow to identify, assess, mitigate, and communicate vulnerabilities within our software applications, systems, and infrastructure. This policy applies to all aspects of Speak AI's operations and covers the entire vulnerability management lifecycle. ## 2. Policy Statement Speak AI is committed to ensuring the security and integrity of our software platforms, including our transcription and natural language processing application, Speak. We recognize the importance of promptly identifying and addressing vulnerabilities to protect our users' data and maintain the trust they place in our services. This policy establishes the framework for managing vulnerabilities effectively and efficiently. ## 3. Vulnerability Identification Speak AI will employ proactive measures to identify vulnerabilities in its software platforms, including regular security assessments, code reviews, penetration testing, and third-party security assessments where applicable. We will also maintain a process for receiving vulnerability reports from users, security researchers, and other external parties. ## 4. Vulnerability Assessment Upon identifying a potential vulnerability, Speak AI's security team will assess its severity and potential impact on our software platforms and user data. The assessment will consider factors such as the nature of the vulnerability, the affected components, and the potential exploitability. ## 5. Vulnerability Mitigation Speak AI will follow a risk-based approach to prioritize and address vulnerabilities based on their severity and potential impact. The company will develop and implement appropriate mitigation strategies, which may include code patches, updates, configuration changes, or temporary workarounds. Urgent vulnerabilities with high potential impact will be addressed on an expedited basis. ## 6. Vulnerability Communication Speak AI is committed to transparently communicating with its users and stakeholders regarding vulnerabilities that could impact their use of our software platforms. We will provide timely and accurate information about vulnerabilities, their potential impact, and the steps users should take to mitigate the risk. Speak AI will maintain a process for notifying users about security updates and necessary actions through appropriate channels. ## 7. Remediation Verification After applying mitigation measures, Speak AI will conduct thorough testing to verify the effectiveness of the applied remedies and ensure that the vulnerability has been properly addressed. This verification process may involve internal testing, quality assurance, and validation against security benchmarks. ## 8. Ongoing Improvement Speak AI is dedicated to continuously improving its vulnerability management process. We will regularly review and update this policy to adapt to evolving security threats, technological advancements, and industry best practices. The company will also invest in security training and awareness programs for employees to enhance their understanding of vulnerability management. ## 9. Reporting Speak AI will maintain records of vulnerability assessments, mitigation efforts, and communication with stakeholders as part of its commitment to transparency and accountability. ## 10. Conclusion This Vulnerability Management Policy serves as a foundation for Speak AI's approach to identifying, assessing, mitigating, and communicating vulnerabilities within its software platforms. By following this policy, Speak AI aims to ensure the security, reliability, and trustworthiness of its services, fostering a safe environment for its users and stakeholders. ## 11. Policy Review This policy will be reviewed on an annual basis or as needed to ensure its relevance and effectiveness in addressing emerging security challenges. # Wireless security policy > Encryption, authentication and segmentation requirements for wireless networks used to reach Speak AI systems. Source: https://docs.speakai.co/help/security/policies/wireless-security/ · Markdown: https://docs.speakai.co/help/security/policies/wireless-security/index.md **1. Purpose**

This policy establishes security guidelines for Wi-Fi networks within Speak AI Inc., ensuring the confidentiality, integrity, and availability of wireless communications by enforcing authentication requirements, encryption standards, and access controls. **2. Scope**

This policy applies to all wireless network devices, access points, and users connecting to Speak AI Inc.'s Wi-Fi networks, including corporate, guest, and employee networks. **3. Security Requirements** **3.1 Authentication & Access Control** - Wireless access must be restricted to authorized users and devices only. - Multi-Factor Authentication (MFA) must be enforced for administrative access to wireless network devices. - Role-Based Access Control (RBAC) must be implemented to limit access based on user privileges. **3.2 Encryption Standards** - All corporate Wi-Fi networks must use WPA3 encryption. If WPA3 is unavailable, WPA2-Enterprise must be used. - Guest networks must be separated from internal corporate networks and must use WPA3 or WPA2-Personal at a minimum. - Open or WEP-encrypted networks are strictly prohibited. **3.3 Network Segmentation** - Corporate and guest networks must be logically separated to prevent unauthorized access to internal resources. - IoT and other non-secure devices must be isolated on a dedicated network segment. **3.4 Monitoring & Logging** - Wireless network activity must be monitored for anomalies and unauthorized access attempts. - Logs of wireless authentication and access must be retained in accordance with the **Records Retention Policy**. **3.5 Device Configuration & Patch Management** - Default credentials must be changed before deployment of any wireless access points. - Wireless network devices must be kept up to date with the latest security patches and firmware updates. **3.6 Guest Wi-Fi Access** - Guest users must authenticate via a captive portal with time-limited access. - Guest network access must be monitored and restricted from connecting to internal systems. **4. Compliance & Enforcement** - Regular security audits must be performed to ensure adherence to this policy. - Non-compliant devices must be reconfigured or removed from the network. - Violations of this policy may result in disciplinary action or network access restrictions. **5. References & Supporting Documents**- Speak AI **Network Security Policy**: /help/security/policies/network-security/ - Speak AI **Access Management Policy**: /help/security/policies/access-management/ - Speak AI **Encryption Policy**: /help/security/policies/encryption/ **6. Contact Information** For any questions or concerns regarding wireless security, please contact **success@speakai.co**. --- This policy is subject to periodic review and updates to align with evolving security best practices and industry regulations. # Sharing > Share a recording with a public link, embed the player on your site, cut a clip, or open a whole white-label library to a client. Source: https://docs.speakai.co/help/sharing/ · Markdown: https://docs.speakai.co/help/sharing/index.md Share what Speak AI captured, at whatever scope fits: a [public link](/help/sharing/links/) to one recording, an [embedded player](/help/sharing/player/) on your own site, a [clip](/help/sharing/clips/) of the moment that matters, or a whole [shareable library](/help/sharing/libraries/), white-label included, for a client who should see everything without an account. - **[Clips](/help/sharing/clips/)** - **[Embedded player](/help/sharing/player/)** - **[Public links](/help/sharing/links/)** - **[Shareable libraries](/help/sharing/libraries/)** Sharing externally for clients? [Book a free consult](https://calendly.com/speak-ai/consult?utm_source=docs&utm_campaign=consult) and we'll set up white-label sharing with you. # Clips > Cut any passage of a recording into a standalone audio or video clip for social posts, highlight reels or sharing a single moment. Source: https://docs.speakai.co/help/sharing/clips/ · Markdown: https://docs.speakai.co/help/sharing/clips/index.md A clip is a section of a recording saved as its own audio or video file. Use clips to pull a quote out of an interview for a social post, send one decision from a meeting without sending the whole recording, or turn a long episode into short segments you can publish. ![The Clips screen in Speak, with a name search box and one clip card below it. The card shows an audio waveform thumbnail labeled Audio Clip, a green Ready badge, a 00:15 duration, the clip name Product Demo, and a three-dot menu for clip actions.](/help/media/sharing/sharing-clips.jpg) ## Create a clip 1. Open the transcribed file 1. Find the passage you want in the transcript 1. Select the text, or note the start and end timestamps 1. Open the clip tool and set the start and end time 1. Name the clip and save it ## Create a clip with AI Chat You can describe the range you want in plain language in [AI Chat](/help/ai-chat/) instead of setting timestamps by hand: - "Create a clip from 0:30 to 1:45" - "Cut the section between 2 minutes and 5 minutes" - "Make a 30-second clip starting at 1:00" The [AI Chat prompts guide](/help/ai-chat/prompts/) has more examples. ## Share a clip Once a clip is saved you can: - Share it with a direct link - Embed it on a website with the [embedded player](/help/sharing/player/) - Download it as a standalone file - Post it to social media ## Edit audio and video You cannot cut or rearrange audio and video from inside the transcript. Clips are how you take a section out of a recording. When you need more than that, you have two routes: - **Fix the words.** Click any word to correct it, find and replace across the whole transcript, and [rename speakers](/help/transcription/speakers/). See [editing transcripts](/help/transcription/editing/). - **Move to a video editor.** [Export](/help/exports/) the transcript as SRT or VTT and import it into Adobe Premiere Pro, Final Cut Pro, or DaVinci Resolve. Premiere Pro XML export is also available. If you want transcript-based editing inside Speak AI, send us a message and tell us what you need. Want a hand setting this up? [Book a free consult](https://calendly.com/speak-ai/consult?utm_source=docs&utm_campaign=consult) and we'll do it together on your account. --- Related: [Sharing](/help/sharing/) · [Shareable libraries](/help/sharing/libraries/) # Shareable libraries > Share a whole folder and its analytics with one link, optionally white-labeled, so a client or team sees the library without an account. Source: https://docs.speakai.co/help/sharing/libraries/ · Markdown: https://docs.speakai.co/help/sharing/libraries/index.md A shareable media library hands over a whole [folder](/help/folders/manage/) and its analytics with one click, so a client or a teammate opens everything inside it from a single link. It is the option to reach for when a [public link](/help/sharing/links/) to one recording is not enough. ![A shared media library opened from its link, with no sign-in. Filter by column, a search box, Media type and View controls run across the top, and an Analytics button sits at the top right. A table below lists four recordings with the name, duration, tags such as Sales and Customer Success, and the date each was created.](/help/media/sharing/sharing-libraries.jpg) You can white label the library with your own brand color and fonts so it matches the rest of your work, and you can keep it private and password protected when the contents are not for everyone. ## Watch the video tutorial Evaluating Speak AI for a team? [Book a demo and see your own recordings analyzed](https://calendly.com/speak-ai/demo?utm_source=docs&utm_campaign=book-demo). --- Related: [Sharing](/help/sharing/) · [Clips](/help/sharing/clips/) # Public links > Generate a public link or embed a player so anyone can watch a recording with its transcript and insights, without an account. Source: https://docs.speakai.co/help/sharing/links/ · Markdown: https://docs.speakai.co/help/sharing/links/index.md A public link lets anyone open a recording with its transcript and insights, with no Speak AI account needed. Use it to send one file to a stakeholder, or copy the embed code and put the same player on your own site. You need the Owner or Editor role on a file to share it. ![The Share dialog for a recording, on its Preferences tab. The share link is masked here, next to a Branding selector and buttons to copy it or open it. Privacy offers Publicly accessible or Password protected, and below that sit call to action buttons and Display Options toggles for the title, description, remark notes and SEO indexing.](/help/media/sharing/sharing-links.jpg) ## Create a public link 1. Open the media file 1. Click **Share** 1. Turn on **Enable Shareable Link**, or click **Generate Public Link** 1. Copy the link and send it Whoever opens the link sees the player, reads and searches the transcript, and sees the insights you have chosen to show. To start playback at a specific point, add `?t=SECONDS` to the end of the link. For example, `?t=120` starts at two minutes. ## Embed the player on your site 1. Open the media file 1. Click **Share** 1. Select **Embed** and copy the iframe code 1. Paste the code into your page HTML The embedded player plays the audio or video, shows the transcript beside it, and lets readers search the text and jump to that moment. It behaves the same way in a website, a blog post, or a learning management system. To change its colors, fonts, and layout, see [embedded player](/help/sharing/player/). ## Share to Slack and WordPress If you have connected the Slack integration, you can send a recording straight to a Slack channel. You can also publish the transcript and player to your WordPress site as a post or a page. ## Share with your team Move the file into a shared [folder](/help/folders/manage/) and everyone assigned to that folder gets access to it, along with everything else in the folder. That is the quickest way to hand over a set of interviews, meeting recordings, or research files at once. See [team permissions](/help/teams/permissions/) for who can do what. To share a whole folder and its analytics with people outside your team, use a [shareable library](/help/sharing/libraries/). ## Access control - **Private:** only you and your team members can open it - **Public link:** anyone with the link can view it - **Password protected:** viewers enter a password before they see anything - **Team sharing:** share with named team members or groups ## Custom domains You can serve shared links from your own domain instead of the default Speak AI address, so the page stays on your brand. Add the domain under **Settings**→ **Custom Domains**, pick the **Player** or **Library** service type, and add the CNAME records you are given. The full steps are on the [custom domains](/help/recorder/custom-domain/) page. Evaluating Speak AI for a team? [Book a demo and see your own recordings analyzed](https://calendly.com/speak-ai/demo?utm_source=docs&utm_campaign=book-demo). --- Related: [Sharing](/help/sharing/) · [Clips](/help/sharing/clips/) # Embedded player > Change the player's colors, controls and transcript panel so an embedded recording matches the page it sits on. Source: https://docs.speakai.co/help/sharing/player/ · Markdown: https://docs.speakai.co/help/sharing/player/index.md The player you [embed on your site](/help/sharing/links/) carries your colors, fonts, and logo, and you can control what it shows and how it starts. Branding is set once in the dashboard and applies to your embeds. Playback behavior is set per embed with URL parameters. ![An embedded player on its own shared page. The recording title sits above the player, which carries play, skip back and skip forward controls, a counter reading 00:00 of 00:32, a speed control and a volume control. Below sit a transcript search box and an Auto scroll toggle, then the transcript itself, attributed to Speaker 1 and timestamped line by line.](/help/media/sharing/sharing-player.jpg) ## Brand the player Open [Shared Media → Settings → Branding & Customization](https://app.speakai.co/embed-media) and set: - **Primary color** for buttons and highlights, and the font color - **Theme**, either light or dark as the base - **Font family**, chosen from the available fonts, so the player matches your site - **Logo and background image**, uploaded from your own files - **Waveform**, hidden if you want a plainer player - **Title and description**, hidden if the surrounding page already says what the recording is - **Insights**, ticked one by one to choose which appear next to the recording - **Downloads**, allowing viewers to download your data visualizations - **Search engine indexing**, allowing the shared page to be indexed - **Call to action**, a button that sends viewers where you want them to go next Click **Save** when you are done. Changes apply to your embedded players. ## Custom CSS For control past those settings, use the **Custom CSS** field in the same settings screen. Enter standard CSS to override specific styles: ```css .sp-recorder-btn { border-radius: 20px; font-weight: bold; } ``` The player updates as you type. ## Set the starting state with URL parameters Append parameters to the embed URL to control how the player loads: - `?autoplay=true` starts playback automatically, if the browser allows it - `?t=120` starts playback at a set time in seconds, here two minutes - `?hideWaveform=true` hides the waveform ### Side by side layout To put the player and the transcript side by side, add `isHorizontal=true` with the width you want for each panel. The two widths are percentages and have to add up to 100: ```text https://embed.speakai.co/iframe/your-media-slug?isHorizontal=true&playerWidth=70&transcriptWidth=30 ``` Find the `src` on your iframe and add the parameters to the end of that URL. This layout applies to iframe embeds only. ## React to player events The embed sends messages to the page around it using the browser `postMessage` API, so you can pause, play, or react from your own code: - `ready` fires when the player has finished loading - `finish` fires when playback has completed If your security policies block these messages, add your domain to the allowed list in the recorder settings. Want a hand setting this up? [Book a free consult](https://calendly.com/speak-ai/consult?utm_source=docs&utm_campaign=consult) and we'll do it together on your account. --- Related: [Sharing](/help/sharing/) · [Clips](/help/sharing/clips/) # Getting started > Upload or record audio, video and text, transcribe it across 135 languages with speakers identified, then summarize and analyze it with AI. Source: https://docs.speakai.co/help/start/ · Markdown: https://docs.speakai.co/help/start/index.md New to Speak AI? Start here. Speak AI transcribes audio, video, and text across **135 languages and regional variants** {/* fact:languages.transcription */}, separates and labels the speakers, then turns what was said into summaries, insights, and action items you can search, share, and act on. It is built for anyone who works with recorded content: meetings, interviews, podcasts, research, customer calls, and lectures. ![The Speak AI home dashboard, headed Welcome back. A Quick Actions card offers Upload, Recording, Meeting, Translation, Survey and Automation. Upcoming Meetings sits beside it with buttons to connect Google or Outlook Calendar, and Activity and Usage panels below list recent files and the credits and storage left on the plan.](/help/media/start/start-index.jpg) ## Your first five minutes ### 1. Add a recording From your [dashboard](https://app.speakai.co/dashboard), select **Upload** to add an audio or video file. MP3, MP4, WAV and [most other formats](/help/uploads/formats/) work. You can also [record straight into the app](/help/uploads/in-app-recording/), or let the [Meeting Assistant](/help/meeting-assistant/) join your Zoom, Google Meet, Microsoft Teams, and Webex calls and record them for you. ### 2. Wait for the transcript Processing starts on its own. A typical file is ready in a few minutes, and you get a notification when it finishes. [Processing times](/help/transcription/processing-times/) ### 3. Read and correct the transcript Read and search the full transcript with timestamps, select any line to jump to that moment in the audio or video, and rename the speakers so you know who said what. [Speaker identification](/help/transcription/speakers/) · [Editing a transcript](/help/transcription/editing/) ### 4. Ask questions in AI Chat Open [AI Chat](/help/ai-chat/) and ask anything about the recording: what the key takeaways were, which action items came out of it and who owns them, a five-bullet summary, or which questions got asked. Pick which [model](/help/ai-chat/models/) answers from the chat toolbar. ## Quick actions on the dashboard The dashboard carries six quick action buttons, each of which opens the page it names: - **Upload** opens the upload window, for recordings and [text files](/help/uploads/text-notes/) alike - **Recording** starts an audio or video recording in the browser - **Meeting** sends the [meeting assistant](/help/meeting-assistant/) to a call - **Translation** opens the [translation](/help/transcription/translation/) window - **Survey** creates an [embeddable recorder](/help/recorder/) - **Automation** builds an [automation](/help/automations/) ## Beyond your first transcript - **[Folders](/help/folders/manage/)** group recordings into projects or topics - **[Insights](/help/insights/)** pull out keywords, categories, and sentiment for every file - **[The embeddable recorder](/help/recorder/)** collects audio and video from other people for interviews, surveys, and feedback - **[Automations](/help/automations/)** run AI Chat prompts on every new upload without anyone starting them - **[Zapier](/help/integrations/zapier/)** connects Speak AI to more than 5,000 other apps, and the [API](/api/) covers anything you want to build directly ## Plans and the free trial Speak AI starts with a free trial that has every premium feature turned on and needs no credit card. When it ends, the account converts to the free tier rather than being charged. [What the trial includes](/help/account/free-trial/) · [Compare plans](/help/account/plans/) ## Speak AI is not Speak.com Speak AI (speakai.co) and Speak (speak.com) are separate companies with different products. Speak AI, this product, transcribes and analyzes audio, video, and text. [Speak.com](https://speak.com) is a language learning platform where you practice speaking a foreign language in conversation with an AI. If that is what you came for, you want speak.com instead. ## AI Agents AI Agents are conversational assistants you deploy to run interviews, collect feedback, and answer questions by voice on a phone or the web, by video with an avatar, or by text chat on your site. Create one at [agents.speakai.co](https://agents.speakai.co): choose the agent type, set its name, personality, welcome message, and instructions, add a knowledge base of documents or website URLs, define the structured outputs you want extracted, then publish it. Share it as a link or QR code, embed it on your site, or assign it a phone number. Every conversation is recorded, transcribed, scored against those structured outputs, and available for review, and the agent flags the questions it could not answer well. AI Agents is a separate product from the core Speak AI platform, with its own pricing. See [speakai.co/ai-agents](https://speakai.co/ai-agents/) or [book a consultation](https://calendly.com/speak-ai/demo?utm_source=docs&utm_campaign=book-demo). --- Related: [Account setup](/help/start/account-setup/) · [Mobile app](/help/start/mobile-app/) · [Classic app](/help/start/classic-app/) · [Uploads](/help/uploads/) · [Transcription](/help/transcription/) # Account setup > Sign up with email or single sign-on, confirm your address, and land in a workspace ready for your first upload. Source: https://docs.speakai.co/help/start/account-setup/ · Markdown: https://docs.speakai.co/help/start/account-setup/index.md You need a Speak AI account before you can upload anything, and creating one starts your [free trial](/help/account/free-trial/). ## Sign up 1. Go to [speakai.co](https://speakai.co/?utm_source=docs&utm_medium=referral&utm_campaign=help) and select **Sign Up** in the top right corner. 1. On the registration page, choose to sign up with your email address or with your Google account. 1. Fill in the required details. That puts you in your workspace with the trial running. From there, [upload your first file](/help/uploads/) and Speak AI transcribes and analyzes it for you. Want a hand setting this up? [Book a free consult](https://calendly.com/speak-ai/consult?utm_source=docs&utm_campaign=consult) and we'll do it together on your account. --- Related: [Getting started](/help/start/) · [Classic app](/help/start/classic-app/) # Classic app > Speak AI now runs at app.speakai.co and every account is moved over automatically. How to switch back to the classic app while it lasts. Source: https://docs.speakai.co/help/start/classic-app/ · Markdown: https://docs.speakai.co/help/start/classic-app/index.md The current version of Speak AI is at [app.speakai.co](https://app.speakai.co), and every account already uses it. Sign in with the email and password you use today, and your account, media library, transcripts, and team come with you. There is nothing to migrate by hand. ## Open the classic app before it retires If your account was created before April 1, 2026 and you have an active subscription, you can still open the classic app at [legacy.speakai.co](https://legacy.speakai.co) until it retires on August 1, 2026. To switch, go to your dashboard, find the card titled **Welcome to the new and improved Speak experience.**, then select **Switch to the old experience**. You can return to app.speakai.co at any time. ## What happens on August 1, 2026 The classic app retires and every account moves fully to app.speakai.co. Your data is already there, so there is nothing you need to do. Still stuck? Write to [success@speakai.co](mailto:success@speakai.co), use the chat bubble in the bottom corner of the app, or [book a free consult](https://calendly.com/speak-ai/consult?utm_source=docs&utm_campaign=consult). --- Related: [Getting started](/help/start/) · [Account setup](/help/start/account-setup/) # Mobile app > Record, upload, transcribe and analyze audio from iOS or Android. Recordings sync to the same workspace as the web app automatically. Source: https://docs.speakai.co/help/start/mobile-app/ · Markdown: https://docs.speakai.co/help/start/mobile-app/index.md The Speak AI app for iOS and Android records and uploads from your phone, then gives you the same transcripts and analysis you get on the web: - **Record** meetings, interviews, lectures, and notes with the microphone button - **Upload** audio and video files from your phone's storage - **Read and search** transcripts, and ask questions in [AI Chat](/help/ai-chat/) - **Organize** recordings into [folders](/help/folders/manage/) - **Get a push notification** when a transcription finishes ## Install and sign in 1. Download the Speak AI app from the **App Store** on iOS or **Google Play** on Android. 1. Sign in with your Speak AI account, or sign up with Google or Apple. 1. Allow microphone access when the app asks for it. 1. Tap the microphone to record, or import a file from your phone's storage. ## Record better audio on a phone - **Put the phone in the middle of the table.** In a meeting, that picks up every speaker rather than the person sitting closest. - **Record somewhere quiet.** Background noise costs you accuracy more than anything else does. [How accuracy works](/help/transcription/accuracy/) - **Use a Bluetooth microphone in a large room.** An external microphone connected to your phone gives much better results than the built-in one. - **Check your free storage first.** A long recording needs room on the device before it uploads. ## Sync with the web app Your phone and the web share one account and one library. Anything you record on your phone appears in your dashboard, and anything you upload on the web opens on your phone. Recordings upload as soon as you have a connection. Record while offline and the app uploads and processes the file once you are back on Wi-Fi or cellular data. If a recording still shows **Upload Pending**, open the app on Wi-Fi to push it through. Evaluating Speak AI for a team? [Book a demo and see your own recordings analyzed](https://calendly.com/speak-ai/demo?utm_source=docs&utm_campaign=book-demo). --- Related: [Getting started](/help/start/) · [Account setup](/help/start/account-setup/) # Teams > Invite teammates, group them, set folder-level permissions, and share a media library across your whole Speak AI workspace. Source: https://docs.speakai.co/help/teams/ · Markdown: https://docs.speakai.co/help/teams/index.md One workspace for the whole team. Invite members by email or with an invite link, organize them into groups, and use [permissions](/help/teams/permissions/) to control which folders each group sees and edits. [Notifications](/help/account/notifications/) keep the right people informed when recordings arrive. ![Team Management in Speak, showing 1 of 10 seats used. An Invite Members card holds the invite link, masked here, with Manage Link and Add Team Member buttons. Below it the Team Members table lists each person with their email, role and joined date.](/help/media/teams/teams-index.jpg) - **[Groups and permissions](/help/teams/permissions/)** ## Invite team members 1. Go to [Team Management](https://app.speakai.co/useradmin/team) in the sidebar 1. Click **Invite Member** 1. Enter their email address 1. Set their permissions 1. Send the invitation They'll receive an email with a link to join your team. Once they accept, they'll have access to shared resources based on their permissions. ## Create user groups For larger teams, you can organize members into groups with shared access: 1. Go to [Groups](https://app.speakai.co/useradmin/group) 1. Click **Create Group** 1. Name the group and add members 1. Set group-level permissions Groups are useful when different teams need access to different folders or features. ## Share media and folders Team members can share: - **Folders:** Share entire folders with specific team members or groups - **Individual media:** Share specific recordings - **Insights:** Team-wide custom categories and analysis settings ## Add seats on Pro Pro includes 2 seats by default, and you can add more seats as needed. Each team member gets: - Access to shared media libraries - Team collaboration features - Shared transcription hours and storage - Priority support For larger teams or enterprise needs with SSO and advanced controls, [book a consultation](https://calendly.com/speak-ai/demo?utm_source=docs&utm_campaign=book-demo). ## Account owner controls As the account owner, you can: - Add or remove team members - Change member roles and permissions - Control who can access developer tools (API keys, webhooks) - Manage billing and subscription settings Only the account owner can delete the team account or manage billing. Setting up Speak AI for a team? [Book a demo](https://calendly.com/speak-ai/demo?utm_source=docs&utm_campaign=book-demo) and we'll configure it together. # Groups and permissions > Groups decide who sees which folders and what they can do there, so sensitive recordings stay restricted while shared work stays open. Source: https://docs.speakai.co/help/teams/permissions/ · Markdown: https://docs.speakai.co/help/teams/permissions/index.md Permissions live on the folder, and every file inside inherits them. Give a group access to a folder once and each recording you add lands under the same rules, so sensitive material stays restricted while shared work stays open to the people who need it. Manage members and groups from [Team](https://app.speakai.co/useradmin/team). ![The Add Team Member panel on the Team page. A shareable invite link sits at the top, masked here, above a box for email addresses and a Default role picker set to Member. The Permissions grid below groups checkboxes by area: Folders, Surveys, Media, Payment, Team management and Developer, with Meeting Assistant and Profile settings starting underneath. Cancel and Send Invites sit at the bottom.](/help/media/teams/teams-permissions.jpg) ## Build a user group Folder access runs on user groups, not on people picked one at a time. Open [Team](https://app.speakai.co/useradmin/team), switch to the **User Groups** tab and click **Create User Group**. Give the group a name, add the members you want, and save it. You can come back and change the members later from **Edit Group**, and every folder that group is assigned to follows the change. ## Give a group access to a folder 1. Open **Folders** in the left sidebar. 1. Click the **three-dot menu** next to the folder and select **Edit**. 1. Pick the groups you want from the **Assign To** list. 1. Click **Save**. You get the same **Assign To** list when you create a folder, so you can set access up front and still change it whenever you need to. Anything already in the folder picks up the change, and so does anything you add later. Remove a group and its members lose access to everything in that folder straight away. **Assign To** shows up only on a team workspace, and only when your own permissions include assigning folders. ## Change access for a single file There is no per-file access list. A file inherits access from the folder it sits in, so to change who can see one recording, move it into a folder assigned to the right groups. Select the file in its folder, open the actions menu and choose **Move to Folder**. Keep sensitive recordings in their own folder rather than trying to manage access file by file. ## Set what a member can do Roles and permissions sit on the member, not on the folder. Go to [Team](https://app.speakai.co/useradmin/team), click **Invite Members**, and pick a **Default role** of **Admin** or **Member**. The **Permissions** grid underneath turns individual capabilities on and off, grouped by area: Folders, Surveys, Media, Payment, Team management and Developer, with Meeting Assistant and Profile settings below. Under **Folders** you control **Create**, **Delete**, **Download**, **Share** and **Assign** separately. **Access all** is the one to watch: it hands someone every folder in the workspace regardless of which groups they belong to. ## When a team member cannot see a file Check two things. First, whether the file moved into a folder they do not have access to. Second, whether they were removed from the group that folder is shared with. Both take effect immediately, so a file that was visible yesterday can disappear from their view without any change to the file itself. Evaluating Speak AI for a team? [Book a demo and see your own recordings analyzed](https://calendly.com/speak-ai/demo?utm_source=docs&utm_campaign=book-demo). --- Related: [Teams](/help/teams/) # Transcription > Speak AI transcribes audio and video automatically across 135 languages, separates speakers, and timestamps every line for review and editing. Source: https://docs.speakai.co/help/transcription/ · Markdown: https://docs.speakai.co/help/transcription/index.md Upload any recording and Speak AI transcribes it automatically: **135 languages and regional variants** {/* fact:languages.transcription */}, speakers separated and labeled, timestamps on every line. A typical file is ready in about half its own length, so a one-hour meeting is readable in about thirty minutes. ![A finished transcript beside its player. The header marks the recording Complete, 6 minutes 48 seconds long and in English, the transcript alternates between two labelled speakers with a timestamp on every turn, and a panel on the left lists the playback shortcuts and the first insights.](/help/media/transcription/transcription-index.jpg) - **Speakers identified for you.** Each voice becomes its own labeled paragraph you can rename once and apply everywhere. [How speaker identification works](/help/transcription/speakers/) - **Accuracy you can improve.** Clear audio transcribes at 95 percent or better, and [custom vocabulary](/help/transcription/custom-vocabulary/) teaches Speak AI your names and jargon. - **Translation built in.** Translate any finished transcript into 111 languages. [Translation](/help/transcription/translation/) - **Editing that saves back.** Fix wording, speakers, and timestamps in the [transcript editor](/help/transcription/editing/). ## After the transcript Transcription is the start, not the product. The same file automatically gets [insights](/help/insights/): keywords, sentiment, and entities, and answers questions in [AI Chat](/help/ai-chat/). When automated isn't enough, order [human transcription](/help/transcription/human/) on the same file. ## Common questions **How long does it take?** About half the file's duration for a typical recording: [Processing times](/help/transcription/processing-times/). **What if it picked the wrong language?** Set the language at upload or re-transcribe: [Fix a transcript in the wrong language](/help/troubleshoot/transcription/). Evaluating transcription quality for a team? [Book a demo and see your own recordings analyzed](https://calendly.com/speak-ai/demo?utm_source=docs&utm_campaign=book-demo). --- Related: [Accuracy](/help/transcription/accuracy/) · [Supported languages](/help/transcription/languages/) · [Uploads](/help/uploads/) · [Processing times](/help/transcription/processing-times/) # Accuracy > With clear audio, transcription accuracy typically exceeds 95 percent. Audio quality is the biggest factor, ahead of accent, crosstalk and background noise. Source: https://docs.speakai.co/help/transcription/accuracy/ · Markdown: https://docs.speakai.co/help/transcription/accuracy/index.md With clear audio, automated transcription accuracy typically exceeds **95 percent** . The gap between a great transcript and a rough one is almost never the engine. It's the recording. ## What moves accuracy most, in order 1. **Audio quality.** A dedicated microphone beats a laptop mic across the room, every time. 2. **Crosstalk.** Overlapping speakers are the hardest thing in transcription; one voice at a time transcribes nearly perfectly. 3. **Background noise.** Record in the quietest room available. 4. **Specialized vocabulary.** Product names, drug names, legal terms: [custom vocabulary](/help/transcription/custom-vocabulary/) teaches them once, for every future file. 5. **Language setting.** Auto-detect is right most of the time; set it explicitly for short, noisy, or mixed-language files. ## Testing accuracy before you commit The honest test is your own audio, not a benchmark. Upload a real recording, the kind your team actually produces, and read the result. The [free trial](/help/account/free-trial/) includes enough transcription to do exactly that, and if your evaluation file is longer than the trial cap, ask us to extend it: [book a free consult](https://calendly.com/speak-ai/consult?utm_source=docs&utm_campaign=consult). ## When automated isn't enough Legal records, published interviews, compliance archives: order [human transcription](/help/transcription/human/) on the same file and get the highest accuracy available, reviewed by a person. --- Related: [Custom vocabulary](/help/transcription/custom-vocabulary/) · [Supported languages](/help/transcription/languages/) · [Human transcription](/help/transcription/human/) # Custom vocabulary > Teach Speak AI unusual names, acronyms and industry jargon so they transcribe correctly. Built for medical, legal and technical recordings. Source: https://docs.speakai.co/help/transcription/custom-vocabulary/ · Markdown: https://docs.speakai.co/help/transcription/custom-vocabulary/index.md ## Why use custom vocabulary? ![The Vocabulary page under Settings. A Tips panel explains that you can add up to 100 unique words and that single characters and long phrases will not work, and the English list below it holds two saved words, each removable, with an Add a word box and a Save button. Add Language sits at the top right.](/help/media/transcription/transcription-custom-vocabulary.jpg) Speak AI's transcription engine is great at recognizing common words, but it can struggle with specialized terminology, unusual names, acronyms, or industry jargon. Adding these to your custom vocabulary helps the system recognize them accurately. ## What to add - **People names:** Unusual spellings, non-English names, nicknames - **Company and product names:** Your company name, product names, competitor names - **Industry terms:** Medical terminology, legal jargon, technical acronyms - **Acronyms:** How they should appear in the transcript (e.g., "HIPAA", "GDPR", "NLP") - **Brand-specific language:** Internal project names, feature names, code names ## Set it up Vocabulary is kept per language, so you pick the language first and then add words to it. 1. Go to [Vocabulary](https://app.speakai.co/profile/vocabulary) in your profile. 1. Select **Add Language** and choose the language your recordings are in. 1. Type a word into **Add a word** and press Enter to add it. Repeat for each term. 1. Use **Enable Language** or **Disable Language** to turn a whole language on or off without deleting its words. Your vocabulary applies to future transcriptions in that language. Adding a term to English does not affect your Spanish recordings, so add it to each language you record in. ## Write entries that actually get matched Speak's in-app tips set the rules, and they are worth following: - **Up to 100 entries per language.** Spend them on the words that actually get missed. - **No single characters and no bare numbers.** Speak rejects them. - **Keep entries short.** Long phrases are not recommended, so add the distinctive word rather than the whole sentence. - **Add the unusual ones:** brand names, product names, technical terms, slang, and anything else uncommon. - **Be specific:** add the exact spelling you want to appear in the transcript - **Include variations:** if a term has multiple forms, for example "Speak AI" and "SpeakAI", add both - **Focus on problem words:** start with terms you notice being consistently mis-transcribed ## Examples by industry - **Healthcare:** Drug names, medical procedures, diagnosis codes - **Legal:** Case names, legal terms, statute references - **Technology:** Programming languages, framework names, API terms - **Research:** Participant codes, methodology terms, instrument names Custom vocabulary works alongside our AI transcription engine and improves accuracy over time as the system learns your specific terminology. Want a hand setting this up? [Book a free consult](https://calendly.com/speak-ai/consult?utm_source=docs&utm_campaign=consult) and we'll do it together on your account. --- Related: [Transcription](/help/transcription/) · [Accuracy](/help/transcription/accuracy/) # Editing > Fix wording, reassign a speaker and adjust timestamps in the built-in editor. Every change saves straight back to the transcript. Source: https://docs.speakai.co/help/transcription/editing/ · Markdown: https://docs.speakai.co/help/transcription/editing/index.md ![A transcript in edit mode. Every paragraph carries an editable speaker label, editable start and end timestamps and a delete button, Cancel and Save sit in the toolbar above, and a Reset Speakers control in the left panel puts every label back to its default.](/help/media/transcription/transcription-editing.jpg) Open a transcribed file and click into the transcript to start editing. You can correct wording, split and merge paragraphs, and relabel speakers. Every change saves back to the transcript that search, insights and AI Chat read from, so a fix you make once carries through the rest of the product. Click any sentence to move the player to that point and check the audio as you read. ## Keyboard shortcuts While you are editing the transcript: | Shortcut | What it does | | --- | --- | | **Click on text** | Start editing that section | | **Click any sentence** | Jump the player to that point | | **Enter** | Split into a new paragraph at the cursor | | **Tab** | Jump to the next sentence | | **Cmd/Ctrl + J** | Merge the paragraph into the one above | | **Cmd/Ctrl + Shift + D** | Duplicate the paragraph | | **Cmd/Ctrl + Z** | Undo | | **Cmd/Ctrl + Y** or **Cmd/Ctrl + Shift + Z** | Redo | | **Cmd/Ctrl + F** | Find text in the transcript | | **Cmd/Ctrl + S** | Save your changes | | **Esc** | Exit full-screen view | When the speaker menu is open: | Shortcut | What it does | | --- | --- | | **Up** and **Down** arrows | Move through the speaker suggestions | | **Enter** | Confirm the highlighted speaker name | | **Esc** | Close the speaker menu | ## Fixing the same mistake everywhere For a recurring error, such as a name the engine misheard, press **Cmd/Ctrl + F** and step through each instance. For a change that runs the length of the file, ask AI Chat instead: "Replace 'gonna' with 'going to'" or "Change Speaker 1 to John Smith". Relabel the speakers before you start on the wording. A transcript with real names is easier to follow while you work, and it makes later questions like "What did John say about the budget?" answerable. See [Speaker identification](/help/transcription/speakers/). ## Insights beside the transcript The panel to the right of the transcript shows what Speak AI found in the text. It is split into tabs, so select the one you want: - **Insights:** the narrative summary of the file - **Keywords:** the keywords and entities detected, including brands, people and locations - **[Sentiment](/help/insights/sentiment/):** positive and negative highlights - **Speakers:** who spoke, and for how long. See [Speaker identification](/help/transcription/speakers/). - **Fields:** structured values saved against the file. See [Custom categories](/help/insights/categories/). - **Clips:** the clips you have cut from this file Files captured through a recorder get an extra **Survey** tab holding the respondent's answers. ## Following the audio while you read - Click any word to move playback to that point. - Turn on auto-scroll to keep the current line in view during playback. - Use the search bar to find a term and step through each occurrence. Want a hand setting this up? [Book a free consult](https://calendly.com/speak-ai/consult?utm_source=docs&utm_campaign=consult) and we'll do it together on your account. --- Related: [Transcription](/help/transcription/) · [Accuracy](/help/transcription/accuracy/) # Human transcription > Send a file to Speak AI's human transcription team when you need higher accuracy than automated transcription delivers. Source: https://docs.speakai.co/help/transcription/human/ · Markdown: https://docs.speakai.co/help/transcription/human/index.md Professional transcription is an integrated service within Speak that helps you make your transcriptions as accurate as possible using our team of remote transcribers. Our transcription team is experienced in editing, research and quality assurance and strives to make every transcript as accurate as possible so that you can use it for professional research, publishing, accessibility and more. Once you have uploaded your audio or video file and transcribed and analyzed it successfully, open the file you would like to get professionally transcribed. Open the **More actions** menu, the three dots at the top right near the media player, and select **Human Transcription**. A dialog opens headed **Get Professional Transcription**. Clicking on that button will pop up the modal you see below: To ensure our team makes your transcription as accurate as possible, we have provided you with options to add speaker labels, a glossary, and any additional instructions or insights that will help. ## The Process A transcription job is created within the Speak system. Our transcription team accepts the request and then gets sent a link to our secure custom-built transcription editing and quality assurance interface. They work through the file to make the transcription and speakers as accurate as possible. That is reviewed and then accepted. At that point, you will receive a notification that your transcription is complete. As soon as the transcriber is done with their work, they submit and the environment and closed. All transcribers manage media securely, have no option to download or revisit media, and cannot access the media once the job is done. ## Speaker Names Please put the full name (first and last) in the order that they speak in. This helps our transcribers identify speakers accurately, so you have an accurate final transcript. ## Glossary Please input any unique language, terminology, or specific spelling that you need in your final transcript. ## Additional Instructions If there are any other suggestions, stylistic requirements, or other insights, please add them here. ## Automatic Merge Your transcript will be approved and merged automatically. Uncheck this option if you want the ability to review, approve and merge your transcript manually. ## Rush Option Get your transcript back in 48 hours (Up to 3x faster) with our rush option. The standard turn-around time is 4 to 5 days. In the order dialog it is the **Rush delivery (+ $1.00 / min)** checkbox. ## Pricing Speak automatically charges USD 1.50 per minute, or USD 2.50 per minute with rush delivery. In human transcription, through all the work we have done, we have found that USD 1.50 per minute enables us to get high-quality transcribers who care about quality assurance and the final output. ## Transcription Complete Notification You will receive an email when your transcription has been completed. You can then log back into your account to get your final version. If you have selected automatic merge, it will have already been accepted by the system and re-analyzed. If you didn't do an automatic merge, you can select **Human Transcription** from the same **More actions** menu to review the changes and then accept them manually. ## Feedback or More Edits Required? Our transcription team does their absolute best, but if you find any problems with your transcript, please send us an email at [success@speakai.co](mailto:success@speakai.co) with any details about inaccuracies. We will work with our team to resolve and update the transcript, so you are happy with the final output. Evaluating Speak AI for a team? [Book a demo and see your own recordings analyzed](https://calendly.com/speak-ai/demo?utm_source=docs&utm_campaign=book-demo). --- Related: [Transcription](/help/transcription/) · [Accuracy](/help/transcription/accuracy/) # Supported languages > Speak AI transcribes 135 languages and regional variants, including 13 Arabic dialects, and translates finished transcripts into 111 languages. Source: https://docs.speakai.co/help/transcription/languages/ · Markdown: https://docs.speakai.co/help/transcription/languages/index.md Speak AI transcribes **135 languages and regional variants**, including **13 Arabic dialects** and 9 English variants, with automatic language detection. {/* fact:languages.transcription */} Finished transcripts translate into **111 languages**. {/* fact:languages.translation */} - **49** languages support live, real-time transcription {/* fact:languages.live */} - **31** support [custom vocabulary](/help/transcription/custom-vocabulary/) for names and jargon {/* fact:languages.vocab */} - **28** translation languages support dubbed audio {/* fact:languages.dubbing */} ## The full list Search for a language, or filter by the capability you need. Each code is the value you set at upload or request a translation with: the transcription code where Speak AI transcribes the language, and the translation code where it only translates into it.
| Language | Code | Transcription | Live | Vocabulary | Translation | Dubbing | | --- | --- | --- | --- | --- | --- | --- | | Abkhaz | `ab-GE` | Yes | No | No | No | No | | Afrikaans | `af-ZA` | Yes | No | No | Yes | No | | Albanian | `sq-AL` | Yes | No | No | No | No | | Amharic | `am-ET` | Yes | No | No | No | No | | Arabic (Bahrain) | `ar-BH` | Yes | No | No | No | No | | Arabic (Iraq) | `ar-IQ` | Yes | No | No | No | No | | Arabic (Israel) | `ar-IL` | Yes | No | No | No | No | | Arabic (Jordan) | `ar-JO` | Yes | No | No | No | No | | Arabic (Kuwait) | `ar-KW` | Yes | No | No | No | No | | Arabic (Lebanon) | `ar-LB` | Yes | No | No | No | No | | Arabic (Oman) | `ar-OM` | Yes | No | No | No | No | | Arabic (Palestinian Authority) | `ar-PS` | Yes | No | No | No | No | | Arabic (Qatar) | `ar-QA` | Yes | No | No | No | No | | Arabic (Saudi Arabia) | `ar-SA` | Yes | No | No | Yes | Yes | | Arabic (U.A.E.) | `ar-AE` | Yes | No | No | No | No | | Arabic Egypt | `ar-EG` | Yes | No | No | No | No | | Arabic Syrian Arab Republic | `ar-SY` | Yes | No | No | No | No | | Armenian | `hy-AM` | Yes | No | No | Yes | No | | Assamese | `as-IN` | Yes | No | No | Yes | No | | Asturian | `ast-ES` | Yes | No | No | No | No | | Aymara | `ay` | No | No | No | Yes | No | | Azerbaijani | `az-AZ` | Yes | No | No | No | No | | Bambara | `bm` | No | No | No | Yes | No | | Bashkir | `ba-RU` | Yes | No | No | No | No | | Basque | `eu-ES` | Yes | No | No | Yes | No | | Belarusian | `be-BY` | Yes | No | No | Yes | No | | Bengali | `bn-IN` | Yes | No | No | No | No | | Bhojpuri | `bho` | No | No | No | Yes | No | | Bosnian | `bs-BA` | Yes | No | No | No | No | | Breton | `br-FR` | Yes | No | No | No | No | | Bulgarian | `bg-BG` | Yes | Yes | Yes | Yes | Yes | | Burmese | `my-MM` | Yes | No | No | Yes | No | | Catalan | `ca-ES` | Yes | Yes | Yes | Yes | No | | Cebuano | `ceb` | No | No | No | Yes | No | | Central Kurdish, Iran | `ckb-IR` | Yes | No | No | No | No | | Central Kurdish, Iraq | `ckb-IQ` | Yes | No | No | Yes | No | | Chinese (Cantonese, Traditional) | `zh-HK` | Yes | Yes | No | No | No | | Chinese (Cantonese) | `yue-HK` | Yes | No | No | No | No | | Chinese (Simplified) | `zh-CN` | Yes | Yes | Yes | No | No | | Chinese (Traditional) | `zh-TW` | Yes | Yes | Yes | No | No | | Corsican | `co` | No | No | No | Yes | No | | Croatian | `hr-HR` | Yes | No | No | Yes | Yes | | Czech | `cs-CZ` | Yes | Yes | Yes | Yes | Yes | | Danish | `da-DK` | Yes | Yes | Yes | Yes | Yes | | Dhivehi | `dv` | No | No | No | Yes | No | | Dogri | `doi` | No | No | No | Yes | No | | Dutch | `nl-NL` | Yes | Yes | Yes | Yes | Yes | | English (Australian) | `en-AU` | Yes | Yes | Yes | No | No | | English (British) | `en-GB` | Yes | Yes | Yes | No | No | | English (Indian) | `en-IN` | Yes | Yes | Yes | No | No | | English (Irish) | `en-IE` | Yes | Yes | Yes | No | No | | English (New Zealand) | `en-NZ` | Yes | Yes | Yes | No | No | | English (Scottish) | `en-AB` | Yes | Yes | Yes | No | No | | English (South African) | `en-ZA` | Yes | Yes | Yes | No | No | | English (US) | `en-US` | Yes | Yes | Yes | Yes | Yes | | English (Welsh) | `en-WL` | Yes | No | No | No | No | | Esperanto | `eo` | No | No | No | Yes | No | | Estonian | `et-EE` | Yes | Yes | No | Yes | No | | Ewe | `ee` | No | No | No | Yes | No | | Faroese | `fo-FO` | Yes | No | No | No | No | | Farsi | `fa-IR` | Yes | No | No | Yes | No | | Filipino (Tagalog) | `fil` | No | No | No | Yes | Yes | | Finnish | `fi-FI` | Yes | Yes | Yes | Yes | Yes | | Flemish | `nl-BE` | Yes | Yes | No | No | No | | French | `fr-FR` | Yes | Yes | Yes | Yes | Yes | | French (Canadian) | `fr-CA` | Yes | Yes | Yes | No | No | | Frisian | `fy` | No | No | No | Yes | No | | Galician | `gl-ES` | Yes | No | No | Yes | No | | Georgian | `ka-GE` | Yes | No | No | No | No | | German | `de-DE` | Yes | Yes | Yes | Yes | Yes | | German (Swiss) | `de-CH` | Yes | Yes | No | No | No | | Greek | `el-GR` | Yes | Yes | No | Yes | Yes | | Guarani | `gn` | No | No | No | Yes | No | | Gujarati | `gu-IN` | Yes | No | Yes | Yes | No | | Haitian | `ht-HT` | Yes | No | No | Yes | No | | Hausa | `ha-NG` | Yes | No | No | No | No | | Hawaiian | `haw-US` | Yes | No | No | Yes | No | | Hebrew | `he-IL` | Yes | No | No | Yes | No | | Hindi | `hi-IN` | Yes | Yes | Yes | Yes | Yes | | Hindi (Latin) | `hi-Latn` | Yes | Yes | No | No | No | | Hmong | `hmn` | No | No | No | Yes | No | | Hungarian | `hu-HU` | Yes | Yes | No | Yes | No | | Icelandic | `is-IS` | Yes | No | No | Yes | No | | Igbo | `ig` | No | No | No | Yes | No | | Ilocano | `ilo` | No | No | No | Yes | No | | Indonesian | `id-ID` | Yes | Yes | No | Yes | Yes | | Irish | `ga-IE` | Yes | No | No | Yes | No | | Italian | `it-IT` | Yes | Yes | Yes | Yes | Yes | | Japanese | `ja-JP` | Yes | Yes | Yes | Yes | Yes | | Javanese | `jw-ID` | Yes | No | No | Yes | No | | Kabyle | `kab-DZ` | Yes | No | No | No | No | | Kannada | `kn-IN` | Yes | No | No | Yes | No | | Kazakh | `kk-KZ` | Yes | No | No | No | No | | Khmer | `km-KH` | Yes | No | No | Yes | No | | Kinyarwanda | `rw` | No | No | No | Yes | No | | Konkani | `gom` | No | No | No | Yes | No | | Korean | `ko-KR` | Yes | Yes | Yes | Yes | Yes | | Krio | `kri` | No | No | No | Yes | No | | Kurdish | `ku` | No | No | No | Yes | No | | Kyrgyz | `ky` | No | No | No | Yes | No | | Lao | `lo-LA` | Yes | No | No | Yes | No | | Latin | `la-VA` | Yes | No | No | Yes | No | | Latvian | `lv-LV` | Yes | Yes | No | Yes | No | | Lingala | `ln-CD` | Yes | No | No | Yes | No | | Lithuanian | `lt-LT` | Yes | Yes | No | Yes | No | | Luganda | `lg` | No | No | No | Yes | No | | Luxembourgish | `lb-LU` | Yes | No | No | Yes | No | | Macedonian | `mk-MK` | Yes | No | No | No | No | | Maithili | `mai` | No | No | No | Yes | No | | Malagasy | `mg-MG` | Yes | No | No | Yes | No | | Malay | `ms-MY` | Yes | Yes | Yes | Yes | Yes | | Malayalam | `ml-IN` | Yes | No | No | Yes | No | | Maltese | `mt-MT` | Yes | No | No | No | No | | Maori | `mi-NZ` | Yes | No | No | Yes | No | | Marathi | `mr-IN` | Yes | No | No | No | No | | Meiteilon (Manipuri) | `mni-Mtei` | No | No | No | Yes | No | | Mizo | `lus` | No | No | No | Yes | No | | Mongolian | `mn-MN` | Yes | No | No | No | No | | Nepali | `ne-NP` | Yes | No | No | Yes | No | | Norwegian | `nb-NO` | Yes | Yes | No | Yes | No | | Norwegian Nynorsk | `nn-NO` | Yes | No | No | No | No | | Nyanja (Chichewa) | `ny` | No | No | No | Yes | No | | Occitan | `oc-FR` | Yes | No | No | No | No | | Odia (Oriya) | `or` | No | No | No | Yes | No | | Oromo | `om` | No | No | No | Yes | No | | Panjabi | `pa-IN` | Yes | No | No | No | No | | Pashto | `ps-AF` | Yes | No | No | No | No | | Polish | `pl-PL` | Yes | Yes | Yes | Yes | Yes | | Portuguese (Brazilian) | `pt-BR` | Yes | Yes | No | No | No | | Portuguese (Portugal) | `pt-PT` | Yes | Yes | No | Yes | Yes | | Quechua | `qu` | No | No | No | Yes | No | | Romanian | `ro-RO` | Yes | Yes | Yes | Yes | Yes | | Russian | `ru-RU` | Yes | Yes | Yes | Yes | Yes | | Samoan | `sm` | No | No | No | Yes | No | | Sanskrit | `sa-IN` | Yes | No | No | Yes | No | | Scots Gaelic | `gd` | No | No | No | Yes | No | | Sepedi | `nso` | No | No | No | Yes | No | | Serbian | `sr-RS` | Yes | No | No | No | No | | Sesotho | `st` | No | No | No | Yes | No | | Shona | `sn-ZW` | Yes | No | No | Yes | No | | Sindhi | `sd-PK` | Yes | No | No | Yes | No | | Sinhala | `si-LK` | Yes | No | No | Yes | No | | Slovak | `sk-SK` | Yes | Yes | No | Yes | Yes | | Slovenian | `sl-SI` | Yes | No | No | Yes | No | | Somali | `so-SO` | Yes | No | No | No | No | | Spanish | `es-ES` | Yes | Yes | Yes | Yes | Yes | | Spanish (Mexico) | `es-MX` | Yes | Yes | No | No | No | | Sundanese | `su-ID` | Yes | No | No | Yes | No | | Swahili | `sw-KE` | Yes | No | No | No | No | | Swedish | `sv-SE` | Yes | Yes | No | Yes | Yes | | Tagalog | `tl-PH` | Yes | No | No | No | No | | Tajik | `tg-TJ` | Yes | No | No | Yes | No | | Tamasheq | `taq` | Yes | Yes | No | No | No | | Tamil | `ta-IN` | Yes | No | No | Yes | Yes | | Tatar | `tt-RU` | Yes | No | No | Yes | No | | Telugu | `te-IN` | Yes | No | No | Yes | No | | Thai | `th-TH` | Yes | Yes | No | Yes | No | | Tibetan | `bo-CN` | Yes | No | No | No | No | | Tigrinya | `ti` | No | No | No | Yes | No | | Tsonga | `ts` | No | No | No | Yes | No | | Turkish | `tr-TR` | Yes | Yes | Yes | Yes | Yes | | Turkmen | `tk-TM` | Yes | No | No | Yes | No | | Twi (Akan) | `ak` | No | No | No | Yes | No | | Ukrainian | `uk-UA` | Yes | Yes | No | Yes | Yes | | Urdu | `ur-PK` | Yes | No | No | No | No | | Uyghur | `ug` | No | No | No | Yes | No | | Uzbek | `uz-UZ` | Yes | No | No | No | No | | Vietnamese | `vi-VN` | Yes | Yes | Yes | Yes | No | | Welsh | `cy-GB` | Yes | No | No | No | No | | Xhosa | `xh` | No | No | No | Yes | No | | Yiddish | `yi-XX` | Yes | No | No | Yes | No | | Yoruba | `yo-NG` | Yes | No | No | Yes | No | | Zulu | `zu` | No | No | No | Yes | No |
Two entries in the language picker are not in the table because they are not languages. **Auto** detects the language for you, and **Multi** handles one file that switches between languages. ## Working across languages - **Auto-detection picks the language per file.** Short or noisy files can detect wrong; set the language at upload when you know it. [Fix a wrong-language transcript](/help/troubleshoot/transcription/) - **Mixed-language audio:** set the dominant language rather than relying on detection, then correct in the [editor](/help/transcription/editing/). - **Translation happens after transcription**, on the finished transcript: [Translation](/help/transcription/translation/). Need a language you don't see, or evaluating multilingual coverage for a team? [Book a demo](https://calendly.com/speak-ai/demo?utm_source=docs&utm_campaign=book-demo) and bring a recording in that language. --- Related: [Transcription](/help/transcription/) · [Translation](/help/transcription/translation/) · [Custom vocabulary](/help/transcription/custom-vocabulary/) # Processing times > Speak AI processes files far faster than real time. A 30-minute meeting is usually ready in under a minute, a 1-hour file in a minute or two. Source: https://docs.speakai.co/help/transcription/processing-times/ · Markdown: https://docs.speakai.co/help/transcription/processing-times/index.md Speak AI processes files **far faster than real time**. As a rule, expect roughly **a minute or two of processing for every hour of recording**: - A 10-minute recording is ready in well under a minute - A 30-minute meeting takes under a minute - A 1-hour file takes a minute or two - A 2-hour recording takes around three minutes Around 9 in 10 files finish within five minutes. Processing time scales with length, so a longer file takes longer, but even a 3-hour recording usually comes back in under 10 minutes. Very short files have a small fixed startup cost, so a two-minute clip and a ten-minute clip finish in a similar amount of time. Files longer than 4 hours are split into segments and transcribed in order, which takes longer than the rate above suggests. See [Duration limits](/help/uploads/duration/). ## What affects the speed - **File length:** longer files take proportionally longer, at roughly the rate above. - **File format:** standard formats such as MP3, MP4 and WAV go straight through. An unusual format is converted first, which adds time. See [Supported formats](/help/uploads/formats/). - **Upload speed:** your file has to reach Speak AI before processing starts, so a slow connection adds to the total wait on a large file. - **Large batches:** when you upload many files at once, Speak AI releases them steadily rather than all at once. The last file in a big batch starts later than the first. - **Server load:** processing can run slightly longer at peak times. ## When a file takes longer than expected Track progress from your [dashboard](https://app.speakai.co/dashboard), where a spinner means the file is still working and a green check means it is done. Speak AI also emails you when the file is ready. See [Status](/help/transcription/status/) for what each state means. If a file is still processing after **30 minutes**, whatever its length, something has gone wrong: 1. Refresh the page in case the status has already updated. 1. Re-transcribe the file from its options menu. 1. If it fails again, send us the file name and we will investigate. See [Transcription troubleshooting](/help/troubleshoot/transcription/). Evaluating Speak AI for a team? [Book a demo and see your own recordings analyzed](https://calendly.com/speak-ai/demo?utm_source=docs&utm_campaign=book-demo). --- Related: [Transcription](/help/transcription/) · [Accuracy](/help/transcription/accuracy/) # Speaker identification > Speaker diarisation separates each voice into its own labeled paragraph. What makes it accurate, and how to correct the labels. Source: https://docs.speakai.co/help/transcription/speakers/ · Markdown: https://docs.speakai.co/help/transcription/speakers/index.md ![A transcript with every speaker in its own labeled paragraph, and the rename box open on the first one. The box holds that speaker's current label, lists the other speaker in the file underneath it, and offers All paragraphs or Only this one alongside Cancel and Save. The player and its keyboard shortcuts sit on the left.](/help/media/transcription/transcription-speakers.jpg) When several people talk in a recording, Speak AI separates the voices and gives each one its own labeled paragraph. How much it knows about who is speaking depends on how the recording was captured. ## Meetings the Meeting Assistant joins When the [Meeting Assistant](/help/meeting-assistant/) joins a Zoom, Google Meet, Teams or Webex call, it reads the participant names from the meeting itself, so each person is named from the start. With calendar sync turned on, the names from the invite are used. Nothing needs relabeling afterwards. ## Recordings you upload For a file recorded on a phone, a handheld recorder or any other device, Speak AI separates voices by their sound and gives each one a numbered label, Speaker 1, Speaker 2, and so on. It has no way to know the real names, so rename the speakers yourself once the transcript is ready. ## Rename a speaker 1. Open the transcribed file. 1. Click any speaker label, for example "Speaker 1". 1. Type the person's name. 1. Press **Enter** to confirm. The name applies to every paragraph that speaker has in the file. You can rename speakers in the read-only view and while [editing the transcript](/help/transcription/editing/), and you can work through all of them in one pass by pressing **Enter** after each name. [AI Chat](/help/ai-chat/) handles the same job in plain language, which is quicker when you have several to do at once: - "Change Speaker 1 to John Smith" - "Rename Speaker A to Sarah and Speaker B to Mike" - "The interviewer is Jane Doe" Rename people early. Once the labels are real names, you can ask "What did Dr. Smith say about the treatment plan?" and get an answer scoped to that person. ## Merge two labels into one If one person was split across two labels, rename one of them to exactly match the other. Speak AI combines them into a single speaker and confirms with "Speakers merged." ## Reset the labels and start again While editing a transcript, **Reset Speakers** puts every label back to its default. This is the fastest way out of a transcript where the labels are thoroughly mixed up: reset first, then relabel from a clean slate. ## What makes detection accurate Separation is most reliable when: - Voices are distinct from each other - People talk one at a time, with little overlap - Background noise is low - Each person has their own microphone, or the recorder sits in the middle of the table In a noisy room or a conversation with heavy crosstalk, Speak AI can merge two people into one label or split one person across several. Poor audio also tends to produce more labels than there were people. Either way the fix is the same: rename them, merge two by giving them the same name, or reset and relabel. ## Speaker analytics Open a recording, then select the speakers icon in the insights toolbar to open the **Speakers** panel. For each person it shows: - How long they spoke, for example 3m 43s - How many times they spoke, shown as mentions - Their words per minute ![The Speakers panel open beside a transcript. Each speaker gets a row with their label, how long they spoke, how many times they were mentioned and their words per minute, and a Reset Speakers button above the list returns every label to its default.](/help/media/transcription/transcription-speaker-analytics.jpg) Select a speaker to step through every one of their turns. A playback bar appears with each turn marked on it, so you can move between them without scrolling the transcript. **Reset Speakers** clears the labels and starts detection again. To compare speakers across many files at once rather than one recording, use the [Explore page](/help/insights/explore/). Evaluating Speak AI for a team? [Book a demo and see your own recordings analyzed](https://calendly.com/speak-ai/demo?utm_source=docs&utm_campaign=book-demo). --- Related: [Transcription](/help/transcription/) · [Accuracy](/help/transcription/accuracy/) # Status > Track processing on the media card in your dashboard, or have Speak AI email you the moment a transcript and its insights are ready. Source: https://docs.speakai.co/help/transcription/status/ · Markdown: https://docs.speakai.co/help/transcription/status/index.md ![A folder's media list with the Status column showing. All four recordings read Processed, next to their duration and the date each was created, and Type, Status and time range filters sit above the table with a Manage columns button on the right.](/help/media/transcription/transcription-status.jpg) Every file carries its processing state with it, so you can see at a glance whether a transcript and its insights are ready. Check it on the media card in your dashboard, or let Speak AI email you when the file finishes. ## Where to check - **Activity:** the right-hand panel of your [dashboard](https://app.speakai.co/dashboard). Its **Ongoing** tab lists the files still processing, and **Recent** lists the ones that have just finished. - **Media library:** open **Explore Insights** or **Media** and read the **Status** column. A spinner means the file is still being worked on. - **Detail view:** click the file name. The current step appears at the top left, for example "Transcribing" or "Analyzing". Speak names the stage it is on, as "(Stage 1/3) Preparing", "(Stage 2/3) Transcribing" or "(Stage 3/3) Analyzing insights". ## What the status icons mean | Icon | Meaning | | --- | --- | | **Spinner** | The file is uploading, transcoding, transcribing or analyzing | | **Green check** | Processing finished successfully | | **Red exclamation** | Processing failed | If a file shows the red exclamation, see [Transcription troubleshooting](/help/troubleshoot/transcription/). ## Get an email when a file is ready Speak AI can email you as soon as a file finishes processing, which is the easiest way to handle long uploads. Turn the alerts on under [Profile > Email Notifications](https://app.speakai.co/profile/notifications). If the emails do not arrive, check your spam folder first, then confirm the setting is still on. See [Email preferences](/help/account/email-preferences/). ## When a file looks stuck Most files finish in a few minutes, so a 30-minute recording is usually done in under a minute. See [Processing times](/help/transcription/processing-times/) for what slows a file down. If a file is still processing after 30 minutes: 1. Refresh the page. The status updates on its own, but a cached page can show a stale value. 1. Re-transcribe the file from its options menu. 1. If it fails again, send us the file name and we will look into it. A file that sits at zero progress usually points at the upload rather than the transcription. Check your connection and any firewall or VPN between you and the app. Still stuck? Write to success@speakai.co or [book a free consult](https://calendly.com/speak-ai/consult?utm_source=docs&utm_campaign=consult). --- Related: [Transcription](/help/transcription/) · [Accuracy](/help/transcription/accuracy/) # Translation > Translate a finished transcript into any of 111 supported languages. Covers how translation is billed against your credits. Source: https://docs.speakai.co/help/transcription/translation/ · Markdown: https://docs.speakai.co/help/transcription/translation/index.md ![The Translate panel for a media file. A Translations heading sits beside a Translate button that adds a language, and the form it opens holds a Select language picker, an Enable Dubbing toggle that is off, an estimated cost for the run split between translation and dubbing, and Cancel and Start Translation buttons.](/help/media/transcription/transcription-translation.jpg) Translation runs on a finished transcript, so transcribe the file first and then translate the text into any of the [111 supported languages](/help/transcription/languages/). Your original transcript is kept, so you can switch back to the source at any time. ## Translate a file 1. Open the transcribed media file. 1. Open the **More actions** menu, the three dots at the top right, and select **Translate**. A dialog opens headed **Translate to Another Language**. 1. Pick your **Target Language**. Add terms under **Glossary** if particular names must carry across unchanged, and turn on **Enable Dubbing** if you want a translated voiceover as well. 1. Select **Start Translation**. 1. Speak AI saves the translation alongside the original, in the same folder, and alerts you when it is ready. To translate a batch, select the files from the folder view and translate them in one action rather than opening each file. ## How translation is billed Translation is measured by character count, and your plan includes a set number of translated characters. Check what you have left under [Profile > Usage](https://app.speakai.co/profile/usage). See [Credits](/help/account/credits/) for how the rest of your usage is counted. ## Getting a better translation - **Clean the transcript first.** Errors in the source text carry into every language you translate it into, so fix them in the [editor](/help/transcription/editing/) before you start. - **Label your speakers.** Speaker names carry over, which keeps a multi-person conversation readable in the translated version. - **Check specialized terms by hand.** Drug names, legal terms and product names are the ones worth reading through after a translation finishes. ## Dubbed audio Speak AI can also generate a translated voiceover of your recording rather than translated text only. Turn it on with **Enable Dubbing** in the translation dialog. It is available in a subset of the translation languages, listed alongside every other language capability on [Supported languages](/help/transcription/languages/). Dubbing is not available for audio-only files, for files longer than 2.5 hours, or for files larger than 1 GB. The dialog tells you which of these applies when the option is greyed out. ## Video walkthrough Want a hand setting this up? [Book a free consult](https://calendly.com/speak-ai/consult?utm_source=docs&utm_campaign=consult) and we'll do it together on your account. --- Related: [Transcription](/help/transcription/) · [Accuracy](/help/transcription/accuracy/) # Troubleshooting > Fix a failed upload, a transcription that did not finish, an export that never arrived, or a declined payment, starting from what you saw on screen. Source: https://docs.speakai.co/help/troubleshoot/ · Markdown: https://docs.speakai.co/help/troubleshoot/index.md Something failed? Find your symptom and fix the cause. Each page starts with what you saw on screen and works backward. - **[Export errors](/help/troubleshoot/exports/)** - **[Payment errors](/help/troubleshoot/payments/)** - **[Transcription errors](/help/troubleshoot/transcription/)** - **[Upload errors](/help/troubleshoot/uploads/)** Can't find your symptom? Write to success@speakai.co or [book a free consult](https://calendly.com/speak-ai/consult?utm_source=docs&utm_campaign=consult). # Export errors > A blocked pop-up or a missing permission is the usual cause when the export dialog does not appear or the file never arrives. Source: https://docs.speakai.co/help/troubleshoot/exports/ · Markdown: https://docs.speakai.co/help/troubleshoot/exports/index.md Exports run from the **Export** button on a media file or a folder. When that button is missing, refuses to open a dialog, or opens a dialog that never produces a file, the cause is almost always your user role or your browser. Work through the symptom that matches what you see. ## The export button is missing Check your role on the folder the file sits in. Viewers can read and watch content but cannot extract it, so the export option does not render for them. Ask an admin to change your role to Editor or Admin, then reload the page. Permissions live on the folder, so you can have export rights in one folder and not another. See [groups and permissions](/help/teams/permissions/) for how roles are set. ## The export button is grayed out The file is still processing. Exports need a finished transcript, so the button stays disabled until transcription completes. Wait for the file to finish, then try again. If the file has been stuck for longer than you expect, see [transcription problems](/help/troubleshoot/transcription/). ## The dialog does not open Your browser is blocking the pop-up. Look for a blocked pop-up icon in the address bar, click it, and choose to always allow pop-ups from `app.speakai.co`. If nothing is blocked, the page state may be stuck. A hard refresh clears it: press `Cmd+Shift+R` on macOS or `Ctrl+Shift+R` on Windows, then start the export again. ## The dialog opens but no file arrives Your browser is holding back the download. Browsers often block automatic downloads from a site you have not downloaded from before. Check for a download prompt or a blocked download icon in the address bar and allow downloads from `app.speakai.co`. Then run the export again. If the file still does not arrive, try a different format from the [export formats list](/help/exports/). Some formats are premium features, and one being unavailable on your plan does not affect the others. Still stuck? Write to success@speakai.co or [book a free consult](https://calendly.com/speak-ai/consult?utm_source=docs&utm_campaign=consult). --- Related: [Troubleshooting](/help/troubleshoot/) · [Payment errors](/help/troubleshoot/payments/) # Payment errors > Payments fail most often on a bank decline, a debit card where credit is required, an expired card, or a regional restriction. How to clear each. Source: https://docs.speakai.co/help/troubleshoot/payments/ · Markdown: https://docs.speakai.co/help/troubleshoot/payments/index.md ## Why did my payment fail? A failed charge can happen for several reasons: 1. **Your card was declined by your bank or card issuer.** This is the most common reason. Your bank may block the charge as a security measure, especially for first-time transactions with a new merchant. 1. **You used a debit card instead of a credit card.** Some debit cards are not accepted for recurring subscriptions. Try a credit card instead. 1. **Your credit card is expired.** Check the expiration date and update your card if needed. 1. **Insufficient funds.** Make sure your card has enough available credit or balance. 1. **The payment was blocked as high-risk.** Some banks flag international transactions or first-time subscription charges. Contact your bank to authorize the payment. 1. **Regional restrictions.** Some card types or regions may not be supported by our payment processor. ## Fix it 1. Go to your [billing settings](https://app.speakai.co/settings/billing) 1. Update your payment method with a different card 1. Try the payment again If you continue to have issues after trying a different card, contact your bank first to confirm they are not blocking the transaction. Then reach out to us and we will help resolve it. ## Other billing questions - **Where are my invoices?** Available in your [billing settings](https://app.speakai.co/settings/billing) under payment history. - **When am I charged?** Monthly plans bill on the same date each month. Annual plans bill once per year. - **How do I cancel?** You can cancel anytime from your billing settings. See our [pricing and plans guide](/help/account/free-trial/) for details. Need help? Just send us a message and we will look into your specific situation. Still stuck? Write to success@speakai.co or [book a free consult](https://calendly.com/speak-ai/consult?utm_source=docs&utm_campaign=consult). --- Related: [Troubleshooting](/help/troubleshoot/) · [Export errors](/help/troubleshoot/exports/) # Transcription errors > Transcription fails most often on an unsupported format, a file with no audio track, or a recording that exceeds your plan limit. Source: https://docs.speakai.co/help/troubleshoot/transcription/ · Markdown: https://docs.speakai.co/help/troubleshoot/transcription/index.md Transcription fails when the engine cannot read the source file, and it comes back in the wrong language when auto-detection picks the wrong one. Match what you see to the cause below, clear it, then run the file again. ## The format is not supported Speak AI supports most common audio and video formats including MP3, MP4, WAV, M4A, WEBM, OGG, FLAC, and more. If your file is in an unusual format, convert it to MP3 or MP4 first with a free tool like [HandBrake](https://handbrake.fr/) for video or [Audacity](https://www.audacityteam.org/) for audio. ## The file is too large Files up to 4 hours in length are supported. If your file is very large, compress the audio bitrate. Reducing from 128kbps to 64kbps decreases file size sharply without noticeable loss in speech clarity. ## The audio quality is too low If the audio is very quiet, heavily distorted, or has excessive background noise, the transcription engine may not be able to detect speech. Try: - Recording in a quieter environment - Using a dedicated microphone instead of a laptop mic - Placing the recording device closer to the speakers ## The file is corrupted or incomplete If a recording was interrupted or the file was only partially downloaded, it may be corrupted. Re-download or re-record the file. ## Processing times out Very long files, two hours or more, occasionally time out during processing. The file usually completes on retry. ## Retry a failed file 1. Go to your media file in the [dashboard](https://app.speakai.co/dashboard) 1. Click the options menu on the file 1. Select **Re-transcribe** or **Re-analyze** If the file fails again after a retry, message us in the app chat, the chat bubble in the bottom corner, or email [success@speakai.co](mailto:success@speakai.co) with the file name and we will investigate. ## The transcript is in the wrong language By default, Speak AI auto-detects the language of each recording. Detection can land on the wrong language when a file is short, has music or noise at the start, or mixes languages. You have three ways to control it. ### Set the language at upload On the upload screen, each file has a **Language** setting in the file list. It defaults to **Auto-detect**. Open it and choose the correct language before you start processing, and Speak AI transcribes in that language. ### Save a default language If you mostly work in one language, save it so every new upload starts there instead of relying on auto-detection: 1. Go to [Profile > Account Preferences](https://app.speakai.co/profile/preferences). 1. Set **Media Language** to your language. This is the default source language for transcription and analysis of your uploads. ### Re-transcribe a file you already uploaded 1. Open the media file and choose **Re-transcribe** from the actions menu. 1. Set the **Target Language** and confirm. Re-transcribing creates a new version of the media and runs the full pipeline again, so it uses transcription hours just like a new upload. To help auto-detection get it right, make sure speech starts early in the file, because long musical or silent intros throw detection off. For a mixed-language recording, set the dominant language manually instead of leaving it on Auto-detect. Still stuck? Write to success@speakai.co or [book a free consult](https://calendly.com/speak-ai/consult?utm_source=docs&utm_campaign=consult). --- Related: [Troubleshooting](/help/troubleshoot/) · [Export errors](/help/troubleshoot/exports/) # Upload errors > An upload fails on an unsupported codec, a file with no usable audio or video, a size or duration cap, or a dropped connection. How to tell which and clear it Source: https://docs.speakai.co/help/troubleshoot/uploads/ · Markdown: https://docs.speakai.co/help/troubleshoot/uploads/index.md An upload that fails is almost always one of four causes. Find your symptom, apply the fix, then retry. Most uploads succeed on the second attempt once the cause is cleared. | Symptom | Likely cause | Fix | | --- | --- | --- | | "Upload failed" or a 500 error | Dropped connection or an oversized file | Retry on a stable connection; for big video, upload audio-only | | File rejected at selection | Format not supported | Convert to MP3 (audio) or MP4 (video); see the format list below | | Upload succeeds, then "no usable audio or video" | The file's container is valid but the stream inside is empty or damaged | Re-export from the source app, or convert to MP3/MP4, then re-upload | | M4A that won't process | Codec variant Speak AI can't read | Convert the M4A to MP3 and upload that | ## Check the format first Speak AI accepts MP3, WAV, OGG, WEBM, M4A, FLAC, M4P, AAC, MPEG, and AMR audio; MP4, WMV, AVI, M4V, MOV, and FLV video; TXT, DOCX, and PDF documents; and PNG or JPEG images (read with OCR). Anything else: convert to MP3 or MP4 with a free tool like HandBrake, then upload. Full details: [File formats](/help/uploads/formats/). ## "No usable audio or video content" The file *looks* fine, right extension and normal size, but the audio or video stream inside is missing, empty, or damaged. This usually comes from an interrupted export or a screen recorder that saved video with no audio track. Re-export from the original app; if you only have this copy, convert it to MP3/MP4, which rebuilds the container. ## Upload works, but processing fails That's a different problem with its own causes. See [Transcription errors](/help/troubleshoot/transcription/). ## Still stuck? Send the file name, its rough size and duration, and what you saw on screen to success@speakai.co, or [book a free consult](https://calendly.com/speak-ai/consult?utm_source=docs&utm_campaign=consult) and we'll look at it with you. --- Related: [Uploads](/help/uploads/) · [File formats](/help/uploads/formats/) · [Duration limits](/help/uploads/duration/) · [Transcription errors](/help/troubleshoot/transcription/) # Uploads > Upload from your computer, import from a URL, pull from a connected integration, or record straight into the app. Source: https://docs.speakai.co/help/uploads/ · Markdown: https://docs.speakai.co/help/uploads/index.md Get audio, video, and text into Speak AI three ways. Whichever you use, the file transcribes and analyzes automatically the moment it arrives. ![The Upload page: drop a file, paste a link, or record yourself](/help/media/uploads/uploads-index.jpg) - **Upload a file**: drag and drop, or browse. MP3, WAV, M4A, FLAC and most audio; MP4, MOV, AVI and most video; TXT, DOCX and PDF documents. - **Paste a link**: a direct media URL, imported and transcribed for you. - **Record yourself**: capture audio or video right in the browser, no install. ## Upload a file 1. Open **Upload** from the **+ New** menu, or drag files onto the drop zone. 2. Add one file or many. Each becomes its own item in your [library](/help/folders/). 3. Processing starts immediately; a typical file is ready in a few minutes. Unusual format? Convert to MP3 or MP4 first. The full list is on [File formats](/help/uploads/formats/), and if something still won't go through, [Upload errors](/help/troubleshoot/uploads/) sorts it by symptom. ## Paste a link Paste a media URL or a direct file link into the **Paste a link** panel and select **Import**. Speak AI fetches, transcribes, and analyzes it like any upload. YouTube links work here too: see [YouTube import](/help/uploads/youtube/) for the full list of supported sources and the size cap. ## Record in the browser Select **Start Recording** to capture audio or video on the spot. Recording elsewhere first? The [mobile app](/help/start/mobile-app/) records on the go, and the [embeddable recorder](/help/recorder/) collects recordings from other people. ## Bringing in a lot at once? - [CSV import](/help/uploads/csv-import/) adds many files or text notes in one pass - [Zapier](/help/integrations/zapier/) sends files automatically from Google Drive, Zoom, or Slack - The [API](/api/media/) uploads programmatically Moving a whole team's library in? [Book a free consult](https://calendly.com/speak-ai/consult?utm_source=docs&utm_campaign=consult) and we'll plan the migration with you. --- Related: [File formats](/help/uploads/formats/) · [Duration limits](/help/uploads/duration/) · [Text notes](/help/uploads/text-notes/) · [In-app recording](/help/uploads/in-app-recording/) # CSV import > Add many recordings or text notes at once from a spreadsheet, one row per item, instead of uploading them individually. Source: https://docs.speakai.co/help/uploads/csv-import/ · Markdown: https://docs.speakai.co/help/uploads/csv-import/index.md CSV import adds many media files or text notes to Speak AI in one pass, instead of uploading them one at a time. You supply a spreadsheet with a row for each item, map your columns to the fields Speak AI expects, and the app queues everything for processing. ![The Import from CSV dialog on its first step, Choose Mode, ahead of Map and Preview and Review and Import. Two cards offer Media CSV for importing media URLs to transcribe and Text Notes CSV for importing plain text, each capped at 250 records or 500 MB, with a sample CSV to download and a drop zone that accepts .csv only.](/help/media/uploads/uploads-csv-import.jpg) CSV import requires an active subscription. If **CSV** does not appear in the **New** menu, your current plan does not include it. ## Open the import dialog 1. Select **+ New** in the app sidebar or topbar. 1. Scroll to the **Automate** section of the dropdown and select **CSV**. The **Import from CSV** dialog opens and walks you through three steps: **Choose Mode**, **Map & Preview**, and **Review & Import**. Use a desktop or tablet screen. On mobile the dialog prompts you to switch to a larger device. ## Step 1, choose a mode Pick the type of content you are importing: - **Media CSV** imports media URLs, video or audio files hosted online, to transcribe and analyze. Your file needs a column for the item name and a column for the URL. - **Text Notes CSV** imports plain text to analyze with AI insights. Your file needs a column for the note name and a column for the text. Each mode card shows the limits that apply, up to **250 records** per import and a maximum file size of **500 MB**, and links to a sample CSV so you can see the expected format before you build your own. Drop your `.csv` file onto the dropzone or select it to browse. Speak AI parses the file straight away and moves to the next step. ## Step 2, map your columns Speak AI reads your header row and matches your column names to its own fields wherever it can. Check each column and confirm or change the mapping in the dropdowns. The required fields, the name and either the URL or the text, must be mapped before you can continue. Optional fields, including Description, Created At, Tags, and any custom fields you have set up, can be mapped or skipped. Choose a destination folder and set the source language for transcription on this step as well. ## Step 3, review and import Speak AI shows how many rows it found and flags any **invalid rows**, meaning rows where a required field is empty. Invalid rows appear in a table with the problem cells highlighted. You have two options: - **Import [n] valid rows** skips the invalid rows and imports everything else. The button shows the actual count. - **Confirm import ([n])** submits all rows, including the invalid ones. Those rows may still fail during processing. Select **Download error report** to save your invalid rows as `import-errors.csv`. The file adds an `_error` column describing which required field is missing for each row, so you can correct the data and import again. Once you submit the import, Speak AI queues your files for processing. If you selected a folder, **Go to Folder** takes you there directly. ## Build the file - Put your column names in the first row. Speak AI reads that header row to work out what each column holds. - Save the file with UTF-8 encoding so special characters come through correctly. - Keep each file to 250 rows or fewer. If a file has more, only the first 250 rows import. Split a larger job across several files, or upgrade to Speak Custom for unlimited rows. ### Columns you can use | Column | What it does | | --- | --- | | `url` | Required for media. The direct download link, YouTube URL, or Vimeo URL. Speak AI has to be able to reach it to download and process the file. | | `text` | Required for text notes. The body content of the note. | | `name` | The title of the file or note. Without it, Speak AI generates a name. | | `description` | A short description of the file. | | `tags` | A comma separated list of tags, for example "Interview, research, 2023". | | `folderId` | The ID of the folder the items should land in. | | `sourceLanguage` | The language code for transcription, for example `en-US` or `fr-FR`. | | `createdAt` | The creation date and time of the file. ISO format works best. | ### Custom fields If you have set up [fields](/help/insights/fields/) in your account, you can fill them from the CSV. Use the exact ID of the field as the column header, and match the data to the field type: - Number fields take numeric values only. - Boolean fields take `true` or `false`. - URL fields take a full link including `https://`. - Date fields take a valid date. ### Find a folder ID Open the folder in the app and read the ID from your browser's address bar. In `https://app.speakai.co/folder/cf7cbf144443` the folder ID is `cf7cbf144443`. Put that value in the `folderId` column of every row you want in that folder. ### Sample files - [Download the media sample CSV](https://speakai.co/wp-content/uploads/2022/09/media-files.csv?utm_source=docs&utm_medium=referral&utm_campaign=help) - [Download the text notes sample CSV](https://speakai.co/wp-content/uploads/2023/11/text-notes.csv?utm_source=docs&utm_medium=referral&utm_campaign=help) ## Import errors and what they mean | Error | Cause | Fix | | --- | --- | --- | | "No URL found" | The `url` column is missing or empty for a row in a media CSV. | Check that every row has a valid link in the `url` column. | | "Text not found" | The `text` column is missing or empty for a row in a text notes CSV. | Fill the `text` column for every row. | | "Original file already exists in the folder" | A file with the same source URL is already in that folder. | Remove the duplicate row, or delete the original file from the folder first if you mean to re-upload it. | | "Duration not found" | Speak AI could not read the media at the URL, usually because the link is broken, expired, or needs a login. | Check the link is publicly accessible and points directly at a media file. | | "YouTube Data info not found" or "Vimeo Data info not found" | The link is invalid, private, or the video has been deleted. | Open the link in an incognito window to confirm it is public. | | "Invalid field" for a custom field | The data in that column does not match the field type, such as text in a number field. | Correct the formatting in the column named in the error, for example change "Yes" to `true` for a boolean field. | | "User has utilized all your available text notes" | Your account has hit its limit for text note processing. | Upgrade your plan or add [credits](/help/account/credits/) to keep processing. | Still stuck? The fastest way to reach us is live chat in the app, the chat bubble in the bottom corner. You can also email [success@speakai.co](mailto:success@speakai.co) with a copy of your CSV, or a sample of it, and we will look at the file with you. Want a hand setting this up? [Book a free consult](https://calendly.com/speak-ai/consult?utm_source=docs&utm_campaign=consult) and we'll do it together on your account. --- Related: [Uploads](/help/uploads/) · [Duration limits](/help/uploads/duration/) # Duration limits > A single file can run up to 10 hours. How to work through a long recording, and what to do when the file is too large to upload. Source: https://docs.speakai.co/help/uploads/duration/ · Markdown: https://docs.speakai.co/help/uploads/duration/index.md A single file can run up to 10 hours. Nothing special is asked of you between one minute and ten hours: a recording that lands a few minutes over what you planned uploads exactly like any other. Past 4 hours, Speak AI splits the file into segments and transcribes them in order, so a very long recording takes longer to come back than its length alone suggests. Set the language yourself on anything over 4 hours instead of leaving it on automatic detection. The segmented path needs to know the language up front, and most of the [languages](/help/transcription/languages/) work with it, though a number of the regional variants do not. When Speak AI cannot segment a long file it fails it with a message asking you to split it into shorter clips and upload each separately. ## Work through a long recording A conference session or a deposition takes hours to listen back to. Transcribe it once, then read the summary instead: 1. Upload the audio or video, for example an MP3 or MP4. 1. Wait for the transcript. Even a multi-hour recording is typically ready in a few minutes. 1. Ask [AI Chat](/help/ai-chat/) for what you need, such as "Summarize this entire transcript into 5 key bullet points". [Themes](/help/insights/themes/) break the same content down by topic. 1. Select a point in the answer to jump straight to that moment in the audio. Run [speaker identification](/help/transcription/speakers/) before you summarize a recording with several voices. Once Speak AI knows who said what, you can ask targeted questions like "What did the judge say?". ## If the file is too large Compress the audio rather than splitting the recording. Dropping the bitrate from 128kbps to 64kbps cuts the file size sharply with no noticeable loss in speech clarity, and speech transcribes just as well. For a recording longer than 10 hours, split it into shorter files and upload them separately. See [File formats](/help/uploads/formats/) for size limits by plan, and [Upload errors](/help/troubleshoot/uploads/) if an upload fails outright. Evaluating Speak AI for a team? [Book a demo and see your own recordings analyzed](https://calendly.com/speak-ai/demo?utm_source=docs&utm_campaign=book-demo). --- Related: [Uploads](/help/uploads/) · [CSV import](/help/uploads/csv-import/) # File formats > MP3, WAV, M4A, FLAC, AAC, MP4, MOV, AVI and more upload directly, alongside TXT, DOCX and PDF, plus PNG and JPEG images read by OCR. Source: https://docs.speakai.co/help/uploads/formats/ · Markdown: https://docs.speakai.co/help/uploads/formats/index.md Speak AI reads most common audio and video formats, plus documents and images. If your file is on this list, drag it in and it transcribes and analyzes like any other upload. ## Supported formats ### Audio - **MP3**, the most common audio format - **WAV**, uncompressed audio and the highest quality - **M4A**, Apple audio - **M4P**, protected Apple audio - **AAC**, Advanced Audio Coding - **FLAC**, lossless compressed audio - **OGG**, open-source audio - **WEBM**, web audio - **AMR**, the format most phone voice recorders produce ### Video - **MP4**, the most common video format - **MOV**, Apple QuickTime video - **M4V**, Apple video - **AVI**, Windows video - **WMV**, Windows Media Video - **FLV**, Flash video ### Documents, images, and links - **Documents**: TXT, DOCX, and PDF for text-based analysis - **Images**: PNG and JPEG, read with OCR - **URLs**: YouTube and Vimeo links, and direct media links Spreadsheets take a different route. To analyze a CSV, use [CSV import](/help/uploads/csv-import/), which turns each row into its own file or note. ## File limits - **Duration**: up to 10 hours per file. See [Duration limits](/help/uploads/duration/). - **File size**: on the free plan, each file can be up to 2GB. Paid plans upload larger files. Compressed formats such as MP3 and M4A fit longer recordings inside the same size limit. - **PDFs**: 50MB per file, whatever your plan. - **Links**: 200MB per import, so a long video usually uploads faster as a file than as a URL. ## Get the best transcription - **MP3 at 128kbps** suits most recordings: a small file with good speech clarity. - **WAV** gives the highest accuracy but the files are much larger. - If a file is too large, compress the audio bitrate. 64kbps still transcribes speech well. - For video, Speak AI extracts the audio track automatically. Video quality does not affect transcription accuracy. ## Convert an unsupported file MKV and WMA are the two formats people most often expect to find on the list above. Neither one gets past the file picker, so convert those before you upload. Convert to MP3 for audio or MP4 for video with a free tool: - [HandBrake](https://handbrake.fr/) for video - [Audacity](https://www.audacityteam.org/) for audio - An online converter such as CloudConvert or Zamzar Having trouble with a specific format? Send us a message and we can help. Evaluating Speak AI for a team? [Book a demo and see your own recordings analyzed](https://calendly.com/speak-ai/demo?utm_source=docs&utm_campaign=book-demo). --- Related: [Uploads](/help/uploads/) · [CSV import](/help/uploads/csv-import/) # In-app recording > Start a recording from the dashboard or the quick actions panel and have it transcribe automatically when you stop. Source: https://docs.speakai.co/help/uploads/in-app-recording/ · Markdown: https://docs.speakai.co/help/uploads/in-app-recording/index.md Record audio or video straight into Speak AI from your browser, with nothing to install. The recording lands in your [library](/help/folders/) and transcribes as soon as you stop. ![The in-browser recorder. Audio, Video and Screen tabs sit at the top with Audio selected, a Live Transcription toggle is switched off below them, the panel reads Ready to record, and microphone and speaker pickers sit above a large red record button.](/help/media/uploads/uploads-in-app-recording.jpg) ## Record in the browser 1. Select **Recording** in the Quick Actions panel on the dashboard. 1. Pick how you want to capture: **Audio**, **Video** or **Screen**. 1. Set anything you need under Settings: **Save to Folder**, **Source Language**, **Live Transcription** to transcribe as you speak, and **Video Quality**. Screen recordings also offer **Overlay Position** and **Overlay Size**. 1. If Speak shows **Permission Required**, select **Grant Access** and allow your browser's microphone or camera prompt. 1. Start recording and start talking. The duration counts up below the player while you record, and the cost of the recording appears below the duration. You can stop and start the recording as often as you need. A single browser recording runs up to 4 hours. Speak warns you shortly before the limit so you can save it rather than lose it. When you stop, name the recording under **Recording Name** and save it. ## Keep a recording safe on a weak connection The recorder caches your data locally in your browser, so a short drop in connectivity does not lose your progress. What does lose progress is closing the tab before the upload finishes. - If the upload bar looks stalled, wait. The recorder retries the upload on its own. - Keep the browser tab open until the upload confirms. Closing it early cancels the retries and can lose the recording. - Record in shorter segments of five to ten minutes when you expect a poor connection, rather than one long session. - For a session you cannot repeat, run a local recorder such as QuickTime or Voice Memos at the same time as a second copy. If a live recording fails and you have a local copy, upload the file from [Uploads](/help/uploads/) once you are back on a stable connection. The result is the same. ## Record an in-person meeting on your phone The [mobile app](/help/start/mobile-app/) records, uploads, and transcribes in-person meetings: 1. Log in to the Speak AI app on iOS or Android. 1. Tap the red microphone icon and place the phone in the middle of the table. 1. Tap stop when the meeting ends, then name the file, for example "Board meeting". 1. Tap **Analyze** to upload and transcribe right away, or **Save for Later** to upload when you are on Wi-Fi. In a large conference room, connect an external Bluetooth microphone to your phone. It captures voices around the table far more clearly than the built-in microphone. ## When a recording will not upload - **Upload failed** in the browser: your browser's local storage may be full. Clear some space, then try again. - **Upload pending** in the mobile app: open the app while on Wi-Fi to force the sync. Want a hand setting this up? [Book a free consult](https://calendly.com/speak-ai/consult?utm_source=docs&utm_campaign=consult) and we'll do it together on your account. --- Related: [Uploads](/help/uploads/) · [CSV import](/help/uploads/csv-import/) # Text notes > Upload a TXT, DOCX or PDF file and run the same keyword, sentiment and entity analysis you get on a transcript, without paying to transcribe anything. Source: https://docs.speakai.co/help/uploads/text-notes/ · Markdown: https://docs.speakai.co/help/uploads/text-notes/index.md A text note is a document you upload instead of a recording: a transcript from another tool, survey responses, meeting notes, a report. Speak AI analyzes it the same way it analyzes a transcript, so you get keywords, sentiment, named entities, and AI Chat without paying to transcribe anything. ![The upload drop zone, cropped from the upload window. It invites you to upload or drop a file and lists every format it accepts, which includes the txt, docx and pdf documents a text note arrives as, alongside the audio and video types.](/help/media/uploads/uploads-text-notes.jpg) ## Upload a text file Text files go through the same upload window as audio and video. Open **Upload**, drop the file in or browse for it, and Speak AI reads the text out of it and analyzes it. These file types work: - **TXT**, plain text - **DOCX**, Word documents - **PDF**, up to 50MB per file - **PNG** and **JPEG**, read with OCR, for a scan or a photo of a page Speak AI builds an insight panel beside the text. Select any extracted insight to highlight every mention of it. **Explore Insights**, beside the insights search bar, opens the [Explore page](/help/insights/explore/) for deeper analysis and visualization of the same note. Break the text into paragraphs rather than one continuous block. Clear paragraph breaks help Speak AI detect topics accurately. ## Bring in transcripts you already have Already transcribed a recording somewhere else, in Zoom or by a human transcriptionist? Analyze that text without paying for transcription twice: - **Save it as a TXT or DOCX file and upload it.** You can then run [AI Chat](/help/ai-chat/), [sentiment](/help/insights/sentiment/), and named entity recognition on it exactly as you would on a media file. - **Import in bulk with [CSV import](/help/uploads/csv-import/)**, one row per note. Each row becomes its own text note, which suits survey responses and other short-answer sets. This is the route to take when you have the text in a spreadsheet rather than in separate documents. ## If you only have the text on screen There is no in-app editor to type or paste a note into. Paste your text into a plain text file first, save it as `.txt`, and upload that. For many short pieces of text at once, put them in a spreadsheet and use [CSV import](/help/uploads/csv-import/) instead of making a file for each one. Questions about a specific file? Send us a message on live chat and we will take a look. Want a hand setting this up? [Book a free consult](https://calendly.com/speak-ai/consult?utm_source=docs&utm_campaign=consult) and we'll do it together on your account. --- Related: [Uploads](/help/uploads/) · [CSV import](/help/uploads/csv-import/) # YouTube import > Paste a YouTube link and Speak AI fetches, transcribes and analyzes the video for you. No download step. Source: https://docs.speakai.co/help/uploads/youtube/ · Markdown: https://docs.speakai.co/help/uploads/youtube/index.md Paste a YouTube link into Speak AI and it fetches the video, transcribes it, and runs the same insights and AI Chat you get on any other file. You do not need to download anything first. ![The Paste a link panel on the upload page, with a YouTube watch URL typed into the box and an Import button beside it. Chips underneath show the other sources the same box accepts: TikTok, Instagram, X, Facebook, Reddit, SoundCloud, VK and Snapchat, with YouTube highlighted as the one matched.](/help/media/uploads/uploads-youtube.jpg) ## Import a video from a link 1. Open your [Speak AI dashboard](https://app.speakai.co/dashboard) and go to the upload page. 1. Find the **Paste a link** panel beside the drop zone. 1. Paste the YouTube URL. 1. Select **Import**. Speak AI fetches the media and starts transcription automatically, the same as any other upload. See [Uploads](/help/uploads/) for the rest of the routes into your library. ## Other links you can import The same **Paste a link** panel accepts: - YouTube - TikTok - Instagram - X - Reddit - SoundCloud - Facebook - Vimeo - Snapchat - VK A link that is not on this list will not import. Upload the file yourself instead, which is covered in [Uploads](/help/uploads/). ## Size limit on link imports A file pulled in from a link has to be 200 MB or smaller. That cap applies to link imports only. Files you upload directly get the larger limits described in [File formats](/help/uploads/formats/) and [Duration and size](/help/uploads/duration/). If a video is over the cap, download it and upload the file yourself. Saving just the audio as MP3 or M4A is usually enough to get under 200 MB, and the transcript is identical. Questions? Reach us at [success@speakai.co](mailto:success@speakai.co). Security or procurement question? [Talk to us](https://calendly.com/speak-ai/demo?utm_source=docs&utm_campaign=book-demo). --- Related: [Uploads](/help/uploads/) · [CSV import](/help/uploads/csv-import/) # Speak AI MCP server, connect Claude, ChatGPT, and more > Connect Claude, ChatGPT, Cursor, and other MCP clients to a Speak AI workspace to search recordings, read transcripts and insights, and run automations. Source: https://docs.speakai.co/mcp/ · Markdown: https://docs.speakai.co/mcp/index.md The Speak AI MCP server connects Claude, ChatGPT, Cursor, VS Code, and other Model Context Protocol clients to a Speak AI workspace. It runs at `https://api.speakai.co/v1/mcp` and exposes 112 tools, 5 resources, and 3 prompts covering media, transcripts, AI insights, folders, recorders, automations, dashboards, webhooks, and exports. The same package that implements the server, `@speakai/mcp-server`, is also a Node library. If you want to call Speak AI from your own code instead of through a connected AI client, see the [Node SDK](/sdk). ## What can an agent do once it's connected? Once connected, an agent can search recordings, read transcripts and AI insights, create folders and clips, run automations, and schedule a meeting assistant, all without you leaving the chat. You describe what you want, and the agent picks the right tools. Examples of what people ask once the server is connected: - "Find the last 10 customer interviews that mention pricing, group the feedback by theme, and cite the source recordings." - "Summarize this week's team meetings into decisions, action items, owners, and unresolved risks." - "Join my 2pm Zoom call, then send me a summary with action items." - "Find a strong 30-second highlight from the latest webinar, create a clip, and export captions." Your recordings stay in your Speak AI workspace. Claude and ChatGPT only see the specific data a request asks for, and neither copies or stores your media. ## Which client are you setting up? Connecting takes one URL paste and one permission click for most AI tools. Paste the address above into your client's connector settings, then approve the popup that opens. ## How does authentication work? The MCP server accepts two authentication methods: OAuth 2.1 with Dynamic Client Registration for the one-click connect flow, or a Speak AI API key passed as a Bearer token for manual setups, stdio mode, and the CLI. See [Authentication](/mcp/authentication) for how to get a key, what the REST token flow looks like, rate limits, and the tool error format. ## Where's the full tool reference? Every tool, resource, and prompt the server exposes is documented in the [tool reference](/mcp/tools), grouped by area: media, AI chat, folders and views, recorders, automations, clips, custom fields, webhooks, users and teams, dashboards, the meeting assistant, media embeds, text notes, exports, and search. You don't need to memorize tool names. Claude and ChatGPT pick the right ones based on what you ask. ## Is there a Node SDK too? The same package that runs the MCP server, `@speakai/mcp-server`, is also a library you can import directly into Node code. Use it when you're embedding Speak AI's tools inside your own service instead of connecting through an AI client. See [Node SDK](/sdk) for the exported functions and when to reach for them. ## What does connecting actually grant access to? Both methods, the permission popup and a pasted API key, grant the AI assistant **read and write** access to your whole Speak AI workspace. That includes viewing, modifying, and deleting recordings, folders, and clips. Access is not continuous. Claude or ChatGPT reads specific data only when it calls a tool to answer something you asked, and your recordings stay in your Speak AI workspace. > **Caution** > > Write access includes delete. MCP marks delete tools as destructive and most clients prompt before running one, but ask your assistant to confirm before it deletes anything. To disconnect, remove the connector inside Claude or ChatGPT, or revoke a one-click connection at `api.speakai.co/v1/oauth/connections`. ## How is this different from AI chat inside Speak AI? Speak AI's built-in AI Chat answers questions inside Speak. The MCP server lets you ask the same questions from Claude or ChatGPT, where you may already be drafting an email, planning content, or writing code. Use whichever fits the task. ## What if the connection keeps failing? A single failure mid-conversation is usually transient, so try the same prompt again. If it persists, reinstall the connector: revoke the one-click connection at `api.speakai.co/v1/oauth/connections`, then connect again. If your company blocks custom connectors, that is an admin policy rather than a fault. Some Claude Team and Enterprise workspaces restrict them, and your workspace admin needs to allow `https://api.speakai.co/v1/mcp`. ## Related guides - [Which client are you setting up?](#which-client-are-you-setting-up) - [Authentication](/mcp/authentication) - [Node SDK](/sdk) - [Tool reference](/mcp/tools) # Speak AI MCP server authentication and rate limits > How to get a Speak AI API key, pass it to the MCP server, exchange it for REST tokens yourself, and read the rate limits and tool error format. Source: https://docs.speakai.co/mcp/authentication/ · Markdown: https://docs.speakai.co/mcp/authentication/index.md You need a Speak AI API key for any setup that isn't OAuth. Create one at [app.speakai.co/developers/apikeys](https://app.speakai.co/developers/apikeys). ## How do you get a Speak AI API key? Speak AI API keys are created and managed at [app.speakai.co/developers/apikeys](https://app.speakai.co/developers/apikeys). Use the same key for OAuth's manual alternative, Bearer token setups, stdio mode's `SPEAK_API_KEY` environment variable, and the CLI. ## How is the API key passed to the MCP server? The MCP server accepts the key two ways: automatically, when a client connects with OAuth 2.1 and Dynamic Client Registration, or directly, as a Bearer token in the `Authorization` header. - **OAuth one-click**: paste `https://api.speakai.co/v1/mcp` into your client, click Allow on the consent popup. No key handling required. - **Bearer token**: send `Authorization: Bearer ` on requests to `https://api.speakai.co/v1/mcp`, or set `SPEAK_API_KEY` as an environment variable for stdio mode and the CLI. See [Connect your AI tool](/mcp) for the exact steps and config per client. ## How does REST authentication work if you call the API directly? The MCP server and CLI manage tokens automatically. Calling the REST API directly means exchanging your API key for an access token yourself, in three steps. **Step 1, get an access token:** ```bash curl -X POST https://api.speakai.co/v1/auth/accessToken \ -H "Content-Type: application/json" \ -H "x-speakai-key: YOUR_API_KEY" ``` ```json { "data": { "email": "you@example.com", "accessToken": "eyJhbG...", "refreshToken": "eyJhbG..." } } ``` **Step 2, use the token on every subsequent request:** ```bash curl https://api.speakai.co/v1/media \ -H "x-speakai-key: YOUR_API_KEY" \ -H "x-access-token: ACCESS_TOKEN_FROM_STEP_1" ``` **Step 3, refresh before the access token expires:** ```bash curl -X POST https://api.speakai.co/v1/auth/refreshToken \ -H "Content-Type: application/json" \ -H "x-speakai-key: YOUR_API_KEY" \ -H "x-access-token: CURRENT_ACCESS_TOKEN" \ -d '{"refreshToken": "REFRESH_TOKEN_FROM_STEP_1"}' ``` | Token | Expiry | How to renew | |---|---|---| | Access token | 80 minutes | Refresh endpoint, or re-authenticate | | Refresh token | 24 hours | Re-authenticate with your API key | ## What are the rate limits? Speak AI enforces 5 requests per 30 seconds on both authentication endpoints, `/v1/auth/accessToken` and `/v1/auth/refreshToken`. For everything else, the MCP client automatically retries on `429` with exponential backoff. If you're calling the REST API directly, implement exponential backoff yourself and respect the `Retry-After` header. ## What does an error look like? Every Speak AI MCP tool error follows the same structure, so an agent can parse it without special-casing each tool. ```json { "content": [{ "type": "text", "text": "Error: HTTP 401: Invalid API key" }], "isError": true } ``` | Code | Meaning | |---|---| | `401` | Invalid or missing API key or access token | | `403` | Insufficient permissions | | `404` | Resource not found | | `429` | Rate limit exceeded | ## Related guides - [MCP server overview](/mcp) - [Connect your AI tool](/mcp) - [Node SDK](/sdk) # Stream live transcription from Speak AI over WebSocket > Connect to the Speak AI live transcription WebSocket at wss://listen.speakai.co, authenticate the handshake, stream audio, and read transcript events. Source: https://docs.speakai.co/mcp/live-transcription/ · Markdown: https://docs.speakai.co/mcp/live-transcription/index.md You need a Speak AI API key and a client that can hold a WebSocket connection open. Create a key at [app.speakai.co/developers/apikeys](https://app.speakai.co/developers/apikeys). ## What is Speak AI live transcription? Speak AI live transcription is a streaming service that accepts audio over a WebSocket connection and pushes recognized words back to you one at a time, while the audio is still being captured. It runs on its own host, separate from the REST API, and it creates a media record in your workspace as the session starts, so the finished recording, transcript, and insights are available through the [Speak AI API](/api/) once the stream ends. This is a written guide rather than generated reference because a WebSocket surface has no request and response pair to describe. OpenAPI models one request against one path, and a live session is one long connection carrying many messages in both directions, so the message flow is the thing that has to be documented. ## Which host do you connect to? Connect to `wss://listen.speakai.co`. Speak AI stores the host as an `https://` origin in configuration and swaps the scheme when opening the socket, so use the `wss://` form in your own client. ```text wss://listen.speakai.co ``` ## Which path do you use? The service exposes two paths, and they are not interchangeable: `/v1/live` for your own clients, and `/v1/live-bot` for the Speak AI meeting assistant. | Path | Protocol | Who uses it | |---|---|---| | `/v1/live` | Socket.IO namespace | Browser, mobile, and server clients that capture and send their own audio | | `/v1/live-bot` | Raw WebSocket | The meeting assistant bot, which streams mixed meeting audio | > **Note** > > `/v1/live` is a Socket.IO namespace, not a raw WebSocket endpoint. A plain `new WebSocket("wss://listen.speakai.co/v1/live")` will not connect. Use a Socket.IO client, which handshakes on the default Socket.IO path and then joins the `/v1/live` namespace. ## How do you authenticate a live transcription connection? Authentication happens entirely in the handshake query string, before the first audio chunk. The service reads the query parameters, exchanges them for a short-lived access token against the REST API, and refuses to accept audio on any connection that has not completed that exchange. Which parameters are required depends on the `source` parameter: | `source` | Required parameters | |---|---| | `speak-client` (the default when `source` is absent) | `speak-api-key` | | `speak-recorder` | `userId` and `recorderToken` | | `meeting-assistant` | `companyId` and `userId` | The `speak-api-key` parameter accepts two kinds of credential. One is a developer API key from your workspace. The other is a short-lived live transcription token, a JWT with a `live-transcription` audience claim, which you mint from the REST API so a browser never holds a long-lived key. A token minted this way is rejected everywhere else in the API, and a normal session token is rejected here. Every other handshake parameter is optional and shapes the session: | Parameter | Effect | |---|---| | `sourceLanguage` | Language of the audio, for example `en-US`. Defaults to `en-US`. | | `folderId` | Folder the new media record is created in. | | `mediaType` | `audio` or `video`. `video` extracts an audio track before transcribing. | | `encoding` | Audio encoding hint passed through to the transcription engine. | | `sample-rate` | Sample rate hint passed through to the transcription engine. | | `mode` | `transcribe`, the default, or `s3-only`, which stores the stream without transcribing it. | ## How do you open a connection and stream audio? Opening a session takes three steps: connect with your credentials in the handshake query, emit `start-live-stream`, then emit `audio-data` for every chunk your recorder produces. ```js import { io } from "socket.io-client"; const socket = io("wss://listen.speakai.co/v1/live", { transports: ["websocket"], query: { "speak-api-key": "sk_test_speak_0000000000000000", sourceLanguage: "en-US", mediaType: "audio", }, }); socket.on("connect", () => { socket.emit("start-live-stream"); }); socket.on("metadata", (message) => { console.log("media id:", message.mediaId); }); socket.on("transcript", (message) => { console.log(message.word.text); }); socket.on("error", (message) => { console.error(message); }); socket.on("close", () => { console.log("stream closed"); }); ``` Send audio as a binary chunk on the `audio-data` event, then close the session with `stop-transcription`: ```js socket.emit("audio-data", audioChunk); socket.emit("stop-transcription"); ``` These are the four events the server listens for on a producing connection: | Event you emit | Payload | What it does | |---|---|---| | `start-live-stream` | none | Runs the credential exchange and prepares the session for audio | | `audio-data` | binary audio chunk | Sends one chunk of captured audio | | `stop-transcription` | none | Ends transcription and finalizes the recording | | `subscribe-to-media` | `{ mediaId, targetLanguage }` | Joins an existing session as a listener | `start-live-stream` takes no payload. The Speak AI web client sends an object with the API key in it, but the server ignores anything passed here and reads credentials from the handshake query only. Audio sent before `start-live-stream` completes is rejected. The server replies on the `error` event with `{ "type": "authentication-required", "message": "Authentication required before sending audio data" }` and drops the chunk. ## What messages does the server send back? The server sends five kinds of message, and the message type is also the event name you listen on, so `socket.on("transcript", ...)` receives every message whose `type` is `transcript`. | Event and `type` | When it arrives | |---|---| | `metadata` | The media record was created, or a subscription was accepted | | `transcript` | A new word was recognized | | `translated-transcript` | A translated sentence is ready, for subscribers that asked for a target language | | `error` | Authentication, subscription, or message format failed | | `close` | The live stream was disconnected | A `metadata` message carries the identifiers you need to find the recording later: ```json { "type": "metadata", "mediaId": "med_0000000000", "folderId": "fld_0000000000", "userId": "usr_0000000000", "name": "Customer interview", "timestamp": "2026-07-24T14:02:11.482Z", "message": "Live transcript media created successfully" } ``` A `transcript` message carries exactly one word, with its speaker, its confidence, and its position in the recording: ```json { "type": "transcript", "mediaId": "med_0000000000", "timestamp": "2026-07-24T14:02:13.905Z", "word": { "id": 1, "text": "Hello", "confidence": 0.9938, "language": "en-US", "speakerId": "0", "instances": { "startInSec": 0.32, "endInSec": 0.58 } }, "message": "New word received", "isFinal": true } ``` Words arrive one per message, so build the sentence on your side by appending them in the order they arrive. Every `transcript` message the service emits carries `isFinal: true`, and there is no separate interim result stream. An `error` message names the failure in both `message` and `error`: ```json { "type": "error", "mediaId": null, "timestamp": "2026-07-24T14:02:09.117Z", "message": "Invalid API key or failed to get access token", "error": "Invalid API key or failed to get access token" } ``` The service emits these error messages: `API key required for live streaming`, `Invalid API key or failed to get access token`, `Failed to create live transcript media`, `Media ID required for subscription`, and `Invalid message format`. Setup failures arrive in a different shape on the same event, as `{ "type": "authentication-failed", "message": "Failed to setup live streaming session" }`, so check for a `type` of `error` before assuming the `error` field is present. ## How do you listen to a session you are not recording? A second client can follow a live session by subscribing to its media id instead of sending audio. Connect to the same namespace, then emit `subscribe-to-media` with the `mediaId` that the producing client received in its `metadata` message. ```js import { io } from "socket.io-client"; const listener = io("wss://listen.speakai.co/v1/live", { transports: ["websocket"], query: { "speak-api-key": "sk_test_speak_0000000000000000" }, }); listener.on("connect", () => { listener.emit("subscribe-to-media", { mediaId: "med_0000000000", targetLanguage: "es", }); }); listener.on("transcript", (message) => { console.log(message.word.text); }); listener.on("translated-transcript", (message) => { console.log(message.translatedText); }); listener.emit("unsubscribe-from-media", { mediaId: "med_0000000000" }); ``` `targetLanguage` is optional. Include it and the subscriber also receives `translated-transcript` messages, which carry the translated sentence in `translatedText` alongside the `originalWords` it came from, plus `sourceLanguage` and `targetLanguage`. Leave it out and the subscriber receives the original words only. ## How does the meeting assistant path differ? The `/v1/live-bot` path is a raw WebSocket endpoint that accepts the meeting assistant's mixed audio, and it is one way only. Speak AI configures it for you when you turn live transcription on for the meeting assistant, so you do not open this connection yourself. The connection carries three query parameters, `companyId`, `userId`, and `source`, where `source` is `meeting-assistant`: ```text wss://listen.speakai.co/v1/live-bot?companyId=COMPANY_ID&userId=USER_ID&source=meeting-assistant ``` Messages on this path are JSON envelopes rather than binary frames. Each one has an `event` of `audio_mixed_raw.data` and a `data` object holding base64 audio in `data.data.buffer`, a `data.data.timestamp` with `relative` and `absolute` fields, and `bot`, `recording`, and `realtime_endpoint` objects that each carry an `id`. The first message doubles as the handshake, and the connection has 30 seconds to authenticate before it is closed. Audio that arrives during that window is buffered, up to 50 chunks, and replayed once authentication succeeds. Nothing is sent back on this path. The service holds the `/v1/live-bot` socket open to receive audio and publishes the resulting words to `/v1/live` subscribers instead, so a client that wants to display a live meeting transcript subscribes to the media id on `/v1/live`. ## What happens when a session ends? A session ends when the client emits `stop-transcription`, when the socket disconnects, or when the service closes the stream, and all three run the same cleanup: the transcription engine is closed, the audio is finalized to storage, and the media record moves on to full analysis. When the service closes the stream, it sends a `close` message first: ```json { "type": "close", "timestamp": "2026-07-24T14:31:44.006Z", "message": "Live stream disconnected" } ``` Speak AI defines no custom WebSocket close codes for live transcription. The one code the service sets explicitly is the standard `1000`, used when it disconnects a `/v1/live` client after sending `close`. Treat any other code you observe as coming from the transport or the network, not from Speak AI. ## How does this relate to the /v1/live-transcription REST routes? Three REST routes sit behind live transcription, all under `https://api.speakai.co/v1/live-transcription`, and the streaming service calls two of them on your behalf during a session. You do not need to call `create` or `update` yourself when you stream through `/v1/live`, because the service creates the media record when the session starts and writes words and the finished audio back as it runs. | Route | Who calls it | |---|---| | `POST /v1/live-transcription/create` | The streaming service, when your session starts | | `POST /v1/live-transcription/update/{mediaId}` | The streaming service, as words and audio are finalized | | `POST /v1/live-transcription/token` | You, to mint a short-lived live transcription token for a browser | The `token` route is the one worth calling directly. It returns a token and its lifetime, and it is rate limited to 5 requests per minute per IP address, so mint one per session rather than per connection attempt. Full request and response detail for all three lives in the [Speak AI API reference](/api/), and the header and token model they share is described in [API authentication](/api/authentication/). Once a live session finishes, the recording behaves like any other file in your workspace. Read its transcript, speakers, and insights through the [media endpoints](/api/media/), or through the [Speak AI MCP server](/mcp) if an agent is doing the reading. ## Related guides - [Speak AI MCP server, connect Claude, ChatGPT, and more](/mcp) - [Speak AI MCP server authentication and rate limits](/mcp/authentication) - [Speak AI API reference for audio, video, and text data](/api/) - [Upload audio and video to Speak AI and read insights](/api/media/) # Speak AI Agent Plugin with 112 MCP tools and 5 skills > Install the Speak AI Agent Plugin to give an AI agent the Speak AI MCP server plus five skills that teach it how to use all 112 tools correctly. Source: https://docs.speakai.co/mcp/plugin/ · Markdown: https://docs.speakai.co/mcp/plugin/index.md The Speak AI Agent Plugin is a single package that connects an AI agent to a Speak AI workspace and teaches it how to work there. It connects your agent to the [Speak AI MCP server](/mcp) and adds 5 skills. Install it once and your agent gets all 112 tools plus written instructions for using them. ## What is the Speak AI Agent Plugin? The Speak AI Agent Plugin packages the Speak AI MCP server connection together with the skills an agent needs to use it well. The MCP server exposes 112 tools, 5 resources, and 3 prompts across 15 categories covering media, transcripts, AI insights, folders, recorders, clips, exports, automations, webhooks, dashboards, and team management. The plugin adds the missing half: written procedures that tell an agent which tools to call, in what order, and what to do when something is still processing. The plugin is named `speakai-mcp` and its current version is 1.18.0, the same version as the `@speakai/mcp-server` package that implements the server. ## Does the plugin work in more than one agent? Yes. It follows the open [Agent Plugins](https://agent-plugins.org) standard, so the same plugin works in every agent that supports the format rather than being tied to one. You install it once and it keeps working as you move between tools. ## What does a plugin give you that a manual MCP setup does not? A manual MCP setup gives an agent access to 112 tools, and the plugin gives it access plus the knowledge of how to use them. That is the entire difference, and it is larger than it sounds. When you paste the server URL into a client by hand, the agent sees 112 tool names and their parameter schemas. It does not know that a recording has to finish processing before you can read its transcript, that a research question spanning many recordings should be scoped to a folder before you ask it, or that cutting a clip means finding the moment in a timestamped transcript first. It guesses. Sometimes it guesses well, and sometimes it calls the wrong tool three times and reports that the data is missing. The skills close that gap. Each one is a written procedure for a real job, listing the exact tools to call in order, the failure cases to expect, and what to do about each. The agent reads the skill when the request matches it, then calls tools with a plan instead of a guess. You also get versioning and updates. The plugin is a versioned package, so a new release ships new tools and updated procedures together. A hand-configured server URL never tells you that anything changed. If you only want raw tool access and you are writing the orchestration yourself, configuring the MCP server by hand is still a reasonable choice. See [MCP server setup](/mcp) for that path, or the [Node SDK](/sdk) if you want to call the tools from your own code. ## Which skills come with the plugin? The plugin ships 5 skills, each covering one kind of work an agent does inside a Speak AI workspace. | Skill | What it covers | |---|---| | `getting-started` | Connecting the agent, orienting it in the workspace, and finding the right tool among the 15 categories. | | `research-analysis` | Finding themes, quotes, and sentiment across many interviews or customer calls, with citations. | | `meeting-summaries` | Sending the assistant to a Zoom, Google Meet, or Microsoft Teams call, then producing decisions, action items, owners, and risks. | | `clips-and-captions` | Cutting highlight clips, exporting captions and transcripts, and publishing embeds. | | `automations-and-webhooks` | Building automations that run on their own, and moving data in and out with inbound and outbound webhooks. | Every skill names real tools only, such as `search_media`, `get_transcript`, `ask_ai_chat`, `create_clip`, and `schedule_meeting_event`. ## How do you install the plugin? You install the plugin in two commands: add the marketplace that hosts it, then install the plugin from that marketplace. In Claude Code: ```sh claude plugin marketplace add speakai/speakai-mcp claude plugin install speakai-mcp@speakai ``` Inside a running Claude Code session, use the slash command form instead: ```text /plugin marketplace add speakai/speakai-mcp /plugin install speakai-mcp@speakai /reload-plugins ``` After the plugin loads, ask for something and let the agent pick its own tools: ```text Find the last 10 customer interviews that mention pricing, group the feedback by theme, and cite the source recordings. ``` The full command set for each client, including the local development flow and what to check when tools do not appear, is on [install the plugin](/mcp/plugin/install). ## Do you need an API key to use the plugin? It depends which route you install through, and the two differ. On the **portable Agent Plugins route**, you do not need a key. `mcp.json` points at the remote server, which authenticates with OAuth 2.1 and Dynamic Client Registration. Your client registers itself, a permission popup opens, you approve it once, and no key is ever pasted or stored by you. On the **Claude Code marketplace route**, you do need one. Claude Code reads the native `.mcp.json`, which runs the server locally over stdio, so it prompts for your key on install. Generate one at [app.speakai.co/developers/apikeys](https://app.speakai.co/developers/apikeys). Three ways to authenticate exist and they are not interchangeable: - The remote MCP endpoint `https://api.speakai.co/v1/mcp` takes OAuth, or `Authorization: Bearer `. - stdio mode and the CLI take the `SPEAK_API_KEY` environment variable. There is no header to set. - The REST API takes two headers, `x-speakai-key` and `x-access-token`. It does not accept a Bearer token. See [authentication](/mcp/authentication). > **Caution** > > Connecting grants the agent read and write access to your whole Speak AI workspace, and write access includes delete. MCP marks delete tools as destructive and most clients prompt first, but ask your agent to confirm before it deletes anything. See [Authentication](/mcp/authentication) for the token flow, rate limits, and the tool error format. ## Where do you look up a specific tool? Every one of the 112 tools has its own reference page under the [tool reference](/mcp/tools), grouped by the same 15 categories the skills use. Per-tool pages follow the pattern `https://docs.speakai.co/mcp/tools///`, so `get_transcript` is at `/mcp/tools/media/get_transcript/`. You do not need to memorize tool names to use the plugin. The skills handle tool selection, and the reference exists for when you want to check a parameter or a return shape yourself. ## Related guides - [Install the plugin](/mcp/plugin/install) - [Speak AI MCP server](/mcp) - [Tool reference](/mcp/tools) - [Node SDK](/sdk) - [Help center](/help) # Install the Speak AI plugin in any AI coding client > Install the Speak AI plugin in Claude Code or any Agent Plugins compatible client, with the marketplace commands, the portable path, and OAuth consent. Source: https://docs.speakai.co/mcp/plugin/install/ · Markdown: https://docs.speakai.co/mcp/plugin/install/index.md You need a Speak AI account. Some paths also need an API key, which you create at [app.speakai.co/developers/apikeys](https://app.speakai.co/developers/apikeys). ## What does the Speak AI plugin install? Installing the plugin gives your agent the 112 tools, 5 resources, and 3 prompts the Speak AI MCP server exposes, plus five skills that tell the agent how to use them: `getting-started`, `meeting-summaries`, `research-analysis`, `clips-and-captions`, and `automations-and-webhooks`. The plugin connects to Speak AI over the internet, so nothing runs on your machine and no API key is stored on disk. ## Why do install steps differ between clients? Each client decides how a plugin reaches your machine and how you turn it on. One gives you a marketplace command, another asks you to point at a Git repository, and a third asks you to copy a directory into a plugins folder. What you get is the same in every case, so follow whichever set of steps matches your client below. ## How do you install the plugin in Claude Code? Claude Code installs the Speak AI plugin with two commands, one to add the marketplace and one to install the plugin from it. 1. Add the marketplace and install the plugin: ```sh claude plugin marketplace add speakai/speakai-mcp claude plugin install speakai-mcp@speakai ``` 1. When Claude Code enables the plugin, enter your Speak AI API key from: ```text https://app.speakai.co/developers/apikeys ``` 1. Confirm it worked. Run `/mcp` inside Claude Code and check that the `speakai` server shows as connected. Claude Code also lists Speak AI in the official plugin marketplace under a different name and install command. See [Connect Claude Code to Speak AI](/mcp/setup/claude-code/) for that route. > **Note** > > This route asks for an API key because Claude Code runs the plugin's server locally over stdio. The portable route below uses the remote server and OAuth instead. ## How do you install the plugin in any other Agent Plugins client? Any Agent Plugins compatible client installs the Speak AI plugin from the `plugins/speakai-mcp` directory of the `speakai/speakai-mcp` repository on GitHub. Follow your client's own instructions for adding a plugin, and give it that repository and path. The directory your client reads looks like this: ```text plugins/speakai-mcp/ plugin.json mcp.json skills/ getting-started/SKILL.md meeting-summaries/SKILL.md research-analysis/SKILL.md clips-and-captions/SKILL.md automations-and-webhooks/SKILL.md ``` Once the client has the directory, it reads `mcp.json`, connects to `https://api.speakai.co/v1/mcp` over streamable HTTP, and starts the OAuth consent step described below. ## What does the OAuth consent step do? The OAuth consent step is where you sign in to Speak AI in a browser and approve the client's request, and the client stores the resulting token so you never paste an API key. The Speak AI MCP server supports OAuth 2.1 with Dynamic Client Registration, which is what lets a client you have never used before register itself and connect in one click. What you see is short: 1. Your client opens a browser window pointed at Speak AI. 1. You sign in, or click **Confirm** if you are already signed in. 1. You approve the request, and the browser hands the token back to your client. Approving grants the agent **read and write** access to your whole Speak AI workspace, which includes viewing, modifying, and deleting recordings, folders, and clips. Access is not continuous. The agent reads data only when it calls a tool to answer something you asked, and your recordings stay in your Speak AI workspace. > **Caution** > > Write access includes delete. MCP marks delete tools as destructive and most clients prompt before running one, but ask your assistant to confirm before it deletes anything. To disconnect, remove the plugin in your client, or revoke the connection at `api.speakai.co/v1/oauth/connections`. ## What if your client cannot run the OAuth popup? The same endpoint accepts a Speak AI API key as a Bearer token, so a client with no browser can still connect. Send the key on every request: ```text Authorization: Bearer speak_sk_example_000000000000 ``` For stdio mode and the command line, set the key as an environment variable instead: ```bash export SPEAK_API_KEY="speak_sk_example_000000000000" ``` Create the key at [app.speakai.co/developers/apikeys](https://app.speakai.co/developers/apikeys). See [MCP authentication](/mcp/authentication) for token handling, rate limits, and the tool error format. ## How do you confirm the plugin is working? Ask your agent for something small that needs a Speak AI tool, and check that it answers from your workspace. A request like "list my five most recent recordings" makes the agent call `list_media`, which fails loudly if the connection or the credentials are wrong. Good first requests: ```text List my five most recent recordings. ``` ```text Summarize this week's team meetings into decisions, action items, owners, and unresolved risks. ``` ```text Find a strong 30-second highlight from the latest webinar, create a clip, and export captions. ``` You do not need to name tools. The agent picks them from what you ask. ## What do you do when tools do not appear? Tools missing after a successful install almost always mean the client has not reloaded the plugin yet. Restart the client, or run its reload command, then check the plugin list again. Three failures cover most cases: - **No Speak AI tools listed.** The plugin is installed but not activated. Reload plugins, then check your client's MCP server list for `speakai`. - **Requests fail with an authorization error.** The token or key is no longer valid. Revoke the connection at `api.speakai.co/v1/oauth/connections` and connect again, or create a new API key. - **The connection is blocked by policy.** Some Claude Team and Enterprise workspaces restrict custom connectors. Your workspace admin needs to allow `https://api.speakai.co/v1/mcp`. ## Related guides - [Speak AI plugin](/mcp/plugin/) - [Connect Claude Code to Speak AI](/mcp/setup/claude-code/) - [Speak AI MCP server](/mcp) - [MCP authentication and rate limits](/mcp/authentication) - [Tool reference](/mcp/tools) # Connect ChatGPT API / Responses to Speak AI > Set up the Speak AI MCP server in ChatGPT API / Responses. For developers calling the Responses API directly. Source: https://docs.speakai.co/mcp/setup/chatgpt-api/ · Markdown: https://docs.speakai.co/mcp/setup/chatgpt-api/index.md ChatGPT API / Responses reaches your Speak AI workspace through the MCP server, so it can read your recordings, transcripts and insights while you work. ## What you need A Speak AI account, and ChatGPT API / Responses. Some setup paths also need an API key, which you create at [app.speakai.co/developers/apikeys](https://app.speakai.co/developers/apikeys). Every client connects to the same address: ```text https://api.speakai.co/v1/mcp ``` ## What can you ask for once it is connected? Ask in your own words. The server exposes 112 tools, so most questions about your workspace resolve without naming one: - "Summarise my last customer interview." - "Find every mention of pricing across this month's calls." - "Upload this recording and tell me the main themes." ## Related guides - [Connect your AI tool](/mcp) covers every supported client. - [Connect Claude.ai (web) to Speak AI](/mcp/setup/claude-web/) - [Speak AI MCP server](/mcp) explains what the server exposes. - [MCP authentication and rate limits](/mcp/authentication) # Connect ChatGPT to Speak AI > Set up the Speak AI MCP server in ChatGPT. Web + desktop. Requires Developer Mode. Source: https://docs.speakai.co/mcp/setup/chatgpt/ · Markdown: https://docs.speakai.co/mcp/setup/chatgpt/index.md ChatGPT reaches your Speak AI workspace through the MCP server, so it can read your recordings, transcripts and insights while you work. ## What you need A Speak AI account, and ChatGPT. Some setup paths also need an API key, which you create at [app.speakai.co/developers/apikeys](https://app.speakai.co/developers/apikeys). Every client connects to the same address: ```text https://api.speakai.co/v1/mcp ``` ## How do you connect ChatGPT? 1. Open ChatGPT → Settings → **Apps & Connectors** → **Advanced** 1. Turn on **Developer Mode** (required while Speak AI isn't yet listed in ChatGPT's app store) 1. Back on Apps & Connectors, click **Create** and paste the URL above ![ChatGPT connect screen with Speak AI URL pasted](/mcp-setup/chatgpt/1.connect.png) 1. For **Authentication**, choose **OAuth**, then click **Connect** ![ChatGPT connect continue screen](/mcp-setup/chatgpt/2.connect-continue.png) 1. ChatGPT opens a new tab to Speak AI, sign in (or click **Confirm** if already logged in) to authorize ![Speak AI authorization screen](/mcp-setup/chatgpt/3.speak-auth.png) 1. Return to ChatGPT, Speak AI is now in your connector list ![Speak AI connected in ChatGPT](/mcp-setup/chatgpt/4.connected.png) 1. **Per-chat:** open a chat, click the **+** / connector menu, enable Speak AI for that chat ## What can you ask for once it is connected? Ask in your own words. The server exposes 112 tools, so most questions about your workspace resolve without naming one: - "Summarise my last customer interview." - "Find every mention of pricing across this month's calls." - "Upload this recording and tell me the main themes." ## Related guides - [Connect your AI tool](/mcp) covers every supported client. - [Connect Claude.ai (web) to Speak AI](/mcp/setup/claude-web/) - [Speak AI MCP server](/mcp) explains what the server exposes. - [MCP authentication and rate limits](/mcp/authentication) # Connect Claude Code to Speak AI > Set up the Speak AI MCP server in Claude Code. Recommended, install via the official Claude Code plugin marketplace. Source: https://docs.speakai.co/mcp/setup/claude-code/ · Markdown: https://docs.speakai.co/mcp/setup/claude-code/index.md Claude Code reaches your Speak AI workspace through the MCP server, so it can read your recordings, transcripts and insights while you work. ## What you need A Speak AI account, and Claude Code. Some setup paths also need an API key, which you create at [app.speakai.co/developers/apikeys](https://app.speakai.co/developers/apikeys). Every client connects to the same address: ```text https://api.speakai.co/v1/mcp ``` ## How do you connect Claude Code? 1. Add the official marketplace (one-time): `/plugin marketplace add claude-plugins-official` 1. Install the plugin: `/plugin install speakai@claude-plugins-official` 1. Activate it: `/reload-plugins` 1. Run the `getting-started` skill and paste your Speak AI API key. Generate one at [app.speakai.co/developers/apikeys](https://app.speakai.co/developers/apikeys) ## What can you ask for once it is connected? Ask in your own words. The server exposes 112 tools, so most questions about your workspace resolve without naming one: - "Summarise my last customer interview." - "Find every mention of pricing across this month's calls." - "Upload this recording and tell me the main themes." ## Related guides - [Connect your AI tool](/mcp) covers every supported client. - [Connect Claude.ai (web) to Speak AI](/mcp/setup/claude-web/) - [Speak AI MCP server](/mcp) explains what the server exposes. - [MCP authentication and rate limits](/mcp/authentication) # Connect Claude Desktop to Speak AI > Set up the Speak AI MCP server in Claude Desktop. Native macOS / Windows app. Source: https://docs.speakai.co/mcp/setup/claude-desktop/ · Markdown: https://docs.speakai.co/mcp/setup/claude-desktop/index.md Claude Desktop reaches your Speak AI workspace through the MCP server, so it can read your recordings, transcripts and insights while you work. ## What you need A Speak AI account, and Claude Desktop. Some setup paths also need an API key, which you create at [app.speakai.co/developers/apikeys](https://app.speakai.co/developers/apikeys). Every client connects to the same address: ```text https://api.speakai.co/v1/mcp ``` ## How do you connect Claude Desktop? 1. Open Claude Desktop → Settings → Connectors → **Add custom connector** 1. Paste the URL from the top of this page 1. Click **Add**, sign in to Speak AI, click **Allow** on the permission popup ## What can you ask for once it is connected? Ask in your own words. The server exposes 112 tools, so most questions about your workspace resolve without naming one: - "Summarise my last customer interview." - "Find every mention of pricing across this month's calls." - "Upload this recording and tell me the main themes." ## Related guides - [Connect your AI tool](/mcp) covers every supported client. - [Connect Claude.ai (web) to Speak AI](/mcp/setup/claude-web/) - [Speak AI MCP server](/mcp) explains what the server exposes. - [MCP authentication and rate limits](/mcp/authentication) # Connect Claude.ai (web) to Speak AI > Set up the Speak AI MCP server in Claude.ai (web). Browser-based, works on any computer. Source: https://docs.speakai.co/mcp/setup/claude-web/ · Markdown: https://docs.speakai.co/mcp/setup/claude-web/index.md Claude.ai (web) reaches your Speak AI workspace through the MCP server, so it can read your recordings, transcripts and insights while you work. ## What you need A Speak AI account, and Claude.ai (web). Some setup paths also need an API key, which you create at [app.speakai.co/developers/apikeys](https://app.speakai.co/developers/apikeys). Every client connects to the same address: ```text https://api.speakai.co/v1/mcp ``` ## How do you connect Claude.ai (web)? > **Tip** > > [Install in Claude.ai](https://claude.ai/settings/connectors) opens the right screen directly. 1. Open [claude.ai/settings/connectors](https://claude.ai/settings/connectors) 1. Click **Add custom connector** 1. Name it **Speak AI**, paste the URL above, click **Add** ![Claude add custom connector dialog with Speak AI filled in](/mcp-setup/claude-web/1.connector.png) 1. Sign in to Speak AI, click **Allow** on the permission popup ![Speak AI connected in Claude with tools listed](/mcp-setup/claude-web/2.connected.png) ## What can you ask for once it is connected? Ask in your own words. The server exposes 112 tools, so most questions about your workspace resolve without naming one: - "Summarise my last customer interview." - "Find every mention of pricing across this month's calls." - "Upload this recording and tell me the main themes." ## Related guides - [Connect your AI tool](/mcp) covers every supported client. - [Connect Claude Desktop to Speak AI](/mcp/setup/claude-desktop/) - [Speak AI MCP server](/mcp) explains what the server exposes. - [MCP authentication and rate limits](/mcp/authentication) # Connect Cursor to Speak AI > Set up the Speak AI MCP server in Cursor. One-click install via deeplink. Source: https://docs.speakai.co/mcp/setup/cursor/ · Markdown: https://docs.speakai.co/mcp/setup/cursor/index.md Cursor reaches your Speak AI workspace through the MCP server, so it can read your recordings, transcripts and insights while you work. ## What you need A Speak AI account, and Cursor. Some setup paths also need an API key, which you create at [app.speakai.co/developers/apikeys](https://app.speakai.co/developers/apikeys). Every client connects to the same address: ```text https://api.speakai.co/v1/mcp ``` ## How do you connect Cursor? > **Tip** > > [Install in Cursor](cursor://anysphere.cursor-deeplink/mcp/install?name=speakai&config=eyJ1cmwiOiJodHRwczovL2FwaS5zcGVha2FpLmNvL3YxL21jcCJ9) opens the right screen directly. 1. Click the button, Cursor registers and opens the permission popup 1. Sign in to Speak AI and click **Allow** ## What can you ask for once it is connected? Ask in your own words. The server exposes 112 tools, so most questions about your workspace resolve without naming one: - "Summarise my last customer interview." - "Find every mention of pricing across this month's calls." - "Upload this recording and tell me the main themes." ## Related guides - [Connect your AI tool](/mcp) covers every supported client. - [Connect Claude.ai (web) to Speak AI](/mcp/setup/claude-web/) - [Speak AI MCP server](/mcp) explains what the server exposes. - [MCP authentication and rate limits](/mcp/authentication) # Connect OpenClaw to Speak AI > Set up the Speak AI MCP server in OpenClaw. Use Speak AI as a skill in OpenClaw-compatible agents. Source: https://docs.speakai.co/mcp/setup/openclaw/ · Markdown: https://docs.speakai.co/mcp/setup/openclaw/index.md OpenClaw reaches your Speak AI workspace through the MCP server, so it can read your recordings, transcripts and insights while you work. ## What you need A Speak AI account, and OpenClaw. Some setup paths also need an API key, which you create at [app.speakai.co/developers/apikeys](https://app.speakai.co/developers/apikeys). Every client connects to the same address: ```text https://api.speakai.co/v1/mcp ``` ## How do you connect OpenClaw? > **Tip** > > [View on ClawHub](https://clawhub.ai/skills/speakai) opens the right screen directly. 1. Visit the [Speak AI skill page on ClawHub](https://clawhub.ai/skills/speakai) 1. Follow the install instructions for your agent, e.g. `clawhub install speakai` from the ClawHub CLI 1. Set your `SPEAK_API_KEY` environment variable. Generate one at [app.speakai.co/developers/apikeys](https://app.speakai.co/developers/apikeys) ## What can you ask for once it is connected? Ask in your own words. The server exposes 112 tools, so most questions about your workspace resolve without naming one: - "Summarise my last customer interview." - "Find every mention of pricing across this month's calls." - "Upload this recording and tell me the main themes." ## Related guides - [Connect your AI tool](/mcp) covers every supported client. - [Connect Claude.ai (web) to Speak AI](/mcp/setup/claude-web/) - [Speak AI MCP server](/mcp) explains what the server exposes. - [MCP authentication and rate limits](/mcp/authentication) # Connect VS Code to Speak AI > Set up the Speak AI MCP server in VS Code. One-click install via deeplink. Source: https://docs.speakai.co/mcp/setup/vscode/ · Markdown: https://docs.speakai.co/mcp/setup/vscode/index.md VS Code reaches your Speak AI workspace through the MCP server, so it can read your recordings, transcripts and insights while you work. ## What you need A Speak AI account, and VS Code. Some setup paths also need an API key, which you create at [app.speakai.co/developers/apikeys](https://app.speakai.co/developers/apikeys). Every client connects to the same address: ```text https://api.speakai.co/v1/mcp ``` ## How do you connect VS Code? > **Tip** > > [Install in VS Code](https://vscode.dev/redirect/mcp/install?name=speakai&config=%7B%22type%22%3A%22http%22%2C%22url%22%3A%22https%3A%2F%2Fapi.speakai.co%2Fv1%2Fmcp%22%7D) opens the right screen directly. 1. Click the button, VS Code registers and opens the permission popup 1. Sign in to Speak AI and click **Allow** ## What can you ask for once it is connected? Ask in your own words. The server exposes 112 tools, so most questions about your workspace resolve without naming one: - "Summarise my last customer interview." - "Find every mention of pricing across this month's calls." - "Upload this recording and tell me the main themes." ## Related guides - [Connect your AI tool](/mcp) covers every supported client. - [Connect Claude.ai (web) to Speak AI](/mcp/setup/claude-web/) - [Speak AI MCP server](/mcp) explains what the server exposes. - [MCP authentication and rate limits](/mcp/authentication) # Connect Windsurf to Speak AI > Set up the Speak AI MCP server in Windsurf. HTTP transport, config file. Source: https://docs.speakai.co/mcp/setup/windsurf/ · Markdown: https://docs.speakai.co/mcp/setup/windsurf/index.md Windsurf reaches your Speak AI workspace through the MCP server, so it can read your recordings, transcripts and insights while you work. ## What you need A Speak AI account, and Windsurf. Some setup paths also need an API key, which you create at [app.speakai.co/developers/apikeys](https://app.speakai.co/developers/apikeys). Every client connects to the same address: ```text https://api.speakai.co/v1/mcp ``` ## How do you connect Windsurf? 1. Get your API key at [app.speakai.co/developers/apikeys](https://app.speakai.co/developers/apikeys) 1. Add the config below to `~/.codeium/windsurf/mcp_config.json` 1. Restart Windsurf. The Speak AI tools appear in the **Cascade** panel ## What does the config look like? ```json { "mcpServers": { "speakai": { "serverUrl": "https://api.speakai.co/v1/mcp", "headers": { "Authorization": "Bearer your-api-key-here" } } } } ``` ## What can you ask for once it is connected? Ask in your own words. The server exposes 112 tools, so most questions about your workspace resolve without naming one: - "Summarise my last customer interview." - "Find every mention of pricing across this month's calls." - "Upload this recording and tell me the main themes." ## Related guides - [Connect your AI tool](/mcp) covers every supported client. - [Connect Claude.ai (web) to Speak AI](/mcp/setup/claude-web/) - [Speak AI MCP server](/mcp) explains what the server exposes. - [MCP authentication and rate limits](/mcp/authentication) # Tool reference > Every tool in the Speak AI MCP server, grouped by category, with its parameters and behaviour hints on one page each. Source: https://docs.speakai.co/mcp/tools/ · Markdown: https://docs.speakai.co/mcp/tools/index.md The Speak AI MCP server exposes 112 tools across 15 categories. Every tool has its own page with a plain-language summary, its parameters, and its behaviour hints. Every page here is generated from the server itself, so the parameters and descriptions match the tools your assistant actually calls. ## What does the Media library category cover? Upload audio or video, fetch transcripts, get AI insights, organize, favorite, export. The Media library category has 17 tools, each on its own page under [Media library](/mcp/tools/media/).
- [`update_transcription`](/mcp/tools/media/update_transcription/): Edit the official transcript text of a single media file by finding and replacing text. - [`get_signed_upload_url`](/mcp/tools/media/get_signed_upload_url/): Get a pre-signed S3 URL for direct file upload to Speak AI storage. - [`upload_media`](/mcp/tools/media/upload_media/): Upload media from a URL: a direct/public file URL, a pre-signed S3 URL, or a shareable social/video link (YouTube, Instagram, TikTok, X, Facebook, Reddit, SoundCloud, and similar) which Speak resolves to the underlying media automatically. - [`upload_local_file`](/mcp/tools/media/upload_local_file/): Upload a local file to Speak AI for transcription and analysis. - [`upload_and_analyze`](/mcp/tools/media/upload_and_analyze/): Upload and transcribe media from a URL: a direct/public file URL, OR a shareable social/video link (YouTube, Instagram, TikTok, X, Facebook, Reddit, SoundCloud, and similar), which Speak resolves to the underlying media automatically. - [`list_media`](/mcp/tools/media/list_media/): List and search media files in the workspace with filtering, pagination, and sorting. - [`get_media_insights`](/mcp/tools/media/get_media_insights/): Retrieve AI-generated insights for a processed media file: topics, sentiment, keywords, action items, summaries, and more. - [`get_transcript`](/mcp/tools/media/get_transcript/): Retrieve the full transcript for a media file with speaker labels and timestamps. - [`get_captions`](/mcp/tools/media/get_captions/): Get captions for a media file. - [`update_transcript_speakers`](/mcp/tools/media/update_transcript_speakers/): Update or rename speaker labels in a media transcript. - [`bulk_update_transcript_speakers`](/mcp/tools/media/bulk_update_transcript_speakers/): Update or rename speaker labels across multiple media files in a single operation. - [`get_media_status`](/mcp/tools/media/get_media_status/): Check the processing status of a media file. - [`update_media_metadata`](/mcp/tools/media/update_media_metadata/): Update metadata fields (name, description, tags, status) for an existing media file. - [`delete_media`](/mcp/tools/media/delete_media/): Permanently delete a media file and all associated transcripts and insights. - [`toggle_media_favorite`](/mcp/tools/media/toggle_media_favorite/): Mark or unmark media files as favorites for quick access. - [`reanalyze_media`](/mcp/tools/media/reanalyze_media/): Re-run AI analysis on a media file using the latest models. - [`bulk_move_media`](/mcp/tools/media/bulk_move_media/): Move multiple media files to a folder in a single operation.
## What does the Ask AI Chat category cover? Run AI prompts across one file, a folder, or your whole workspace. Save favorites. The Ask AI Chat category has 12 tools, each on its own page under [Ask AI Chat](/mcp/tools/magic-prompt/).
- [`ask_ai_chat`](/mcp/tools/magic-prompt/ask_ai_chat/): Ask an AI-powered question about your media using Speak AI's AI Chat. - [`retry_ai_chat`](/mcp/tools/magic-prompt/retry_ai_chat/): Retry a failed or incomplete AI Chat response. - [`get_chat_history`](/mcp/tools/magic-prompt/get_chat_history/): Get a list of recent AI Chat conversations. - [`get_chat_messages`](/mcp/tools/magic-prompt/get_chat_messages/): Get full message history for conversations. - [`delete_chat_message`](/mcp/tools/magic-prompt/delete_chat_message/): Delete a specific chat message from conversation history. - [`list_prompts`](/mcp/tools/magic-prompt/list_prompts/): List all available AI Chat templates. - [`get_favorite_prompts`](/mcp/tools/magic-prompt/get_favorite_prompts/): Get all prompts and answers that have been marked as favorites. - [`toggle_prompt_favorite`](/mcp/tools/magic-prompt/toggle_prompt_favorite/): Mark or unmark a chat message as a favorite for easy retrieval later. - [`update_chat_title`](/mcp/tools/magic-prompt/update_chat_title/): Update the title of a chat conversation for easier identification in history. - [`submit_chat_feedback`](/mcp/tools/magic-prompt/submit_chat_feedback/): Submit feedback on a chat response (thumbs up/down). - [`get_chat_statistics`](/mcp/tools/magic-prompt/get_chat_statistics/): Get usage statistics for AI Chat / chat. - [`export_chat_answer`](/mcp/tools/magic-prompt/export_chat_answer/): Export a specific AI Chat answer.
## What does the Search & analytics category cover? Full-text search across transcripts, insights, and metadata. Workspace-level stats. The Search & analytics category has 3 tools, each on its own page under [Search & analytics](/mcp/tools/search-analytics/).
- [`search_media`](/mcp/tools/search-analytics/search_media/): Deep search across all media transcripts, insights, and metadata. - [`get_media_statistics`](/mcp/tools/search-analytics/get_media_statistics/): Get workspace-level media statistics: total counts, processing status breakdown, storage usage, etc. - [`list_supported_languages`](/mcp/tools/search-analytics/list_supported_languages/): List all languages supported for transcription.
## What does the Folders & views category cover? Create folders, save filtered views, bulk move files, share read-only collections. The Folders & views category has 11 tools, each on its own page under [Folders & views](/mcp/tools/folders-views/).
- [`list_folders`](/mcp/tools/folders-views/list_folders/): List all folders in the workspace with pagination and sorting. - [`get_folder_info`](/mcp/tools/folders-views/get_folder_info/): Get detailed information about a specific folder including its contents. - [`create_folder`](/mcp/tools/folders-views/create_folder/): Create a new folder in the workspace. - [`clone_folder`](/mcp/tools/folders-views/clone_folder/): Duplicate an existing folder and all of its contents. - [`update_folder`](/mcp/tools/folders-views/update_folder/): Update a folder. - [`delete_folder`](/mcp/tools/folders-views/delete_folder/): Permanently delete a folder. - [`get_all_folder_views`](/mcp/tools/folders-views/get_all_folder_views/): Retrieve all saved views across all folders. - [`get_folder_views`](/mcp/tools/folders-views/get_folder_views/): Retrieve all saved views for a specific folder. - [`create_folder_view`](/mcp/tools/folders-views/create_folder_view/): Create a new saved view for a folder with a custom set of display columns. - [`update_folder_view`](/mcp/tools/folders-views/update_folder_view/): Update an existing saved view. - [`clone_folder_view`](/mcp/tools/folders-views/clone_folder_view/): Duplicate an existing folder view into a target folder.
## What does the Recorders & surveys category cover? Public recording links for clients, prompted question sets, branded submission pages. The Recorders & surveys category has 10 tools, each on its own page under [Recorders & surveys](/mcp/tools/recorders-surveys/).
- [`create_recorder`](/mcp/tools/recorders-surveys/create_recorder/): Create a new recorder or survey for collecting audio/video submissions. - [`list_recorders`](/mcp/tools/recorders-surveys/list_recorders/): List all recorders/surveys in the workspace. - [`get_recorder_info`](/mcp/tools/recorders-surveys/get_recorder_info/): Get detailed information about a specific recorder including its settings and questions. - [`clone_recorder`](/mcp/tools/recorders-surveys/clone_recorder/): Duplicate an existing recorder including all its settings and questions. - [`get_recorder_recordings`](/mcp/tools/recorders-surveys/get_recorder_recordings/): List all submissions/recordings collected by a specific recorder. - [`generate_recorder_url`](/mcp/tools/recorders-surveys/generate_recorder_url/): Generate a shareable public URL for a recorder/survey. - [`update_recorder_settings`](/mcp/tools/recorders-surveys/update_recorder_settings/): Update configuration settings for a recorder (branding, capture options, etc.). - [`update_recorder_questions`](/mcp/tools/recorders-surveys/update_recorder_questions/): Update the survey questions and respondent-info settings for a recorder. - [`check_recorder_status`](/mcp/tools/recorders-surveys/check_recorder_status/): Check whether a recorder/survey is active and accepting submissions. - [`delete_recorder`](/mcp/tools/recorders-surveys/delete_recorder/): Permanently delete a recorder/survey.
## What does the Clips category cover? Highlight clips from any time range. Export PDF, DOCX, SRT, VTT, TXT, CSV. The Clips category has 4 tools, each on its own page under [Clips](/mcp/tools/clips/).
- [`create_clip`](/mcp/tools/clips/create_clip/): Create a highlight clip from one or more media files by specifying time ranges. - [`get_clips`](/mcp/tools/clips/get_clips/): List clips, optionally filtered by folder or media files. - [`update_clip`](/mcp/tools/clips/update_clip/): Update a clip's title, description, or tags. - [`delete_clip`](/mcp/tools/clips/delete_clip/): Permanently delete a clip and its associated media file.
## What does the Exports category cover? Highlight clips from any time range. Export PDF, DOCX, SRT, VTT, TXT, CSV. The Exports category has 2 tools, each on its own page under [Exports](/mcp/tools/exports/).
- [`export_media`](/mcp/tools/exports/export_media/): Export a media file's transcript or insights in various formats (pdf, docx, srt, vtt, txt, csv). - [`export_multiple_media`](/mcp/tools/exports/export_multiple_media/): Export multiple media files at once, optionally merged into a single file.
## What does the Meeting bot category cover? Schedule Speak AI to join a Zoom / Google Meet / Teams call and transcribe automatically. The Meeting bot category has 5 tools, each on its own page under [Meeting bot](/mcp/tools/meeting-bot/).
- [`list_meeting_events`](/mcp/tools/meeting-bot/list_meeting_events/): List scheduled or completed meeting assistant events with filtering and pagination. - [`schedule_meeting_event`](/mcp/tools/meeting-bot/schedule_meeting_event/): Schedule the Speak AI meeting assistant to join and record an upcoming meeting. - [`remove_assistant_from_meeting`](/mcp/tools/meeting-bot/remove_assistant_from_meeting/): Remove the Speak AI assistant from an active or scheduled meeting. - [`delete_scheduled_assistant`](/mcp/tools/meeting-bot/delete_scheduled_assistant/): Cancel and delete a scheduled meeting assistant event. - [`get_live_meeting_transcript`](/mcp/tools/meeting-bot/get_live_meeting_transcript/): Fetch new sentences from an in-progress or just-ended meeting transcript.
## What does the Automations category cover? Trigger actions on new recordings. Send events to your own backend. The Automations category has 15 tools, each on its own page under [Automations](/mcp/tools/automations/).
- [`list_automations`](/mcp/tools/automations/list_automations/): List automation rules in the workspace, with paging and filters. - [`get_automation`](/mcp/tools/automations/get_automation/): Get detailed information about a specific automation rule, including its trigger and step graph. - [`create_automation`](/mcp/tools/automations/create_automation/): Create a new automation rule using the V2 graph model (trigger + ordered steps). - [`update_automation`](/mcp/tools/automations/update_automation/): Update an existing automation rule. - [`toggle_automation_status`](/mcp/tools/automations/toggle_automation_status/): Toggle an automation rule between active and inactive. - [`list_automation_names`](/mcp/tools/automations/list_automation_names/): List automations as lightweight \{ name, id \} pairs: useful for pickers without fetching full configs. - [`get_automation_runs`](/mcp/tools/automations/get_automation_runs/): Get the run history (executions) for an automation, with paging and optional status filter. - [`bulk_update_automation_status`](/mcp/tools/automations/bulk_update_automation_status/): Activate or deactivate multiple automations at once. - [`bulk_assign_automation_folders`](/mcp/tools/automations/bulk_assign_automation_folders/): Set the folder scope for multiple automations at once. - [`run_automations`](/mcp/tools/automations/run_automations/): Manually run one or more automations against one or more media items now (outside the normal trigger). - [`delete_automation`](/mcp/tools/automations/delete_automation/): Permanently delete an automation rule. - [`list_automation_apps`](/mcp/tools/automations/list_automation_apps/): List the apps available in the automation catalog (e.g. Speak native + connected integrations). - [`list_automation_triggers`](/mcp/tools/automations/list_automation_triggers/): List the trigger types available in the automation catalog. - [`list_automation_actions`](/mcp/tools/automations/list_automation_actions/): List the action/step types available in the automation catalog. - [`build_automation`](/mcp/tools/automations/build_automation/): High-level automation builder: create (or update) a Speak automation from a friendly spec without knowing the wire format.
## What does the Webhooks category cover? Trigger actions on new recordings. Send events to your own backend. The Webhooks category has 7 tools, each on its own page under [Webhooks](/mcp/tools/webhooks/).
- [`create_webhook`](/mcp/tools/webhooks/create_webhook/): Create a new webhook to receive real-time notifications when events occur in Speak AI. - [`list_webhooks`](/mcp/tools/webhooks/list_webhooks/): List all configured webhooks in the workspace. - [`update_webhook`](/mcp/tools/webhooks/update_webhook/): Update an existing webhook. - [`delete_webhook`](/mcp/tools/webhooks/delete_webhook/): Delete a webhook and stop receiving notifications at its endpoint. - [`provision_inbound_webhook`](/mcp/tools/webhooks/provision_inbound_webhook/): Provision a standalone inbound webhook and get its public receive URL (inboundUrl) BEFORE creating an automation. - [`get_inbound_webhook`](/mcp/tools/webhooks/get_inbound_webhook/): Get an inbound webhook's public receive URL, captured sample payload, and the ready-to-paste \{\{trigger.payload.*\}\} tokens for mapping payload values into automation steps (speak-upload name/sourceUrl, fieldsMap custom-field values, notify/outbound-webhook templates). - [`get_webhook_attempts`](/mcp/tools/webhooks/get_webhook_attempts/): Get the delivery log for an inbound webhook: each received request with its HTTP acknowledgement status (200 = sample captured, 202 = accepted and run started, 401/403 = rejected) and the automation run it started.
## What does the Text notes category cover? Standalone AI-analyzed text notes plus custom fields you can tag any media file with. The Text notes category has 4 tools, each on its own page under [Text notes](/mcp/tools/text-notes/).
- [`create_text_note`](/mcp/tools/text-notes/create_text_note/): Create a new text note in Speak AI for analysis. - [`get_text_insight`](/mcp/tools/text-notes/get_text_insight/): Retrieve AI-generated insights for a text note, including topics, sentiment, summaries, and action items. - [`reanalyze_text`](/mcp/tools/text-notes/reanalyze_text/): Trigger a re-analysis of an existing text note to regenerate insights with the latest AI models. - [`update_text_note`](/mcp/tools/text-notes/update_text_note/): Update an existing text note's name, content, or metadata.
## What does the Custom fields category cover? Standalone AI-analyzed text notes plus custom fields you can tag any media file with. The Custom fields category has 4 tools, each on its own page under [Custom fields](/mcp/tools/custom-fields/).
- [`list_fields`](/mcp/tools/custom-fields/list_fields/): List all custom fields defined in the workspace. - [`create_field`](/mcp/tools/custom-fields/create_field/): Create a new custom field for categorizing and tagging media. - [`update_field`](/mcp/tools/custom-fields/update_field/): Update a specific custom field by ID. - [`update_multiple_fields`](/mcp/tools/custom-fields/update_multiple_fields/): Set custom field values across media in a single batch operation.
## What does the Embed players category cover? Embeddable player widgets for media on your own website. The Embed players category has 4 tools, each on its own page under [Embed players](/mcp/tools/embed-other/).
- [`create_embed`](/mcp/tools/embed-other/create_embed/): Create an embeddable player/transcript widget for a media file or a set of folders. - [`update_embed`](/mcp/tools/embed-other/update_embed/): Update an existing embed widget: appearance/feature toggles via `meta`, plus scope and privacy. - [`check_embed`](/mcp/tools/embed-other/check_embed/): Check if an embed exists for a media file and retrieve its configuration. - [`get_embed_iframe_url`](/mcp/tools/embed-other/get_embed_iframe_url/): Get the iframe URL for embedding a media player/transcript on a webpage.
## What does the Users & teams category cover? List workspace members and manage user groups. The Users & teams category has 5 tools, each on its own page under [Users & teams](/mcp/tools/users-team/).
- [`list_users`](/mcp/tools/users-team/list_users/): List the users (members) in the workspace/company, with their ids, names, emails, and permissions. - [`list_user_groups`](/mcp/tools/users-team/list_user_groups/): List all user groups in the company. - [`create_user_group`](/mcp/tools/users-team/create_user_group/): Create a new user group and assign members. - [`update_user_group`](/mcp/tools/users-team/update_user_group/): Update a user group's name and member list. - [`delete_user_group`](/mcp/tools/users-team/delete_user_group/): Delete a user group.
## What does the Dashboards category cover? Create and manage analytics dashboards, widgets, and public sharing. The Dashboards category has 9 tools, each on its own page under [Dashboards](/mcp/tools/dashboards/).
- [`list_dashboard_widgets`](/mcp/tools/dashboards/list_dashboard_widgets/): Discovery + how-to helper for building and customizing dashboards. - [`list_dashboards`](/mcp/tools/dashboards/list_dashboards/): List all analytics dashboards the caller can access, including share state and each dashboard's current `revision` (needed for `update_dashboard`). - [`get_dashboard`](/mcp/tools/dashboards/get_dashboard/): Get a single dashboard's full spec: title, description, source, date range, sections, widgets, and the current `revision` (pass that revision back to `update_dashboard`). - [`create_dashboard`](/mcp/tools/dashboards/create_dashboard/): Create an analytics dashboard. - [`update_dashboard`](/mcp/tools/dashboards/update_dashboard/): Update a dashboard. - [`delete_dashboard`](/mcp/tools/dashboards/delete_dashboard/): Soft-delete a dashboard. - [`duplicate_dashboard`](/mcp/tools/dashboards/duplicate_dashboard/): Clone an existing dashboard. - [`share_dashboard`](/mcp/tools/dashboards/share_dashboard/): Enable public sharing for a dashboard and return its share token + embed id. - [`get_dashboard_speakers_insight`](/mcp/tools/dashboards/get_dashboard_speakers_insight/): Compute a speakers breakdown for a given folder scope, date range, and field filters.
## Related - [MCP server](/mcp/) covers setup, supported clients, and what agents can do once connected. # Automations tools in the Speak AI MCP server reference > Trigger actions on new recordings. Send events to your own backend. All 15 Automations tools in the Speak AI MCP server, with parameters and behaviour hints. Source: https://docs.speakai.co/mcp/tools/automations/ · Markdown: https://docs.speakai.co/mcp/tools/automations/index.md The Automations category groups 15 of the Speak AI MCP server's tools. Trigger actions on new recordings. Send events to your own backend. ## Which Automations tools does the Speak AI MCP server have? The Speak AI MCP server has 15 Automations tools. Each one has its own page with a plain-language summary, its parameters, and its behaviour hints. - [`list_automations`](/mcp/tools/automations/list_automations/): List automation rules in the workspace, with paging and filters. - [`get_automation`](/mcp/tools/automations/get_automation/): Get detailed information about a specific automation rule, including its trigger and step graph. - [`create_automation`](/mcp/tools/automations/create_automation/): Create a new automation rule using the V2 graph model (trigger + ordered steps). - [`update_automation`](/mcp/tools/automations/update_automation/): Update an existing automation rule. - [`toggle_automation_status`](/mcp/tools/automations/toggle_automation_status/): Toggle an automation rule between active and inactive. - [`list_automation_names`](/mcp/tools/automations/list_automation_names/): List automations as lightweight \{ name, id \} pairs: useful for pickers without fetching full configs. - [`get_automation_runs`](/mcp/tools/automations/get_automation_runs/): Get the run history (executions) for an automation, with paging and optional status filter. - [`bulk_update_automation_status`](/mcp/tools/automations/bulk_update_automation_status/): Activate or deactivate multiple automations at once. - [`bulk_assign_automation_folders`](/mcp/tools/automations/bulk_assign_automation_folders/): Set the folder scope for multiple automations at once. - [`run_automations`](/mcp/tools/automations/run_automations/): Manually run one or more automations against one or more media items now (outside the normal trigger). - [`delete_automation`](/mcp/tools/automations/delete_automation/): Permanently delete an automation rule. - [`list_automation_apps`](/mcp/tools/automations/list_automation_apps/): List the apps available in the automation catalog (e.g. Speak native + connected integrations). - [`list_automation_triggers`](/mcp/tools/automations/list_automation_triggers/): List the trigger types available in the automation catalog. - [`list_automation_actions`](/mcp/tools/automations/list_automation_actions/): List the action/step types available in the automation catalog. - [`build_automation`](/mcp/tools/automations/build_automation/): High-level automation builder: create (or update) a Speak automation from a friendly spec without knowing the wire format. ## Related - [Tool reference](/mcp/tools/) lists every Speak AI MCP server tool across every category. - [MCP server](/mcp/) covers setup, supported clients, and what agents can do once connected. # Build Automation > High-level automation builder: create (or update) a Speak automation from a friendly spec without knowing the wire format. Source: https://docs.speakai.co/mcp/tools/automations/build_automation/ · Markdown: https://docs.speakai.co/mcp/tools/automations/build_automation/index.md `build_automation` is a tool in the Speak AI MCP server. High-level automation builder: create (or update) a Speak automation from a friendly spec without knowing the wire format. ## What does it do? High-level automation builder: create (or update) a Speak automation from a friendly spec without knowing the wire format. Accepts folder/custom-field NAMES (resolved to ids; missing folders are auto-created), payload.\ shorthand for webhook tokens, and simple step types (filter, branch, upload, ai_chat, translate, notify, call_webhook). For inbound-webhook automations the result includes the receive URL and mappable payload tokens. Prefer this over `create_automation` unless you need raw control. ## Parameters `build_automation` takes 7 parameters, 3 of them required. | Name | Type | Required | Description | | --- | --- | --- | --- | | `name` | string | Yes | Display name for the automation | | `trigger` | object | Yes | What starts the automation. Object with: • on (required): "media_analyzed" \| "inbound_webhook" \| "field_updated" • folders: array of folder names or ids (required for media_analyzed; missing folders are created) • childKey: dot-path narrowing the webhook payload root, e.g. "data" (inbound_webhook only) • webhookId: reuse a webhook from `provision_inbound_webhook` (inbound_webhook only; omit to auto-provision) • watchFields: array of \{ field: name-or-id, values?: string[] \} (required for field_updated. Fires when the field changes; values restricts to specific new values) • matchLogic: "AND"\|"OR" for combining multiple watchFields value matches (default OR) | | `steps` | array of object | Yes | Ordered actions. Each step is an object with a `do` key plus its options. String values may be literals, "payload.\" shorthand (converted to \{\{trigger.payload.\\}\} only when it is the ENTIRE value), or raw \{\{...\}\} tokens: inside longer text, write the full \{\{trigger.payload.\\}\} form. • \{ do: "filter", rules: [\{ field, op, value? \}], logic?: "AND"\|"OR" \}. Continue only if rules match. Fields: media flows use name\|duration\|sourceLanguage\|tags\|transcript\|speakers or a custom field name; webhook payloads use payload paths like "contact.status". Ops: eq\|neq\|contains\|ncontains\|startsWith\|gt\|lt\|exists • \{ do: "branch", rules, logic? \}. Like filter but routes instead of stopping; later steps with runWhen: "true"\|"false" only run on that outcome. NOTE: branch routing requires the server's DAG runner (feature-flagged); when it is off, steps run in order and runWhen markers are ignored. Prefer filter for guaranteed gating • \{ do: "upload", source (URL or payload.\, required), name?, language? (e.g. "en-US"), folder? (name or id; created if missing), folderFromPayload? (payload key holding the destination folder name. Dynamic routing), onNoFolderMatch?: "create"\|"default", mapFields?: \{ \: \\> \} (writes payload values into custom fields on the uploaded media) \} • \{ do: "ai_chat", prompt? (required unless saveToFields given), title?, saveToFields?: [field names or ids] (max 10. Values are extracted into these custom fields; prompt may be omitted for extraction-only steps), model? (a Speak-supported LLM id, e.g. "gemini-2.5-flash", "claude-sonnet-4-6"; omit for the workspace default) \} • \{ do: "translate", language: region-qualified code like "es-ES", "fr-FR" \} • \{ do: "notify", message (required, tokens allowed), channel?: "in_app"\|"email"\|"slack" (default in_app; email currently falls back to an in-app notification), target? (reserved. Not yet used for delivery) \} • \{ do: "call_webhook", url (required), method?, headers?, body? (string or object template, tokens allowed) \} Steps may also set runWhen (after a branch step). Composio app actions (Google Drive, Slack apps, …) are not supported by this builder yet: use `create_automation` directly for those. | | `automationId` | string | No | Update this existing automation instead of creating a new one (full replace) | | `description` | string | No | Optional description | | `isActive` | boolean | No | Whether the automation is active (default true) | | `orTriggers` | array of object | No | Additional "Or" triggers (same shape as trigger, but inbound_webhook is not allowed here). The automation runs when ANY trigger fires. | ## Behaviour The Speak AI MCP server publishes these behaviour hints for `build_automation`. - Can change data in your workspace. - Does not delete or overwrite existing data. - Repeating an identical call can have an extra effect. - Can reach systems outside Speak AI. ## Related - [Automations](/mcp/tools/automations/) lists the rest of the Automations category. - [Tool reference](/mcp/tools/) lists every Speak AI MCP server tool. - [MCP server](/mcp/) covers setup, supported clients, and what agents can do once connected. # Bulk Assign Automation Folders > Set the folder scope for multiple automations at once. Source: https://docs.speakai.co/mcp/tools/automations/bulk_assign_automation_folders/ · Markdown: https://docs.speakai.co/mcp/tools/automations/bulk_assign_automation_folders/index.md Use the Speak AI MCP server tool `bulk_assign_automation_folders` to set the folder scope for multiple automations at once. ## What does it do? Set the folder scope for multiple automations at once. Pass an empty folderIds array to remove the folder restriction (run on all folders). ## Parameters `bulk_assign_automation_folders` takes 2 parameters, all of them required. | Name | Type | Required | Description | | --- | --- | --- | --- | | `automationIds` | array of string | Yes | Automation ids to update | | `folderIds` | array of string | Yes | Folder ids to scope the automations to. Empty array = all folders. | ## Behaviour The Speak AI MCP server publishes these behaviour hints for `bulk_assign_automation_folders`. - Can change data in your workspace. - Can delete or overwrite data. Use with care. - Repeating an identical call is safe. - Can reach systems outside Speak AI. ## Related - [Automations](/mcp/tools/automations/) lists the rest of the Automations category. - [Tool reference](/mcp/tools/) lists every Speak AI MCP server tool. - [MCP server](/mcp/) covers setup, supported clients, and what agents can do once connected. # Bulk Update Automation Status > Activate or deactivate multiple automations at once. Source: https://docs.speakai.co/mcp/tools/automations/bulk_update_automation_status/ · Markdown: https://docs.speakai.co/mcp/tools/automations/bulk_update_automation_status/index.md Use the Speak AI MCP server tool `bulk_update_automation_status` to activate or deactivate multiple automations at once. ## What does it do? Activate or deactivate multiple automations at once. ## Parameters `bulk_update_automation_status` takes 2 parameters, all of them required. | Name | Type | Required | Description | | --- | --- | --- | --- | | `automationIds` | array of string | Yes | Automation ids to update | | `isActive` | boolean | Yes | true to activate, false to deactivate, for all listed automations | ## Behaviour The Speak AI MCP server publishes these behaviour hints for `bulk_update_automation_status`. - Can change data in your workspace. - Does not delete or overwrite existing data. - Repeating an identical call is safe. - Can reach systems outside Speak AI. ## Related - [Automations](/mcp/tools/automations/) lists the rest of the Automations category. - [Tool reference](/mcp/tools/) lists every Speak AI MCP server tool. - [MCP server](/mcp/) covers setup, supported clients, and what agents can do once connected. # Create Automation > Create a new automation rule using the V2 graph model (trigger + ordered steps). Source: https://docs.speakai.co/mcp/tools/automations/create_automation/ · Markdown: https://docs.speakai.co/mcp/tools/automations/create_automation/index.md Use the Speak AI MCP server tool `create_automation` to create a new automation rule using the V2 graph model (trigger + ordered steps). ## What does it do? Create a new automation rule using the V2 graph model (trigger + ordered steps). Fetch valid step/trigger options with `list_automation_triggers` / `list_automation_actions` if unsure. For inbound-webhook automations the response includes inboundWebhook.inboundUrl (where to POST payloads). Recommended flow: create, send a test payload to the URL with ?test=1, call `get_inbound_webhook` to see mappable payload tokens, then `update_automation` to wire tokens/fieldsMap. ## Parameters `create_automation` takes 8 parameters, 3 of them required. | Name | Type | Required | Description | | --- | --- | --- | --- | | `name` | string | Yes | Display name for the automation | | `trigger` | object | Yes | Trigger object (the automation's root). Always include triggerSlug. Supported shapes: • Media analyzed in folder(s): \{ type: "folders", triggerSlug: "media_analyzed", folderIds: string[] (min 1) \} • Inbound webhook (receive external payloads): \{ type: "folders", triggerSlug: "inbound_webhook", webhookId? (from `provision_inbound_webhook`; omit to auto-provision a new one on create), childKey? (dot-path narrowing which part of the payload feeds the automation, e.g. "data") \}. The create/update response includes inboundWebhook.inboundUrl: the public URL to POST payloads to. • Custom field updated: \{ type: "folders", triggerSlug: "field_updated", values: string[] (watched custom field ids, min 1), fieldValueMatches?: [\{ fieldId, values: string[] \}] (fire only when the field changes TO one of these values; empty values = any change), fieldMatchLogic?: "AND"\|"OR" (how multiple fieldValueMatches combine, default "OR") \} • Composio app event: \{ type: "composio", provider: "composio", app, triggerSlug, connectedAccountId \} (requires a connected account; may be behind a server flag) Notes: "tags"/"keywords" trigger types are rejected for graph automations. The server stores inbound-webhook triggers with type "webhook" internally: send type "folders" plus the slug as shown above. | | `triggers` | array of object | No | Optional additional "Or" triggers (max 10): the automation runs when ANY of them fires, sharing the same steps. Each entry mirrors the trigger shapes above but cannot be an inbound webhook and carries no webhookId/childKey. Example: [\{ type: "folders", triggerSlug: "field_updated", values: ["\"] \}] | | `steps` | array of object | Yes | Ordered array of graph steps (1-20). Each step is an object: \{ stepId: string (unique within the array), stepType: one of "speak-upload" \| "magic-prompt" \| "translation" \| "filter" \| "condition" \| "notify" \| "outbound-webhook" \| "composio-action", dependsOn?: string[] (stepIds this step runs after), branch?: "true"\|"false" (which outcome of an upstream condition step this step belongs to) \} plus ONE config key matching stepType: • speak-upload -\> speakUpload: \{ sourceMode: "url"\|"file", sourceUrl (required when sourceMode="url"; tokens allowed. If the token resolves to an object, the first http(s) URL inside it is used), folderId (required, unless folderRouting.mode="dynamic" where it becomes the optional fallback), name? (tokens allowed, mixable with static text), language? (language code or token), fieldsMap?: \{ \: "\" \} (writes payload values into Speak custom fields on the uploaded media; values are usually \{\{trigger.payload.\\}\} tokens. Get field ids from `list_fields`), folderRouting?: \{ mode: "static"\|"dynamic", sourceKey (payload key holding the destination folder name, required when dynamic), onNoMatch: "create"\|"default" (create a folder named after the value, or fall back to folderId) \} \} • magic-prompt -\> magicPrompt: \{ prompt (required unless fieldIds given, max 20000), title?, assistantType? ("general"\|"researcher"\|"marketer"\|"sales"\|"recruiter"\|"custom", default "general"), assistantTemplateId? (required if assistantType="custom"), fieldIds?: string[] (max 10. Extract answers into these custom fields) \} • translation -\> translation: \{ targetLanguage: region-qualified locale code, e.g. "es-ES", "fr-FR" (bare codes like "es" are rejected) \} • filter -\> filter: \{ logic: "AND"\|"OR" (default "AND"), rules: [\{ field, op, value? \}] (1-20) \}. The run continues only when the rules match, otherwise it stops silently • condition -\> condition: same \{ logic, rules \} shape as filter, but instead of stopping it routes: downstream steps marked branch:"true"/"false" run according to the outcome • notify -\> notify: \{ channel: "in_app"\|"email"\|"slack", target?, message (required, tokens allowed) \} • outbound-webhook -\> outboundWebhook: \{ url (required, tokens allowed), method? ("GET"\|"POST"\|"PUT"\|"PATCH"\|"DELETE", default "POST"), headers?: \{ \: \ \}, bodyTemplate?: string \| object (tokens allowed) \} • composio-action -\> composio: \{ app, action, connectedAccountId?, argsTemplate? \} (Composio is currently behind a server flag and may be unavailable) Filter/condition rule fields depend on what flows into the step: MEDIA -\> name\|duration\|sourceLanguage\|tags\|transcript\|speakers or a custom field id; INSIGHT -\> answer; inbound-webhook DATA -\> any payload path (e.g. "contact.status"). Ops by field type. Text: eq\|neq\|contains\|ncontains\|startsWith\|exists; number: eq\|neq\|gt\|lt\|exists; array: contains\|ncontains\|exists ("exists" takes no value; gt/lt values are numbers). Token syntax (usable in fields marked 'tokens allowed'): \{\{trigger.payload.\\}\} reads the inbound webhook payload (dot paths and [n] array indices; paths are relative to trigger.childKey when set. Discover valid paths with `get_inbound_webhook` after sending a test payload); \{\{step.\.\\}\} or \{\{step.\.\\}\} reads a previous step's output (speak-upload -\> mediaId, magic-prompt -\> answer, outbound-webhook -\> status/response). | | `description` | string | No | Optional description | | `isActive` | boolean | No | Whether the automation is active (defaults to true) | | `runType` | enum: instant, schedule | No | Run type: "instant" (default, runs on trigger) or "schedule" (cron) | | `schedule` | object | No | Required when runType="schedule": \{ timePeriod: "today"\|"yesterday"\|"last7days"\|"last14days"\|"thisWeek", repeatAt: string \} | ## Behaviour The Speak AI MCP server publishes these behaviour hints for `create_automation`. - Can change data in your workspace. - Does not delete or overwrite existing data. - Repeating an identical call can have an extra effect. - Can reach systems outside Speak AI. ## Related - [Automations](/mcp/tools/automations/) lists the rest of the Automations category. - [Tool reference](/mcp/tools/) lists every Speak AI MCP server tool. - [MCP server](/mcp/) covers setup, supported clients, and what agents can do once connected. # Delete Automation > Permanently delete an automation rule. Source: https://docs.speakai.co/mcp/tools/automations/delete_automation/ · Markdown: https://docs.speakai.co/mcp/tools/automations/delete_automation/index.md Use the Speak AI MCP server tool `delete_automation` to permanently delete an automation rule. ## What does it do? Permanently delete an automation rule. ## Parameters `delete_automation` takes 1 parameter, all of them required. | Name | Type | Required | Description | | --- | --- | --- | --- | | `automationId` | string | Yes | Unique identifier of the automation to delete | ## Behaviour The Speak AI MCP server publishes these behaviour hints for `delete_automation`. - Can change data in your workspace. - Can delete or overwrite data. Use with care. - Repeating an identical call is safe. - Stays inside Speak AI. Does not reach other systems. ## Related - [Automations](/mcp/tools/automations/) lists the rest of the Automations category. - [Tool reference](/mcp/tools/) lists every Speak AI MCP server tool. - [MCP server](/mcp/) covers setup, supported clients, and what agents can do once connected. # Get Automation Runs > Get the run history (executions) for an automation, with paging and optional status filter. Source: https://docs.speakai.co/mcp/tools/automations/get_automation_runs/ · Markdown: https://docs.speakai.co/mcp/tools/automations/get_automation_runs/index.md Use the Speak AI MCP server tool `get_automation_runs` to get the run history (executions) for an automation, with paging and optional status filter. ## What does it do? Get the run history (executions) for an automation, with paging and optional status filter. ## Parameters `get_automation_runs` takes 4 parameters, 1 of them required. | Name | Type | Required | Description | | --- | --- | --- | --- | | `automationId` | string | Yes | Unique identifier of the automation | | `page` | number | No | 0-based page index | | `pageSize` | number | No | Results per page | | `status` | enum: pending, running, completed, failed, killed | No | Filter runs by status | ## Behaviour The Speak AI MCP server publishes these behaviour hints for `get_automation_runs`. - Only reads data. Does not modify your workspace. - Does not delete or overwrite existing data. - Repeating an identical call is safe. - Stays inside Speak AI. Does not reach other systems. ## Related - [Automations](/mcp/tools/automations/) lists the rest of the Automations category. - [Tool reference](/mcp/tools/) lists every Speak AI MCP server tool. - [MCP server](/mcp/) covers setup, supported clients, and what agents can do once connected. # Get Automation Details > Get detailed information about a specific automation rule, including its trigger and step graph. Source: https://docs.speakai.co/mcp/tools/automations/get_automation/ · Markdown: https://docs.speakai.co/mcp/tools/automations/get_automation/index.md Use the Speak AI MCP server tool `get_automation` to get detailed information about a specific automation rule, including its trigger and step graph. ## What does it do? Get detailed information about a specific automation rule, including its trigger and step graph. ## Parameters `get_automation` takes 1 parameter, all of them required. | Name | Type | Required | Description | | --- | --- | --- | --- | | `automationId` | string | Yes | Unique identifier of the automation | ## Behaviour The Speak AI MCP server publishes these behaviour hints for `get_automation`. - Only reads data. Does not modify your workspace. - Does not delete or overwrite existing data. - Repeating an identical call is safe. - Stays inside Speak AI. Does not reach other systems. ## Related - [Automations](/mcp/tools/automations/) lists the rest of the Automations category. - [Tool reference](/mcp/tools/) lists every Speak AI MCP server tool. - [MCP server](/mcp/) covers setup, supported clients, and what agents can do once connected. # List Automation Actions > List the action/step types available in the automation catalog. Source: https://docs.speakai.co/mcp/tools/automations/list_automation_actions/ · Markdown: https://docs.speakai.co/mcp/tools/automations/list_automation_actions/index.md Use the Speak AI MCP server tool `list_automation_actions` to list the action/step types available in the automation catalog. ## What does it do? List the action/step types available in the automation catalog. Optionally filter by app. ## Parameters `list_automation_actions` takes 1 parameter, all of them optional. | Name | Type | Required | Description | | --- | --- | --- | --- | | `app` | string | No | Filter actions to a specific app slug | ## Behaviour The Speak AI MCP server publishes these behaviour hints for `list_automation_actions`. - Only reads data. Does not modify your workspace. - Does not delete or overwrite existing data. - Repeating an identical call is safe. - Stays inside Speak AI. Does not reach other systems. ## Related - [Automations](/mcp/tools/automations/) lists the rest of the Automations category. - [Tool reference](/mcp/tools/) lists every Speak AI MCP server tool. - [MCP server](/mcp/) covers setup, supported clients, and what agents can do once connected. # List Automation Apps > List the apps available in the automation catalog (e.g. Speak native + connected integrations). Source: https://docs.speakai.co/mcp/tools/automations/list_automation_apps/ · Markdown: https://docs.speakai.co/mcp/tools/automations/list_automation_apps/index.md Use the Speak AI MCP server tool `list_automation_apps` to list the apps available in the automation catalog (e.g. Speak native + connected integrations). ## What does it do? List the apps available in the automation catalog (e.g. Speak native + connected integrations). Use to discover what triggers/actions exist before building an automation. ## Parameters `list_automation_apps` takes no parameters. ## Behaviour The Speak AI MCP server publishes these behaviour hints for `list_automation_apps`. - Only reads data. Does not modify your workspace. - Does not delete or overwrite existing data. - Repeating an identical call is safe. - Stays inside Speak AI. Does not reach other systems. ## Related - [Automations](/mcp/tools/automations/) lists the rest of the Automations category. - [Tool reference](/mcp/tools/) lists every Speak AI MCP server tool. - [MCP server](/mcp/) covers setup, supported clients, and what agents can do once connected. # List Automation Names > List automations as lightweight { name, id } pairs: useful for pickers without fetching full configs. Source: https://docs.speakai.co/mcp/tools/automations/list_automation_names/ · Markdown: https://docs.speakai.co/mcp/tools/automations/list_automation_names/index.md Use the Speak AI MCP server tool `list_automation_names` to list automations as lightweight \{ name, id \} pairs: useful for pickers without fetching full configs. ## What does it do? List automations as lightweight \{ name, id \} pairs: useful for pickers without fetching full configs. ## Parameters `list_automation_names` takes no parameters. ## Behaviour The Speak AI MCP server publishes these behaviour hints for `list_automation_names`. - Only reads data. Does not modify your workspace. - Does not delete or overwrite existing data. - Repeating an identical call is safe. - Stays inside Speak AI. Does not reach other systems. ## Related - [Automations](/mcp/tools/automations/) lists the rest of the Automations category. - [Tool reference](/mcp/tools/) lists every Speak AI MCP server tool. - [MCP server](/mcp/) covers setup, supported clients, and what agents can do once connected. # List Automation Triggers > List the trigger types available in the automation catalog. Source: https://docs.speakai.co/mcp/tools/automations/list_automation_triggers/ · Markdown: https://docs.speakai.co/mcp/tools/automations/list_automation_triggers/index.md Use the Speak AI MCP server tool `list_automation_triggers` to list the trigger types available in the automation catalog. ## What does it do? List the trigger types available in the automation catalog. Optionally filter by app. ## Parameters `list_automation_triggers` takes 1 parameter, all of them optional. | Name | Type | Required | Description | | --- | --- | --- | --- | | `app` | string | No | Filter triggers to a specific app slug | ## Behaviour The Speak AI MCP server publishes these behaviour hints for `list_automation_triggers`. - Only reads data. Does not modify your workspace. - Does not delete or overwrite existing data. - Repeating an identical call is safe. - Stays inside Speak AI. Does not reach other systems. ## Related - [Automations](/mcp/tools/automations/) lists the rest of the Automations category. - [Tool reference](/mcp/tools/) lists every Speak AI MCP server tool. - [MCP server](/mcp/) covers setup, supported clients, and what agents can do once connected. # List Automations > List automation rules in the workspace, with paging and filters. Source: https://docs.speakai.co/mcp/tools/automations/list_automations/ · Markdown: https://docs.speakai.co/mcp/tools/automations/list_automations/index.md Use the Speak AI MCP server tool `list_automations` to list automation rules in the workspace, with paging and filters. ## What does it do? List automation rules in the workspace, with paging and filters. ## Parameters `list_automations` takes 7 parameters, all of them optional. | Name | Type | Required | Description | | --- | --- | --- | --- | | `page` | number | No | 0-based page index | | `pageSize` | number | No | Results per page | | `sortBy` | string | No | Sort expression, e.g. "createdAt:desc" | | `query` | string | No | Free-text search over automation names | | `folderIds` | string | No | Comma-separated folder ids to filter by | | `isActive` | boolean | No | Filter by active state | | `runType` | enum: instant, schedule | No | Filter by run type | ## Behaviour The Speak AI MCP server publishes these behaviour hints for `list_automations`. - Only reads data. Does not modify your workspace. - Does not delete or overwrite existing data. - Repeating an identical call is safe. - Stays inside Speak AI. Does not reach other systems. ## Related - [Automations](/mcp/tools/automations/) lists the rest of the Automations category. - [Tool reference](/mcp/tools/) lists every Speak AI MCP server tool. - [MCP server](/mcp/) covers setup, supported clients, and what agents can do once connected. # Run Automations > Manually run one or more automations against one or more media items now (outside the normal trigger). Source: https://docs.speakai.co/mcp/tools/automations/run_automations/ · Markdown: https://docs.speakai.co/mcp/tools/automations/run_automations/index.md Use the Speak AI MCP server tool `run_automations` to manually run one or more automations against one or more media items now (outside the normal trigger). ## What does it do? Manually run one or more automations against one or more media items now (outside the normal trigger). ## Parameters `run_automations` takes 2 parameters, all of them required. | Name | Type | Required | Description | | --- | --- | --- | --- | | `mediaIds` | array of string | Yes | Media ids to run the automations against | | `automationIds` | array of string | Yes | Automation ids to run | ## Behaviour The Speak AI MCP server publishes these behaviour hints for `run_automations`. - Can change data in your workspace. - Does not delete or overwrite existing data. - Repeating an identical call can have an extra effect. - Can reach systems outside Speak AI. ## Related - [Automations](/mcp/tools/automations/) lists the rest of the Automations category. - [Tool reference](/mcp/tools/) lists every Speak AI MCP server tool. - [MCP server](/mcp/) covers setup, supported clients, and what agents can do once connected. # Toggle Automation Status > Toggle an automation rule between active and inactive. Source: https://docs.speakai.co/mcp/tools/automations/toggle_automation_status/ · Markdown: https://docs.speakai.co/mcp/tools/automations/toggle_automation_status/index.md Use the Speak AI MCP server tool `toggle_automation_status` to toggle an automation rule between active and inactive. ## What does it do? Toggle an automation rule between active and inactive. This flips the current state: call `get_automation` first if you need to know which way it will flip. ## Parameters `toggle_automation_status` takes 1 parameter, all of them required. | Name | Type | Required | Description | | --- | --- | --- | --- | | `automationId` | string | Yes | Unique identifier of the automation | ## Behaviour The Speak AI MCP server publishes these behaviour hints for `toggle_automation_status`. - Can change data in your workspace. - Does not delete or overwrite existing data. - Repeating an identical call can have an extra effect. - Can reach systems outside Speak AI. ## Related - [Automations](/mcp/tools/automations/) lists the rest of the Automations category. - [Tool reference](/mcp/tools/) lists every Speak AI MCP server tool. - [MCP server](/mcp/) covers setup, supported clients, and what agents can do once connected. # Update Automation > Update an existing automation rule. Source: https://docs.speakai.co/mcp/tools/automations/update_automation/ · Markdown: https://docs.speakai.co/mcp/tools/automations/update_automation/index.md Use the Speak AI MCP server tool `update_automation` to update an existing automation rule. ## What does it do? Update an existing automation rule. This replaces the whole automation (name, trigger, and steps), so fetch the current values with `get_automation` first and pass them all back with your changes. ## Parameters `update_automation` takes 9 parameters, 4 of them required. | Name | Type | Required | Description | | --- | --- | --- | --- | | `automationId` | string | Yes | Unique identifier of the automation | | `name` | string | Yes | Display name for the automation | | `trigger` | object | Yes | Trigger object (the automation's root). Always include triggerSlug. Supported shapes: • Media analyzed in folder(s): \{ type: "folders", triggerSlug: "media_analyzed", folderIds: string[] (min 1) \} • Inbound webhook (receive external payloads): \{ type: "folders", triggerSlug: "inbound_webhook", webhookId? (from `provision_inbound_webhook`; omit to auto-provision a new one on create), childKey? (dot-path narrowing which part of the payload feeds the automation, e.g. "data") \}. The create/update response includes inboundWebhook.inboundUrl: the public URL to POST payloads to. • Custom field updated: \{ type: "folders", triggerSlug: "field_updated", values: string[] (watched custom field ids, min 1), fieldValueMatches?: [\{ fieldId, values: string[] \}] (fire only when the field changes TO one of these values; empty values = any change), fieldMatchLogic?: "AND"\|"OR" (how multiple fieldValueMatches combine, default "OR") \} • Composio app event: \{ type: "composio", provider: "composio", app, triggerSlug, connectedAccountId \} (requires a connected account; may be behind a server flag) Notes: "tags"/"keywords" trigger types are rejected for graph automations. The server stores inbound-webhook triggers with type "webhook" internally: send type "folders" plus the slug as shown above. | | `triggers` | array of object | No | Optional additional "Or" triggers (max 10): the automation runs when ANY of them fires, sharing the same steps. Each entry mirrors the trigger shapes above but cannot be an inbound webhook and carries no webhookId/childKey. Example: [\{ type: "folders", triggerSlug: "field_updated", values: ["\"] \}] | | `steps` | array of object | Yes | Ordered array of graph steps (1-20). Each step is an object: \{ stepId: string (unique within the array), stepType: one of "speak-upload" \| "magic-prompt" \| "translation" \| "filter" \| "condition" \| "notify" \| "outbound-webhook" \| "composio-action", dependsOn?: string[] (stepIds this step runs after), branch?: "true"\|"false" (which outcome of an upstream condition step this step belongs to) \} plus ONE config key matching stepType: • speak-upload -\> speakUpload: \{ sourceMode: "url"\|"file", sourceUrl (required when sourceMode="url"; tokens allowed. If the token resolves to an object, the first http(s) URL inside it is used), folderId (required, unless folderRouting.mode="dynamic" where it becomes the optional fallback), name? (tokens allowed, mixable with static text), language? (language code or token), fieldsMap?: \{ \: "\" \} (writes payload values into Speak custom fields on the uploaded media; values are usually \{\{trigger.payload.\\}\} tokens. Get field ids from `list_fields`), folderRouting?: \{ mode: "static"\|"dynamic", sourceKey (payload key holding the destination folder name, required when dynamic), onNoMatch: "create"\|"default" (create a folder named after the value, or fall back to folderId) \} \} • magic-prompt -\> magicPrompt: \{ prompt (required unless fieldIds given, max 20000), title?, assistantType? ("general"\|"researcher"\|"marketer"\|"sales"\|"recruiter"\|"custom", default "general"), assistantTemplateId? (required if assistantType="custom"), fieldIds?: string[] (max 10. Extract answers into these custom fields) \} • translation -\> translation: \{ targetLanguage: region-qualified locale code, e.g. "es-ES", "fr-FR" (bare codes like "es" are rejected) \} • filter -\> filter: \{ logic: "AND"\|"OR" (default "AND"), rules: [\{ field, op, value? \}] (1-20) \}. The run continues only when the rules match, otherwise it stops silently • condition -\> condition: same \{ logic, rules \} shape as filter, but instead of stopping it routes: downstream steps marked branch:"true"/"false" run according to the outcome • notify -\> notify: \{ channel: "in_app"\|"email"\|"slack", target?, message (required, tokens allowed) \} • outbound-webhook -\> outboundWebhook: \{ url (required, tokens allowed), method? ("GET"\|"POST"\|"PUT"\|"PATCH"\|"DELETE", default "POST"), headers?: \{ \: \ \}, bodyTemplate?: string \| object (tokens allowed) \} • composio-action -\> composio: \{ app, action, connectedAccountId?, argsTemplate? \} (Composio is currently behind a server flag and may be unavailable) Filter/condition rule fields depend on what flows into the step: MEDIA -\> name\|duration\|sourceLanguage\|tags\|transcript\|speakers or a custom field id; INSIGHT -\> answer; inbound-webhook DATA -\> any payload path (e.g. "contact.status"). Ops by field type. Text: eq\|neq\|contains\|ncontains\|startsWith\|exists; number: eq\|neq\|gt\|lt\|exists; array: contains\|ncontains\|exists ("exists" takes no value; gt/lt values are numbers). Token syntax (usable in fields marked 'tokens allowed'): \{\{trigger.payload.\\}\} reads the inbound webhook payload (dot paths and [n] array indices; paths are relative to trigger.childKey when set. Discover valid paths with `get_inbound_webhook` after sending a test payload); \{\{step.\.\\}\} or \{\{step.\.\\}\} reads a previous step's output (speak-upload -\> mediaId, magic-prompt -\> answer, outbound-webhook -\> status/response). | | `description` | string | No | Optional description | | `isActive` | boolean | No | Whether the automation is active (defaults to true) | | `runType` | enum: instant, schedule | No | Run type: "instant" (default, runs on trigger) or "schedule" (cron) | | `schedule` | object | No | Required when runType="schedule": \{ timePeriod: "today"\|"yesterday"\|"last7days"\|"last14days"\|"thisWeek", repeatAt: string \} | ## Behaviour The Speak AI MCP server publishes these behaviour hints for `update_automation`. - Can change data in your workspace. - Can delete or overwrite data. Use with care. - Repeating an identical call is safe. - Can reach systems outside Speak AI. ## Related - [Automations](/mcp/tools/automations/) lists the rest of the Automations category. - [Tool reference](/mcp/tools/) lists every Speak AI MCP server tool. - [MCP server](/mcp/) covers setup, supported clients, and what agents can do once connected. # Clips tools in the Speak AI MCP server reference > Highlight clips from any time range. Export PDF, DOCX, SRT, VTT, TXT, CSV. All 4 Clips tools in the Speak AI MCP server, with parameters and behaviour hints. Source: https://docs.speakai.co/mcp/tools/clips/ · Markdown: https://docs.speakai.co/mcp/tools/clips/index.md The Clips category groups 4 of the Speak AI MCP server's tools. Highlight clips from any time range. Export PDF, DOCX, SRT, VTT, TXT, CSV. ## Which Clips tools does the Speak AI MCP server have? The Speak AI MCP server has 4 Clips tools. Each one has its own page with a plain-language summary, its parameters, and its behaviour hints. - [`create_clip`](/mcp/tools/clips/create_clip/): Create a highlight clip from one or more media files by specifying time ranges. - [`get_clips`](/mcp/tools/clips/get_clips/): List clips, optionally filtered by folder or media files. - [`update_clip`](/mcp/tools/clips/update_clip/): Update a clip's title, description, or tags. - [`delete_clip`](/mcp/tools/clips/delete_clip/): Permanently delete a clip and its associated media file. ## Related - [Tool reference](/mcp/tools/) lists every Speak AI MCP server tool across every category. - [MCP server](/mcp/) covers setup, supported clients, and what agents can do once connected. # Create Highlight Clip > Create a highlight clip from one or more media files by specifying time ranges. Source: https://docs.speakai.co/mcp/tools/clips/create_clip/ · Markdown: https://docs.speakai.co/mcp/tools/clips/create_clip/index.md Use the Speak AI MCP server tool `create_clip` to create a highlight clip from one or more media files by specifying time ranges. ## What does it do? Create a highlight clip from one or more media files by specifying time ranges. Clips are processed asynchronously (states: queued, processing, completed, failed). Use `get_clips` to check status. Maximum total clip duration is 30 minutes. Use multiple timeRanges to stitch segments from different media files together. ## Parameters `create_clip` takes 6 parameters, 3 of them required. | Name | Type | Required | Description | | --- | --- | --- | --- | | `title` | string | Yes | Title for the clip | | `mediaType` | enum | Yes | Output media type | | `timeRanges` | array of object | Yes | Array of time ranges to include in the clip. Each specifies a source media and start/end times. | | `description` | string | No | Description of the clip | | `tags` | array of string | No | Tags for the clip | | `mergeStrategy` | enum: CONCATENATE | No | How to merge multiple segments (default: CONCATENATE) | ## Behaviour The Speak AI MCP server publishes these behaviour hints for `create_clip`. - Can change data in your workspace. - Does not delete or overwrite existing data. - Repeating an identical call can have an extra effect. - Stays inside Speak AI. Does not reach other systems. ## Related - [Clips](/mcp/tools/clips/) lists the rest of the Clips category. - [Tool reference](/mcp/tools/) lists every Speak AI MCP server tool. - [MCP server](/mcp/) covers setup, supported clients, and what agents can do once connected. # Delete Clip > Permanently delete a clip and its associated media file. Source: https://docs.speakai.co/mcp/tools/clips/delete_clip/ · Markdown: https://docs.speakai.co/mcp/tools/clips/delete_clip/index.md Use the Speak AI MCP server tool `delete_clip` to permanently delete a clip and its associated media file. ## What does it do? Permanently delete a clip and its associated media file. ## Parameters `delete_clip` takes 1 parameter, all of them required. | Name | Type | Required | Description | | --- | --- | --- | --- | | `clipId` | string | Yes | ID of the clip to delete | ## Behaviour The Speak AI MCP server publishes these behaviour hints for `delete_clip`. - Can change data in your workspace. - Can delete or overwrite data. Use with care. - Repeating an identical call is safe. - Stays inside Speak AI. Does not reach other systems. ## Related - [Clips](/mcp/tools/clips/) lists the rest of the Clips category. - [Tool reference](/mcp/tools/) lists every Speak AI MCP server tool. - [MCP server](/mcp/) covers setup, supported clients, and what agents can do once connected. # List Clips > List clips, optionally filtered by folder or media files. Source: https://docs.speakai.co/mcp/tools/clips/get_clips/ · Markdown: https://docs.speakai.co/mcp/tools/clips/get_clips/index.md Use the Speak AI MCP server tool `get_clips` to list clips, optionally filtered by folder or media files. ## What does it do? List clips, optionally filtered by folder or media files. If clipId is provided, returns a single clip with its download URL (when processed). ## Parameters `get_clips` takes 3 parameters, all of them optional. | Name | Type | Required | Description | | --- | --- | --- | --- | | `clipId` | string | No | Get a specific clip by ID | | `folderId` | string | No | Filter clips by folder ID | | `mediaIds` | array of string | No | Filter clips by source media file IDs | ## Behaviour The Speak AI MCP server publishes these behaviour hints for `get_clips`. - Only reads data. Does not modify your workspace. - Does not delete or overwrite existing data. - Repeating an identical call is safe. - Stays inside Speak AI. Does not reach other systems. ## Related - [Clips](/mcp/tools/clips/) lists the rest of the Clips category. - [Tool reference](/mcp/tools/) lists every Speak AI MCP server tool. - [MCP server](/mcp/) covers setup, supported clients, and what agents can do once connected. # Update Clip > Update a clip's title, description, or tags. Source: https://docs.speakai.co/mcp/tools/clips/update_clip/ · Markdown: https://docs.speakai.co/mcp/tools/clips/update_clip/index.md Use the Speak AI MCP server tool `update_clip` to update a clip's title, description, or tags. ## What does it do? Update a clip's title, description, or tags. ## Parameters `update_clip` takes 4 parameters, 1 of them required. | Name | Type | Required | Description | | --- | --- | --- | --- | | `clipId` | string | Yes | ID of the clip to update | | `title` | string | No | New title | | `description` | string | No | New description | | `tags` | array of string | No | New tags | ## Behaviour The Speak AI MCP server publishes these behaviour hints for `update_clip`. - Can change data in your workspace. - Does not delete or overwrite existing data. - Repeating an identical call is safe. - Stays inside Speak AI. Does not reach other systems. ## Related - [Clips](/mcp/tools/clips/) lists the rest of the Clips category. - [Tool reference](/mcp/tools/) lists every Speak AI MCP server tool. - [MCP server](/mcp/) covers setup, supported clients, and what agents can do once connected. # Custom fields tools in the Speak AI MCP server reference > Standalone AI-analyzed text notes plus custom fields you can tag any media file with. All 4 Custom fields tools, with parameters and behaviour hints. Source: https://docs.speakai.co/mcp/tools/custom-fields/ · Markdown: https://docs.speakai.co/mcp/tools/custom-fields/index.md The Custom fields category groups 4 of the Speak AI MCP server's tools. Standalone AI-analyzed text notes plus custom fields you can tag any media file with. ## Which Custom fields tools does the Speak AI MCP server have? The Speak AI MCP server has 4 Custom fields tools. Each one has its own page with a plain-language summary, its parameters, and its behaviour hints. - [`list_fields`](/mcp/tools/custom-fields/list_fields/): List all custom fields defined in the workspace. - [`create_field`](/mcp/tools/custom-fields/create_field/): Create a new custom field for categorizing and tagging media. - [`update_field`](/mcp/tools/custom-fields/update_field/): Update a specific custom field by ID. - [`update_multiple_fields`](/mcp/tools/custom-fields/update_multiple_fields/): Set custom field values across media in a single batch operation. ## Related - [Tool reference](/mcp/tools/) lists every Speak AI MCP server tool across every category. - [MCP server](/mcp/) covers setup, supported clients, and what agents can do once connected. # Create Custom Field > Create a new custom field for categorizing and tagging media. Source: https://docs.speakai.co/mcp/tools/custom-fields/create_field/ · Markdown: https://docs.speakai.co/mcp/tools/custom-fields/create_field/index.md Use the Speak AI MCP server tool `create_field` to create a new custom field for categorizing and tagging media. ## What does it do? Create a new custom field for categorizing and tagging media. ## Parameters `create_field` takes 9 parameters, 2 of them required. | Name | Type | Required | Description | | --- | --- | --- | --- | | `name` | string | Yes | Display name for the field | | `type` | string | Yes | Field type (text, number, select, etc.) | | `description` | string | No | Optional description for the field | | `prompt` | string | No | AI prompt used to auto-populate the field | | `allowedValues` | array of string | No | Allowed values for select/multi-select field types | | `allowedValuesMode` | enum | No | Whether one or multiple allowed values can be selected | | `otherValues` | boolean | No | Whether values outside allowedValues are permitted | | `notApplicableValues` | string | No | Value(s) treated as not-applicable | | `privacyMode` | string | No | Privacy mode for the field | ## Behaviour The Speak AI MCP server publishes these behaviour hints for `create_field`. - Can change data in your workspace. - Does not delete or overwrite existing data. - Repeating an identical call can have an extra effect. - Stays inside Speak AI. Does not reach other systems. ## Related - [Custom fields](/mcp/tools/custom-fields/) lists the rest of the Custom fields category. - [Tool reference](/mcp/tools/) lists every Speak AI MCP server tool. - [MCP server](/mcp/) covers setup, supported clients, and what agents can do once connected. # List Custom Fields > List all custom fields defined in the workspace. Source: https://docs.speakai.co/mcp/tools/custom-fields/list_fields/ · Markdown: https://docs.speakai.co/mcp/tools/custom-fields/list_fields/index.md Use the Speak AI MCP server tool `list_fields` to list all custom fields defined in the workspace. ## What does it do? List all custom fields defined in the workspace. ## Parameters `list_fields` takes no parameters. ## Behaviour The Speak AI MCP server publishes these behaviour hints for `list_fields`. - Only reads data. Does not modify your workspace. - Does not delete or overwrite existing data. - Repeating an identical call is safe. - Stays inside Speak AI. Does not reach other systems. ## Related - [Custom fields](/mcp/tools/custom-fields/) lists the rest of the Custom fields category. - [Tool reference](/mcp/tools/) lists every Speak AI MCP server tool. - [MCP server](/mcp/) covers setup, supported clients, and what agents can do once connected. # Update Custom Field > Update a specific custom field by ID. Source: https://docs.speakai.co/mcp/tools/custom-fields/update_field/ · Markdown: https://docs.speakai.co/mcp/tools/custom-fields/update_field/index.md Use the Speak AI MCP server tool `update_field` to update a specific custom field by ID. ## What does it do? Update a specific custom field by ID. `name` must always be supplied (the server replaces the field config). ## Parameters `update_field` takes 10 parameters, 2 of them required. | Name | Type | Required | Description | | --- | --- | --- | --- | | `id` | string | Yes | Unique identifier of the field | | `name` | string | Yes | Display name for the field | | `type` | string | No | Field type | | `description` | string | No | Optional description for the field | | `prompt` | string | No | AI prompt used to auto-populate the field | | `allowedValues` | array of string | No | Allowed values for select/multi-select field types | | `allowedValuesMode` | enum | No | Whether one or multiple allowed values can be selected | | `otherValues` | boolean | No | Whether values outside allowedValues are permitted | | `notApplicableValues` | string | No | Value(s) treated as not-applicable | | `privacyMode` | string | No | Privacy mode for the field | ## Behaviour The Speak AI MCP server publishes these behaviour hints for `update_field`. - Can change data in your workspace. - Can delete or overwrite data. Use with care. - Repeating an identical call is safe. - Stays inside Speak AI. Does not reach other systems. ## Related - [Custom fields](/mcp/tools/custom-fields/) lists the rest of the Custom fields category. - [Tool reference](/mcp/tools/) lists every Speak AI MCP server tool. - [MCP server](/mcp/) covers setup, supported clients, and what agents can do once connected. # Bulk Update Custom Field Values > Set custom field values across media in a single batch operation. Source: https://docs.speakai.co/mcp/tools/custom-fields/update_multiple_fields/ · Markdown: https://docs.speakai.co/mcp/tools/custom-fields/update_multiple_fields/index.md Use the Speak AI MCP server tool `update_multiple_fields` to set custom field values across media in a single batch operation. ## What does it do? Set custom field values across media in a single batch operation. Scope the update with `folderId` (all media in a folder) and/or `mediaIds`. ## Parameters `update_multiple_fields` takes 3 parameters, 1 of them required. | Name | Type | Required | Description | | --- | --- | --- | --- | | `folderId` | string | No | Apply the field values to all media in this folder | | `mediaIds` | array of string | No | Apply the field values to these specific media files | | `fields` | array | Yes | Array of field id/value pairs to set | ## Behaviour The Speak AI MCP server publishes these behaviour hints for `update_multiple_fields`. - Can change data in your workspace. - Can delete or overwrite data. Use with care. - Repeating an identical call is safe. - Stays inside Speak AI. Does not reach other systems. ## Related - [Custom fields](/mcp/tools/custom-fields/) lists the rest of the Custom fields category. - [Tool reference](/mcp/tools/) lists every Speak AI MCP server tool. - [MCP server](/mcp/) covers setup, supported clients, and what agents can do once connected. # Dashboards tools in the Speak AI MCP server reference > Create and manage analytics dashboards, widgets, and public sharing. All 9 Dashboards tools in the Speak AI MCP server, with parameters and behaviour hints. Source: https://docs.speakai.co/mcp/tools/dashboards/ · Markdown: https://docs.speakai.co/mcp/tools/dashboards/index.md The Dashboards category groups 9 of the Speak AI MCP server's tools. Create and manage analytics dashboards, widgets, and public sharing. ## Which Dashboards tools does the Speak AI MCP server have? The Speak AI MCP server has 9 Dashboards tools. Each one has its own page with a plain-language summary, its parameters, and its behaviour hints. - [`list_dashboard_widgets`](/mcp/tools/dashboards/list_dashboard_widgets/): Discovery + how-to helper for building and customizing dashboards. - [`list_dashboards`](/mcp/tools/dashboards/list_dashboards/): List all analytics dashboards the caller can access, including share state and each dashboard's current `revision` (needed for `update_dashboard`). - [`get_dashboard`](/mcp/tools/dashboards/get_dashboard/): Get a single dashboard's full spec: title, description, source, date range, sections, widgets, and the current `revision` (pass that revision back to `update_dashboard`). - [`create_dashboard`](/mcp/tools/dashboards/create_dashboard/): Create an analytics dashboard. - [`update_dashboard`](/mcp/tools/dashboards/update_dashboard/): Update a dashboard. - [`delete_dashboard`](/mcp/tools/dashboards/delete_dashboard/): Soft-delete a dashboard. - [`duplicate_dashboard`](/mcp/tools/dashboards/duplicate_dashboard/): Clone an existing dashboard. - [`share_dashboard`](/mcp/tools/dashboards/share_dashboard/): Enable public sharing for a dashboard and return its share token + embed id. - [`get_dashboard_speakers_insight`](/mcp/tools/dashboards/get_dashboard_speakers_insight/): Compute a speakers breakdown for a given folder scope, date range, and field filters. ## Related - [Tool reference](/mcp/tools/) lists every Speak AI MCP server tool across every category. - [MCP server](/mcp/) covers setup, supported clients, and what agents can do once connected. # Create Dashboard > Create an analytics dashboard. Source: https://docs.speakai.co/mcp/tools/dashboards/create_dashboard/ · Markdown: https://docs.speakai.co/mcp/tools/dashboards/create_dashboard/index.md Use the Speak AI MCP server tool `create_dashboard` to create an analytics dashboard. ## What does it do? Create an analytics dashboard. Only `title` is required: source defaults to the whole workspace and dateRange to last30days. Add widgets by listing their types (the MCP assigns ids and lays them out automatically), scope with source (\{type:"folders",folderIds\} | \{type:"team"\} | \{type:"workspace"\}) and dateRange (\{preset\}), and optionally group widgets into sections. Design guidance: lead with a narrative widget as the first widget; group sections by the QUESTION they answer, not by widget type; don't pad. Every widget earns its place (aim for 4-16 widgets on a full build); if something can't be expressed by the widget catalog, put it in a narrative widget's focus instead of faking it. Call `list_dashboard_widgets` first for the widget catalog, config vocabulary, design rules, and full examples. ## Parameters `create_dashboard` takes 10 parameters, 1 of them required. | Name | Type | Required | Description | | --- | --- | --- | --- | | `title` | string | Yes | Dashboard name, max 60 chars (the only required field) | | `description` | string | No | Dashboard description, max 280 chars | | `source` | object | No | Data source: \{type:"folders", folderIds:[...]\} \| \{type:"team"\} \| \{type:"workspace"\} | | `dateRange` | object | No | Date range: strict preset only, no free-form start/end dates | | `sections` | array of object | No | Optional named widget groups (tabs). Each references widgets by their explicit ids; widgets in no section form the implicit Overview group. | | `widgets` | array of object | No | Widgets to place on the dashboard, in order (max 24). The MCP assigns ids and computes a tidy two-per-row grid layout matching the Speak UI unless you pass explicit id/layout. | | `icon` | string | No | Icon identifier | | `assignTo` | array of string | No | User ids, or group ids in the "\ (G)" convention, to share view access with | | `filters` | object | No | Field filters. filters.filterList is an array of \{ fieldName, fieldOperator?, fieldValue?: string[], fieldCondition? \}. Other keys pass through but only filterList is enforced. | | `isDefault` | boolean | No | Make this the company default dashboard | ## Behaviour The Speak AI MCP server publishes these behaviour hints for `create_dashboard`. - Can change data in your workspace. - Does not delete or overwrite existing data. - Repeating an identical call can have an extra effect. - Stays inside Speak AI. Does not reach other systems. ## Related - [Dashboards](/mcp/tools/dashboards/) lists the rest of the Dashboards category. - [Tool reference](/mcp/tools/) lists every Speak AI MCP server tool. - [MCP server](/mcp/) covers setup, supported clients, and what agents can do once connected. # Delete Dashboard > Soft-delete a dashboard. Source: https://docs.speakai.co/mcp/tools/dashboards/delete_dashboard/ · Markdown: https://docs.speakai.co/mcp/tools/dashboards/delete_dashboard/index.md Use the Speak AI MCP server tool `delete_dashboard` to soft-delete a dashboard. ## What does it do? Soft-delete a dashboard. This also deactivates its public share link. ## Parameters `delete_dashboard` takes 1 parameter, all of them required. | Name | Type | Required | Description | | --- | --- | --- | --- | | `dashboardId` | string | Yes | Dashboard business id to delete | ## Behaviour The Speak AI MCP server publishes these behaviour hints for `delete_dashboard`. - Can change data in your workspace. - Can delete or overwrite data. Use with care. - Repeating an identical call is safe. - Stays inside Speak AI. Does not reach other systems. ## Related - [Dashboards](/mcp/tools/dashboards/) lists the rest of the Dashboards category. - [Tool reference](/mcp/tools/) lists every Speak AI MCP server tool. - [MCP server](/mcp/) covers setup, supported clients, and what agents can do once connected. # Duplicate Dashboard > Clone an existing dashboard. Source: https://docs.speakai.co/mcp/tools/dashboards/duplicate_dashboard/ · Markdown: https://docs.speakai.co/mcp/tools/dashboards/duplicate_dashboard/index.md Use the Speak AI MCP server tool `duplicate_dashboard` to clone an existing dashboard. ## What does it do? Clone an existing dashboard. The copy gets fresh widget ids, a "\ (copy)" title, cleared sharing, and its revision reset to 0. Ideal for cloning a fully-configured dashboard, then tweaking it via `update_dashboard`. ## Parameters `duplicate_dashboard` takes 1 parameter, all of them required. | Name | Type | Required | Description | | --- | --- | --- | --- | | `dashboardId` | string | Yes | Source dashboard business id to clone | ## Behaviour The Speak AI MCP server publishes these behaviour hints for `duplicate_dashboard`. - Can change data in your workspace. - Does not delete or overwrite existing data. - Repeating an identical call can have an extra effect. - Stays inside Speak AI. Does not reach other systems. ## Related - [Dashboards](/mcp/tools/dashboards/) lists the rest of the Dashboards category. - [Tool reference](/mcp/tools/) lists every Speak AI MCP server tool. - [MCP server](/mcp/) covers setup, supported clients, and what agents can do once connected. # Get Dashboard Speakers Insight > Compute a speakers breakdown for a given folder scope, date range, and field filters. Source: https://docs.speakai.co/mcp/tools/dashboards/get_dashboard_speakers_insight/ · Markdown: https://docs.speakai.co/mcp/tools/dashboards/get_dashboard_speakers_insight/index.md Use the Speak AI MCP server tool `get_dashboard_speakers_insight` to compute a speakers breakdown for a given folder scope, date range, and field filters. ## What does it do? Compute a speakers breakdown for a given folder scope, date range, and field filters. Standalone analytics: does not require a dashboard to exist. ## Parameters `get_dashboard_speakers_insight` takes 4 parameters, all of them optional. | Name | Type | Required | Description | | --- | --- | --- | --- | | `folderScope` | array of string | No | Folder ids to scope to | | `startDate` | string | No | ISO start date | | `endDate` | string | No | ISO end date | | `filterList` | array | No | Field filter rules | ## Behaviour The Speak AI MCP server publishes these behaviour hints for `get_dashboard_speakers_insight`. - Only reads data. Does not modify your workspace. - Does not delete or overwrite existing data. - Repeating an identical call is safe. - Stays inside Speak AI. Does not reach other systems. ## Related - [Dashboards](/mcp/tools/dashboards/) lists the rest of the Dashboards category. - [Tool reference](/mcp/tools/) lists every Speak AI MCP server tool. - [MCP server](/mcp/) covers setup, supported clients, and what agents can do once connected. # Get Dashboard > Get a single dashboard's full spec: title, description, source, date range, sections, widgets, and the current `revision` (pass that revision back to update_dashboard). Source: https://docs.speakai.co/mcp/tools/dashboards/get_dashboard/ · Markdown: https://docs.speakai.co/mcp/tools/dashboards/get_dashboard/index.md Use the Speak AI MCP server tool `get_dashboard` to get a single dashboard's full spec: title, description, source, date range, sections, widgets, and the current `revision` (pass that revision back to `update_dashboard`). ## What does it do? Get a single dashboard's full spec: title, description, source, date range, sections, widgets, and the current `revision` (pass that revision back to `update_dashboard`). ## Parameters `get_dashboard` takes 1 parameter, all of them required. | Name | Type | Required | Description | | --- | --- | --- | --- | | `dashboardId` | string | Yes | Dashboard business id (the dashboardId field from `list_dashboards`, not the Mongo _id) | ## Behaviour The Speak AI MCP server publishes these behaviour hints for `get_dashboard`. - Only reads data. Does not modify your workspace. - Does not delete or overwrite existing data. - Repeating an identical call is safe. - Stays inside Speak AI. Does not reach other systems. ## Related - [Dashboards](/mcp/tools/dashboards/) lists the rest of the Dashboards category. - [Tool reference](/mcp/tools/) lists every Speak AI MCP server tool. - [MCP server](/mcp/) covers setup, supported clients, and what agents can do once connected. # List Dashboard Widgets > Discovery + how-to helper for building and customizing dashboards. Source: https://docs.speakai.co/mcp/tools/dashboards/list_dashboard_widgets/ · Markdown: https://docs.speakai.co/mcp/tools/dashboards/list_dashboard_widgets/index.md `list_dashboard_widgets` is a tool in the Speak AI MCP server. Discovery + how-to helper for building and customizing dashboards. ## What does it do? Discovery + how-to helper for building and customizing dashboards. Returns every widget type with what it shows and the exact strict `config` shape it accepts, the shared vocabulary (metric grammar, groupBy, per-widget binding, filters, thresholds, sources, date-range presets, sections), design rules for composing a dashboard that reads well, two complete worked example payloads, and tips for managing dashboards. Call this before `create_dashboard` / `update_dashboard`. ## Parameters `list_dashboard_widgets` takes no parameters. ## Behaviour The Speak AI MCP server publishes these behaviour hints for `list_dashboard_widgets`. - Only reads data. Does not modify your workspace. - Does not delete or overwrite existing data. - Repeating an identical call is safe. - Stays inside Speak AI. Does not reach other systems. ## Related - [Dashboards](/mcp/tools/dashboards/) lists the rest of the Dashboards category. - [Tool reference](/mcp/tools/) lists every Speak AI MCP server tool. - [MCP server](/mcp/) covers setup, supported clients, and what agents can do once connected. # List Dashboards > List all analytics dashboards the caller can access, including share state and each dashboard's current `revision` (needed for update_dashboard). Source: https://docs.speakai.co/mcp/tools/dashboards/list_dashboards/ · Markdown: https://docs.speakai.co/mcp/tools/dashboards/list_dashboards/index.md Use the Speak AI MCP server tool `list_dashboards` to list all analytics dashboards the caller can access, including share state and each dashboard's current `revision` (needed for `update_dashboard`). ## What does it do? List all analytics dashboards the caller can access, including share state and each dashboard's current `revision` (needed for `update_dashboard`). ## Parameters `list_dashboards` takes no parameters. ## Behaviour The Speak AI MCP server publishes these behaviour hints for `list_dashboards`. - Only reads data. Does not modify your workspace. - Does not delete or overwrite existing data. - Repeating an identical call is safe. - Stays inside Speak AI. Does not reach other systems. ## Related - [Dashboards](/mcp/tools/dashboards/) lists the rest of the Dashboards category. - [Tool reference](/mcp/tools/) lists every Speak AI MCP server tool. - [MCP server](/mcp/) covers setup, supported clients, and what agents can do once connected. # Share Dashboard > Enable public sharing for a dashboard and return its share token + embed id. Source: https://docs.speakai.co/mcp/tools/dashboards/share_dashboard/ · Markdown: https://docs.speakai.co/mcp/tools/dashboards/share_dashboard/index.md Use the Speak AI MCP server tool `share_dashboard` to enable public sharing for a dashboard and return its share token + embed id. ## What does it do? Enable public sharing for a dashboard and return its share token + embed id. WARNING: by default the public link resolves with no passphrase, so anyone with the token can view the dashboard data until an owner sets one. ## Parameters `share_dashboard` takes 1 parameter, all of them required. | Name | Type | Required | Description | | --- | --- | --- | --- | | `dashboardId` | string | Yes | Dashboard business id to share | ## Behaviour The Speak AI MCP server publishes these behaviour hints for `share_dashboard`. - Can change data in your workspace. - Does not delete or overwrite existing data. - Repeating an identical call is safe. - Can reach systems outside Speak AI. ## Related - [Dashboards](/mcp/tools/dashboards/) lists the rest of the Dashboards category. - [Tool reference](/mcp/tools/) lists every Speak AI MCP server tool. - [MCP server](/mcp/) covers setup, supported clients, and what agents can do once connected. # Update Dashboard > Update a dashboard. Source: https://docs.speakai.co/mcp/tools/dashboards/update_dashboard/ · Markdown: https://docs.speakai.co/mcp/tools/dashboards/update_dashboard/index.md Use the Speak AI MCP server tool `update_dashboard` to update a dashboard. ## What does it do? Update a dashboard. Two modes. (1) Metadata-only: pass just icon/assignTo/filters/isDefault. No spec fields, no revision needed. (2) Spec update: pass the FULL spec (title, source, dateRange, sections, widgets) plus `revision`. Widgets and sections are REPLACED, not merged, so call `get_dashboard` first and resend everything you want to keep. `revision` is the optimistic-concurrency token from `get_dashboard`/`list_dashboards`: the server accepts the write only if it still matches, then increments it. A 409 conflict means another writer saved first: re-fetch with `get_dashboard`, rebuild your changes on the fresh spec, and retry with the new revision. ## Parameters `update_dashboard` takes 12 parameters, 1 of them required. | Name | Type | Required | Description | | --- | --- | --- | --- | | `dashboardId` | string | Yes | Dashboard business id | | `title` | string | No | Dashboard name: required (with revision) when updating the spec | | `revision` | number | No | The revision loaded from `get_dashboard`. Required for spec updates; mismatch returns a 409 conflict. | | `description` | string | No | Dashboard description, max 280 chars | | `source` | object | No | Data source: \{type:"folders", folderIds:[...]\} \| \{type:"team"\} \| \{type:"workspace"\} | | `dateRange` | object | No | Date range: strict preset only, no free-form start/end dates | | `sections` | array of object | No | Optional named widget groups (tabs). Each references widgets by their explicit ids; widgets in no section form the implicit Overview group. | | `widgets` | array of object | No | Widgets to place on the dashboard, in order (max 24). The MCP assigns ids and computes a tidy two-per-row grid layout matching the Speak UI unless you pass explicit id/layout. | | `icon` | string | No | Icon identifier | | `assignTo` | array of string | No | User ids, or group ids in the "\ (G)" convention, to share view access with | | `filters` | object | No | Field filters. filters.filterList is an array of \{ fieldName, fieldOperator?, fieldValue?: string[], fieldCondition? \}. Other keys pass through but only filterList is enforced. | | `isDefault` | boolean | No | Make this the company default dashboard | ## Behaviour The Speak AI MCP server publishes these behaviour hints for `update_dashboard`. - Can change data in your workspace. - Can delete or overwrite data. Use with care. - Repeating an identical call can have an extra effect. - Stays inside Speak AI. Does not reach other systems. ## Related - [Dashboards](/mcp/tools/dashboards/) lists the rest of the Dashboards category. - [Tool reference](/mcp/tools/) lists every Speak AI MCP server tool. - [MCP server](/mcp/) covers setup, supported clients, and what agents can do once connected. # Embed players tools in the Speak AI MCP server reference > Embeddable player widgets for media on your own website. All 4 Embed players tools in the Speak AI MCP server, with parameters and behaviour hints. Source: https://docs.speakai.co/mcp/tools/embed-other/ · Markdown: https://docs.speakai.co/mcp/tools/embed-other/index.md The Embed players category groups 4 of the Speak AI MCP server's tools. Embeddable player widgets for media on your own website. ## Which Embed players tools does the Speak AI MCP server have? The Speak AI MCP server has 4 Embed players tools. Each one has its own page with a plain-language summary, its parameters, and its behaviour hints. - [`create_embed`](/mcp/tools/embed-other/create_embed/): Create an embeddable player/transcript widget for a media file or a set of folders. - [`update_embed`](/mcp/tools/embed-other/update_embed/): Update an existing embed widget: appearance/feature toggles via `meta`, plus scope and privacy. - [`check_embed`](/mcp/tools/embed-other/check_embed/): Check if an embed exists for a media file and retrieve its configuration. - [`get_embed_iframe_url`](/mcp/tools/embed-other/get_embed_iframe_url/): Get the iframe URL for embedding a media player/transcript on a webpage. ## Related - [Tool reference](/mcp/tools/) lists every Speak AI MCP server tool across every category. - [MCP server](/mcp/) covers setup, supported clients, and what agents can do once connected. # Check Embed Exists > Check if an embed exists for a media file and retrieve its configuration. Source: https://docs.speakai.co/mcp/tools/embed-other/check_embed/ · Markdown: https://docs.speakai.co/mcp/tools/embed-other/check_embed/index.md Use the Speak AI MCP server tool `check_embed` to check if an embed exists for a media file and retrieve its configuration. ## What does it do? Check if an embed exists for a media file and retrieve its configuration. ## Parameters `check_embed` takes 1 parameter, all of them required. | Name | Type | Required | Description | | --- | --- | --- | --- | | `mediaId` | string | Yes | Unique identifier of the media file | ## Behaviour The Speak AI MCP server publishes these behaviour hints for `check_embed`. - Only reads data. Does not modify your workspace. - Does not delete or overwrite existing data. - Repeating an identical call is safe. - Stays inside Speak AI. Does not reach other systems. ## Related - [Embed players](/mcp/tools/embed-other/) lists the rest of the Embed players category. - [Tool reference](/mcp/tools/) lists every Speak AI MCP server tool. - [MCP server](/mcp/) covers setup, supported clients, and what agents can do once connected. # Create Embed Widget > Create an embeddable player/transcript widget for a media file or a set of folders. Source: https://docs.speakai.co/mcp/tools/embed-other/create_embed/ · Markdown: https://docs.speakai.co/mcp/tools/embed-other/create_embed/index.md Use the Speak AI MCP server tool `create_embed` to create an embeddable player/transcript widget for a media file or a set of folders. ## What does it do? Create an embeddable player/transcript widget for a media file or a set of folders. Provide `mediaId` for a single-media embed, or `folderIds` for a folder/library embed. ## Parameters `create_embed` takes 2 parameters, all of them optional. | Name | Type | Required | Description | | --- | --- | --- | --- | | `mediaId` | string | No | Media file to embed (for a single-media embed) | | `folderIds` | array of string | No | Folder IDs to embed (for a folder/library embed) | ## Behaviour The Speak AI MCP server publishes these behaviour hints for `create_embed`. - Can change data in your workspace. - Does not delete or overwrite existing data. - Repeating an identical call can have an extra effect. - Can reach systems outside Speak AI. ## Related - [Embed players](/mcp/tools/embed-other/) lists the rest of the Embed players category. - [Tool reference](/mcp/tools/) lists every Speak AI MCP server tool. - [MCP server](/mcp/) covers setup, supported clients, and what agents can do once connected. # Get Embed Iframe URL > Get the iframe URL for embedding a media player/transcript on a webpage. Source: https://docs.speakai.co/mcp/tools/embed-other/get_embed_iframe_url/ · Markdown: https://docs.speakai.co/mcp/tools/embed-other/get_embed_iframe_url/index.md Use the Speak AI MCP server tool `get_embed_iframe_url` to get the iframe URL for embedding a media player/transcript on a webpage. ## What does it do? Get the iframe URL for embedding a media player/transcript on a webpage. ## Parameters `get_embed_iframe_url` takes 1 parameter, all of them required. | Name | Type | Required | Description | | --- | --- | --- | --- | | `mediaId` | string | Yes | Unique identifier of the media file | ## Behaviour The Speak AI MCP server publishes these behaviour hints for `get_embed_iframe_url`. - Only reads data. Does not modify your workspace. - Does not delete or overwrite existing data. - Repeating an identical call is safe. - Stays inside Speak AI. Does not reach other systems. ## Related - [Embed players](/mcp/tools/embed-other/) lists the rest of the Embed players category. - [Tool reference](/mcp/tools/) lists every Speak AI MCP server tool. - [MCP server](/mcp/) covers setup, supported clients, and what agents can do once connected. # Update Embed Widget > Update an existing embed widget: appearance/feature toggles via `meta`, plus scope and privacy. Source: https://docs.speakai.co/mcp/tools/embed-other/update_embed/ · Markdown: https://docs.speakai.co/mcp/tools/embed-other/update_embed/index.md Use the Speak AI MCP server tool `update_embed` to update an existing embed widget: appearance/feature toggles via `meta`, plus scope and privacy. ## What does it do? Update an existing embed widget: appearance/feature toggles via `meta`, plus scope and privacy. ## Parameters `update_embed` takes 6 parameters, 1 of them required. | Name | Type | Required | Description | | --- | --- | --- | --- | | `embedId` | string | Yes | Unique identifier of the embed | | `mediaId` | string | No | Media file the embed points to | | `folderIds` | array of string | No | Folder IDs the embed covers | | `privacyMode` | string | No | Privacy mode for the embed | | `embedType` | string | No | Embed type | | `meta` | object | No | Embed appearance & feature toggles: \{ backgroundImg, logo, primaryColor, titleColor, chatWelcomeMessage, assistantTemplateId, isTitle, isDescription, isRemarks, isDataVizDownloadable, isSEOIndexing, isPromptAsk, isPromptHistory, isMediaExport, callToActionButtons:[\{ url, label \}], features:[\{ name, isActive, isCustom? \}] \} | ## Behaviour The Speak AI MCP server publishes these behaviour hints for `update_embed`. - Can change data in your workspace. - Does not delete or overwrite existing data. - Repeating an identical call is safe. - Can reach systems outside Speak AI. ## Related - [Embed players](/mcp/tools/embed-other/) lists the rest of the Embed players category. - [Tool reference](/mcp/tools/) lists every Speak AI MCP server tool. - [MCP server](/mcp/) covers setup, supported clients, and what agents can do once connected. # Exports tools in the Speak AI MCP server reference > Highlight clips from any time range. Export PDF, DOCX, SRT, VTT, TXT, CSV. All 2 Exports tools in the Speak AI MCP server, with parameters and behaviour hints. Source: https://docs.speakai.co/mcp/tools/exports/ · Markdown: https://docs.speakai.co/mcp/tools/exports/index.md The Exports category groups 2 of the Speak AI MCP server's tools. Highlight clips from any time range. Export PDF, DOCX, SRT, VTT, TXT, CSV. ## Which Exports tools does the Speak AI MCP server have? The Speak AI MCP server has 2 Exports tools. Each one has its own page with a plain-language summary, its parameters, and its behaviour hints. - [`export_media`](/mcp/tools/exports/export_media/): Export a media file's transcript or insights in various formats (pdf, docx, srt, vtt, txt, csv). - [`export_multiple_media`](/mcp/tools/exports/export_multiple_media/): Export multiple media files at once, optionally merged into a single file. ## Related - [Tool reference](/mcp/tools/) lists every Speak AI MCP server tool across every category. - [MCP server](/mcp/) covers setup, supported clients, and what agents can do once connected. # Export Media Transcript > Export a media file's transcript or insights in various formats (pdf, docx, srt, vtt, txt, csv). Source: https://docs.speakai.co/mcp/tools/exports/export_media/ · Markdown: https://docs.speakai.co/mcp/tools/exports/export_media/index.md Use the Speak AI MCP server tool `export_media` to export a media file's transcript or insights in various formats (pdf, docx, srt, vtt, txt, csv). ## What does it do? Export a media file's transcript or insights in various formats (pdf, docx, srt, vtt, txt, csv). ## Parameters `export_media` takes 8 parameters, 2 of them required. | Name | Type | Required | Description | | --- | --- | --- | --- | | `mediaId` | string | Yes | Unique identifier of the media file | | `fileType` | enum | Yes | Desired export format | | `isSpeakerNames` | boolean | No | Include speaker names in export | | `isSpeakerEmail` | boolean | No | Include speaker emails in export | | `isTimeStamps` | boolean | No | Include timestamps in export | | `isInsightVisualized` | boolean | No | Include insight visualizations | | `isRedacted` | boolean | No | Apply PII redaction to export | | `redactedCategories` | array of string | No | Specific categories to redact | ## Behaviour The Speak AI MCP server publishes these behaviour hints for `export_media`. - Can change data in your workspace. - Does not delete or overwrite existing data. - Repeating an identical call can have an extra effect. - Stays inside Speak AI. Does not reach other systems. ## Related - [Exports](/mcp/tools/exports/) lists the rest of the Exports category. - [Tool reference](/mcp/tools/) lists every Speak AI MCP server tool. - [MCP server](/mcp/) covers setup, supported clients, and what agents can do once connected. # Export Multiple Media Files > Export multiple media files at once, optionally merged into a single file. Source: https://docs.speakai.co/mcp/tools/exports/export_multiple_media/ · Markdown: https://docs.speakai.co/mcp/tools/exports/export_multiple_media/index.md Use the Speak AI MCP server tool `export_multiple_media` to export multiple media files at once, optionally merged into a single file. ## What does it do? Export multiple media files at once, optionally merged into a single file. ## Parameters `export_multiple_media` takes 9 parameters, 2 of them required. | Name | Type | Required | Description | | --- | --- | --- | --- | | `mediaIds` | array of string | Yes | Array of media IDs to export | | `fileType` | enum | Yes | Desired export format | | `isSpeakerNames` | boolean | No | Include speaker names in export | | `isSpeakerEmail` | boolean | No | Include speaker emails in export | | `isTimeStamps` | boolean | No | Include timestamps in export | | `isInsightVisualized` | boolean | No | Include insight visualizations | | `isRedacted` | boolean | No | Apply PII redaction to export | | `isMerged` | boolean | No | Merge all exports into a single file | | `folderId` | string | No | Folder ID for the merged export | ## Behaviour The Speak AI MCP server publishes these behaviour hints for `export_multiple_media`. - Can change data in your workspace. - Does not delete or overwrite existing data. - Repeating an identical call can have an extra effect. - Stays inside Speak AI. Does not reach other systems. ## Related - [Exports](/mcp/tools/exports/) lists the rest of the Exports category. - [Tool reference](/mcp/tools/) lists every Speak AI MCP server tool. - [MCP server](/mcp/) covers setup, supported clients, and what agents can do once connected. # Folders & views tools in the Speak AI MCP server reference > Create folders, save filtered views, bulk move files, share read-only collections. All 11 Folders & views tools, with parameters and behaviour hints. Source: https://docs.speakai.co/mcp/tools/folders-views/ · Markdown: https://docs.speakai.co/mcp/tools/folders-views/index.md The Folders & views category groups 11 of the Speak AI MCP server's tools. Create folders, save filtered views, bulk move files, share read-only collections. ## Which Folders & views tools does the Speak AI MCP server have? The Speak AI MCP server has 11 Folders & views tools. Each one has its own page with a plain-language summary, its parameters, and its behaviour hints. - [`list_folders`](/mcp/tools/folders-views/list_folders/): List all folders in the workspace with pagination and sorting. - [`get_folder_info`](/mcp/tools/folders-views/get_folder_info/): Get detailed information about a specific folder including its contents. - [`create_folder`](/mcp/tools/folders-views/create_folder/): Create a new folder in the workspace. - [`clone_folder`](/mcp/tools/folders-views/clone_folder/): Duplicate an existing folder and all of its contents. - [`update_folder`](/mcp/tools/folders-views/update_folder/): Update a folder. - [`delete_folder`](/mcp/tools/folders-views/delete_folder/): Permanently delete a folder. - [`get_all_folder_views`](/mcp/tools/folders-views/get_all_folder_views/): Retrieve all saved views across all folders. - [`get_folder_views`](/mcp/tools/folders-views/get_folder_views/): Retrieve all saved views for a specific folder. - [`create_folder_view`](/mcp/tools/folders-views/create_folder_view/): Create a new saved view for a folder with a custom set of display columns. - [`update_folder_view`](/mcp/tools/folders-views/update_folder_view/): Update an existing saved view. - [`clone_folder_view`](/mcp/tools/folders-views/clone_folder_view/): Duplicate an existing folder view into a target folder. ## Related - [Tool reference](/mcp/tools/) lists every Speak AI MCP server tool across every category. - [MCP server](/mcp/) covers setup, supported clients, and what agents can do once connected. # Clone Folder View > Duplicate an existing folder view into a target folder. Source: https://docs.speakai.co/mcp/tools/folders-views/clone_folder_view/ · Markdown: https://docs.speakai.co/mcp/tools/folders-views/clone_folder_view/index.md Use the Speak AI MCP server tool `clone_folder_view` to duplicate an existing folder view into a target folder. ## What does it do? Duplicate an existing folder view into a target folder. ## Parameters `clone_folder_view` takes 5 parameters, 4 of them required. | Name | Type | Required | Description | | --- | --- | --- | --- | | `sourceFolderId` | string | Yes | Folder that currently holds the view | | `targetFolderId` | string | Yes | Folder to copy the view into (must differ from sourceFolderId) | | `viewId` | string | Yes | Unique identifier of the view to clone | | `name` | string | Yes | Display name for the cloned view | | `isDefault` | boolean | No | Whether the cloned view becomes the target folder's default | ## Behaviour The Speak AI MCP server publishes these behaviour hints for `clone_folder_view`. - Can change data in your workspace. - Does not delete or overwrite existing data. - Repeating an identical call can have an extra effect. - Stays inside Speak AI. Does not reach other systems. ## Related - [Folders & views](/mcp/tools/folders-views/) lists the rest of the Folders & views category. - [Tool reference](/mcp/tools/) lists every Speak AI MCP server tool. - [MCP server](/mcp/) covers setup, supported clients, and what agents can do once connected. # Clone Folder > Duplicate an existing folder and all of its contents. Source: https://docs.speakai.co/mcp/tools/folders-views/clone_folder/ · Markdown: https://docs.speakai.co/mcp/tools/folders-views/clone_folder/index.md Use the Speak AI MCP server tool `clone_folder` to duplicate an existing folder and all of its contents. ## What does it do? Duplicate an existing folder and all of its contents. ## Parameters `clone_folder` takes 5 parameters, 1 of them required. | Name | Type | Required | Description | | --- | --- | --- | --- | | `folderId` | string | Yes | ID of the folder to clone | | `name` | string | No | Name for the cloned folder | | `description` | string | No | Description for the cloned folder | | `assignTo` | array of string | No | User IDs to assign the cloned folder to | | `isSaveDefaultView` | boolean | No | Whether to copy the source folder's default view | ## Behaviour The Speak AI MCP server publishes these behaviour hints for `clone_folder`. - Can change data in your workspace. - Does not delete or overwrite existing data. - Repeating an identical call can have an extra effect. - Stays inside Speak AI. Does not reach other systems. ## Related - [Folders & views](/mcp/tools/folders-views/) lists the rest of the Folders & views category. - [Tool reference](/mcp/tools/) lists every Speak AI MCP server tool. - [MCP server](/mcp/) covers setup, supported clients, and what agents can do once connected. # Create Folder View > Create a new saved view for a folder with a custom set of display columns. Source: https://docs.speakai.co/mcp/tools/folders-views/create_folder_view/ · Markdown: https://docs.speakai.co/mcp/tools/folders-views/create_folder_view/index.md Use the Speak AI MCP server tool `create_folder_view` to create a new saved view for a folder with a custom set of display columns. ## What does it do? Create a new saved view for a folder with a custom set of display columns. ## Parameters `create_folder_view` takes 4 parameters, 3 of them required. | Name | Type | Required | Description | | --- | --- | --- | --- | | `folderId` | string | Yes | Unique identifier of the folder | | `name` | string | Yes | Display name for the view | | `isDefault` | boolean | No | Whether this view is the folder's default view | | `columns` | array | Yes | Ordered list of columns shown in the view | ## Behaviour The Speak AI MCP server publishes these behaviour hints for `create_folder_view`. - Can change data in your workspace. - Does not delete or overwrite existing data. - Repeating an identical call can have an extra effect. - Stays inside Speak AI. Does not reach other systems. ## Related - [Folders & views](/mcp/tools/folders-views/) lists the rest of the Folders & views category. - [Tool reference](/mcp/tools/) lists every Speak AI MCP server tool. - [MCP server](/mcp/) covers setup, supported clients, and what agents can do once connected. # Create Folder > Create a new folder in the workspace. Source: https://docs.speakai.co/mcp/tools/folders-views/create_folder/ · Markdown: https://docs.speakai.co/mcp/tools/folders-views/create_folder/index.md Use the Speak AI MCP server tool `create_folder` to create a new folder in the workspace. ## What does it do? Create a new folder in the workspace. ## Parameters `create_folder` takes 2 parameters, 1 of them required. | Name | Type | Required | Description | | --- | --- | --- | --- | | `name` | string | Yes | Display name for the new folder | | `description` | string | No | Optional folder description | ## Behaviour The Speak AI MCP server publishes these behaviour hints for `create_folder`. - Can change data in your workspace. - Does not delete or overwrite existing data. - Repeating an identical call can have an extra effect. - Stays inside Speak AI. Does not reach other systems. ## Related - [Folders & views](/mcp/tools/folders-views/) lists the rest of the Folders & views category. - [Tool reference](/mcp/tools/) lists every Speak AI MCP server tool. - [MCP server](/mcp/) covers setup, supported clients, and what agents can do once connected. # Delete Folder > Permanently delete a folder. Source: https://docs.speakai.co/mcp/tools/folders-views/delete_folder/ · Markdown: https://docs.speakai.co/mcp/tools/folders-views/delete_folder/index.md Use the Speak AI MCP server tool `delete_folder` to permanently delete a folder. ## What does it do? Permanently delete a folder. Media within the folder will be moved, not deleted. ## Parameters `delete_folder` takes 1 parameter, all of them required. | Name | Type | Required | Description | | --- | --- | --- | --- | | `folderId` | string | Yes | Unique identifier of the folder to delete | ## Behaviour The Speak AI MCP server publishes these behaviour hints for `delete_folder`. - Can change data in your workspace. - Can delete or overwrite data. Use with care. - Repeating an identical call is safe. - Stays inside Speak AI. Does not reach other systems. ## Related - [Folders & views](/mcp/tools/folders-views/) lists the rest of the Folders & views category. - [Tool reference](/mcp/tools/) lists every Speak AI MCP server tool. - [MCP server](/mcp/) covers setup, supported clients, and what agents can do once connected. # Get All Folder Views > Retrieve all saved views across all folders. Source: https://docs.speakai.co/mcp/tools/folders-views/get_all_folder_views/ · Markdown: https://docs.speakai.co/mcp/tools/folders-views/get_all_folder_views/index.md Use the Speak AI MCP server tool `get_all_folder_views` to retrieve all saved views across all folders. ## What does it do? Retrieve all saved views across all folders. ## Parameters `get_all_folder_views` takes no parameters. ## Behaviour The Speak AI MCP server publishes these behaviour hints for `get_all_folder_views`. - Only reads data. Does not modify your workspace. - Does not delete or overwrite existing data. - Repeating an identical call is safe. - Stays inside Speak AI. Does not reach other systems. ## Related - [Folders & views](/mcp/tools/folders-views/) lists the rest of the Folders & views category. - [Tool reference](/mcp/tools/) lists every Speak AI MCP server tool. - [MCP server](/mcp/) covers setup, supported clients, and what agents can do once connected. # Get Folder Info > Get detailed information about a specific folder including its contents. Source: https://docs.speakai.co/mcp/tools/folders-views/get_folder_info/ · Markdown: https://docs.speakai.co/mcp/tools/folders-views/get_folder_info/index.md Use the Speak AI MCP server tool `get_folder_info` to get detailed information about a specific folder including its contents. ## What does it do? Get detailed information about a specific folder including its contents. ## Parameters `get_folder_info` takes 1 parameter, all of them required. | Name | Type | Required | Description | | --- | --- | --- | --- | | `folderId` | string | Yes | Unique identifier of the folder | ## Behaviour The Speak AI MCP server publishes these behaviour hints for `get_folder_info`. - Only reads data. Does not modify your workspace. - Does not delete or overwrite existing data. - Repeating an identical call is safe. - Stays inside Speak AI. Does not reach other systems. ## Related - [Folders & views](/mcp/tools/folders-views/) lists the rest of the Folders & views category. - [Tool reference](/mcp/tools/) lists every Speak AI MCP server tool. - [MCP server](/mcp/) covers setup, supported clients, and what agents can do once connected. # Get Folder Views > Retrieve all saved views for a specific folder. Source: https://docs.speakai.co/mcp/tools/folders-views/get_folder_views/ · Markdown: https://docs.speakai.co/mcp/tools/folders-views/get_folder_views/index.md Use the Speak AI MCP server tool `get_folder_views` to retrieve all saved views for a specific folder. ## What does it do? Retrieve all saved views for a specific folder. ## Parameters `get_folder_views` takes 1 parameter, all of them required. | Name | Type | Required | Description | | --- | --- | --- | --- | | `folderId` | string | Yes | Unique identifier of the folder | ## Behaviour The Speak AI MCP server publishes these behaviour hints for `get_folder_views`. - Only reads data. Does not modify your workspace. - Does not delete or overwrite existing data. - Repeating an identical call is safe. - Stays inside Speak AI. Does not reach other systems. ## Related - [Folders & views](/mcp/tools/folders-views/) lists the rest of the Folders & views category. - [Tool reference](/mcp/tools/) lists every Speak AI MCP server tool. - [MCP server](/mcp/) covers setup, supported clients, and what agents can do once connected. # List Folders > List all folders in the workspace with pagination and sorting. Source: https://docs.speakai.co/mcp/tools/folders-views/list_folders/ · Markdown: https://docs.speakai.co/mcp/tools/folders-views/list_folders/index.md Use the Speak AI MCP server tool `list_folders` to list all folders in the workspace with pagination and sorting. ## What does it do? List all folders in the workspace with pagination and sorting. ## Parameters `list_folders` takes 3 parameters, all of them optional. | Name | Type | Required | Description | | --- | --- | --- | --- | | `page` | number | No | Page number (0-based, default: 0) | | `pageSize` | number | No | Results per page (default: 20, max: 500) | | `sortBy` | string | No | Sort field and direction, e.g. "createdAt:desc" | ## Behaviour The Speak AI MCP server publishes these behaviour hints for `list_folders`. - Only reads data. Does not modify your workspace. - Does not delete or overwrite existing data. - Repeating an identical call is safe. - Stays inside Speak AI. Does not reach other systems. ## Related - [Folders & views](/mcp/tools/folders-views/) lists the rest of the Folders & views category. - [Tool reference](/mcp/tools/) lists every Speak AI MCP server tool. - [MCP server](/mcp/) covers setup, supported clients, and what agents can do once connected. # Update Folder View > Update an existing saved view. Source: https://docs.speakai.co/mcp/tools/folders-views/update_folder_view/ · Markdown: https://docs.speakai.co/mcp/tools/folders-views/update_folder_view/index.md Use the Speak AI MCP server tool `update_folder_view` to update an existing saved view. ## What does it do? Update an existing saved view. Replaces the whole view, so `name`, `isDefault` and `columns` must all be supplied. ## Parameters `update_folder_view` takes 5 parameters, all of them required. | Name | Type | Required | Description | | --- | --- | --- | --- | | `folderId` | string | Yes | Unique identifier of the folder | | `viewId` | string | Yes | Unique identifier of the view to update | | `name` | string | Yes | Display name for the view | | `isDefault` | boolean | Yes | Whether this view is the folder's default view | | `columns` | array | Yes | Ordered list of columns shown in the view | ## Behaviour The Speak AI MCP server publishes these behaviour hints for `update_folder_view`. - Can change data in your workspace. - Can delete or overwrite data. Use with care. - Repeating an identical call is safe. - Stays inside Speak AI. Does not reach other systems. ## Related - [Folders & views](/mcp/tools/folders-views/) lists the rest of the Folders & views category. - [Tool reference](/mcp/tools/) lists every Speak AI MCP server tool. - [MCP server](/mcp/) covers setup, supported clients, and what agents can do once connected. # Update Folder > Update a folder. Source: https://docs.speakai.co/mcp/tools/folders-views/update_folder/ · Markdown: https://docs.speakai.co/mcp/tools/folders-views/update_folder/index.md Use the Speak AI MCP server tool `update_folder` to update a folder. ## What does it do? Update a folder. `name` must always be supplied (the server replaces the folder config). ## Parameters `update_folder` takes 3 parameters, 2 of them required. | Name | Type | Required | Description | | --- | --- | --- | --- | | `folderId` | string | Yes | Unique identifier of the folder | | `name` | string | Yes | Display name for the folder | | `description` | string | No | Optional folder description | ## Behaviour The Speak AI MCP server publishes these behaviour hints for `update_folder`. - Can change data in your workspace. - Can delete or overwrite data. Use with care. - Repeating an identical call is safe. - Stays inside Speak AI. Does not reach other systems. ## Related - [Folders & views](/mcp/tools/folders-views/) lists the rest of the Folders & views category. - [Tool reference](/mcp/tools/) lists every Speak AI MCP server tool. - [MCP server](/mcp/) covers setup, supported clients, and what agents can do once connected. # Ask AI Chat tools in the Speak AI MCP server reference > Run AI prompts across one file, a folder, or your whole workspace. Save favorites. All 12 Ask AI Chat tools, with parameters and behaviour hints. Source: https://docs.speakai.co/mcp/tools/magic-prompt/ · Markdown: https://docs.speakai.co/mcp/tools/magic-prompt/index.md The Ask AI Chat category groups 12 of the Speak AI MCP server's tools. Run AI prompts across one file, a folder, or your whole workspace. Save favorites. ## Which Ask AI Chat tools does the Speak AI MCP server have? The Speak AI MCP server has 12 Ask AI Chat tools. Each one has its own page with a plain-language summary, its parameters, and its behaviour hints. - [`ask_ai_chat`](/mcp/tools/magic-prompt/ask_ai_chat/): Ask an AI-powered question about your media using Speak AI's AI Chat. - [`retry_ai_chat`](/mcp/tools/magic-prompt/retry_ai_chat/): Retry a failed or incomplete AI Chat response. - [`get_chat_history`](/mcp/tools/magic-prompt/get_chat_history/): Get a list of recent AI Chat conversations. - [`get_chat_messages`](/mcp/tools/magic-prompt/get_chat_messages/): Get full message history for conversations. - [`delete_chat_message`](/mcp/tools/magic-prompt/delete_chat_message/): Delete a specific chat message from conversation history. - [`list_prompts`](/mcp/tools/magic-prompt/list_prompts/): List all available AI Chat templates. - [`get_favorite_prompts`](/mcp/tools/magic-prompt/get_favorite_prompts/): Get all prompts and answers that have been marked as favorites. - [`toggle_prompt_favorite`](/mcp/tools/magic-prompt/toggle_prompt_favorite/): Mark or unmark a chat message as a favorite for easy retrieval later. - [`update_chat_title`](/mcp/tools/magic-prompt/update_chat_title/): Update the title of a chat conversation for easier identification in history. - [`submit_chat_feedback`](/mcp/tools/magic-prompt/submit_chat_feedback/): Submit feedback on a chat response (thumbs up/down). - [`get_chat_statistics`](/mcp/tools/magic-prompt/get_chat_statistics/): Get usage statistics for AI Chat / chat. - [`export_chat_answer`](/mcp/tools/magic-prompt/export_chat_answer/): Export a specific AI Chat answer. ## Related - [Tool reference](/mcp/tools/) lists every Speak AI MCP server tool across every category. - [MCP server](/mcp/) covers setup, supported clients, and what agents can do once connected. # Ask AI Chat > Ask an AI-powered question about your media using Speak AI's AI Chat. Source: https://docs.speakai.co/mcp/tools/magic-prompt/ask_ai_chat/ · Markdown: https://docs.speakai.co/mcp/tools/magic-prompt/ask_ai_chat/index.md Use the Speak AI MCP server tool `ask_ai_chat` to ask an AI-powered question about your media using Speak AI's AI Chat. ## What does it do? Ask an AI-powered question about your media using Speak AI's AI Chat. Supports querying a single file, multiple files, entire folders, or your whole workspace. Pass mediaIds for specific files, folderIds for entire folders, or omit both to search across all media. Use assistantType to get specialized responses (e.g., 'researcher' for academic analysis, 'sales' for deal insights). To continue a conversation, pass the promptId from a previous response. Returns a promptId: save it to continue the conversation with follow-up questions. ## Parameters `ask_ai_chat` takes 15 parameters, 1 of them required. | Name | Type | Required | Description | | --- | --- | --- | --- | | `prompt` | string | Yes | The question or prompt to ask about the media | | `mediaIds` | array of string | No | Array of media IDs to query. Omit along with folderIds to search across all media in your workspace. | | `folderIds` | array of string | No | Array of folder IDs to scope the query to. Omit along with mediaIds to search across all media. | | `folderId` | string | No | Single folder ID to scope the query to. Use folderIds for multiple folders. | | `assistantType` | enum | No | Assistant persona: 'general' (default), 'researcher' (academic), 'marketer' (content), 'sales' (deals), 'recruiter' (hiring). Use 'custom' with assistantTemplateId. | | `assistantTemplateId` | string | No | Required when assistantType is 'custom'. ID of a custom assistant template from `list_prompts`. | | `promptId` | string | No | ID of an existing conversation to continue. Pass this to maintain chat context across multiple questions. | | `speakers` | array of string | No | Filter to specific speaker IDs from the transcript | | `tags` | array of string | No | Filter media by tags | | `startDate` | string | No | Start date for date range filter (ISO 8601, e.g., '2025-01-01') | | `endDate` | string | No | End date for date range filter (ISO 8601, e.g., '2025-03-31') | | `isIndividualPrompt` | boolean | No | When true, processes each media file separately instead of combining context. Useful for comparing responses across files. | | `fieldId` | string | No | Scope the prompt to a single custom field | | `fieldIds` | array of string | No | Scope the prompt to multiple custom fields (max 10) | | `filters` | object | No | Advanced filter object to scope which media the prompt runs over | ## Behaviour The Speak AI MCP server publishes these behaviour hints for `ask_ai_chat`. - Can change data in your workspace. - Does not delete or overwrite existing data. - Repeating an identical call can have an extra effect. - Stays inside Speak AI. Does not reach other systems. ## Related - [Ask AI Chat](/mcp/tools/magic-prompt/) lists the rest of the Ask AI Chat category. - [Tool reference](/mcp/tools/) lists every Speak AI MCP server tool. - [MCP server](/mcp/) covers setup, supported clients, and what agents can do once connected. # Delete Chat Message > Delete a specific chat message from conversation history. Source: https://docs.speakai.co/mcp/tools/magic-prompt/delete_chat_message/ · Markdown: https://docs.speakai.co/mcp/tools/magic-prompt/delete_chat_message/index.md Use the Speak AI MCP server tool `delete_chat_message` to delete a specific chat message from conversation history. ## What does it do? Delete a specific chat message from conversation history. ## Parameters `delete_chat_message` takes 1 parameter, all of them required. | Name | Type | Required | Description | | --- | --- | --- | --- | | `promptId` | string | Yes | ID of the message to delete | ## Behaviour The Speak AI MCP server publishes these behaviour hints for `delete_chat_message`. - Can change data in your workspace. - Can delete or overwrite data. Use with care. - Repeating an identical call is safe. - Stays inside Speak AI. Does not reach other systems. ## Related - [Ask AI Chat](/mcp/tools/magic-prompt/) lists the rest of the Ask AI Chat category. - [Tool reference](/mcp/tools/) lists every Speak AI MCP server tool. - [MCP server](/mcp/) covers setup, supported clients, and what agents can do once connected. # Export Chat Answer > Export a specific AI Chat answer. Source: https://docs.speakai.co/mcp/tools/magic-prompt/export_chat_answer/ · Markdown: https://docs.speakai.co/mcp/tools/magic-prompt/export_chat_answer/index.md Use the Speak AI MCP server tool `export_chat_answer` to export a specific AI Chat answer. ## What does it do? Export a specific AI Chat answer. Useful for saving AI-generated summaries, reports, or analysis results. ## Parameters `export_chat_answer` takes 3 parameters, all of them required. | Name | Type | Required | Description | | --- | --- | --- | --- | | `promptId` | string | Yes | ID of the conversation to export | | `messageId` | string | Yes | ID of the specific message/answer to export | | `fileType` | enum: txt, docx, pdf, md | Yes | Export file format | ## Behaviour The Speak AI MCP server publishes these behaviour hints for `export_chat_answer`. - Can change data in your workspace. - Does not delete or overwrite existing data. - Repeating an identical call can have an extra effect. - Stays inside Speak AI. Does not reach other systems. ## Related - [Ask AI Chat](/mcp/tools/magic-prompt/) lists the rest of the Ask AI Chat category. - [Tool reference](/mcp/tools/) lists every Speak AI MCP server tool. - [MCP server](/mcp/) covers setup, supported clients, and what agents can do once connected. # Get Chat History > Get a list of recent AI Chat conversations. Source: https://docs.speakai.co/mcp/tools/magic-prompt/get_chat_history/ · Markdown: https://docs.speakai.co/mcp/tools/magic-prompt/get_chat_history/index.md Use the Speak AI MCP server tool `get_chat_history` to get a list of recent AI Chat conversations. ## What does it do? Get a list of recent AI Chat conversations. Returns conversation summaries with promptIds that can be used to continue conversations via `ask_ai_chat` or retrieve full messages via `get_chat_messages`. ## Parameters `get_chat_history` takes 1 parameter, all of them optional. | Name | Type | Required | Description | | --- | --- | --- | --- | | `limit` | number | No | Number of recent conversations to return (default: 10) | ## Behaviour The Speak AI MCP server publishes these behaviour hints for `get_chat_history`. - Only reads data. Does not modify your workspace. - Does not delete or overwrite existing data. - Repeating an identical call is safe. - Stays inside Speak AI. Does not reach other systems. ## Related - [Ask AI Chat](/mcp/tools/magic-prompt/) lists the rest of the Ask AI Chat category. - [Tool reference](/mcp/tools/) lists every Speak AI MCP server tool. - [MCP server](/mcp/) covers setup, supported clients, and what agents can do once connected. # Get Chat Messages > Get full message history for conversations. Source: https://docs.speakai.co/mcp/tools/magic-prompt/get_chat_messages/ · Markdown: https://docs.speakai.co/mcp/tools/magic-prompt/get_chat_messages/index.md Use the Speak AI MCP server tool `get_chat_messages` to get full message history for conversations. ## What does it do? Get full message history for conversations. Can filter by promptId for a specific conversation, by media/folder, or search across all chat messages. Returns questions, answers, references, and metadata. ## Parameters `get_chat_messages` takes 6 parameters, all of them optional. | Name | Type | Required | Description | | --- | --- | --- | --- | | `promptId` | string | No | Filter to a specific conversation by its ID | | `folderId` | string | No | Filter messages by folder ID | | `mediaIds` | string | No | Filter by media IDs (comma-separated) | | `query` | string | No | Search text in prompts and answers | | `page` | number | No | Page number for pagination (0-based, default: 0) | | `pageSize` | number | No | Results per page (default: 25, max: 500) | ## Behaviour The Speak AI MCP server publishes these behaviour hints for `get_chat_messages`. - Only reads data. Does not modify your workspace. - Does not delete or overwrite existing data. - Repeating an identical call is safe. - Stays inside Speak AI. Does not reach other systems. ## Related - [Ask AI Chat](/mcp/tools/magic-prompt/) lists the rest of the Ask AI Chat category. - [Tool reference](/mcp/tools/) lists every Speak AI MCP server tool. - [MCP server](/mcp/) covers setup, supported clients, and what agents can do once connected. # Get Chat Statistics > Get usage statistics for AI Chat / chat. Source: https://docs.speakai.co/mcp/tools/magic-prompt/get_chat_statistics/ · Markdown: https://docs.speakai.co/mcp/tools/magic-prompt/get_chat_statistics/index.md Use the Speak AI MCP server tool `get_chat_statistics` to get usage statistics for AI Chat / chat. ## What does it do? Get usage statistics for AI Chat / chat. Returns metrics on prompt usage, optionally filtered by date range. ## Parameters `get_chat_statistics` takes 2 parameters, all of them optional. | Name | Type | Required | Description | | --- | --- | --- | --- | | `startDate` | string | No | Start date for stats (ISO 8601) | | `endDate` | string | No | End date for stats (ISO 8601) | ## Behaviour The Speak AI MCP server publishes these behaviour hints for `get_chat_statistics`. - Only reads data. Does not modify your workspace. - Does not delete or overwrite existing data. - Repeating an identical call is safe. - Stays inside Speak AI. Does not reach other systems. ## Related - [Ask AI Chat](/mcp/tools/magic-prompt/) lists the rest of the Ask AI Chat category. - [Tool reference](/mcp/tools/) lists every Speak AI MCP server tool. - [MCP server](/mcp/) covers setup, supported clients, and what agents can do once connected. # Get Favorite Prompts > Get all prompts and answers that have been marked as favorites. Source: https://docs.speakai.co/mcp/tools/magic-prompt/get_favorite_prompts/ · Markdown: https://docs.speakai.co/mcp/tools/magic-prompt/get_favorite_prompts/index.md Use the Speak AI MCP server tool `get_favorite_prompts` to get all prompts and answers that have been marked as favorites. ## What does it do? Get all prompts and answers that have been marked as favorites. Useful for finding saved insights and important AI-generated analysis. ## Parameters `get_favorite_prompts` takes no parameters. ## Behaviour The Speak AI MCP server publishes these behaviour hints for `get_favorite_prompts`. - Only reads data. Does not modify your workspace. - Does not delete or overwrite existing data. - Repeating an identical call is safe. - Stays inside Speak AI. Does not reach other systems. ## Related - [Ask AI Chat](/mcp/tools/magic-prompt/) lists the rest of the Ask AI Chat category. - [Tool reference](/mcp/tools/) lists every Speak AI MCP server tool. - [MCP server](/mcp/) covers setup, supported clients, and what agents can do once connected. # List Prompt Templates > List all available AI Chat templates. Source: https://docs.speakai.co/mcp/tools/magic-prompt/list_prompts/ · Markdown: https://docs.speakai.co/mcp/tools/magic-prompt/list_prompts/index.md Use the Speak AI MCP server tool `list_prompts` to list all available AI Chat templates. ## What does it do? List all available AI Chat templates. Use template IDs with `ask_ai_chat`'s assistantTemplateId parameter when using assistantType 'custom'. ## Parameters `list_prompts` takes no parameters. ## Behaviour The Speak AI MCP server publishes these behaviour hints for `list_prompts`. - Only reads data. Does not modify your workspace. - Does not delete or overwrite existing data. - Repeating an identical call is safe. - Stays inside Speak AI. Does not reach other systems. ## Related - [Ask AI Chat](/mcp/tools/magic-prompt/) lists the rest of the Ask AI Chat category. - [Tool reference](/mcp/tools/) lists every Speak AI MCP server tool. - [MCP server](/mcp/) covers setup, supported clients, and what agents can do once connected. # Retry AI Chat > Retry a failed or incomplete AI Chat response. Source: https://docs.speakai.co/mcp/tools/magic-prompt/retry_ai_chat/ · Markdown: https://docs.speakai.co/mcp/tools/magic-prompt/retry_ai_chat/index.md Use the Speak AI MCP server tool `retry_ai_chat` to retry a failed or incomplete AI Chat response. ## What does it do? Retry a failed or incomplete AI Chat response. Use when a previous `ask_ai_chat` call returned an error or incomplete answer. ## Parameters `retry_ai_chat` takes 2 parameters, all of them required. | Name | Type | Required | Description | | --- | --- | --- | --- | | `promptId` | string | Yes | ID of the conversation containing the failed message | | `messageId` | string | Yes | ID of the specific message to retry | ## Behaviour The Speak AI MCP server publishes these behaviour hints for `retry_ai_chat`. - Can change data in your workspace. - Does not delete or overwrite existing data. - Repeating an identical call can have an extra effect. - Stays inside Speak AI. Does not reach other systems. ## Related - [Ask AI Chat](/mcp/tools/magic-prompt/) lists the rest of the Ask AI Chat category. - [Tool reference](/mcp/tools/) lists every Speak AI MCP server tool. - [MCP server](/mcp/) covers setup, supported clients, and what agents can do once connected. # Submit Chat Feedback > Submit feedback on a chat response (thumbs up/down). Source: https://docs.speakai.co/mcp/tools/magic-prompt/submit_chat_feedback/ · Markdown: https://docs.speakai.co/mcp/tools/magic-prompt/submit_chat_feedback/index.md Use the Speak AI MCP server tool `submit_chat_feedback` to submit feedback on a chat response (thumbs up/down). ## What does it do? Submit feedback on a chat response (thumbs up/down). Helps improve AI answer quality. ## Parameters `submit_chat_feedback` takes 4 parameters, 3 of them required. | Name | Type | Required | Description | | --- | --- | --- | --- | | `promptId` | string | Yes | ID of the conversation | | `messageId` | string | Yes | ID of the message to rate | | `score` | union | Yes | Feedback score: 1 for thumbs up, -1 for thumbs down | | `reason` | string | No | Optional explanation for the feedback | ## Behaviour The Speak AI MCP server publishes these behaviour hints for `submit_chat_feedback`. - Can change data in your workspace. - Does not delete or overwrite existing data. - Repeating an identical call can have an extra effect. - Stays inside Speak AI. Does not reach other systems. ## Related - [Ask AI Chat](/mcp/tools/magic-prompt/) lists the rest of the Ask AI Chat category. - [Tool reference](/mcp/tools/) lists every Speak AI MCP server tool. - [MCP server](/mcp/) covers setup, supported clients, and what agents can do once connected. # Toggle Prompt Favorite > Mark or unmark a chat message as a favorite for easy retrieval later. Source: https://docs.speakai.co/mcp/tools/magic-prompt/toggle_prompt_favorite/ · Markdown: https://docs.speakai.co/mcp/tools/magic-prompt/toggle_prompt_favorite/index.md Use the Speak AI MCP server tool `toggle_prompt_favorite` to mark or unmark a chat message as a favorite for easy retrieval later. ## What does it do? Mark or unmark a chat message as a favorite for easy retrieval later. ## Parameters `toggle_prompt_favorite` takes 3 parameters, all of them required. | Name | Type | Required | Description | | --- | --- | --- | --- | | `promptId` | string | Yes | ID of the conversation | | `messageId` | string | Yes | ID of the specific message to favorite/unfavorite | | `isFavorite` | boolean | Yes | true to mark as favorite, false to remove | ## Behaviour The Speak AI MCP server publishes these behaviour hints for `toggle_prompt_favorite`. - Can change data in your workspace. - Does not delete or overwrite existing data. - Repeating an identical call is safe. - Stays inside Speak AI. Does not reach other systems. ## Related - [Ask AI Chat](/mcp/tools/magic-prompt/) lists the rest of the Ask AI Chat category. - [Tool reference](/mcp/tools/) lists every Speak AI MCP server tool. - [MCP server](/mcp/) covers setup, supported clients, and what agents can do once connected. # Rename Chat > Update the title of a chat conversation for easier identification in history. Source: https://docs.speakai.co/mcp/tools/magic-prompt/update_chat_title/ · Markdown: https://docs.speakai.co/mcp/tools/magic-prompt/update_chat_title/index.md Use the Speak AI MCP server tool `update_chat_title` to update the title of a chat conversation for easier identification in history. ## What does it do? Update the title of a chat conversation for easier identification in history. ## Parameters `update_chat_title` takes 2 parameters, all of them required. | Name | Type | Required | Description | | --- | --- | --- | --- | | `promptId` | string | Yes | ID of the conversation to rename | | `title` | string | Yes | New title for the conversation | ## Behaviour The Speak AI MCP server publishes these behaviour hints for `update_chat_title`. - Can change data in your workspace. - Does not delete or overwrite existing data. - Repeating an identical call is safe. - Stays inside Speak AI. Does not reach other systems. ## Related - [Ask AI Chat](/mcp/tools/magic-prompt/) lists the rest of the Ask AI Chat category. - [Tool reference](/mcp/tools/) lists every Speak AI MCP server tool. - [MCP server](/mcp/) covers setup, supported clients, and what agents can do once connected. # Media library tools in the Speak AI MCP server reference > Upload audio or video, fetch transcripts, get AI insights, organize, favorite, export. All 17 Media library tools, with parameters and behaviour hints. Source: https://docs.speakai.co/mcp/tools/media/ · Markdown: https://docs.speakai.co/mcp/tools/media/index.md The Media library category groups 17 of the Speak AI MCP server's tools. Upload audio or video, fetch transcripts, get AI insights, organize, favorite, export. ## Which Media library tools does the Speak AI MCP server have? The Speak AI MCP server has 17 Media library tools. Each one has its own page with a plain-language summary, its parameters, and its behaviour hints. - [`update_transcription`](/mcp/tools/media/update_transcription/): Edit the official transcript text of a single media file by finding and replacing text. - [`get_signed_upload_url`](/mcp/tools/media/get_signed_upload_url/): Get a pre-signed S3 URL for direct file upload to Speak AI storage. - [`upload_media`](/mcp/tools/media/upload_media/): Upload media from a URL: a direct/public file URL, a pre-signed S3 URL, or a shareable social/video link (YouTube, Instagram, TikTok, X, Facebook, Reddit, SoundCloud, and similar) which Speak resolves to the underlying media automatically. - [`upload_local_file`](/mcp/tools/media/upload_local_file/): Upload a local file to Speak AI for transcription and analysis. - [`upload_and_analyze`](/mcp/tools/media/upload_and_analyze/): Upload and transcribe media from a URL: a direct/public file URL, OR a shareable social/video link (YouTube, Instagram, TikTok, X, Facebook, Reddit, SoundCloud, and similar), which Speak resolves to the underlying media automatically. - [`list_media`](/mcp/tools/media/list_media/): List and search media files in the workspace with filtering, pagination, and sorting. - [`get_media_insights`](/mcp/tools/media/get_media_insights/): Retrieve AI-generated insights for a processed media file: topics, sentiment, keywords, action items, summaries, and more. - [`get_transcript`](/mcp/tools/media/get_transcript/): Retrieve the full transcript for a media file with speaker labels and timestamps. - [`get_captions`](/mcp/tools/media/get_captions/): Get captions for a media file. - [`update_transcript_speakers`](/mcp/tools/media/update_transcript_speakers/): Update or rename speaker labels in a media transcript. - [`bulk_update_transcript_speakers`](/mcp/tools/media/bulk_update_transcript_speakers/): Update or rename speaker labels across multiple media files in a single operation. - [`get_media_status`](/mcp/tools/media/get_media_status/): Check the processing status of a media file. - [`update_media_metadata`](/mcp/tools/media/update_media_metadata/): Update metadata fields (name, description, tags, status) for an existing media file. - [`delete_media`](/mcp/tools/media/delete_media/): Permanently delete a media file and all associated transcripts and insights. - [`toggle_media_favorite`](/mcp/tools/media/toggle_media_favorite/): Mark or unmark media files as favorites for quick access. - [`reanalyze_media`](/mcp/tools/media/reanalyze_media/): Re-run AI analysis on a media file using the latest models. - [`bulk_move_media`](/mcp/tools/media/bulk_move_media/): Move multiple media files to a folder in a single operation. ## Related - [Tool reference](/mcp/tools/) lists every Speak AI MCP server tool across every category. - [MCP server](/mcp/) covers setup, supported clients, and what agents can do once connected. # Bulk Move Media Files > Move multiple media files to a folder in a single operation. Source: https://docs.speakai.co/mcp/tools/media/bulk_move_media/ · Markdown: https://docs.speakai.co/mcp/tools/media/bulk_move_media/index.md Use the Speak AI MCP server tool `bulk_move_media` to move multiple media files to a folder in a single operation. ## What does it do? Move multiple media files to a folder in a single operation. Use this for batch reorganization instead of updating media one by one. ## Parameters `bulk_move_media` takes 2 parameters, all of them required. | Name | Type | Required | Description | | --- | --- | --- | --- | | `folderId` | string | Yes | Target folder ID to move media into | | `mediaIds` | array of string | Yes | Array of media IDs to move | ## Behaviour The Speak AI MCP server publishes these behaviour hints for `bulk_move_media`. - Can change data in your workspace. - Can delete or overwrite data. Use with care. - Repeating an identical call can have an extra effect. - Stays inside Speak AI. Does not reach other systems. ## Related - [Media library](/mcp/tools/media/) lists the rest of the Media library category. - [Tool reference](/mcp/tools/) lists every Speak AI MCP server tool. - [MCP server](/mcp/) covers setup, supported clients, and what agents can do once connected. # Bulk Rename Speakers Across Files > Update or rename speaker labels across multiple media files in a single operation. Source: https://docs.speakai.co/mcp/tools/media/bulk_update_transcript_speakers/ · Markdown: https://docs.speakai.co/mcp/tools/media/bulk_update_transcript_speakers/index.md Use the Speak AI MCP server tool `bulk_update_transcript_speakers` to update or rename speaker labels across multiple media files in a single operation. ## What does it do? Update or rename speaker labels across multiple media files in a single operation. Applies the same speaker mappings to every specified media file. Use this instead of calling `update_transcript_speakers` repeatedly when renaming speakers across a project or folder. ## Parameters `bulk_update_transcript_speakers` takes 2 parameters, all of them required. | Name | Type | Required | Description | | --- | --- | --- | --- | | `mediaIds` | array of string | Yes | Array of media IDs to update speakers for (max 500 per call) | | `speakers` | array of object | Yes | Speaker mappings applied to every file in mediaIds. Speakers not listed, and files with no matching speaker, are left untouched. | ## Behaviour The Speak AI MCP server publishes these behaviour hints for `bulk_update_transcript_speakers`. - Can change data in your workspace. - Can delete or overwrite data. Use with care. - Repeating an identical call is safe. - Stays inside Speak AI. Does not reach other systems. ## Related - [Media library](/mcp/tools/media/) lists the rest of the Media library category. - [Tool reference](/mcp/tools/) lists every Speak AI MCP server tool. - [MCP server](/mcp/) covers setup, supported clients, and what agents can do once connected. # Delete Media File > Permanently delete a media file and all associated transcripts and insights. Source: https://docs.speakai.co/mcp/tools/media/delete_media/ · Markdown: https://docs.speakai.co/mcp/tools/media/delete_media/index.md Use the Speak AI MCP server tool `delete_media` to permanently delete a media file and all associated transcripts and insights. ## What does it do? Permanently delete a media file and all associated transcripts and insights. ## Parameters `delete_media` takes 1 parameter, all of them required. | Name | Type | Required | Description | | --- | --- | --- | --- | | `mediaId` | string | Yes | Unique identifier of the media file to delete | ## Behaviour The Speak AI MCP server publishes these behaviour hints for `delete_media`. - Can change data in your workspace. - Can delete or overwrite data. Use with care. - Repeating an identical call is safe. - Stays inside Speak AI. Does not reach other systems. ## Related - [Media library](/mcp/tools/media/) lists the rest of the Media library category. - [Tool reference](/mcp/tools/) lists every Speak AI MCP server tool. - [MCP server](/mcp/) covers setup, supported clients, and what agents can do once connected. # Get Captions > Get captions for a media file. Source: https://docs.speakai.co/mcp/tools/media/get_captions/ · Markdown: https://docs.speakai.co/mcp/tools/media/get_captions/index.md Use the Speak AI MCP server tool `get_captions` to get captions for a media file. ## What does it do? Get captions for a media file. Captions are separate from full transcripts and are formatted for display/subtitles. ## Parameters `get_captions` takes 1 parameter, all of them required. | Name | Type | Required | Description | | --- | --- | --- | --- | | `mediaId` | string | Yes | Unique identifier of the media file | ## Behaviour The Speak AI MCP server publishes these behaviour hints for `get_captions`. - Only reads data. Does not modify your workspace. - Does not delete or overwrite existing data. - Repeating an identical call is safe. - Stays inside Speak AI. Does not reach other systems. ## Related - [Media library](/mcp/tools/media/) lists the rest of the Media library category. - [Tool reference](/mcp/tools/) lists every Speak AI MCP server tool. - [MCP server](/mcp/) covers setup, supported clients, and what agents can do once connected. # Get Media Insights > Retrieve AI-generated insights for a processed media file: topics, sentiment, keywords, action items, summaries, and more. Source: https://docs.speakai.co/mcp/tools/media/get_media_insights/ · Markdown: https://docs.speakai.co/mcp/tools/media/get_media_insights/index.md Use the Speak AI MCP server tool `get_media_insights` to retrieve AI-generated insights for a processed media file: topics, sentiment, keywords, action items, summaries, and more. ## What does it do? Retrieve AI-generated insights for a processed media file: topics, sentiment, keywords, action items, summaries, and more. The media must be in 'processed' state (check with `get_media_status` first). For asking custom questions about a media file, use `ask_ai_chat` instead. ## Parameters `get_media_insights` takes 1 parameter, all of them required. | Name | Type | Required | Description | | --- | --- | --- | --- | | `mediaId` | string | Yes | Unique identifier of the media file | ## Behaviour The Speak AI MCP server publishes these behaviour hints for `get_media_insights`. - Only reads data. Does not modify your workspace. - Does not delete or overwrite existing data. - Repeating an identical call is safe. - Stays inside Speak AI. Does not reach other systems. ## Related - [Media library](/mcp/tools/media/) lists the rest of the Media library category. - [Tool reference](/mcp/tools/) lists every Speak AI MCP server tool. - [MCP server](/mcp/) covers setup, supported clients, and what agents can do once connected. # Get Media Status > Check the processing status of a media file. Source: https://docs.speakai.co/mcp/tools/media/get_media_status/ · Markdown: https://docs.speakai.co/mcp/tools/media/get_media_status/index.md Use the Speak AI MCP server tool `get_media_status` to check the processing status of a media file. ## What does it do? Check the processing status of a media file. States: pending → transcribing → analyzing → processed (or failed). Poll this after `upload_media` until state is 'processed', then use `get_transcript` and `get_media_insights` to retrieve results. ## Parameters `get_media_status` takes 1 parameter, all of them required. | Name | Type | Required | Description | | --- | --- | --- | --- | | `mediaId` | string | Yes | Unique identifier of the media file | ## Behaviour The Speak AI MCP server publishes these behaviour hints for `get_media_status`. - Only reads data. Does not modify your workspace. - Does not delete or overwrite existing data. - Repeating an identical call is safe. - Stays inside Speak AI. Does not reach other systems. ## Related - [Media library](/mcp/tools/media/) lists the rest of the Media library category. - [Tool reference](/mcp/tools/) lists every Speak AI MCP server tool. - [MCP server](/mcp/) covers setup, supported clients, and what agents can do once connected. # Get Signed Upload URL > Get a pre-signed S3 URL for direct file upload to Speak AI storage. Source: https://docs.speakai.co/mcp/tools/media/get_signed_upload_url/ · Markdown: https://docs.speakai.co/mcp/tools/media/get_signed_upload_url/index.md Use the Speak AI MCP server tool `get_signed_upload_url` to get a pre-signed S3 URL for direct file upload to Speak AI storage. ## What does it do? Get a pre-signed S3 URL for direct file upload to Speak AI storage. After getting the URL, PUT your file to it, then call `upload_media` with the S3 URL. For a simpler workflow, use `upload_local_file` instead which handles all steps automatically. ## Parameters `get_signed_upload_url` takes 3 parameters, all of them required. | Name | Type | Required | Description | | --- | --- | --- | --- | | `isVideo` | boolean | Yes | Set true for video files, false for audio files | | `filename` | string | Yes | Original filename including extension | | `mimeType` | string | Yes | MIME type of the file, e.g. "audio/mp4" or "video/mp4" | ## Behaviour The Speak AI MCP server publishes these behaviour hints for `get_signed_upload_url`. - Only reads data. Does not modify your workspace. - Does not delete or overwrite existing data. - Repeating an identical call can have an extra effect. - Stays inside Speak AI. Does not reach other systems. ## Related - [Media library](/mcp/tools/media/) lists the rest of the Media library category. - [Tool reference](/mcp/tools/) lists every Speak AI MCP server tool. - [MCP server](/mcp/) covers setup, supported clients, and what agents can do once connected. # Get Transcript > Retrieve the full transcript for a media file with speaker labels and timestamps. Source: https://docs.speakai.co/mcp/tools/media/get_transcript/ · Markdown: https://docs.speakai.co/mcp/tools/media/get_transcript/index.md Use the Speak AI MCP server tool `get_transcript` to retrieve the full transcript for a media file with speaker labels and timestamps. ## What does it do? Retrieve the full transcript for a media file with speaker labels and timestamps. Works on processed media and also returns the partial, in-progress transcript while a meeting bot is still recording (LIVE_TRANSCRIPT state). To fetch only the new sentences added since your previous call during a live meeting, use `get_live_meeting_transcript` instead. Use `update_transcript_speakers` to rename speaker labels after reviewing. For subtitle-formatted output, use `get_captions` instead. ## Parameters `get_transcript` takes 1 parameter, all of them required. | Name | Type | Required | Description | | --- | --- | --- | --- | | `mediaId` | string | Yes | Unique identifier of the media file | ## Behaviour The Speak AI MCP server publishes these behaviour hints for `get_transcript`. - Only reads data. Does not modify your workspace. - Does not delete or overwrite existing data. - Repeating an identical call is safe. - Stays inside Speak AI. Does not reach other systems. ## Related - [Media library](/mcp/tools/media/) lists the rest of the Media library category. - [Tool reference](/mcp/tools/) lists every Speak AI MCP server tool. - [MCP server](/mcp/) covers setup, supported clients, and what agents can do once connected. # List Media Files > List and search media files in the workspace with filtering, pagination, and sorting. Source: https://docs.speakai.co/mcp/tools/media/list_media/ · Markdown: https://docs.speakai.co/mcp/tools/media/list_media/index.md Use the Speak AI MCP server tool `list_media` to list and search media files in the workspace with filtering, pagination, and sorting. ## What does it do? List and search media files in the workspace with filtering, pagination, and sorting. Use filterName for text search, mediaType to filter by audio/video/text, folderId for folder-specific results, and from/to for date ranges. Use the include param to embed additional data (transcripts, speakers, keywords) inline with each result, avoiding N+1 API calls. Returns mediaIds you can pass to `get_transcript`, `get_media_insights`, or `ask_ai_chat`. For deep full-text search across transcripts, use `search_media` instead. ## Parameters `list_media` takes 11 parameters, all of them optional. | Name | Type | Required | Description | | --- | --- | --- | --- | | `mediaType` | enum | No | Filter by media type: "audio", "video", or "text" | | `page` | number | No | Page number for pagination (0-based, default: 0) | | `pageSize` | number | No | Number of results per page (default: 25, max: 100). Page through larger sets rather than raising this. With include: ['transcription'] each result carries a full transcript, and an oversized response is rejected outright. | | `sortBy` | string | No | Sort field and direction, e.g. "createdAt:desc" or "name:asc" | | `filterMedia` | number | No | Filter: 0=Uploaded, 1=Assigned, 2=Both (default: 2) | | `filterName` | string | No | Filter media by partial name match | | `folderId` | string | No | Filter media within a specific folder | | `from` | string | No | Start date for date range filter (ISO 8601) | | `to` | string | No | End date for date range filter (ISO 8601) | | `isFavorites` | boolean | No | Filter to only show favorited media | | `include` | array of enum: transcription, keywords, speakers, sentiment, custom, fields | No | Additional data to include with each media item. Without this, only metadata is returned. Use 'transcription' to include full transcripts inline, 'speakers' for speaker details, 'keywords' for extracted keywords, etc. Avoids N+1 API calls when you need data for multiple files. | ## Behaviour The Speak AI MCP server publishes these behaviour hints for `list_media`. - Only reads data. Does not modify your workspace. - Does not delete or overwrite existing data. - Repeating an identical call is safe. - Stays inside Speak AI. Does not reach other systems. ## Related - [Media library](/mcp/tools/media/) lists the rest of the Media library category. - [Tool reference](/mcp/tools/) lists every Speak AI MCP server tool. - [MCP server](/mcp/) covers setup, supported clients, and what agents can do once connected. # Re-analyze Media > Re-run AI analysis on a media file using the latest models. Source: https://docs.speakai.co/mcp/tools/media/reanalyze_media/ · Markdown: https://docs.speakai.co/mcp/tools/media/reanalyze_media/index.md Use the Speak AI MCP server tool `reanalyze_media` to re-run AI analysis on a media file using the latest models. ## What does it do? Re-run AI analysis on a media file using the latest models. Choose which parts to re-run via the flags below. ## Parameters `reanalyze_media` takes 5 parameters, 1 of them required. | Name | Type | Required | Description | | --- | --- | --- | --- | | `mediaId` | string | Yes | Unique identifier of the media file to re-analyze | | `isInsights` | boolean | No | Re-run insights analysis | | `isSentiment` | boolean | No | Re-run sentiment analysis | | `isFillerWords` | boolean | No | Re-run filler-word detection | | `isEmbeddings` | boolean | No | Re-generate embeddings | ## Behaviour The Speak AI MCP server publishes these behaviour hints for `reanalyze_media`. - Can change data in your workspace. - Does not delete or overwrite existing data. - Repeating an identical call can have an extra effect. - Stays inside Speak AI. Does not reach other systems. ## Related - [Media library](/mcp/tools/media/) lists the rest of the Media library category. - [Tool reference](/mcp/tools/) lists every Speak AI MCP server tool. - [MCP server](/mcp/) covers setup, supported clients, and what agents can do once connected. # Toggle Media Favorite > Mark or unmark media files as favorites for quick access. Source: https://docs.speakai.co/mcp/tools/media/toggle_media_favorite/ · Markdown: https://docs.speakai.co/mcp/tools/media/toggle_media_favorite/index.md Use the Speak AI MCP server tool `toggle_media_favorite` to mark or unmark media files as favorites for quick access. ## What does it do? Mark or unmark media files as favorites for quick access. ## Parameters `toggle_media_favorite` takes 2 parameters, all of them required. | Name | Type | Required | Description | | --- | --- | --- | --- | | `mediaIds` | array of string | Yes | Media file IDs to update | | `isFavorite` | boolean | Yes | true to mark as favorite, false to unmark | ## Behaviour The Speak AI MCP server publishes these behaviour hints for `toggle_media_favorite`. - Can change data in your workspace. - Does not delete or overwrite existing data. - Repeating an identical call is safe. - Stays inside Speak AI. Does not reach other systems. ## Related - [Media library](/mcp/tools/media/) lists the rest of the Media library category. - [Tool reference](/mcp/tools/) lists every Speak AI MCP server tool. - [MCP server](/mcp/) covers setup, supported clients, and what agents can do once connected. # Update Media Metadata > Update metadata fields (name, description, tags, status) for an existing media file. Source: https://docs.speakai.co/mcp/tools/media/update_media_metadata/ · Markdown: https://docs.speakai.co/mcp/tools/media/update_media_metadata/index.md Use the Speak AI MCP server tool `update_media_metadata` to update metadata fields (name, description, tags, status) for an existing media file. ## What does it do? Update metadata fields (name, description, tags, status) for an existing media file. ## Parameters `update_media_metadata` takes 8 parameters, 2 of them required. | Name | Type | Required | Description | | --- | --- | --- | --- | | `mediaId` | string | Yes | Unique identifier of the media file | | `name` | string | Yes | Display name for the media (required: the server replaces the metadata) | | `description` | string | No | Description or notes for the media | | `folderId` | string | No | Move media to this folder ID | | `tags` | array of string | No | Array of tags to assign to the media | | `status` | string | No | Media status value | | `remark` | string | No | Internal remark or note | | `manageBy` | string | No | User ID to assign management of this media to | ## Behaviour The Speak AI MCP server publishes these behaviour hints for `update_media_metadata`. - Can change data in your workspace. - Can delete or overwrite data. Use with care. - Repeating an identical call is safe. - Stays inside Speak AI. Does not reach other systems. ## Related - [Media library](/mcp/tools/media/) lists the rest of the Media library category. - [Tool reference](/mcp/tools/) lists every Speak AI MCP server tool. - [MCP server](/mcp/) covers setup, supported clients, and what agents can do once connected. # Rename Transcript Speakers > Update or rename speaker labels in a media transcript. Source: https://docs.speakai.co/mcp/tools/media/update_transcript_speakers/ · Markdown: https://docs.speakai.co/mcp/tools/media/update_transcript_speakers/index.md Use the Speak AI MCP server tool `update_transcript_speakers` to update or rename speaker labels in a media transcript. ## What does it do? Update or rename speaker labels in a media transcript. ## Parameters `update_transcript_speakers` takes 2 parameters, all of them required. | Name | Type | Required | Description | | --- | --- | --- | --- | | `mediaId` | string | Yes | Unique identifier of the media file | | `speakers` | array of object | Yes | Speakers to rename. Each entry maps one existing speaker to its new name; speakers not listed are left untouched. | ## Behaviour The Speak AI MCP server publishes these behaviour hints for `update_transcript_speakers`. - Can change data in your workspace. - Can delete or overwrite data. Use with care. - Repeating an identical call is safe. - Stays inside Speak AI. Does not reach other systems. ## Related - [Media library](/mcp/tools/media/) lists the rest of the Media library category. - [Tool reference](/mcp/tools/) lists every Speak AI MCP server tool. - [MCP server](/mcp/) covers setup, supported clients, and what agents can do once connected. # Update Transcription Text > Edit the official transcript text of a single media file by finding and replacing text. Source: https://docs.speakai.co/mcp/tools/media/update_transcription/ · Markdown: https://docs.speakai.co/mcp/tools/media/update_transcription/index.md Use the Speak AI MCP server tool `update_transcription` to edit the official transcript text of a single media file by finding and replacing text. ## What does it do? Edit the official transcript text of a single media file by finding and replacing text. Replaces every occurrence of the original text with the replacement (leave replacement empty to delete the text) and reports how many occurrences were replaced. Use `update_transcript_speakers` to rename speaker labels instead. ## Parameters `update_transcription` takes 4 parameters, 3 of them required. | Name | Type | Required | Description | | --- | --- | --- | --- | | `mediaId` | string | Yes | Unique identifier of the media file | | `original` | string | Yes | Text to find in the transcript | | `replacement` | string | Yes | Text to replace it with (empty string deletes the matched text) | | `caseSensitive` | boolean | No | Match case exactly when finding the original text | ## Behaviour The Speak AI MCP server publishes these behaviour hints for `update_transcription`. - Can change data in your workspace. - Can delete or overwrite data. Use with care. - Repeating an identical call can have an extra effect. - Stays inside Speak AI. Does not reach other systems. ## Related - [Media library](/mcp/tools/media/) lists the rest of the Media library category. - [Tool reference](/mcp/tools/) lists every Speak AI MCP server tool. - [MCP server](/mcp/) covers setup, supported clients, and what agents can do once connected. # Upload and Analyze Media > Upload and transcribe media from a URL: a direct/public file URL, OR a shareable social/video link (YouTube, Instagram, TikTok, X, Facebook, Reddit, SoundCloud, and similar), which Speak resolves to the underlying media automatically. Source: https://docs.speakai.co/mcp/tools/media/upload_and_analyze/ · Markdown: https://docs.speakai.co/mcp/tools/media/upload_and_analyze/index.md Use the Speak AI MCP server tool `upload_and_analyze` to upload and transcribe media from a URL: a direct/public file URL, OR a shareable social/video link (YouTube, Instagram, TikTok, X, Facebook, Reddit, SoundCloud, and similar), which Speak resolves to the underlying media automatically. ## What does it do? Upload and transcribe media from a URL: a direct/public file URL, OR a shareable social/video link (YouTube, Instagram, TikTok, X, Facebook, Reddit, SoundCloud, and similar), which Speak resolves to the underlying media automatically. Returns media_id immediately; after this returns, poll `get_media_status` until state is 'processed' (typically 1-3 min for under 60min audio), then call `get_media_insights` for AI summaries. This async pattern is required for remote MCP transports: long blocking calls die at proxy idle timeouts. (Vimeo links are not yet supported.) ## Parameters `upload_and_analyze` takes 6 parameters, 1 of them required. | Name | Type | Required | Description | | --- | --- | --- | --- | | `url` | string | Yes | Direct/public media file URL, or a shareable social/video page link (e.g. an Instagram reel, TikTok, YouTube, or X post URL): page links are resolved to the underlying media server-side. Pass the URL the user gave you as-is. | | `name` | string | No | Display name for the media (defaults to filename from URL) | | `mediaType` | enum | No | Media type (default: audio) | | `sourceLanguage` | string | No | BCP-47 language code (e.g., 'en-US', 'he-IL') | | `folderId` | string | No | Folder ID to place the media in | | `tags` | string | No | Comma-separated tags | ## Behaviour The Speak AI MCP server publishes these behaviour hints for `upload_and_analyze`. - Can change data in your workspace. - Does not delete or overwrite existing data. - Repeating an identical call can have an extra effect. - Can reach systems outside Speak AI. ## Related - [Media library](/mcp/tools/media/) lists the rest of the Media library category. - [Tool reference](/mcp/tools/) lists every Speak AI MCP server tool. - [MCP server](/mcp/) covers setup, supported clients, and what agents can do once connected. # Upload Local File > Upload a local file to Speak AI for transcription and analysis. Source: https://docs.speakai.co/mcp/tools/media/upload_local_file/ · Markdown: https://docs.speakai.co/mcp/tools/media/upload_local_file/index.md Use the Speak AI MCP server tool `upload_local_file` to upload a local file to Speak AI for transcription and analysis. ## What does it do? Upload a local file to Speak AI for transcription and analysis. Reads the file from disk, gets a pre-signed S3 URL, uploads the file, then creates the media entry. Works with any audio or video file on the local filesystem. After upload, use `get_media_status` to poll for completion, then `get_transcript` and `get_media_insights`. ## Parameters `upload_local_file` takes 6 parameters, 1 of them required. | Name | Type | Required | Description | | --- | --- | --- | --- | | `filePath` | string | Yes | Absolute path to the local audio or video file | | `name` | string | No | Display name (defaults to filename) | | `mediaType` | enum | No | Media type (auto-detected from extension if omitted) | | `sourceLanguage` | string | No | BCP-47 language code (e.g., 'en-US') | | `folderId` | string | No | Folder ID to place the media in | | `tags` | string | No | Comma-separated tags | ## Behaviour The Speak AI MCP server publishes these behaviour hints for `upload_local_file`. - Can change data in your workspace. - Does not delete or overwrite existing data. - Repeating an identical call can have an extra effect. - Can reach systems outside Speak AI. ## Related - [Media library](/mcp/tools/media/) lists the rest of the Media library category. - [Tool reference](/mcp/tools/) lists every Speak AI MCP server tool. - [MCP server](/mcp/) covers setup, supported clients, and what agents can do once connected. # Upload Media from URL > Upload media from a URL: a direct/public file URL, a pre-signed S3 URL, or a shareable social/video link (YouTube, Instagram, TikTok, X, Facebook, Reddit, SoundCloud, and similar) which Speak resolves to the underlying media automatically. Source: https://docs.speakai.co/mcp/tools/media/upload_media/ · Markdown: https://docs.speakai.co/mcp/tools/media/upload_media/index.md Use the Speak AI MCP server tool `upload_media` to upload media from a URL: a direct/public file URL, a pre-signed S3 URL, or a shareable social/video link (YouTube, Instagram, TikTok, X, Facebook, Reddit, SoundCloud, and similar) which Speak resolves to the underlying media automatically. ## What does it do? Upload media from a URL: a direct/public file URL, a pre-signed S3 URL, or a shareable social/video link (YouTube, Instagram, TikTok, X, Facebook, Reddit, SoundCloud, and similar) which Speak resolves to the underlying media automatically. Processing is asynchronous: after uploading, use `get_media_status` to poll until state is 'processed' (typically 1-3 minutes for audio under 60 min), then use `get_transcript` and `get_media_insights` to retrieve results. For a single call that handles everything, use `upload_and_analyze` instead. For local files, use `upload_local_file`. (Vimeo links are not yet supported.) ## Parameters `upload_media` takes 9 parameters, 3 of them required. | Name | Type | Required | Description | | --- | --- | --- | --- | | `name` | string | Yes | Display name for the media file | | `url` | string | Yes | Direct/public media file URL, pre-signed S3 URL, or a shareable social/video page link (e.g. an Instagram reel or TikTok URL): page links are resolved to the underlying media server-side. | | `mediaType` | enum | Yes | Type of media: "audio" or "video" | | `description` | string | No | Description of the media file | | `sourceLanguage` | string | No | BCP-47 language code for transcription, e.g. "en-US" or "he-IL" | | `tags` | string | No | Comma-separated tags for the media | | `folderId` | string | No | ID of the folder to place the media in | | `callbackUrl` | string | No | Webhook callback URL for this specific upload | | `fields` | array of object | No | Custom field values to attach to the media | ## Behaviour The Speak AI MCP server publishes these behaviour hints for `upload_media`. - Can change data in your workspace. - Does not delete or overwrite existing data. - Repeating an identical call can have an extra effect. - Can reach systems outside Speak AI. ## Related - [Media library](/mcp/tools/media/) lists the rest of the Media library category. - [Tool reference](/mcp/tools/) lists every Speak AI MCP server tool. - [MCP server](/mcp/) covers setup, supported clients, and what agents can do once connected. # Meeting bot tools in the Speak AI MCP server reference > Schedule Speak AI to join a Zoom / Google Meet / Teams call and transcribe automatically. All 5 Meeting bot tools, with parameters and behaviour hints. Source: https://docs.speakai.co/mcp/tools/meeting-bot/ · Markdown: https://docs.speakai.co/mcp/tools/meeting-bot/index.md The Meeting bot category groups 5 of the Speak AI MCP server's tools. Schedule Speak AI to join a Zoom / Google Meet / Teams call and transcribe automatically. ## Which Meeting bot tools does the Speak AI MCP server have? The Speak AI MCP server has 5 Meeting bot tools. Each one has its own page with a plain-language summary, its parameters, and its behaviour hints. - [`list_meeting_events`](/mcp/tools/meeting-bot/list_meeting_events/): List scheduled or completed meeting assistant events with filtering and pagination. - [`schedule_meeting_event`](/mcp/tools/meeting-bot/schedule_meeting_event/): Schedule the Speak AI meeting assistant to join and record an upcoming meeting. - [`remove_assistant_from_meeting`](/mcp/tools/meeting-bot/remove_assistant_from_meeting/): Remove the Speak AI assistant from an active or scheduled meeting. - [`delete_scheduled_assistant`](/mcp/tools/meeting-bot/delete_scheduled_assistant/): Cancel and delete a scheduled meeting assistant event. - [`get_live_meeting_transcript`](/mcp/tools/meeting-bot/get_live_meeting_transcript/): Fetch new sentences from an in-progress or just-ended meeting transcript. ## Related - [Tool reference](/mcp/tools/) lists every Speak AI MCP server tool across every category. - [MCP server](/mcp/) covers setup, supported clients, and what agents can do once connected. # Cancel Scheduled Meeting Assistant > Cancel and delete a scheduled meeting assistant event. Source: https://docs.speakai.co/mcp/tools/meeting-bot/delete_scheduled_assistant/ · Markdown: https://docs.speakai.co/mcp/tools/meeting-bot/delete_scheduled_assistant/index.md Use the Speak AI MCP server tool `delete_scheduled_assistant` to cancel and delete a scheduled meeting assistant event. ## What does it do? Cancel and delete a scheduled meeting assistant event. ## Parameters `delete_scheduled_assistant` takes 1 parameter, all of them required. | Name | Type | Required | Description | | --- | --- | --- | --- | | `meetingAssistantEventId` | string | Yes | Unique identifier of the meeting assistant event to cancel | ## Behaviour The Speak AI MCP server publishes these behaviour hints for `delete_scheduled_assistant`. - Can change data in your workspace. - Can delete or overwrite data. Use with care. - Repeating an identical call is safe. - Can reach systems outside Speak AI. ## Related - [Meeting bot](/mcp/tools/meeting-bot/) lists the rest of the Meeting bot category. - [Tool reference](/mcp/tools/) lists every Speak AI MCP server tool. - [MCP server](/mcp/) covers setup, supported clients, and what agents can do once connected. # Get Live Meeting Transcript > Fetch new sentences from an in-progress or just-ended meeting transcript. Source: https://docs.speakai.co/mcp/tools/meeting-bot/get_live_meeting_transcript/ · Markdown: https://docs.speakai.co/mcp/tools/meeting-bot/get_live_meeting_transcript/index.md Use the Speak AI MCP server tool `get_live_meeting_transcript` to fetch new sentences from an in-progress or just-ended meeting transcript. ## What does it do? Fetch new sentences from an in-progress or just-ended meeting transcript. Identify the meeting via meetingAssistantEventId (preferred) or mediaId. Pass back the previous response's nextCursor as sinceEndInSec to receive only what's been added since. ## Parameters `get_live_meeting_transcript` takes 3 parameters, all of them optional. | Name | Type | Required | Description | | --- | --- | --- | --- | | `meetingAssistantEventId` | string | No | Meeting assistant event id from `list_meeting_events`. Either this or mediaId is required. | | `mediaId` | string | No | Media id of the live meeting. Either this or meetingAssistantEventId is required. | | `sinceEndInSec` | number | No | Pass the nextCursor value from your previous response to skip already-seen sentences. Omit on the first call. | ## Behaviour The Speak AI MCP server publishes these behaviour hints for `get_live_meeting_transcript`. - Only reads data. Does not modify your workspace. - Does not delete or overwrite existing data. - Repeating an identical call can have an extra effect. - Can reach systems outside Speak AI. ## Related - [Meeting bot](/mcp/tools/meeting-bot/) lists the rest of the Meeting bot category. - [Tool reference](/mcp/tools/) lists every Speak AI MCP server tool. - [MCP server](/mcp/) covers setup, supported clients, and what agents can do once connected. # List Meeting Events > List scheduled or completed meeting assistant events with filtering and pagination. Source: https://docs.speakai.co/mcp/tools/meeting-bot/list_meeting_events/ · Markdown: https://docs.speakai.co/mcp/tools/meeting-bot/list_meeting_events/index.md Use the Speak AI MCP server tool `list_meeting_events` to list scheduled or completed meeting assistant events with filtering and pagination. ## What does it do? List scheduled or completed meeting assistant events with filtering and pagination. ## Parameters `list_meeting_events` takes 4 parameters, all of them optional. | Name | Type | Required | Description | | --- | --- | --- | --- | | `platformType` | string | No | Filter by platform. Allowed values: zoom, googleMeet, microsoftTeams, webex. Comma-separate for multiple. Must match these exact strings: server validates strictly. | | `meetingStatus` | string | No | Filter by status (e.g. scheduled, completed, cancelled) | | `page` | number | No | Page number (0-based, default: 0) | | `pageSize` | number | No | Results per page (default: 20, max: 500) | ## Behaviour The Speak AI MCP server publishes these behaviour hints for `list_meeting_events`. - Only reads data. Does not modify your workspace. - Does not delete or overwrite existing data. - Repeating an identical call is safe. - Stays inside Speak AI. Does not reach other systems. ## Related - [Meeting bot](/mcp/tools/meeting-bot/) lists the rest of the Meeting bot category. - [Tool reference](/mcp/tools/) lists every Speak AI MCP server tool. - [MCP server](/mcp/) covers setup, supported clients, and what agents can do once connected. # Remove Assistant from Meeting > Remove the Speak AI assistant from an active or scheduled meeting. Source: https://docs.speakai.co/mcp/tools/meeting-bot/remove_assistant_from_meeting/ · Markdown: https://docs.speakai.co/mcp/tools/meeting-bot/remove_assistant_from_meeting/index.md Use the Speak AI MCP server tool `remove_assistant_from_meeting` to remove the Speak AI assistant from an active or scheduled meeting. ## What does it do? Remove the Speak AI assistant from an active or scheduled meeting. ## Parameters `remove_assistant_from_meeting` takes 1 parameter, all of them required. | Name | Type | Required | Description | | --- | --- | --- | --- | | `meetingAssistantEventId` | string | Yes | Unique identifier of the meeting assistant event | ## Behaviour The Speak AI MCP server publishes these behaviour hints for `remove_assistant_from_meeting`. - Can change data in your workspace. - Does not delete or overwrite existing data. - Repeating an identical call is safe. - Can reach systems outside Speak AI. ## Related - [Meeting bot](/mcp/tools/meeting-bot/) lists the rest of the Meeting bot category. - [Tool reference](/mcp/tools/) lists every Speak AI MCP server tool. - [MCP server](/mcp/) covers setup, supported clients, and what agents can do once connected. # Schedule AI Meeting Assistant > Schedule the Speak AI meeting assistant to join and record an upcoming meeting. Source: https://docs.speakai.co/mcp/tools/meeting-bot/schedule_meeting_event/ · Markdown: https://docs.speakai.co/mcp/tools/meeting-bot/schedule_meeting_event/index.md Use the Speak AI MCP server tool `schedule_meeting_event` to schedule the Speak AI meeting assistant to join and record an upcoming meeting. ## What does it do? Schedule the Speak AI meeting assistant to join and record an upcoming meeting. ## Parameters `schedule_meeting_event` takes 5 parameters, 2 of them required. | Name | Type | Required | Description | | --- | --- | --- | --- | | `title` | string | Yes | Display title for the event | | `meetingURL` | string | Yes | URL of the meeting to join | | `meetingDate` | string | No | ISO 8601 datetime for when the meeting starts | | `meetingLanguage` | string | No | Transcription language code for the meeting (e.g. en-US) | | `folderId` | string | No | Folder ID to store the recording in | ## Behaviour The Speak AI MCP server publishes these behaviour hints for `schedule_meeting_event`. - Can change data in your workspace. - Does not delete or overwrite existing data. - Repeating an identical call can have an extra effect. - Can reach systems outside Speak AI. ## Related - [Meeting bot](/mcp/tools/meeting-bot/) lists the rest of the Meeting bot category. - [Tool reference](/mcp/tools/) lists every Speak AI MCP server tool. - [MCP server](/mcp/) covers setup, supported clients, and what agents can do once connected. # Recorders & surveys tools in the Speak AI MCP server > Public recording links for clients, prompted question sets, branded submission pages. All 10 Recorders & surveys tools, with parameters and behaviour hints. Source: https://docs.speakai.co/mcp/tools/recorders-surveys/ · Markdown: https://docs.speakai.co/mcp/tools/recorders-surveys/index.md The Recorders & surveys category groups 10 of the Speak AI MCP server's tools. Public recording links for clients, prompted question sets, branded submission pages. ## Which Recorders & surveys tools does the Speak AI MCP server have? The Speak AI MCP server has 10 Recorders & surveys tools. Each one has its own page with a plain-language summary, its parameters, and its behaviour hints. - [`create_recorder`](/mcp/tools/recorders-surveys/create_recorder/): Create a new recorder or survey for collecting audio/video submissions. - [`list_recorders`](/mcp/tools/recorders-surveys/list_recorders/): List all recorders/surveys in the workspace. - [`get_recorder_info`](/mcp/tools/recorders-surveys/get_recorder_info/): Get detailed information about a specific recorder including its settings and questions. - [`clone_recorder`](/mcp/tools/recorders-surveys/clone_recorder/): Duplicate an existing recorder including all its settings and questions. - [`get_recorder_recordings`](/mcp/tools/recorders-surveys/get_recorder_recordings/): List all submissions/recordings collected by a specific recorder. - [`generate_recorder_url`](/mcp/tools/recorders-surveys/generate_recorder_url/): Generate a shareable public URL for a recorder/survey. - [`update_recorder_settings`](/mcp/tools/recorders-surveys/update_recorder_settings/): Update configuration settings for a recorder (branding, capture options, etc.). - [`update_recorder_questions`](/mcp/tools/recorders-surveys/update_recorder_questions/): Update the survey questions and respondent-info settings for a recorder. - [`check_recorder_status`](/mcp/tools/recorders-surveys/check_recorder_status/): Check whether a recorder/survey is active and accepting submissions. - [`delete_recorder`](/mcp/tools/recorders-surveys/delete_recorder/): Permanently delete a recorder/survey. ## Related - [Tool reference](/mcp/tools/) lists every Speak AI MCP server tool across every category. - [MCP server](/mcp/) covers setup, supported clients, and what agents can do once connected. # Check Recorder Status > Check whether a recorder/survey is active and accepting submissions. Source: https://docs.speakai.co/mcp/tools/recorders-surveys/check_recorder_status/ · Markdown: https://docs.speakai.co/mcp/tools/recorders-surveys/check_recorder_status/index.md Use the Speak AI MCP server tool `check_recorder_status` to check whether a recorder/survey is active and accepting submissions. ## What does it do? Check whether a recorder/survey is active and accepting submissions. ## Parameters `check_recorder_status` takes 1 parameter, all of them required. | Name | Type | Required | Description | | --- | --- | --- | --- | | `token` | string | Yes | Unique token identifying the recorder | ## Behaviour The Speak AI MCP server publishes these behaviour hints for `check_recorder_status`. - Only reads data. Does not modify your workspace. - Does not delete or overwrite existing data. - Repeating an identical call is safe. - Stays inside Speak AI. Does not reach other systems. ## Related - [Recorders & surveys](/mcp/tools/recorders-surveys/) lists the rest of the Recorders & surveys category. - [Tool reference](/mcp/tools/) lists every Speak AI MCP server tool. - [MCP server](/mcp/) covers setup, supported clients, and what agents can do once connected. # Clone Recorder > Duplicate an existing recorder including all its settings and questions. Source: https://docs.speakai.co/mcp/tools/recorders-surveys/clone_recorder/ · Markdown: https://docs.speakai.co/mcp/tools/recorders-surveys/clone_recorder/index.md Use the Speak AI MCP server tool `clone_recorder` to duplicate an existing recorder including all its settings and questions. ## What does it do? Duplicate an existing recorder including all its settings and questions. ## Parameters `clone_recorder` takes 4 parameters, 1 of them required. | Name | Type | Required | Description | | --- | --- | --- | --- | | `recorderId` | string | Yes | ID of the recorder to clone | | `name` | string | No | Name for the cloned recorder | | `description` | string | No | Description for the cloned recorder | | `folderId` | string | No | Folder for the cloned recorder | ## Behaviour The Speak AI MCP server publishes these behaviour hints for `clone_recorder`. - Can change data in your workspace. - Does not delete or overwrite existing data. - Repeating an identical call can have an extra effect. - Can reach systems outside Speak AI. ## Related - [Recorders & surveys](/mcp/tools/recorders-surveys/) lists the rest of the Recorders & surveys category. - [Tool reference](/mcp/tools/) lists every Speak AI MCP server tool. - [MCP server](/mcp/) covers setup, supported clients, and what agents can do once connected. # Create Recorder > Create a new recorder or survey for collecting audio/video submissions. Source: https://docs.speakai.co/mcp/tools/recorders-surveys/create_recorder/ · Markdown: https://docs.speakai.co/mcp/tools/recorders-surveys/create_recorder/index.md Use the Speak AI MCP server tool `create_recorder` to create a new recorder or survey for collecting audio/video submissions. ## What does it do? Create a new recorder or survey for collecting audio/video submissions. ## Parameters `create_recorder` takes 11 parameters, 1 of them required. | Name | Type | Required | Description | | --- | --- | --- | --- | | `name` | string | Yes | Display name for the recorder | | `description` | string | No | Recorder description | | `sourceLanguage` | string | No | Transcription language code (e.g. en-US) | | `folderId` | string | No | Folder to store recordings in | | `isAutoAnalyze` | boolean | No | Whether to auto-analyze submissions | | `notifyUsers` | array of string | No | User IDs to notify on new submissions | | `duration` | object | No | Recording duration: \{ minDuration, maxDuration \} in seconds | | `options` | object | No | Capture options: \{ audio, video, screenShare, liveTranscription, upload:\{ file, text, multiple, url \} \}. All booleans | | `notification` | object | No | Notification toggles: \{ upload, client \}. Booleans | | `meta` | object | No | Branding/customization: \{ primaryColor, backgroundImg, logo, fontColor, fontFamily, theme, customCSS, hideWaveform, hideTitle, hideDescription, hideSubmitButton, submitButtonLabel, countdown, hideImages \} | | `clientInformation` | object | No | Respondent info & questions: \{ name:boolean, email:boolean, questions:[…], consent?:\{ isEnabled, title, description, yesButtonLabel, noButtonLabel, isRequired, fieldId? \} \}. Question shape. Each: \{ question, isRequired, answerType, options?, includeOther?, fieldId? \}. answerType must be one of: "single", "multiple", "checkbox", "radiobutton", "dropdownlist", "date", "time", "datetime". Choice types (single, multiple, checkbox, radiobutton, dropdownlist) take options:string[] and includeOther:boolean (adds a free-text "Other"). date/time/datetime take no options. There is no free-text/rating/number answerType. | ## Behaviour The Speak AI MCP server publishes these behaviour hints for `create_recorder`. - Can change data in your workspace. - Does not delete or overwrite existing data. - Repeating an identical call can have an extra effect. - Can reach systems outside Speak AI. ## Related - [Recorders & surveys](/mcp/tools/recorders-surveys/) lists the rest of the Recorders & surveys category. - [Tool reference](/mcp/tools/) lists every Speak AI MCP server tool. - [MCP server](/mcp/) covers setup, supported clients, and what agents can do once connected. # Delete Recorder > Permanently delete a recorder/survey. Source: https://docs.speakai.co/mcp/tools/recorders-surveys/delete_recorder/ · Markdown: https://docs.speakai.co/mcp/tools/recorders-surveys/delete_recorder/index.md Use the Speak AI MCP server tool `delete_recorder` to permanently delete a recorder/survey. ## What does it do? Permanently delete a recorder/survey. Existing recordings are preserved. ## Parameters `delete_recorder` takes 1 parameter, all of them required. | Name | Type | Required | Description | | --- | --- | --- | --- | | `recorderId` | string | Yes | Unique identifier of the recorder to delete | ## Behaviour The Speak AI MCP server publishes these behaviour hints for `delete_recorder`. - Can change data in your workspace. - Can delete or overwrite data. Use with care. - Repeating an identical call is safe. - Can reach systems outside Speak AI. ## Related - [Recorders & surveys](/mcp/tools/recorders-surveys/) lists the rest of the Recorders & surveys category. - [Tool reference](/mcp/tools/) lists every Speak AI MCP server tool. - [MCP server](/mcp/) covers setup, supported clients, and what agents can do once connected. # Generate Recorder Share URL > Generate a shareable public URL for a recorder/survey. Source: https://docs.speakai.co/mcp/tools/recorders-surveys/generate_recorder_url/ · Markdown: https://docs.speakai.co/mcp/tools/recorders-surveys/generate_recorder_url/index.md Use the Speak AI MCP server tool `generate_recorder_url` to generate a shareable public URL for a recorder/survey. ## What does it do? Generate a shareable public URL for a recorder/survey. ## Parameters `generate_recorder_url` takes 1 parameter, all of them required. | Name | Type | Required | Description | | --- | --- | --- | --- | | `recorderId` | string | Yes | Unique identifier of the recorder | ## Behaviour The Speak AI MCP server publishes these behaviour hints for `generate_recorder_url`. - Only reads data. Does not modify your workspace. - Does not delete or overwrite existing data. - Repeating an identical call is safe. - Can reach systems outside Speak AI. ## Related - [Recorders & surveys](/mcp/tools/recorders-surveys/) lists the rest of the Recorders & surveys category. - [Tool reference](/mcp/tools/) lists every Speak AI MCP server tool. - [MCP server](/mcp/) covers setup, supported clients, and what agents can do once connected. # Get Recorder Info > Get detailed information about a specific recorder including its settings and questions. Source: https://docs.speakai.co/mcp/tools/recorders-surveys/get_recorder_info/ · Markdown: https://docs.speakai.co/mcp/tools/recorders-surveys/get_recorder_info/index.md Use the Speak AI MCP server tool `get_recorder_info` to get detailed information about a specific recorder including its settings and questions. ## What does it do? Get detailed information about a specific recorder including its settings and questions. ## Parameters `get_recorder_info` takes 1 parameter, all of them required. | Name | Type | Required | Description | | --- | --- | --- | --- | | `recorderId` | string | Yes | Unique identifier of the recorder | ## Behaviour The Speak AI MCP server publishes these behaviour hints for `get_recorder_info`. - Only reads data. Does not modify your workspace. - Does not delete or overwrite existing data. - Repeating an identical call is safe. - Stays inside Speak AI. Does not reach other systems. ## Related - [Recorders & surveys](/mcp/tools/recorders-surveys/) lists the rest of the Recorders & surveys category. - [Tool reference](/mcp/tools/) lists every Speak AI MCP server tool. - [MCP server](/mcp/) covers setup, supported clients, and what agents can do once connected. # Get Recorder Submissions > List all submissions/recordings collected by a specific recorder. Source: https://docs.speakai.co/mcp/tools/recorders-surveys/get_recorder_recordings/ · Markdown: https://docs.speakai.co/mcp/tools/recorders-surveys/get_recorder_recordings/index.md Use the Speak AI MCP server tool `get_recorder_recordings` to list all submissions/recordings collected by a specific recorder. ## What does it do? List all submissions/recordings collected by a specific recorder. ## Parameters `get_recorder_recordings` takes 1 parameter, all of them required. | Name | Type | Required | Description | | --- | --- | --- | --- | | `recorderId` | string | Yes | Unique identifier of the recorder | ## Behaviour The Speak AI MCP server publishes these behaviour hints for `get_recorder_recordings`. - Only reads data. Does not modify your workspace. - Does not delete or overwrite existing data. - Repeating an identical call is safe. - Stays inside Speak AI. Does not reach other systems. ## Related - [Recorders & surveys](/mcp/tools/recorders-surveys/) lists the rest of the Recorders & surveys category. - [Tool reference](/mcp/tools/) lists every Speak AI MCP server tool. - [MCP server](/mcp/) covers setup, supported clients, and what agents can do once connected. # List Recorders > List all recorders/surveys in the workspace. Source: https://docs.speakai.co/mcp/tools/recorders-surveys/list_recorders/ · Markdown: https://docs.speakai.co/mcp/tools/recorders-surveys/list_recorders/index.md Use the Speak AI MCP server tool `list_recorders` to list all recorders/surveys in the workspace. ## What does it do? List all recorders/surveys in the workspace. ## Parameters `list_recorders` takes 3 parameters, all of them optional. | Name | Type | Required | Description | | --- | --- | --- | --- | | `page` | number | No | Page number (0-based, default: 0) | | `pageSize` | number | No | Results per page (default: 20, max: 500) | | `sortBy` | string | No | Sort field, e.g. "createdAt:desc" | ## Behaviour The Speak AI MCP server publishes these behaviour hints for `list_recorders`. - Only reads data. Does not modify your workspace. - Does not delete or overwrite existing data. - Repeating an identical call is safe. - Stays inside Speak AI. Does not reach other systems. ## Related - [Recorders & surveys](/mcp/tools/recorders-surveys/) lists the rest of the Recorders & surveys category. - [Tool reference](/mcp/tools/) lists every Speak AI MCP server tool. - [MCP server](/mcp/) covers setup, supported clients, and what agents can do once connected. # Update Recorder Questions > Update the survey questions and respondent-info settings for a recorder. Source: https://docs.speakai.co/mcp/tools/recorders-surveys/update_recorder_questions/ · Markdown: https://docs.speakai.co/mcp/tools/recorders-surveys/update_recorder_questions/index.md Use the Speak AI MCP server tool `update_recorder_questions` to update the survey questions and respondent-info settings for a recorder. ## What does it do? Update the survey questions and respondent-info settings for a recorder. ## Parameters `update_recorder_questions` takes 5 parameters, 2 of them required. | Name | Type | Required | Description | | --- | --- | --- | --- | | `recorderId` | string | Yes | Unique identifier of the recorder | | `name` | boolean | No | Whether to collect the respondent's name | | `email` | boolean | No | Whether to collect the respondent's email | | `questions` | array of object | Yes | Survey questions. Each: \{ question, isRequired, answerType, options?, includeOther?, fieldId? \}. answerType must be one of: "single", "multiple", "checkbox", "radiobutton", "dropdownlist", "date", "time", "datetime". Choice types (single, multiple, checkbox, radiobutton, dropdownlist) take options:string[] and includeOther:boolean (adds a free-text "Other"). date/time/datetime take no options. There is no free-text/rating/number answerType. (id? may also be passed to update an existing question.) | | `consent` | object | No | Consent screen: \{ isEnabled, title, description, yesButtonLabel, noButtonLabel, isRequired, fieldId? \} | ## Behaviour The Speak AI MCP server publishes these behaviour hints for `update_recorder_questions`. - Can change data in your workspace. - Can delete or overwrite data. Use with care. - Repeating an identical call is safe. - Can reach systems outside Speak AI. ## Related - [Recorders & surveys](/mcp/tools/recorders-surveys/) lists the rest of the Recorders & surveys category. - [Tool reference](/mcp/tools/) lists every Speak AI MCP server tool. - [MCP server](/mcp/) covers setup, supported clients, and what agents can do once connected. # Update Recorder Settings > Update configuration settings for a recorder (branding, capture options, etc.). Source: https://docs.speakai.co/mcp/tools/recorders-surveys/update_recorder_settings/ · Markdown: https://docs.speakai.co/mcp/tools/recorders-surveys/update_recorder_settings/index.md Use the Speak AI MCP server tool `update_recorder_settings` to update configuration settings for a recorder (branding, capture options, etc.). ## What does it do? Update configuration settings for a recorder (branding, capture options, etc.). `name` must always be supplied. ## Parameters `update_recorder_settings` takes 11 parameters, 2 of them required. | Name | Type | Required | Description | | --- | --- | --- | --- | | `recorderId` | string | Yes | Unique identifier of the recorder | | `name` | string | Yes | Display name for the recorder | | `description` | string | No | Recorder description | | `sourceLanguage` | string | No | Transcription language code (e.g. en-US) | | `folderId` | string | No | Folder to store recordings in | | `isAutoAnalyze` | boolean | No | Whether to auto-analyze submissions | | `notifyUsers` | array of string | No | User IDs to notify on new submissions | | `duration` | object | No | Recording duration: \{ minDuration, maxDuration \} in seconds | | `options` | object | No | Capture options: \{ audio, video, screenShare, liveTranscription, upload:\{ file, text, multiple, url \} \}. All booleans | | `notification` | object | No | Notification toggles: \{ upload, client \}. Booleans | | `meta` | object | No | Branding/customization: \{ primaryColor, backgroundImg, logo, fontColor, fontFamily, theme, customCSS, hideWaveform, hideTitle, hideDescription, hideSubmitButton, submitButtonLabel, countdown, hideImages \} | ## Behaviour The Speak AI MCP server publishes these behaviour hints for `update_recorder_settings`. - Can change data in your workspace. - Does not delete or overwrite existing data. - Repeating an identical call is safe. - Can reach systems outside Speak AI. ## Related - [Recorders & surveys](/mcp/tools/recorders-surveys/) lists the rest of the Recorders & surveys category. - [Tool reference](/mcp/tools/) lists every Speak AI MCP server tool. - [MCP server](/mcp/) covers setup, supported clients, and what agents can do once connected. # Search & analytics tools in the Speak AI MCP server > Full-text search across transcripts, insights, and metadata. Workspace-level stats. All 3 Search & analytics tools, with parameters and behaviour hints. Source: https://docs.speakai.co/mcp/tools/search-analytics/ · Markdown: https://docs.speakai.co/mcp/tools/search-analytics/index.md The Search & analytics category groups 3 of the Speak AI MCP server's tools. Full-text search across transcripts, insights, and metadata. Workspace-level stats. ## Which Search & analytics tools does the Speak AI MCP server have? The Speak AI MCP server has 3 Search & analytics tools. Each one has its own page with a plain-language summary, its parameters, and its behaviour hints. - [`search_media`](/mcp/tools/search-analytics/search_media/): Deep search across all media transcripts, insights, and metadata. - [`get_media_statistics`](/mcp/tools/search-analytics/get_media_statistics/): Get workspace-level media statistics: total counts, processing status breakdown, storage usage, etc. - [`list_supported_languages`](/mcp/tools/search-analytics/list_supported_languages/): List all languages supported for transcription. ## Related - [Tool reference](/mcp/tools/) lists every Speak AI MCP server tool across every category. - [MCP server](/mcp/) covers setup, supported clients, and what agents can do once connected. # Get Media Statistics > Get workspace-level media statistics: total counts, processing status breakdown, storage usage, etc. Source: https://docs.speakai.co/mcp/tools/search-analytics/get_media_statistics/ · Markdown: https://docs.speakai.co/mcp/tools/search-analytics/get_media_statistics/index.md Use the Speak AI MCP server tool `get_media_statistics` to get workspace-level media statistics: total counts, processing status breakdown, storage usage, etc. ## What does it do? Get workspace-level media statistics: total counts, processing status breakdown, storage usage, etc. ## Parameters `get_media_statistics` takes no parameters. ## Behaviour The Speak AI MCP server publishes these behaviour hints for `get_media_statistics`. - Only reads data. Does not modify your workspace. - Does not delete or overwrite existing data. - Repeating an identical call is safe. - Stays inside Speak AI. Does not reach other systems. ## Related - [Search & analytics](/mcp/tools/search-analytics/) lists the rest of the Search & analytics category. - [Tool reference](/mcp/tools/) lists every Speak AI MCP server tool. - [MCP server](/mcp/) covers setup, supported clients, and what agents can do once connected. # List Supported Languages > List all languages supported for transcription. Source: https://docs.speakai.co/mcp/tools/search-analytics/list_supported_languages/ · Markdown: https://docs.speakai.co/mcp/tools/search-analytics/list_supported_languages/index.md Use the Speak AI MCP server tool `list_supported_languages` to list all languages supported for transcription. ## What does it do? List all languages supported for transcription. Use the language codes when uploading media with a specific sourceLanguage. ## Parameters `list_supported_languages` takes no parameters. ## Behaviour The Speak AI MCP server publishes these behaviour hints for `list_supported_languages`. - Only reads data. Does not modify your workspace. - Does not delete or overwrite existing data. - Repeating an identical call is safe. - Stays inside Speak AI. Does not reach other systems. ## Related - [Search & analytics](/mcp/tools/search-analytics/) lists the rest of the Search & analytics category. - [Tool reference](/mcp/tools/) lists every Speak AI MCP server tool. - [MCP server](/mcp/) covers setup, supported clients, and what agents can do once connected. # Search Media Library > Deep search across all media transcripts, insights, and metadata. Source: https://docs.speakai.co/mcp/tools/search-analytics/search_media/ · Markdown: https://docs.speakai.co/mcp/tools/search-analytics/search_media/index.md `search_media` is a tool in the Speak AI MCP server. Deep search across all media transcripts, insights, and metadata. ## What does it do? Deep search across all media transcripts, insights, and metadata. Returns matching media with sentiment data, tags, and content excerpts. Use this to find specific topics, keywords, or themes across your entire library. For filtering by media type, folder, tags, or speakers, use the filterList parameter. Results are scoped by date range: defaults to current year if not specified. ## Parameters `search_media` takes 4 parameters, 1 of them required. | Name | Type | Required | Description | | --- | --- | --- | --- | | `query` | string | Yes | Search query: searches across transcripts, insights, and metadata | | `startDate` | string | No | Start date for search range (ISO 8601). Defaults to start of current year. | | `endDate` | string | No | End date for search range (ISO 8601). Defaults to now. | | `filterList` | array of object | No | Advanced filters for narrowing search results by tags, speakers, media type, sentiment, folder, etc. | ## Behaviour The Speak AI MCP server publishes these behaviour hints for `search_media`. - Only reads data. Does not modify your workspace. - Does not delete or overwrite existing data. - Repeating an identical call is safe. - Stays inside Speak AI. Does not reach other systems. ## Related - [Search & analytics](/mcp/tools/search-analytics/) lists the rest of the Search & analytics category. - [Tool reference](/mcp/tools/) lists every Speak AI MCP server tool. - [MCP server](/mcp/) covers setup, supported clients, and what agents can do once connected. # Text notes tools in the Speak AI MCP server reference > Standalone AI-analyzed text notes plus custom fields you can tag any media file with. All 4 Text notes tools, with parameters and behaviour hints. Source: https://docs.speakai.co/mcp/tools/text-notes/ · Markdown: https://docs.speakai.co/mcp/tools/text-notes/index.md The Text notes category groups 4 of the Speak AI MCP server's tools. Standalone AI-analyzed text notes plus custom fields you can tag any media file with. ## Which Text notes tools does the Speak AI MCP server have? The Speak AI MCP server has 4 Text notes tools. Each one has its own page with a plain-language summary, its parameters, and its behaviour hints. - [`create_text_note`](/mcp/tools/text-notes/create_text_note/): Create a new text note in Speak AI for analysis. - [`get_text_insight`](/mcp/tools/text-notes/get_text_insight/): Retrieve AI-generated insights for a text note, including topics, sentiment, summaries, and action items. - [`reanalyze_text`](/mcp/tools/text-notes/reanalyze_text/): Trigger a re-analysis of an existing text note to regenerate insights with the latest AI models. - [`update_text_note`](/mcp/tools/text-notes/update_text_note/): Update an existing text note's name, content, or metadata. ## Related - [Tool reference](/mcp/tools/) lists every Speak AI MCP server tool across every category. - [MCP server](/mcp/) covers setup, supported clients, and what agents can do once connected. # Create Text Note > Create a new text note in Speak AI for analysis. Source: https://docs.speakai.co/mcp/tools/text-notes/create_text_note/ · Markdown: https://docs.speakai.co/mcp/tools/text-notes/create_text_note/index.md Use the Speak AI MCP server tool `create_text_note` to create a new text note in Speak AI for analysis. ## What does it do? Create a new text note in Speak AI for analysis. The content will be analyzed for insights, topics, and sentiment. ## Parameters `create_text_note` takes 7 parameters, 1 of them required. | Name | Type | Required | Description | | --- | --- | --- | --- | | `name` | string | Yes | Title/name for the text note | | `text` | string | No | Full text content to analyze | | `description` | string | No | Description for the text note | | `folderId` | string | No | ID of the folder to place the note in | | `tags` | string | No | Comma-separated tags or array of tag strings | | `callbackUrl` | string | No | Webhook callback URL for completion notification | | `fields` | array of object | No | Custom field values to attach to the text note | ## Behaviour The Speak AI MCP server publishes these behaviour hints for `create_text_note`. - Can change data in your workspace. - Does not delete or overwrite existing data. - Repeating an identical call can have an extra effect. - Can reach systems outside Speak AI. ## Related - [Text notes](/mcp/tools/text-notes/) lists the rest of the Text notes category. - [Tool reference](/mcp/tools/) lists every Speak AI MCP server tool. - [MCP server](/mcp/) covers setup, supported clients, and what agents can do once connected. # Get Text Note Insights > Retrieve AI-generated insights for a text note, including topics, sentiment, summaries, and action items. Source: https://docs.speakai.co/mcp/tools/text-notes/get_text_insight/ · Markdown: https://docs.speakai.co/mcp/tools/text-notes/get_text_insight/index.md Use the Speak AI MCP server tool `get_text_insight` to retrieve AI-generated insights for a text note, including topics, sentiment, summaries, and action items. ## What does it do? Retrieve AI-generated insights for a text note, including topics, sentiment, summaries, and action items. ## Parameters `get_text_insight` takes 1 parameter, all of them required. | Name | Type | Required | Description | | --- | --- | --- | --- | | `mediaId` | string | Yes | Unique identifier of the text note | ## Behaviour The Speak AI MCP server publishes these behaviour hints for `get_text_insight`. - Only reads data. Does not modify your workspace. - Does not delete or overwrite existing data. - Repeating an identical call is safe. - Stays inside Speak AI. Does not reach other systems. ## Related - [Text notes](/mcp/tools/text-notes/) lists the rest of the Text notes category. - [Tool reference](/mcp/tools/) lists every Speak AI MCP server tool. - [MCP server](/mcp/) covers setup, supported clients, and what agents can do once connected. # Re-analyze Text Note > Trigger a re-analysis of an existing text note to regenerate insights with the latest AI models. Source: https://docs.speakai.co/mcp/tools/text-notes/reanalyze_text/ · Markdown: https://docs.speakai.co/mcp/tools/text-notes/reanalyze_text/index.md Use the Speak AI MCP server tool `reanalyze_text` to trigger a re-analysis of an existing text note to regenerate insights with the latest AI models. ## What does it do? Trigger a re-analysis of an existing text note to regenerate insights with the latest AI models. ## Parameters `reanalyze_text` takes 1 parameter, all of them required. | Name | Type | Required | Description | | --- | --- | --- | --- | | `mediaId` | string | Yes | Unique identifier of the text note to reanalyze | ## Behaviour The Speak AI MCP server publishes these behaviour hints for `reanalyze_text`. - Can change data in your workspace. - Does not delete or overwrite existing data. - Repeating an identical call can have an extra effect. - Stays inside Speak AI. Does not reach other systems. ## Related - [Text notes](/mcp/tools/text-notes/) lists the rest of the Text notes category. - [Tool reference](/mcp/tools/) lists every Speak AI MCP server tool. - [MCP server](/mcp/) covers setup, supported clients, and what agents can do once connected. # Update Text Note > Update an existing text note's name, content, or metadata. Source: https://docs.speakai.co/mcp/tools/text-notes/update_text_note/ · Markdown: https://docs.speakai.co/mcp/tools/text-notes/update_text_note/index.md Use the Speak AI MCP server tool `update_text_note` to update an existing text note's name, content, or metadata. ## What does it do? Update an existing text note's name, content, or metadata. Updating text content will trigger re-analysis. ## Parameters `update_text_note` takes 6 parameters, 1 of them required. | Name | Type | Required | Description | | --- | --- | --- | --- | | `mediaId` | string | Yes | Unique identifier of the text note | | `name` | string | No | New name for the text note | | `text` | string | No | New text content (will trigger re-analysis) | | `description` | string | No | Updated description | | `folderId` | string | No | Move to a different folder | | `tags` | string | No | Updated comma-separated tags | ## Behaviour The Speak AI MCP server publishes these behaviour hints for `update_text_note`. - Can change data in your workspace. - Can delete or overwrite data. Use with care. - Repeating an identical call is safe. - Stays inside Speak AI. Does not reach other systems. ## Related - [Text notes](/mcp/tools/text-notes/) lists the rest of the Text notes category. - [Tool reference](/mcp/tools/) lists every Speak AI MCP server tool. - [MCP server](/mcp/) covers setup, supported clients, and what agents can do once connected. # Users & teams tools in the Speak AI MCP server reference > List workspace members and manage user groups. All 5 Users & teams tools in the Speak AI MCP server, with parameters and behaviour hints. Source: https://docs.speakai.co/mcp/tools/users-team/ · Markdown: https://docs.speakai.co/mcp/tools/users-team/index.md The Users & teams category groups 5 of the Speak AI MCP server's tools. List workspace members and manage user groups. ## Which Users & teams tools does the Speak AI MCP server have? The Speak AI MCP server has 5 Users & teams tools. Each one has its own page with a plain-language summary, its parameters, and its behaviour hints. - [`list_users`](/mcp/tools/users-team/list_users/): List the users (members) in the workspace/company, with their ids, names, emails, and permissions. - [`list_user_groups`](/mcp/tools/users-team/list_user_groups/): List all user groups in the company. - [`create_user_group`](/mcp/tools/users-team/create_user_group/): Create a new user group and assign members. - [`update_user_group`](/mcp/tools/users-team/update_user_group/): Update a user group's name and member list. - [`delete_user_group`](/mcp/tools/users-team/delete_user_group/): Delete a user group. ## Related - [Tool reference](/mcp/tools/) lists every Speak AI MCP server tool across every category. - [MCP server](/mcp/) covers setup, supported clients, and what agents can do once connected. # Create User Group > Create a new user group and assign members. Source: https://docs.speakai.co/mcp/tools/users-team/create_user_group/ · Markdown: https://docs.speakai.co/mcp/tools/users-team/create_user_group/index.md Use the Speak AI MCP server tool `create_user_group` to create a new user group and assign members. ## What does it do? Create a new user group and assign members. Member ids come from `list_users`. Fails with a 409 if a group with the same name already exists in the company. ## Parameters `create_user_group` takes 2 parameters, 1 of them required. | Name | Type | Required | Description | | --- | --- | --- | --- | | `description` | string | Yes | Group name | | `users` | array of string | No | User _id strings to add as members (fetch via `list_users`) | ## Behaviour The Speak AI MCP server publishes these behaviour hints for `create_user_group`. - Can change data in your workspace. - Does not delete or overwrite existing data. - Repeating an identical call can have an extra effect. - Stays inside Speak AI. Does not reach other systems. ## Related - [Users & teams](/mcp/tools/users-team/) lists the rest of the Users & teams category. - [Tool reference](/mcp/tools/) lists every Speak AI MCP server tool. - [MCP server](/mcp/) covers setup, supported clients, and what agents can do once connected. # Delete User Group > Delete a user group. Source: https://docs.speakai.co/mcp/tools/users-team/delete_user_group/ · Markdown: https://docs.speakai.co/mcp/tools/users-team/delete_user_group/index.md Use the Speak AI MCP server tool `delete_user_group` to delete a user group. ## What does it do? Delete a user group. This removes the group only; it does not delete the users themselves. ## Parameters `delete_user_group` takes 1 parameter, all of them required. | Name | Type | Required | Description | | --- | --- | --- | --- | | `id` | string | Yes | Group _id to delete (from `list_user_groups`) | ## Behaviour The Speak AI MCP server publishes these behaviour hints for `delete_user_group`. - Can change data in your workspace. - Can delete or overwrite data. Use with care. - Repeating an identical call is safe. - Stays inside Speak AI. Does not reach other systems. ## Related - [Users & teams](/mcp/tools/users-team/) lists the rest of the Users & teams category. - [Tool reference](/mcp/tools/) lists every Speak AI MCP server tool. - [MCP server](/mcp/) covers setup, supported clients, and what agents can do once connected. # List User Groups > List all user groups in the company. Source: https://docs.speakai.co/mcp/tools/users-team/list_user_groups/ · Markdown: https://docs.speakai.co/mcp/tools/users-team/list_user_groups/index.md Use the Speak AI MCP server tool `list_user_groups` to list all user groups in the company. ## What does it do? List all user groups in the company. Each group includes its members (hydrated names/emails) and member ids. Use this to discover group ids and current membership before updating or deleting a group. ## Parameters `list_user_groups` takes no parameters. ## Behaviour The Speak AI MCP server publishes these behaviour hints for `list_user_groups`. - Only reads data. Does not modify your workspace. - Does not delete or overwrite existing data. - Repeating an identical call is safe. - Stays inside Speak AI. Does not reach other systems. ## Related - [Users & teams](/mcp/tools/users-team/) lists the rest of the Users & teams category. - [Tool reference](/mcp/tools/) lists every Speak AI MCP server tool. - [MCP server](/mcp/) covers setup, supported clients, and what agents can do once connected. # List Users > List the users (members) in the workspace/company, with their ids, names, emails, and permissions. Source: https://docs.speakai.co/mcp/tools/users-team/list_users/ · Markdown: https://docs.speakai.co/mcp/tools/users-team/list_users/index.md Use the Speak AI MCP server tool `list_users` to list the users (members) in the workspace/company, with their ids, names, emails, and permissions. ## What does it do? List the users (members) in the workspace/company, with their ids, names, emails, and permissions. Use the returned _id values when assigning members to user groups. ## Parameters `list_users` takes 4 parameters, all of them optional. | Name | Type | Required | Description | | --- | --- | --- | --- | | `filterName` | string | No | Search text. Plain text matches first/last name or email; prefix with "email:" or "name:" to scope, e.g. "email:jane@acme.com". | | `sortBy` | string | No | Sort expression "field:asc" or "field:desc", e.g. "createdAt:desc", "email:asc" | | `page` | number | No | 0-based page index (default 0) | | `pageSize` | number | No | Results per page (default 50) | ## Behaviour The Speak AI MCP server publishes these behaviour hints for `list_users`. - Only reads data. Does not modify your workspace. - Does not delete or overwrite existing data. - Repeating an identical call is safe. - Stays inside Speak AI. Does not reach other systems. ## Related - [Users & teams](/mcp/tools/users-team/) lists the rest of the Users & teams category. - [Tool reference](/mcp/tools/) lists every Speak AI MCP server tool. - [MCP server](/mcp/) covers setup, supported clients, and what agents can do once connected. # Update User Group > Update a user group's name and member list. Source: https://docs.speakai.co/mcp/tools/users-team/update_user_group/ · Markdown: https://docs.speakai.co/mcp/tools/users-team/update_user_group/index.md Use the Speak AI MCP server tool `update_user_group` to update a user group's name and member list. ## What does it do? Update a user group's name and member list. NOTE: the users array is a FULL REPLACEMENT, not a delta. Any member id you omit is removed from the group. Fetch the current members with `list_user_groups` first and send the complete list. ## Parameters `update_user_group` takes 3 parameters, all of them required. | Name | Type | Required | Description | | --- | --- | --- | --- | | `_id` | string | Yes | Group _id to update (from `list_user_groups`) | | `description` | string | Yes | New group name | | `users` | array of string | Yes | Full replacement list of member _id strings (omitted users are removed) | ## Behaviour The Speak AI MCP server publishes these behaviour hints for `update_user_group`. - Can change data in your workspace. - Can delete or overwrite data. Use with care. - Repeating an identical call is safe. - Stays inside Speak AI. Does not reach other systems. ## Related - [Users & teams](/mcp/tools/users-team/) lists the rest of the Users & teams category. - [Tool reference](/mcp/tools/) lists every Speak AI MCP server tool. - [MCP server](/mcp/) covers setup, supported clients, and what agents can do once connected. # Webhooks tools in the Speak AI MCP server reference > Trigger actions on new recordings. Send events to your own backend. All 7 Webhooks tools in the Speak AI MCP server, with parameters and behaviour hints. Source: https://docs.speakai.co/mcp/tools/webhooks/ · Markdown: https://docs.speakai.co/mcp/tools/webhooks/index.md The Webhooks category groups 7 of the Speak AI MCP server's tools. Trigger actions on new recordings. Send events to your own backend. ## Which Webhooks tools does the Speak AI MCP server have? The Speak AI MCP server has 7 Webhooks tools. Each one has its own page with a plain-language summary, its parameters, and its behaviour hints. - [`create_webhook`](/mcp/tools/webhooks/create_webhook/): Create a new webhook to receive real-time notifications when events occur in Speak AI. - [`list_webhooks`](/mcp/tools/webhooks/list_webhooks/): List all configured webhooks in the workspace. - [`update_webhook`](/mcp/tools/webhooks/update_webhook/): Update an existing webhook. - [`delete_webhook`](/mcp/tools/webhooks/delete_webhook/): Delete a webhook and stop receiving notifications at its endpoint. - [`provision_inbound_webhook`](/mcp/tools/webhooks/provision_inbound_webhook/): Provision a standalone inbound webhook and get its public receive URL (inboundUrl) BEFORE creating an automation. - [`get_inbound_webhook`](/mcp/tools/webhooks/get_inbound_webhook/): Get an inbound webhook's public receive URL, captured sample payload, and the ready-to-paste \{\{trigger.payload.*\}\} tokens for mapping payload values into automation steps (speak-upload name/sourceUrl, fieldsMap custom-field values, notify/outbound-webhook templates). - [`get_webhook_attempts`](/mcp/tools/webhooks/get_webhook_attempts/): Get the delivery log for an inbound webhook: each received request with its HTTP acknowledgement status (200 = sample captured, 202 = accepted and run started, 401/403 = rejected) and the automation run it started. ## Related - [Tool reference](/mcp/tools/) lists every Speak AI MCP server tool across every category. - [MCP server](/mcp/) covers setup, supported clients, and what agents can do once connected. # Create Webhook > Create a new webhook to receive real-time notifications when events occur in Speak AI. Source: https://docs.speakai.co/mcp/tools/webhooks/create_webhook/ · Markdown: https://docs.speakai.co/mcp/tools/webhooks/create_webhook/index.md Use the Speak AI MCP server tool `create_webhook` to create a new webhook to receive real-time notifications when events occur in Speak AI. ## What does it do? Create a new webhook to receive real-time notifications when events occur in Speak AI. ## Parameters `create_webhook` takes 3 parameters, 1 of them required. | Name | Type | Required | Description | | --- | --- | --- | --- | | `callbackUrl` | string | Yes | HTTPS endpoint URL to receive webhook payloads | | `events` | array of string | No | Array of event types to subscribe to | | `description` | string | No | Optional description for the webhook | ## Behaviour The Speak AI MCP server publishes these behaviour hints for `create_webhook`. - Can change data in your workspace. - Does not delete or overwrite existing data. - Repeating an identical call can have an extra effect. - Can reach systems outside Speak AI. ## Related - [Webhooks](/mcp/tools/webhooks/) lists the rest of the Webhooks category. - [Tool reference](/mcp/tools/) lists every Speak AI MCP server tool. - [MCP server](/mcp/) covers setup, supported clients, and what agents can do once connected. # Delete Webhook > Delete a webhook and stop receiving notifications at its endpoint. Source: https://docs.speakai.co/mcp/tools/webhooks/delete_webhook/ · Markdown: https://docs.speakai.co/mcp/tools/webhooks/delete_webhook/index.md Use the Speak AI MCP server tool `delete_webhook` to delete a webhook and stop receiving notifications at its endpoint. ## What does it do? Delete a webhook and stop receiving notifications at its endpoint. ## Parameters `delete_webhook` takes 1 parameter, all of them required. | Name | Type | Required | Description | | --- | --- | --- | --- | | `webhookId` | string | Yes | Unique identifier of the webhook to delete | ## Behaviour The Speak AI MCP server publishes these behaviour hints for `delete_webhook`. - Can change data in your workspace. - Can delete or overwrite data. Use with care. - Repeating an identical call is safe. - Can reach systems outside Speak AI. ## Related - [Webhooks](/mcp/tools/webhooks/) lists the rest of the Webhooks category. - [Tool reference](/mcp/tools/) lists every Speak AI MCP server tool. - [MCP server](/mcp/) covers setup, supported clients, and what agents can do once connected. # Get Inbound Webhook > Get an inbound webhook's public receive URL, captured sample payload, and the ready-to-paste {{trigger.payload.*}} tokens for mapping payload values into automation steps (speak-upload name/sourceUrl, fieldsMap custom-field values, notify/outbound-webhook templates). Source: https://docs.speakai.co/mcp/tools/webhooks/get_inbound_webhook/ · Markdown: https://docs.speakai.co/mcp/tools/webhooks/get_inbound_webhook/index.md Use the Speak AI MCP server tool `get_inbound_webhook` to get an inbound webhook's public receive URL, captured sample payload, and the ready-to-paste \{\{trigger.payload.*\}\} tokens for mapping payload values into automation steps (speak-upload name/sourceUrl, fieldsMap custom-field values, notify/outbound-webhook templates). ## What does it do? Get an inbound webhook's public receive URL, captured sample payload, and the ready-to-paste \{\{trigger.payload.*\}\} tokens for mapping payload values into automation steps (speak-upload name/sourceUrl, fieldsMap custom-field values, notify/outbound-webhook templates). Pass either the webhookId or the automationId of an inbound-webhook automation. If no sample has been captured yet, send a test payload to the inboundUrl first (append ?test=1 to capture without running the automation). ## Parameters `get_inbound_webhook` takes 3 parameters, all of them optional. | Name | Type | Required | Description | | --- | --- | --- | --- | | `webhookId` | string | No | Inbound webhook id (from `provision_inbound_webhook` or an automation's trigger.webhookId) | | `automationId` | string | No | Automation id: resolves the bound webhookId and childKey automatically | | `childKey` | string | No | Override the dot-path used to narrow mappable payload paths (defaults to the automation's trigger.childKey) | ## Behaviour The Speak AI MCP server publishes these behaviour hints for `get_inbound_webhook`. - Only reads data. Does not modify your workspace. - Does not delete or overwrite existing data. - Repeating an identical call is safe. - Stays inside Speak AI. Does not reach other systems. ## Related - [Webhooks](/mcp/tools/webhooks/) lists the rest of the Webhooks category. - [Tool reference](/mcp/tools/) lists every Speak AI MCP server tool. - [MCP server](/mcp/) covers setup, supported clients, and what agents can do once connected. # Get Webhook Attempts > Get the delivery log for an inbound webhook: each received request with its HTTP acknowledgement status (200 = sample captured, 202 = accepted and run started, 401/403 = rejected) and the automation run it started. Source: https://docs.speakai.co/mcp/tools/webhooks/get_webhook_attempts/ · Markdown: https://docs.speakai.co/mcp/tools/webhooks/get_webhook_attempts/index.md Use the Speak AI MCP server tool `get_webhook_attempts` to get the delivery log for an inbound webhook: each received request with its HTTP acknowledgement status (200 = sample captured, 202 = accepted and run started, 401/403 = rejected) and the automation run it started. ## What does it do? Get the delivery log for an inbound webhook: each received request with its HTTP acknowledgement status (200 = sample captured, 202 = accepted and run started, 401/403 = rejected) and the automation run it started. Use `get_automation_runs` for the run outcomes themselves. ## Parameters `get_webhook_attempts` takes 3 parameters, 1 of them required. | Name | Type | Required | Description | | --- | --- | --- | --- | | `webhookId` | string | Yes | Unique identifier of the inbound webhook | | `page` | number | No | 0-based page index | | `pageSize` | number | No | Results per page | ## Behaviour The Speak AI MCP server publishes these behaviour hints for `get_webhook_attempts`. - Only reads data. Does not modify your workspace. - Does not delete or overwrite existing data. - Repeating an identical call is safe. - Stays inside Speak AI. Does not reach other systems. ## Related - [Webhooks](/mcp/tools/webhooks/) lists the rest of the Webhooks category. - [Tool reference](/mcp/tools/) lists every Speak AI MCP server tool. - [MCP server](/mcp/) covers setup, supported clients, and what agents can do once connected. # List Webhooks > List all configured webhooks in the workspace. Source: https://docs.speakai.co/mcp/tools/webhooks/list_webhooks/ · Markdown: https://docs.speakai.co/mcp/tools/webhooks/list_webhooks/index.md Use the Speak AI MCP server tool `list_webhooks` to list all configured webhooks in the workspace. ## What does it do? List all configured webhooks in the workspace. ## Parameters `list_webhooks` takes no parameters. ## Behaviour The Speak AI MCP server publishes these behaviour hints for `list_webhooks`. - Only reads data. Does not modify your workspace. - Does not delete or overwrite existing data. - Repeating an identical call is safe. - Stays inside Speak AI. Does not reach other systems. ## Related - [Webhooks](/mcp/tools/webhooks/) lists the rest of the Webhooks category. - [Tool reference](/mcp/tools/) lists every Speak AI MCP server tool. - [MCP server](/mcp/) covers setup, supported clients, and what agents can do once connected. # Provision Inbound Webhook > Provision a standalone inbound webhook and get its public receive URL (inboundUrl) BEFORE creating an automation. Source: https://docs.speakai.co/mcp/tools/webhooks/provision_inbound_webhook/ · Markdown: https://docs.speakai.co/mcp/tools/webhooks/provision_inbound_webhook/index.md Use the Speak AI MCP server tool `provision_inbound_webhook` to provision a standalone inbound webhook and get its public receive URL (inboundUrl) BEFORE creating an automation. ## What does it do? Provision a standalone inbound webhook and get its public receive URL (inboundUrl) BEFORE creating an automation. Webhook-first flow: provision, send a test payload to the URL (append ?test=1 to only capture a sample without running anything), inspect mappable payload paths with `get_inbound_webhook`, then pass the webhookId as trigger.webhookId to `create_automation`. ## Parameters `provision_inbound_webhook` takes no parameters. ## Behaviour The Speak AI MCP server publishes these behaviour hints for `provision_inbound_webhook`. - Can change data in your workspace. - Does not delete or overwrite existing data. - Repeating an identical call can have an extra effect. - Can reach systems outside Speak AI. ## Related - [Webhooks](/mcp/tools/webhooks/) lists the rest of the Webhooks category. - [Tool reference](/mcp/tools/) lists every Speak AI MCP server tool. - [MCP server](/mcp/) covers setup, supported clients, and what agents can do once connected. # Update Webhook > Update an existing webhook. Source: https://docs.speakai.co/mcp/tools/webhooks/update_webhook/ · Markdown: https://docs.speakai.co/mcp/tools/webhooks/update_webhook/index.md Use the Speak AI MCP server tool `update_webhook` to update an existing webhook. ## What does it do? Update an existing webhook. This replaces the webhook config, so `callbackUrl` must always be supplied. ## Parameters `update_webhook` takes 4 parameters, 2 of them required. | Name | Type | Required | Description | | --- | --- | --- | --- | | `webhookId` | string | Yes | Unique identifier of the webhook | | `callbackUrl` | string | Yes | HTTPS endpoint URL to receive webhook payloads | | `events` | array of string | No | Updated array of event types | | `description` | string | No | Optional description for the webhook | ## Behaviour The Speak AI MCP server publishes these behaviour hints for `update_webhook`. - Can change data in your workspace. - Does not delete or overwrite existing data. - Repeating an identical call is safe. - Can reach systems outside Speak AI. ## Related - [Webhooks](/mcp/tools/webhooks/) lists the rest of the Webhooks category. - [Tool reference](/mcp/tools/) lists every Speak AI MCP server tool. - [MCP server](/mcp/) covers setup, supported clients, and what agents can do once connected. # Speak AI Node SDK, use @speakai/mcp-server as a library > Install @speakai/mcp-server as a Node dependency and call registerAllTools, registerResources, registerPrompts, and createSpeakClient directly in your own code. Source: https://docs.speakai.co/sdk/ · Markdown: https://docs.speakai.co/sdk/index.md The `@speakai/mcp-server` package is both a runnable MCP server and a Node library. Install it as a dependency when you want to call Speak AI from your own Node.js code, embed its tools inside another MCP server, or build the same capabilities into a different application. The package requires Node 22 or newer. ## When should you use the SDK instead of connecting through an AI client? Use the SDK when you're writing Node and want Speak AI's tool definitions, resource readers, and prompt templates as functions you call directly, instead of exposing them through a connected AI assistant. Speak AI's own backend, speak-server, uses the package this way, registering its tools on its own `McpServer` instance rather than connecting to the hosted endpoint. If you just want an agent to use Speak AI in conversation, connect through the [MCP server](/mcp) instead. Reach for the SDK when you're building the server side of that connection yourself. ## How do you install it? Add `@speakai/mcp-server` as a dependency with your package manager. ```sh npm install @speakai/mcp-server pnpm add @speakai/mcp-server yarn add @speakai/mcp-server bun add @speakai/mcp-server ``` ## What does the package export? The package exports five functions and a static tool-name manifest for embedding Speak AI's MCP capabilities directly in your own code. ```ts import { registerAllTools, registerResources, registerPrompts, createSpeakClient, formatAxiosError, SPEAK_MCP_TOOL_NAMES, } from "@speakai/mcp-server"; ``` - **`registerAllTools(server, client?)`** registers all 112 tools on an `McpServer` instance. Pass a `client` for server-side use with per-request auth. If you omit it, the tools fall back to a default Axios client that reads `SPEAK_API_KEY` (and optionally `SPEAK_BASE_URL`) from the environment, the same as stdio mode. - **`registerResources(server, client?)`** registers the 5 resources, media library, folders, languages, transcript, and insights, the same way. - **`registerPrompts(server)`** registers the 3 prompt templates: `analyze-meeting`, `research-across-media`, and `meeting-brief`. - **`createSpeakClient({ baseUrl, apiKey, accessToken })`** returns an authenticated Axios instance for services that already manage their own access tokens, instead of letting the package fetch and refresh one for you. - **`formatAxiosError(error)`** formats an Axios error into a readable string, redacting anything that looks like a token, secret, password, cookie, or API key before the message reaches a model's context window. - **`SPEAK_MCP_TOOL_NAMES`** is a static array of every tool name `registerAllTools` registers, useful for validating or routing a tool call without instantiating a server. ## How do you register the tools on your own server? Call `registerAllTools`, `registerResources`, and `registerPrompts` on your own `McpServer` instance to expose the same capabilities the hosted Speak AI MCP server does. ```ts import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js"; import { registerAllTools, registerResources, registerPrompts } from "@speakai/mcp-server"; const server = new McpServer({ name: "speak-ai", version: "1.0.0" }); registerAllTools(server); registerResources(server); registerPrompts(server); const transport = new StdioServerTransport(); await server.connect(transport); ``` With `SPEAK_API_KEY` set in the environment, this is the same registration sequence the package's own stdio entry point runs. ## How do you pass a client with its own access token? Use `createSpeakClient` when your own service already manages Speak AI access tokens, instead of letting the package authenticate with an API key on first use. ```ts import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; import { createSpeakClient, registerAllTools } from "@speakai/mcp-server"; const server = new McpServer({ name: "your-app", version: "1.0.0" }); const client = createSpeakClient({ baseUrl: "https://api.speakai.co", apiKey: "sk_test_speak_0000000000000000", accessToken: "your-access-token", }); registerAllTools(server, client); ``` ## Related guides - [MCP server overview](/mcp) - [Connect your AI tool](/mcp) - [Authentication](/mcp/authentication)