Meetings API reference
Generated from the OpenAPI specification (version 2026-10-01). Base URL: https://app.meetingize.com/api. All requests need Authorization: Bearer <API key or OAuth token>. Try them in the API explorer.
List clients
Section titled “List clients”GET /v1/clientsClient folders of the account (the webapp “client” of a meeting), with optional contact email and phone. Use an id as client_id when creating or updating a meeting, or ?client= to filter meetings. Archived clients are hidden unless include_archived=true. Required scope: read:meetings.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
include_archived | query | boolean | Include archived clients. | |
q | query | string | Part of the client name (case-insensitive). |
Responses
200:400: Validation error401: Missing or invalid credential403: Insufficient scope404: Not found (also for resources of other accounts)429: Rate limit (rate_limited) or parallel processing quota (parallel_processing_limit) exceeded; seeRetry-After
Response fields (200)
| Field | Type | Required | Description |
|---|---|---|---|
data | array of object | yes |
curl -s "https://app.meetingize.com/api/v1/clients" \ -H "Authorization: Bearer $MEETINGIZE_API_KEY"List and search meetings
Section titled “List and search meetings”GET /v1/meetingsLists the meetings of the account, most recent first, with cursor pagination (limit, cursor).
q is a case-insensitive full-text search on the title, the AI report and the transcript. Filters can be combined (AND). status is computed, so filtering on it only scans the 500 most recent meetings.
Only meetings owned by the account are returned (not those shared with it). Required scope: read:meetings.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
client | query | string | Client: id (cli_12) or exact name. | |
created_after | query | string (date-time) | Meetings created (uploaded) at or after this date (ISO 8601). | |
created_before | query | string (date-time) | Meetings created (uploaded) before this date (ISO 8601). | |
cursor | query | string | Opaque cursor: the next_cursor of the previous page. | |
limit | query | integer | Page size, 1 to 100 (default 20). | |
q | query | string | Text to search in title, AI report and transcript (case-insensitive). Example: budget T4. | |
recorded_after | query | string (date-time) | Meetings that took place at or after this date (ISO 8601). | |
recorded_before | query | string (date-time) | Meetings that took place before this date (ISO 8601). | |
status | query | completed, draft, failed, processing, queued | queued, processing, completed, failed or draft. | |
tag | query | array of string | Tag name; repeat the parameter to require several tags (?tag=client-x&tag=urgent). |
Responses
200:400: Validation error401: Missing or invalid credential403: Insufficient scope404: Not found (also for resources of other accounts)429: Rate limit (rate_limited) or parallel processing quota (parallel_processing_limit) exceeded; seeRetry-After
Response fields (200)
| Field | Type | Required | Description |
|---|---|---|---|
data | array of object | yes | |
has_more | boolean | yes | |
next_cursor | string | null | yes |
curl -s "https://app.meetingize.com/api/v1/meetings" \ -H "Authorization: Bearer $MEETINGIZE_API_KEY"Get a meeting
Section titled “Get a meeting”GET /v1/meetings/{meeting_id}Full view of a meeting: metadata, processing status, AI report (summary, null until ready), participants (with their par_ id and speaker labels), generated documents and the latest processing job (meetings created via the API). This is a good endpoint to poll after creating a meeting. Required scope: read:meetings.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
meeting_id | path | string | yes |
Responses
200:400: Validation error401: Missing or invalid credential403: Insufficient scope404: Not found (also for resources of other accounts)429: Rate limit (rate_limited) or parallel processing quota (parallel_processing_limit) exceeded; seeRetry-After
Response fields (200)
| Field | Type | Required | Description |
|---|---|---|---|
id | string (uuid) | yes | |
object | string | yes | |
title | string | yes | |
status | draft, queued, processing, completed, failed | yes | draft (no audio yet, webapp only), queued, processing (transcription then AI report), completed (transcript + report ready; transcript only when transcribe_only), failed |
transcribe_only | boolean | yes | Created with transcribe_only=true: no AI report, no documents |
recorded_at | string (date-time) | yes | Date of the meeting (recorded_at at creation, else upload date) |
created_at | string (date-time) | yes | |
updated_at | string (date-time) | yes | |
duration_seconds | integer | null | ||
language | string | null | ||
source | upload, live_recording, text, url, api | null | ||
recording_type | meeting, solo | null | ||
tags | array of string | yes | |
client | object | null | Client folder the meeting belongs to | |
has_transcript | boolean | yes | |
has_summary | boolean | yes | |
web_url | string (uri) | yes | |
summary | object | null | ||
participants | array of object | yes | |
documents | array of object | yes | |
job | object | null | Latest processing job of the meeting when created via the API (null for webapp meetings): what to poll with GET /jobs/{job_id} |
curl -s "https://app.meetingize.com/api/v1/meetings/<meeting_id>" \ -H "Authorization: Bearer $MEETINGIZE_API_KEY"Export for an LLM (ChatGPT, Claude…)
Section titled “Export for an LLM (ChatGPT, Claude…)”GET /v1/meetings/{meeting_id}/exportReady-to-paste bundle: a priming prompt, metadata, participants, the AI report and the timestamped diarized transcript, split in parts of at most max_tokens tokens so that long meetings fit in a chat context. format=md returns all parts separated by --- Part i/n ---. Scopes required: read:meetings and read:transcripts.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
format | query | json, md | json (default) or md. | |
lang | query | en, fr | Language of the priming prompt: fr (default) or en. | |
max_tokens | query | integer | Max tokens per part (2000 to 200000, default 24000). | |
meeting_id | path | string | yes |
Responses
200:400: Validation error401: Missing or invalid credential403: Insufficient scope404: Not found (also for resources of other accounts)429: Rate limit (rate_limited) or parallel processing quota (parallel_processing_limit) exceeded; seeRetry-After
Response fields (200)
| Field | Type | Required | Description |
|---|---|---|---|
object | string | yes | |
meeting_id | string (uuid) | yes | |
priming_prompt | string | yes | |
total_tokens | integer | yes | |
parts | array of object | yes |
curl -s "https://app.meetingize.com/api/v1/meetings/<meeting_id>/export" \ -H "Authorization: Bearer $MEETINGIZE_API_KEY"List participants
Section titled “List participants”GET /v1/meetings/{meeting_id}/participantsParticipants of the meeting with their par_ id and the speaker labels attributed to them, plus the transcript speakers not attributed to anyone (id: null). Modify them with PATCH /meetings/{id}. Required scope: read:meetings.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
meeting_id | path | string | yes |
Responses
200:400: Validation error401: Missing or invalid credential403: Insufficient scope404: Not found (also for resources of other accounts)429: Rate limit (rate_limited) or parallel processing quota (parallel_processing_limit) exceeded; seeRetry-After
Response fields (200)
| Field | Type | Required | Description |
|---|---|---|---|
data | array of object | yes |
curl -s "https://app.meetingize.com/api/v1/meetings/<meeting_id>/participants" \ -H "Authorization: Bearer $MEETINGIZE_API_KEY"Get the AI meeting report
Section titled “Get the AI meeting report”GET /v1/meetings/{meeting_id}/summaryThe AI report (summary, key takeaways, action items, minutes) as Markdown and, in structured, the raw structured result. Available from processing.completed; before that, or for a transcribe_only meeting: 409 summary_not_ready. Required scope: read:meetings.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
format | query | json, md | json (default) or md. | |
meeting_id | path | string | yes |
Responses
200:400: Validation error401: Missing or invalid credential403: Insufficient scope404: Not found (also for resources of other accounts)429: Rate limit (rate_limited) or parallel processing quota (parallel_processing_limit) exceeded; seeRetry-After
Response fields (200)
| Field | Type | Required | Description |
|---|---|---|---|
object | string | yes | |
meeting_id | string (uuid) | yes | |
title | string | yes | |
language | string | null | ||
markdown | string | yes | |
structured | object | null | ||
model | string | null | ||
created_at | string (date-time) | yes | |
updated_at | string (date-time) | yes |
curl -s "https://app.meetingize.com/api/v1/meetings/<meeting_id>/summary" \ -H "Authorization: Bearer $MEETINGIZE_API_KEY"