> 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/get/llms.txt. > For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.athenaintel.com/_mcp/server. # Get meeting by ID GET https://api.athenaintel.com/api/v0/meetings/{asset_id} Retrieve a single meeting by its asset ID, including status, AI summary, participants, and the asset IDs of its downloadable artifacts (recording, transcripts, chat). Meetings captured since September 2026 store their artifacts on the meeting itself, so those IDs are null for them; use the download endpoint, which serves both shapes. Reference: https://docs.athenaintel.com/api-reference/meetings/get ## Authentication - `X-API-KEY` header (required) — API Key authentication via header ## Request ### Path parameters - `asset_id` (string, required) — Unique identifier of the meeting asset to retrieve ## Response ### 200 Successful Response - `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 ## Errors ### 401 Unauthorized Error Unauthorized - `message` (string, required) ### 404 Not Found Error Not Found - `message` (string, required) ### 422 Unprocessable Entity Error Validation Error - `detail` (list of ValidationError, optional) ## Types ### 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 ### ValidationError - `loc` (list of ValidationErrorLocItems, required) - `msg` (string, required) - `type` (string, required) - `ctx` (ValidationErrorCtx, optional) - `input` (any, optional) ### ValidationErrorLocItems ### ValidationErrorCtx ## Examples **Response** ```json { "created_at": "2024-01-15T09:30:00Z", "id": "string", "updated_at": "2024-01-15T09:30:00Z", "ai_summary": "string", "artifacts": { "chat_asset_id": "string", "formatted_transcript_asset_id": "string", "recording_asset_id": "string", "transcript_asset_id": "string" }, "created_by_id": "string", "meeting_url": "string", "participants": [ { "email": "string", "name": "string" } ], "status": "string", "title": "string", "workspace_id": "string" } ``` **SDK Code** ```python import requests url = "https://api.athenaintel.com/api/v0/meetings/asset_id" headers = {"X-API-KEY": ""} response = requests.get(url, headers=headers) print(response.json()) ``` ```javascript const url = 'https://api.athenaintel.com/api/v0/meetings/asset_id'; 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 package main import ( "fmt" "net/http" "io" ) func main() { url := "https://api.athenaintel.com/api/v0/meetings/asset_id" 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 require 'uri' require 'net/http' url = URI("https://api.athenaintel.com/api/v0/meetings/asset_id") 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 import com.mashape.unirest.http.HttpResponse; import com.mashape.unirest.http.Unirest; HttpResponse response = Unirest.get("https://api.athenaintel.com/api/v0/meetings/asset_id") .header("X-API-KEY", "") .asString(); ``` ```php request('GET', 'https://api.athenaintel.com/api/v0/meetings/asset_id', [ 'headers' => [ 'X-API-KEY' => '', ], ]); echo $response->getBody(); ``` ```csharp using RestSharp; var client = new RestClient("https://api.athenaintel.com/api/v0/meetings/asset_id"); var request = new RestRequest(Method.GET); request.AddHeader("X-API-KEY", ""); IRestResponse response = client.Execute(request); ``` ```swift import Foundation let headers = ["X-API-KEY": ""] let request = NSMutableURLRequest(url: NSURL(string: "https://api.athenaintel.com/api/v0/meetings/asset_id")! 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() ```