# 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 current is this reference? Every endpoint, parameter, and response on these pages is generated from the API's OpenAPI 3.0 definition, so the reference matches what the API actually accepts and returns. When the API changes, these pages change with it. > **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 |