The Speak AI API exposes 4 meeting assistant endpoints under the base URL https://api.speakai.co/v1. Every request needs the x-speakai-key and x-access-token headers described in Authentication.
Manage Meeting Assistant Events.
Fetch all your scheduled, complete or pending meeting assistant events.
What can you do with the meeting assistant endpoints?
Speak AI groups these 4 endpoints under the meeting assistant resource. Each entry below links to the full reference for that endpoint further down this page.
Events List
/meeting-assistant/eventsGet All the Meeting Assistants Events.
You can have more flexibily by passing query params.
page - Page number. Default is 0.
pageSize - Total records per page. Default is 25.
platformType - Default value is ""
Please ensure to pass the correct platformType from the list below:
googleMeet
zoom
microsoftTeams
webexmeetingStatus - Default value is ""
Please ensure to pass the correct meetingStatus from the list below:
willJoin
scheduled
cancelled
ready
joiningCall
inCallRecording
callEndedParameters
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
platformType |
query | string | No | |
meetingStatus |
query | string | No | |
page |
query | integer | No | |
pageSize |
query | integer | No |
curl -X GET 'https://api.speakai.co/v1/meeting-assistant/events?page=0&pageSize=25' \
-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.events |
object[] |
Deeper nested fields are not listed. See the example response below for the full shape.
Example response (Events List), application/json. Arrays are shortened to one entry and long strings are cut.
{
"status": "success",
"data": {
"totalCount": 1,
"events": [
{
"source": "instant",
"_id": "64d2633e0d3c560cd10c73fd",
"currentStatus": "callEnded",
"companyId": "5e21xxxxx772xxxxxxx",
"userId": "5d0xxxxxxbca272xxxxxx",
"platform": "zoom",
"title": "Speak Ai Test Meeting",
"meetingURL": "ZOOM_MEETING_LINK",
"startTime": "2023-08-08T15:45:41.629Z",
"meetingAssistantEventId": "84f8f7d1cb13",
"attendees": [],
"history": [
{
"status": "joiningCall",
"createdAt": "2023-08-08T15:46:10.004Z"
}
],
"createdAt": "2023-08-08T15:46:06.570Z",
"updatedAt": "2023-08-08T16:31:15.046Z",
"__v": 0
}
]
}
}Delete Scheduled Assistant
/meeting-assistant/eventsDelete scheduled assistant for an event.
Parameters
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
meetingAssistantEventId |
query | string | Yes | required field |
curl -X DELETE 'https://api.speakai.co/v1/meeting-assistant/events?meetingAssistantEventId=7c583b090b1f' \
-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.status |
string |
data.data |
string |
Example response (Delete a Scheduled Meeting Assistant), application/json.
{
"status": "success",
"data": {
"status": "success",
"data": "Event Deleted Successfully"
}
}Remove Assistant from Meeting
/meeting-assistant/events/removeRemove the assistant from a meeting. POST with meetingAssistantEventId in the JSON body.
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 |
|---|---|---|
meetingAssistantEventId |
string, required | The ID of the meeting assistant event you want the assistant removed from. Required. |
curl -X POST 'https://api.speakai.co/v1/meeting-assistant/events/remove' \
-H 'x-speakai-key: sk_test_speak_0000000000000000' \
-H 'x-access-token: eyJhbGciOiJIUzI1NiJ9.test-access-token.0000000000' \
-H 'Content-Type: application/json' \
-d '{
"meetingAssistantEventId": "your_event_id_here"
}'200 OK
Response body, application/json.
| Field | Type |
|---|---|
status |
string |
data |
object |
data.status |
string |
data.data |
string |
Example response (Remove a Assistant From Meeting), application/json.
{
"status": "success",
"data": {
"status": "success",
"data": "Meeting Assistant Removed Successfully"
}
}Schedule Event
/meeting-assistant/events/scheduleSchedule Meeting Event
This endpoint allows you to schedule a meeting event by providing the meeting details.
Request Body
-
meetingDate(optional): The date and time for the scheduled meeting. If not provided, the meeting will be joined instantly. -
meetingLanguage(optional): The language for the meeting. Default is en-US. -
meetingURL(required): The URL of the meeting. -
title(required): The title of the meeting. -
tags(optional): You can pass comma seprated values to store as tags for your media files.
Response
-
status: The status of the response. -
data: An object containing details of the scheduled meeting event, including the company ID, user ID, meeting assistant ID, platform, source, meeting URL, start time, title, meeting language, current status, event ID, attendees, history, chat messages, creation and update timestamps, and version.
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 |
|---|---|---|
meetingURL |
string, required | The URL of the meeting you want the assistant to join. Required. Sent as a plain string. The format is not checked. The controller resolves the meeting platform from this URL and returns 400 with “Invalid meeting url” if it cannot. |
title |
string | The title you want to give the scheduled meeting and the media it produces. Optional. An empty string or null is treated as absent and the server falls back to “Scheduled Meeting”. The title is trimmed before it is stored. |
meetingDate |
string | The date and time you want the assistant to join the meeting. Optional and nullable. Send an ISO 8601 date-time string. If you omit it, the assistant joins about one second from now. |
meetingLanguage |
string | The language code you want the meeting transcribed in. Optional and nullable. Must be one of the 137 supported transcription language codes, which include auto and multi. The list is too long to pin as an enum in the spec, so call GET /supported-languages for the current set. If you omit it, the server uses en-US. |
folderId |
string | The ID of the folder you want the resulting recording filed into. Optional. Empty string and null are both accepted. The folder is only attached when the value is non-empty. |
curl -X POST 'https://api.speakai.co/v1/meeting-assistant/events/schedule' \
-H 'x-speakai-key: sk_test_speak_0000000000000000' \
-H 'x-access-token: eyJhbGciOiJIUzI1NiJ9.test-access-token.0000000000' \
-H 'Content-Type: application/json' \
-d '{
"title": "Team Standup",
"meetingURL": "https://meet.google.com/abc-defg-hij",
"meetingLanguage": "en-US",
"meetingDate": "2026-06-01T10:00:00.000Z"
}'200 OK
Response body, application/json.
| Field | Type |
|---|---|
status |
string |
data |
object |
data.companyId |
string |
data.userId |
string |
data.platform |
string |
data.source |
string |
data.meetingURL |
string |
data.startTime |
string (date-time) |
data.title |
string |
data.meetingLanguage |
string |
data.currentStatus |
string |
data._id |
string |
data.meetingAssistantEventId |
string |
data.attendees |
any[] |
data.history |
any[] |
data.createdAt |
string (date-time) |
data.updatedAt |
string (date-time) |
data.__v |
integer |
data.message |
string |
Example response (Schedule Event), application/json.
{
"status": "success",
"data": {
"companyId": "5e28dd2d77242c222222222",
"userId": "5d03a9d225d42a272e9c229",
"platform": "googleMeet",
"source": "instant",
"meetingURL": "https://meet.google.com/ctg-wcqv-xxxx",
"startTime": "2023-12-19T20:20:06.823Z",
"title": "Meeting Title",
"meetingLanguage": "en-US",
"currentStatus": "scheduled",
"_id": "6581faf3e7435ce0e78ad6b0",
"meetingAssistantEventId": "89c69e5afcc3",
"attendees": [],
"history": [],
"createdAt": "2023-12-19T20:20:03.208Z",
"updatedAt": "2023-12-19T20:20:03.208Z",
"__v": 0,
"message": "Meeting scheduled Successfully"
}
}Related pages
- API reference for the base URL, authentication, and the error format.
- Authenticate with the Speak AI API using access tokens
- Upload audio and video to Speak AI and read insights
- Create and update live transcription sessions in Speak AI
- Analyze text notes with the Speak AI text endpoints
Get an API key on the Speak AI developer page.