Skip to main content

Filtering Data

Both TypeScript and Python SDKs provide powerful filtering capabilities for retrieving specific data from the Fathom API.

Basic Filtering

Start with simple single filters:
import { Fathom } from 'fathom-typescript';

const fathom = new Fathom({
  security: {
    apiKeyAuth: "YOUR_API_KEY"
  }
});

// Filter by team only
const result = await fathom.listMeetings({
  teams: ["Sales"]
});

for await (const page of result) {
  console.log(page);
}
from fathom_python import models, Fathom

with Fathom(
    security=models.Security(
        api_key_auth="YOUR_API_KEY",
    ),
) as fathom:
    # Filter by team only
    res = fathom.list_meetings(
        teams=["Sales"]
    )

    while res is not None:
        print(res)
        res = res.next()

Filter by Meeting Type

Pass the name of one of your team’s meeting types. Use listMeetingTypes() / list_meeting_types() to discover the valid names — an unknown name returns an empty list.
import { Fathom } from 'fathom-typescript';

const fathom = new Fathom({
  security: {
    apiKeyAuth: "YOUR_API_KEY"
  }
});

const result = await fathom.listMeetings({
  meetingType: "Quarterly Business Review"
});

for await (const page of result) {
  console.log(page);
}
from fathom_python import models, Fathom

with Fathom(
    security=models.Security(
        api_key_auth="YOUR_API_KEY",
    ),
) as fathom:
    res = fathom.list_meetings(
        meeting_type="Quarterly Business Review"
    )

    while res is not None:
        print(res)
        res = res.next()

Include Transcript Data

import { Fathom } from 'fathom-typescript';

const fathom = new Fathom({
  security: {
    apiKeyAuth: "YOUR_API_KEY"
  }
});

async function getMeetingsWithTranscripts() {
  const result = await fathom.listMeetings({
    includeTranscript: true
  });

  for await (const page of result) {
    for (const meeting of page.items || []) {
      console.log(`Meeting: ${meeting.title}`);
      if (meeting.transcript) {
        console.log(`Transcript: ${meeting.transcript}`);
      }
    }
  }
}
from fathom_python import Fathom, models

with Fathom(
    security=models.Security(
        api_key_auth="YOUR_API_KEY",
    ),
) as fathom:
    # Get meetings with transcript data
    meetings_with_transcripts = fathom.list_meetings(
        include_transcript=True
    )

    while meetings_with_transcripts is not None:
        for meeting in meetings_with_transcripts.items:
            if meeting.transcript:
                print(f"Meeting: {meeting.title}")
                print(f"Transcript: {meeting.transcript}")
        meetings_with_transcripts = meetings_with_transcripts.next()

Combining Multiple Filters

Combine multiple filters for precise queries:
import { Fathom } from 'fathom-typescript';

const fathom = new Fathom({
  security: {
    apiKeyAuth: "YOUR_API_KEY"
  }
});

async function getFilteredMeetings() {
  const result = await fathom.listMeetings({
    calendarInviteesDomains: [
      "acme.com",
      "client.com",
    ],
    recordedBy: [
      "ceo@acme.com",
      "pm@acme.com",
    ],
    teams: [
      "Sales",
      "Engineering",
    ],
    meetingType: "Quarterly Business Review",
    includeTranscript: true,
    includeCrmMatches: true
  });

  for await (const page of result) {
    for (const meeting of page.items || []) {
      console.log(`Meeting: ${meeting.title}`);
      console.log(`Recorded by: ${meeting.recordedBy?.name}`);
      if (meeting.crmMatches) {
        console.log(`CRM matches: ${meeting.crmMatches}`);
      }
    }
  }
}
from fathom_python import Fathom, models

with Fathom(
    security=models.Security(
        api_key_auth="YOUR_API_KEY",
    ),
) as fathom:
    # Complex filtering with multiple criteria
    filtered_meetings = fathom.list_meetings(
        calendar_invitees_domains=[
            "acme.com",
            "client.com",
        ],
        recorded_by=[
            "ceo@acme.com",
            "pm@acme.com",
        ],
        teams=[
            "Sales",
            "Engineering",
        ],
        meeting_type="Quarterly Business Review",
        include_transcript=True,
        include_crm_matches=True
    )

    while filtered_meetings is not None:
        for meeting in filtered_meetings.items:
            print(f"Meeting: {meeting.title}")
            print(f"Recorded by: {meeting.recorded_by.name}")
            if meeting.crm_matches:
                print(f"CRM matches: {meeting.crm_matches}")
        filtered_meetings = filtered_meetings.next()

TypeScript Type Safety

The TypeScript SDK provides full type safety for filter parameters:
import { Fathom } from 'fathom-typescript';

const fathom = new Fathom({
  security: {
    apiKeyAuth: "YOUR_API_KEY"
  }
});

// TypeScript will provide autocomplete and type checking
async function typedFiltering() {
  const result = await fathom.listMeetings({
    includeTranscript: true,
    includeCrmMatches: false
  });

  for await (const page of result) {
    // TypeScript knows the structure of the response
    console.log(`Page has ${page.items?.length || 0} meetings`);
  }
}
For complete parameter documentation including types, examples, and detailed descriptions, see the API Reference.