> For clean Markdown of any page, append .md to the page URL. > For a complete documentation index, see https://docs.athenaintel.com/api-reference/meetings/list/llms.txt. > For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.athenaintel.com/_mcp/server. # List meetings GET https://api.athenaintel.com/api/v0/meetings Retrieve a paginated list of meetings with optional keyword search (across title, AI summary, and cached transcript text), participant email filtering, attendee domain filtering, date range filtering, and sorting. Reference: https://docs.athenaintel.com/api-reference/meetings/list ## Authentication - `X-API-KEY` header (required) — API Key authentication via header ## Request ### Query parameters - `query` (string, optional, nullable) — Keyword to search across meeting title, AI summary, and cached transcript text - `participant_emails` (list of string, optional, nullable) — Participant email(s) to filter by. Repeat the parameter or pass a comma-separated list. - `participant_match` (enum, optional, default: any) — Whether a meeting must include any or all of the given participant emails - Allowed values: `any`, `all` - `participant_domains` (list of string, optional, nullable) — Attendee email domain(s) to filter by (e.g. 'acme.com'). Repeat the parameter or pass a comma-separated list. - `domain_match` (enum, optional, default: any) — Whether a meeting must include attendees from any or all of the given domains - Allowed values: `any`, `all` - `created_after` (datetime, optional, nullable) — Only include meetings created at or after this ISO 8601 timestamp - `created_before` (datetime, optional, nullable) — Only include meetings created at or before this ISO 8601 timestamp - `sort_by` (enum, optional, default: created_at) — Field to sort by - Allowed values: `created_at`, `updated_at`, `title` - `sort_direction` (enum, optional, default: desc) — Sort direction - Allowed values: `asc`, `desc` - `limit` (integer, optional, default: 50) — Maximum number of meetings to return per page (1-500) - `offset` (integer, optional, default: 0) — Number of meetings to skip for pagination ## Response ### 200 Successfully retrieved paginated list of meetings - `has_more` (boolean, required) — Whether there are more meetings available beyond this page - `items` (list of MeetingOut, required) — Array of meeting objects for the current page - `limit` (integer, required) — Maximum number of meetings returned in this response (1-500) - `next_offset` (integer, required, nullable) — Offset value to use for the next page request, null if no more pages - `offset` (integer, required) — Number of meetings skipped from the beginning of the result set - `total` (integer, required) — Total number of meetings matching the query filters ## Errors ### 422 Unprocessable Entity Error Validation Error - `detail` (list of ValidationError, optional) ## Types ### MeetingOut A meeting asset with flattened, meeting-specific metadata. - `created_at` (datetime, required) — Timestamp when the meeting asset was created (ISO 8601) - `id` (string, required) — Unique identifier of the meeting asset (e.g., 'asset_abc123') - `updated_at` (datetime, required) — Timestamp when the meeting asset was last updated (ISO 8601) - `ai_summary` (string, optional, nullable) — AI-generated summary of the meeting - `artifacts` (MeetingArtifactsOut, optional) — Downloadable artifacts (recording, transcripts, chat) - `created_by_id` (string, optional, nullable) — Unique identifier of the user who created this meeting - `meeting_url` (string, optional, nullable) — URL of the original meeting (e.g., Zoom/Meet/Teams link) - `participants` (list of MeetingParticipantOut, optional) — Best-effort list of meeting participants/attendees - `status` (string, optional, nullable) — Processing status of the meeting (e.g., 'completed') - `title` (string, optional, nullable) — Title of the meeting - `workspace_id` (string, optional, nullable) — Unique identifier of the workspace this meeting belongs to ### ValidationError - `loc` (list of ValidationErrorLocItems, required) - `msg` (string, required) - `type` (string, required) - `ctx` (ValidationErrorCtx, optional) - `input` (any, optional) ### MeetingArtifactsOut Legacy asset IDs of the downloadable artifacts attached to a meeting. Meetings captured since September 2026 are a single asset: their recording, transcript and chat are stored on the meeting itself, so every ID here is null for them and the artifacts are downloaded through the meeting download endpoint (`GET /meetings/{asset_id}/download`), which serves both shapes. Older meetings keep their child assets and their IDs. - `chat_asset_id` (string, optional, nullable) — Asset ID of the in-meeting chat transcript (JSON) for meetings captured before September 2026; null for newer meetings, whose chat is downloaded via the meeting download endpoint - `formatted_transcript_asset_id` (string, optional, nullable) — Asset ID of the formatted meeting transcript (JSON) for meetings captured before September 2026; null for newer meetings - `recording_asset_id` (string, optional, nullable) — Asset ID of the meeting video recording (MP4) for meetings captured before September 2026; null for newer meetings, whose recording is downloaded via the meeting download endpoint - `transcript_asset_id` (string, optional, nullable) — Asset ID of the raw meeting transcript (JSON) for meetings captured before September 2026; null for newer meetings, whose transcript is downloaded via the meeting download endpoint ### MeetingParticipantOut A participant/attendee of a meeting. - `email` (string, optional, nullable) — Email address of the participant, when known - `name` (string, optional, nullable) — Display name of the participant, when known ### ValidationErrorLocItems ### ValidationErrorCtx ## Examples **Response** ```json { "has_more": false, "items": [ { "created_at": "2025-06-01T10:30:00Z", "id": "asset_92492920-d118-42d3-95b4-00eccfe0754f", "updated_at": "2025-06-01T11:35:00Z", "ai_summary": "The team reviewed the Q3 roadmap...", "artifacts": { "formatted_transcript_asset_id": "asset_ftr123", "recording_asset_id": "asset_rec123", "transcript_asset_id": "asset_tr123" }, "created_by_id": "user_123", "meeting_url": "https://meet.google.com/abc-defg-hij", "participants": [ { "email": "alice@acme.com", "name": "Alice Smith" } ], "status": "completed", "title": "Weekly Roadmap Review", "workspace_id": "workspace_abc123" } ], "limit": 50, "next_offset": 1, "offset": 0, "total": 42 } ``` **SDK Code** ```python meetings_list_example import requests url = "https://api.athenaintel.com/api/v0/meetings" headers = {"X-API-KEY": ""} response = requests.get(url, headers=headers) print(response.json()) ``` ```javascript meetings_list_example const url = 'https://api.athenaintel.com/api/v0/meetings'; const options = {method: 'GET', headers: {'X-API-KEY': ''}}; try { const response = await fetch(url, options); const data = await response.json(); console.log(data); } catch (error) { console.error(error); } ``` ```go meetings_list_example package main import ( "fmt" "net/http" "io" ) func main() { url := "https://api.athenaintel.com/api/v0/meetings" req, _ := http.NewRequest("GET", url, nil) req.Header.Add("X-API-KEY", "") res, _ := http.DefaultClient.Do(req) defer res.Body.Close() body, _ := io.ReadAll(res.Body) fmt.Println(res) fmt.Println(string(body)) } ``` ```ruby meetings_list_example require 'uri' require 'net/http' url = URI("https://api.athenaintel.com/api/v0/meetings") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true request = Net::HTTP::Get.new(url) request["X-API-KEY"] = '' response = http.request(request) puts response.read_body ``` ```java meetings_list_example import com.mashape.unirest.http.HttpResponse; import com.mashape.unirest.http.Unirest; HttpResponse response = Unirest.get("https://api.athenaintel.com/api/v0/meetings") .header("X-API-KEY", "") .asString(); ``` ```php meetings_list_example request('GET', 'https://api.athenaintel.com/api/v0/meetings', [ 'headers' => [ 'X-API-KEY' => '', ], ]); echo $response->getBody(); ``` ```csharp meetings_list_example using RestSharp; var client = new RestClient("https://api.athenaintel.com/api/v0/meetings"); var request = new RestRequest(Method.GET); request.AddHeader("X-API-KEY", ""); IRestResponse response = client.Execute(request); ``` ```swift meetings_list_example import Foundation let headers = ["X-API-KEY": ""] let request = NSMutableURLRequest(url: NSURL(string: "https://api.athenaintel.com/api/v0/meetings")! as URL, cachePolicy: .useProtocolCachePolicy, timeoutInterval: 10.0) request.httpMethod = "GET" request.allHTTPHeaderFields = headers let session = URLSession.shared let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in if (error != nil) { print(error as Any) } else { let httpResponse = response as? HTTPURLResponse print(httpResponse) } }) dataTask.resume() ```