> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://fastpix.com/docs/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://fastpix.com/docs/_mcp/server.

# Get all meetings

GET https://api.fastpix.com/v1/agents/notes-agent/meetings

This endpoint retrieves the meetings that the FastPix notetaker bot has recorded in your workspace. The list is sorted by the scheduled start time of each meeting, most recent first, and is returned in pages so you can page through a long meeting history.

#### How it works

1. Make a GET request to this endpoint.

2. Optionally use the `limit` and `offset` query parameters to page through the list.

3. The response returns an array of meetings along with pagination metadata.

4. Take the `id` of any meeting in the response to fetch its full detail from `GET /agents/notes-agent/meetings/{meetingId}`.

Only meetings whose recording has finished processing are listed. A meeting that is merely scheduled, still in progress, or still being ingested does not appear yet, and `totalRecords` counts only the meetings that are available.

#### Example

A product team lists the meetings recorded over the last sprint, so they can pull up the review call and share its playback link with the people who could not attend.

Reference: https://fastpix.com/docs/agents/list-notes-agent-meetings

## Authentication

- `Authorization` header (basic auth, required) — FastPix APIs are secured with Basic Authentication. Use your Access Token ID as the username and Secret Key as the password in the Authorization header of each API request. * Username: Access Token ID * Password: Secret Key Activate your FastPix account to generate your API credentials. See the guide here

## Request

### Query parameters

- `limit` (integer, optional, default: 10) — Limit specifies the maximum number of items to display per page.
- `offset` (integer, optional, default: 1) — Offset determines the starting point for data retrieval within a paginated list.

## Response

### 200

Meetings fetched successfully

- `success` (boolean, optional) — Shows the request status. Returns true for success and false for failure.
- `data` (list of NotesAgentMeeting, optional) — Displays the result of the request.
- `pagination` (Pagination, optional) — Pagination organizes content into pages for better readability and navigation.

## Types

### NotesAgentMeeting

A meeting recorded by the notetaker bot, as returned in the meeting list.

- `id` (string, optional) — The unique identifier of the meeting. Use it to fetch the meeting's full detail.
- `mediaId` (string, optional) — The unique identifier of the media asset that holds the recording. A meeting is listed only once its media is ready, so this is always present.
- `platform` (enum, optional) — The conferencing platform the meeting ran on, derived from its join link.
  - Allowed values: `meet`, `teams`, `zoom`
- `meetingTime` (datetime, optional) — The scheduled start time of the meeting, in UTC. Meetings are listed most recent first by this value.
- `title` (string, optional, nullable) — The title of the calendar event the meeting was created from.
- `duration` (double, optional, nullable) — The length of the recording in seconds, as a fractional value. A value of `0` means the recording exists but is empty, for example when nobody joined the meeting.
- `thumbnail` (string, optional, nullable) — The poster image generated from the recording.

### Pagination

Pagination organizes content into pages for better readability and navigation.

- `totalRecords` (integer, optional) — The total number of records matching the request, across all pages.
- `currentOffset` (integer, optional) — The page returned by this response. Pages are numbered from 1, so the first page has a `currentOffset` of 1.
- `offsetCount` (integer, optional) — The total number of pages: `totalRecords` divided by `limit`, rounded up.

## Examples

**Response**

```json
{
  "success": true,
  "data": [
    {
      "id": "8cacf3d9-c213-48df-a0a8-1aa0890a94cd",
      "mediaId": "8be4596b-5fb2-4272-8f53-9da9c89ba5a0",
      "platform": "meet",
      "meetingTime": "2025-08-11T14:29:00Z",
      "title": null,
      "duration": 29.466667,
      "thumbnail": "https://images.fastpix.com/a2bb65f2-1e5e-4ebd-a34a-9a29ecdc72f6/thumbnail.png"
    },
    {
      "id": "640f3b8a-310f-4407-a313-286de6e97c10",
      "mediaId": "03b91be3-e10b-46d7-9848-b28986d6f119",
      "platform": "zoom",
      "meetingTime": "2025-06-18T07:15:00Z",
      "title": "Weekly product review",
      "duration": 64.233333,
      "thumbnail": "https://images.fastpix.com/53875edc-3ad2-438d-88f0-b567cd0f8ebd/thumbnail.png"
    }
  ],
  "pagination": {
    "totalRecords": 2,
    "currentOffset": 1,
    "offsetCount": 1
  }
}
```

**SDK Code**

```python
import requests

url = "https://api.fastpix.com/v1/agents/notes-agent/meetings"

response = requests.get(url, auth=("<username>", "<password>"))

print(response.json())
```

```javascript
const url = 'https://api.fastpix.com/v1/agents/notes-agent/meetings';
const credentials = btoa("<username>:<password>");

const options = {method: 'GET', headers: {Authorization: `Basic ${credentials}`}};

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.fastpix.com/v1/agents/notes-agent/meetings"

	req, _ := http.NewRequest("GET", url, nil)

	req.SetBasicAuth("<username>", "<password>")

	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.fastpix.com/v1/agents/notes-agent/meetings")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)
request.basic_auth("<username>", "<password>")

response = http.request(request)
puts response.read_body
```

```java
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.get("https://api.fastpix.com/v1/agents/notes-agent/meetings")
  .basicAuth("<username>", "<password>")
  .asString();
```

```php
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('GET', 'https://api.fastpix.com/v1/agents/notes-agent/meetings', [
  'headers' => [
  ],
    'auth' => ['<username>', '<password>'],
]);

echo $response->getBody();
```

```csharp
using RestSharp;
using RestSharp.Authenticators;

var client = new RestClient("https://api.fastpix.com/v1/agents/notes-agent/meetings");
client.Authenticator = new HttpBasicAuthenticator("<username>", "<password>");
var request = new RestRequest(Method.GET);

IRestResponse response = client.Execute(request);
```

```swift
import Foundation

let credentials = Data("<username>:<password>".utf8).base64EncodedString()

let headers = ["Authorization": "Basic \(credentials)"]

let request = NSMutableURLRequest(url: NSURL(string: "https://api.fastpix.com/v1/agents/notes-agent/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()
```