curl --request GET \
--url https://api.meetingkit.com/api/v1/meetings/{id} \
--header 'Authorization: <api-key>'import requests
url = "https://api.meetingkit.com/api/v1/meetings/{id}"
headers = {"Authorization": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: '<api-key>'}};
fetch('https://api.meetingkit.com/api/v1/meetings/{id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.meetingkit.com/api/v1/meetings/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.meetingkit.com/api/v1/meetings/{id}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.meetingkit.com/api/v1/meetings/{id}")
.header("Authorization", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.meetingkit.com/api/v1/meetings/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"id": "mtg_01k6a2r9s8x7c2dvq3m5n6p4ab",
"object": "meeting",
"workspace_id": "wks_01k6a2r9s8x7c2dvq3m5n6p4ab",
"source": "calendar_connection",
"phase": "past",
"title": "Weekly sync with Acme",
"starts_at": "2026-09-29T09:00:00Z",
"ends_at": "2026-09-29T09:30:00Z",
"meeting_url": "https://meet.google.com/abc-defg-hij",
"platform": "meet",
"organizer": {
"name": "Marc",
"email": "marc@gurusup.com",
"member_id": "mem_01k69x9s8x7c2dvq3m5n6p4ab"
},
"participants": [
{
"name": "Marc",
"email": "marc@gurusup.com",
"member_id": "mem_01k69x9s8x7c2dvq3m5n6p4ab"
},
{
"name": "Ana Ruiz",
"email": "ana@acme.com",
"member_id": null
}
],
"calendar_event": {
"id": "cev_01k6a2r9s8x7c2dvq3m5n6p4ab",
"object": "calendar_event",
"meeting_id": "mtg_01k6a2r9s8x7c2dvq3m5n6p4ab",
"ical_uid": "7kq2b@google.com",
"recurring": true,
"title": "Weekly sync with Acme",
"starts_at": "2026-09-29T09:00:00Z",
"ends_at": "2026-09-29T09:30:00Z",
"meeting_url": "https://meet.google.com/abc-defg-hij",
"organizer": {
"name": "Marc",
"email": "marc@gurusup.com",
"member_id": "mem_01k69x9s8x7c2dvq3m5n6p4ab"
},
"attendees": [
{
"name": "Marc",
"email": "marc@gurusup.com",
"member_id": "mem_01k69x9s8x7c2dvq3m5n6p4ab",
"response": "accepted"
},
{
"name": "Ana Ruiz",
"email": "ana@acme.com",
"member_id": null,
"response": "needs_action"
}
],
"source": "calendar_connection",
"metadata": {},
"cancelled_at": null,
"created_at": "2026-09-22T08:00:00Z",
"updated_at": "2026-09-29T09:31:10Z"
},
"settings": {
"recording": {
"enabled": true,
"methods": {
"bot": {
"start": "on_join",
"mode": "audio_and_video",
"silence_detection": {
"alert": true
}
}
}
},
"transcription": {
"language": "auto"
},
"summary": {
"template": "general_meeting_notes",
"language": "same_as_transcript"
},
"branding": {
"brand_kit_id": "none"
},
"sources": {
"recording.enabled": {
"assignment_id": "asg_01k6a3ext00000000000000000"
},
"recording.methods.bot.start": {
"assignment_id": "asg_01k6a1ana00000000000000000"
},
"recording.methods.bot.mode": {
"assignment_id": "asg_01k6a1ana00000000000000000"
},
"recording.methods.bot.silence_detection.alert": {
"assignment_id": "asg_01k6a1ana00000000000000000"
},
"transcription.language": {
"assignment_id": "asg_01k6a1ana00000000000000000"
},
"summary.template": {
"assignment_id": null,
"reason": "happyscribe_default"
},
"summary.language": {
"assignment_id": "asg_01k6a1ana00000000000000000"
},
"branding.brand_kit_id": {
"assignment_id": "asg_01k6a0wks00000000000000000"
}
},
"assignments": [
{
"id": "asg_01k6a3ext00000000000000000",
"settings_id": "set_01k6rec00000000000000000000",
"scope": [
"member:mem_01k69x9s8x7c2dvq3m5n6p4ab",
"meetings:external"
],
"own": false
},
{
"id": "asg_01k6a1ana00000000000000000",
"settings_id": "set_01k6sa1es0000000000000000a",
"scope": [
"member:mem_01k69x9s8x7c2dvq3m5n6p4ab"
],
"own": false
},
{
"id": "asg_01k6a0wks00000000000000000",
"settings_id": "set_01k6wks00000000000000000000",
"scope": [
"workspace:wks_01k6a2r9s8x7c2dvq3m5n6p4ab"
],
"own": false
}
]
},
"recordings": [
{
"id": "bot_01k6b0r9s8x7c2dvq3m5n6p4ab",
"type": "bot",
"status": "completed",
"started_at": "2026-09-29T09:00:00Z",
"ended_at": "2026-09-29T09:31:10Z"
}
],
"results": {
"status": "ready",
"transcript": {
"status": "ready",
"language": "en"
},
"summary": {
"status": "ready"
},
"media": {
"status": "ready",
"duration_seconds": 1834
}
},
"metadata": {},
"created_at": "2026-09-22T10:14:03Z",
"updated_at": "2026-09-29T09:41:10Z"
}{
"errors": [
{
"code": "invalid",
"field": "recording.methods.bot.mode",
"message": "must be one of: audio_and_video, audio_only, inherit"
}
]
}{
"errors": [
{
"code": "invalid",
"field": "recording.methods.bot.mode",
"message": "must be one of: audio_and_video, audio_only, inherit"
}
]
}Get a meeting
The meeting with its schedule, people, settings, recordings and the status of its
results. Fetch the content with GET /meetings/{id}/results.
curl --request GET \
--url https://api.meetingkit.com/api/v1/meetings/{id} \
--header 'Authorization: <api-key>'import requests
url = "https://api.meetingkit.com/api/v1/meetings/{id}"
headers = {"Authorization": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: '<api-key>'}};
fetch('https://api.meetingkit.com/api/v1/meetings/{id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.meetingkit.com/api/v1/meetings/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.meetingkit.com/api/v1/meetings/{id}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.meetingkit.com/api/v1/meetings/{id}")
.header("Authorization", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.meetingkit.com/api/v1/meetings/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"id": "mtg_01k6a2r9s8x7c2dvq3m5n6p4ab",
"object": "meeting",
"workspace_id": "wks_01k6a2r9s8x7c2dvq3m5n6p4ab",
"source": "calendar_connection",
"phase": "past",
"title": "Weekly sync with Acme",
"starts_at": "2026-09-29T09:00:00Z",
"ends_at": "2026-09-29T09:30:00Z",
"meeting_url": "https://meet.google.com/abc-defg-hij",
"platform": "meet",
"organizer": {
"name": "Marc",
"email": "marc@gurusup.com",
"member_id": "mem_01k69x9s8x7c2dvq3m5n6p4ab"
},
"participants": [
{
"name": "Marc",
"email": "marc@gurusup.com",
"member_id": "mem_01k69x9s8x7c2dvq3m5n6p4ab"
},
{
"name": "Ana Ruiz",
"email": "ana@acme.com",
"member_id": null
}
],
"calendar_event": {
"id": "cev_01k6a2r9s8x7c2dvq3m5n6p4ab",
"object": "calendar_event",
"meeting_id": "mtg_01k6a2r9s8x7c2dvq3m5n6p4ab",
"ical_uid": "7kq2b@google.com",
"recurring": true,
"title": "Weekly sync with Acme",
"starts_at": "2026-09-29T09:00:00Z",
"ends_at": "2026-09-29T09:30:00Z",
"meeting_url": "https://meet.google.com/abc-defg-hij",
"organizer": {
"name": "Marc",
"email": "marc@gurusup.com",
"member_id": "mem_01k69x9s8x7c2dvq3m5n6p4ab"
},
"attendees": [
{
"name": "Marc",
"email": "marc@gurusup.com",
"member_id": "mem_01k69x9s8x7c2dvq3m5n6p4ab",
"response": "accepted"
},
{
"name": "Ana Ruiz",
"email": "ana@acme.com",
"member_id": null,
"response": "needs_action"
}
],
"source": "calendar_connection",
"metadata": {},
"cancelled_at": null,
"created_at": "2026-09-22T08:00:00Z",
"updated_at": "2026-09-29T09:31:10Z"
},
"settings": {
"recording": {
"enabled": true,
"methods": {
"bot": {
"start": "on_join",
"mode": "audio_and_video",
"silence_detection": {
"alert": true
}
}
}
},
"transcription": {
"language": "auto"
},
"summary": {
"template": "general_meeting_notes",
"language": "same_as_transcript"
},
"branding": {
"brand_kit_id": "none"
},
"sources": {
"recording.enabled": {
"assignment_id": "asg_01k6a3ext00000000000000000"
},
"recording.methods.bot.start": {
"assignment_id": "asg_01k6a1ana00000000000000000"
},
"recording.methods.bot.mode": {
"assignment_id": "asg_01k6a1ana00000000000000000"
},
"recording.methods.bot.silence_detection.alert": {
"assignment_id": "asg_01k6a1ana00000000000000000"
},
"transcription.language": {
"assignment_id": "asg_01k6a1ana00000000000000000"
},
"summary.template": {
"assignment_id": null,
"reason": "happyscribe_default"
},
"summary.language": {
"assignment_id": "asg_01k6a1ana00000000000000000"
},
"branding.brand_kit_id": {
"assignment_id": "asg_01k6a0wks00000000000000000"
}
},
"assignments": [
{
"id": "asg_01k6a3ext00000000000000000",
"settings_id": "set_01k6rec00000000000000000000",
"scope": [
"member:mem_01k69x9s8x7c2dvq3m5n6p4ab",
"meetings:external"
],
"own": false
},
{
"id": "asg_01k6a1ana00000000000000000",
"settings_id": "set_01k6sa1es0000000000000000a",
"scope": [
"member:mem_01k69x9s8x7c2dvq3m5n6p4ab"
],
"own": false
},
{
"id": "asg_01k6a0wks00000000000000000",
"settings_id": "set_01k6wks00000000000000000000",
"scope": [
"workspace:wks_01k6a2r9s8x7c2dvq3m5n6p4ab"
],
"own": false
}
]
},
"recordings": [
{
"id": "bot_01k6b0r9s8x7c2dvq3m5n6p4ab",
"type": "bot",
"status": "completed",
"started_at": "2026-09-29T09:00:00Z",
"ended_at": "2026-09-29T09:31:10Z"
}
],
"results": {
"status": "ready",
"transcript": {
"status": "ready",
"language": "en"
},
"summary": {
"status": "ready"
},
"media": {
"status": "ready",
"duration_seconds": 1834
}
},
"metadata": {},
"created_at": "2026-09-22T10:14:03Z",
"updated_at": "2026-09-29T09:41:10Z"
}{
"errors": [
{
"code": "invalid",
"field": "recording.methods.bot.mode",
"message": "must be one of: audio_and_video, audio_only, inherit"
}
]
}{
"errors": [
{
"code": "invalid",
"field": "recording.methods.bot.mode",
"message": "must be one of: audio_and_video, audio_only, inherit"
}
]
}Authorizations
Your API key, sent bare. See Authentication.
Path Parameters
Meeting ID, beginning with mtg_. Treat it as an opaque string.
"mtg_01k6a2r9s8x7c2dvq3m5n6p4ab"
Response
The meeting.
Which label to show for a meeting, read from the fields that own it:
| Label | Read |
|---|---|
| Will be recorded | phase: upcoming and settings.recording.enabled: true |
| Not going to be recorded | phase: upcoming and settings.recording.enabled: false (settings.sources says why) |
| Recording | phase: live |
| Processing | results.status: processing |
| Ready / Failed | results.status: ready / failed |
| Not recorded | phase: past or cancelled with results.status: none |
Beginning with mtg_. Stays the same through reschedules, URL changes and bot retries.
Always meeting.
Workspace ID, beginning with wks_. Treat it as an opaque string.
"wks_01k6a2r9s8x7c2dvq3m5n6p4ab"
Where the meeting came from.
calendar_connection: a calendar the member connected.calendar_sync: an event you pushed withPOST /calendar_events.bot: a bot you sent withPOST /bots.
calendar_connection, calendar_sync, bot About time only; what happens after the call is in results.
upcoming: not started, and nothing recording yet.live: a recording is active. An early start counts: activity beats the calendar.past: the recording ended, or the scheduled end went by.cancelled: the source event was cancelled. Listed only withphase=cancelled.
upcoming, live, past, cancelled The calendar event's title, or a generated one for a bot sent without a calendar event.
A bot meeting starts at the bot's join_at.
Scheduled end, or null when unknown.
The link to join the call, or null when the event has none.
The meeting platform, from the link. null for any other link (Webex, a dial-in page) or none.
meet: Google Meet.zoom: Zoom.teams: Microsoft Teams, Teams Live included.
meet, zoom, teams, null Who organizes the meeting, or null when unknown.
Show child attributes
Show child attributes
The people on the invite, or given when the bot was sent.
Show child attributes
Show child attributes
The calendar event of this meeting, the object POST /calendar_events returns. null for bot meetings.
Show child attributes
Show child attributes
{
"id": "cev_01k6a2r9s8x7c2dvq3m5n6p4ab",
"object": "calendar_event",
"meeting_id": "mtg_01k6a2r9s8x7c2dvq3m5n6p4ab",
"ical_uid": "7kq2abc@google.com",
"recurring": true,
"title": "Weekly sync with Acme",
"starts_at": "2026-09-29T09:00:00Z",
"ends_at": "2026-09-29T09:30:00Z",
"meeting_url": "https://meet.google.com/abc-defg-hij",
"organizer": {
"name": "Marc",
"email": "marc@gurusup.com",
"member_id": "mem_01k69x9s8x7c2dvq3m5n6p4ab"
},
"attendees": [
{
"name": "Marc",
"email": "marc@gurusup.com",
"member_id": "mem_01k69x9s8x7c2dvq3m5n6p4ab",
"response": "accepted"
},
{
"name": "Laia Puig",
"email": "laia@gurusup.com",
"member_id": "mem_01k69x2m4q8r7t6v5w4x3y2z1a",
"response": "accepted"
},
{
"name": null,
"email": "ana@acme.com",
"member_id": null,
"response": "needs_action"
}
],
"source": "calendar_sync",
"metadata": { "gurusup_event_id": "evt_311" },
"cancelled_at": null,
"created_at": "2026-09-22T08:00:00Z",
"updated_at": "2026-09-28T17:12:03Z"
}
What applies to this meeting, which assignment supplied each value, and every assignment that reaches it. On
List meetings, only with include=settings.
Show child attributes
Show child attributes
{
"recording": {
"enabled": true,
"methods": {
"bot": {
"start": "on_join",
"mode": "audio_only",
"silence_detection": { "alert": true }
}
}
},
"transcription": { "language": "ca" },
"summary": {
"template": "discovery_call",
"language": "same_as_transcript"
},
"branding": {
"brand_kit_id": "brk_01k6acme00000000000000000"
},
"sources": {
"recording.enabled": {
"assignment_id": "asg_01k6a3ext00000000000000000"
},
"recording.methods.bot.start": {
"assignment_id": "asg_01k6a1ana00000000000000000"
},
"recording.methods.bot.mode": {
"assignment_id": "asg_01k6a1ana00000000000000000"
},
"recording.methods.bot.silence_detection.alert": {
"assignment_id": "asg_01k6a1ana00000000000000000"
},
"transcription.language": {
"assignment_id": "asg_01k6a1ana00000000000000000"
},
"summary.template": {
"assignment_id": "asg_01k6a1ana00000000000000000"
},
"summary.language": {
"assignment_id": "asg_01k6a1ana00000000000000000"
},
"branding.brand_kit_id": {
"assignment_id": "asg_01k6a0wks00000000000000000"
}
},
"assignments": [
{
"id": "asg_01k6a3ext00000000000000000",
"settings_id": "set_01k6rec00000000000000000000",
"scope": [
"member:mem_01k69x9s8x7c2dvq3m5n6p4ab",
"meetings:external"
],
"own": false
},
{
"id": "asg_01k6a1ana00000000000000000",
"settings_id": "set_01k6sa1es0000000000000000a",
"scope": ["member:mem_01k69x9s8x7c2dvq3m5n6p4ab"],
"own": false
},
{
"id": "asg_01k6a0wks00000000000000000",
"settings_id": "set_01k6wks00000000000000000000",
"scope": ["workspace:wks_01k6a2r9s8x7c2dvq3m5n6p4ab"],
"own": false
}
]
}
How audio came in. Each bot sent to the meeting, oldest first.
Show child attributes
Show child attributes
Statuses only. The content is at GET /meetings/{id}/results.
Show child attributes
Show child attributes
Yours; change it with PATCH /meetings/{id}. Never used to identify a meeting.
Show child attributes
Show child attributes
{ "gurusup_user_id": "usr_8812" }
When the meeting first appeared, in ISO 8601.
When anything in the meeting last changed, in ISO 8601.