Skills Development Fathom API Client Patterns in Python/TypeScript

Fathom API Client Patterns in Python/TypeScript

v20260423
fathom-sdk-patterns
Provides production-ready client patterns for interacting with the Fathom API, implemented in both Python and TypeScript. This SDK wrapper is designed for building reusable client services, implementing robust meeting data pipelines, or integrating Fathom's core features (like transcripts and summaries) into specialized applications.
Get Skill
328 downloads
Overview

Fathom SDK Patterns

Python Client

import os, requests
from dataclasses import dataclass
from typing import Optional

@dataclass
class FathomConfig:
    api_key: str
    base_url: str = "https://api.fathom.ai/external/v1"
    timeout: int = 30

class FathomClient:
    def __init__(self, config: Optional[FathomConfig] = None):
        self.config = config or FathomConfig(api_key=os.environ["FATHOM_API_KEY"])
        self.session = requests.Session()
        self.session.headers.update({"X-Api-Key": self.config.api_key})

    def list_meetings(self, limit: int = 20, **filters) -> list[dict]:
        params = {"limit": limit, **filters}
        resp = self.session.get(f"{self.config.base_url}/meetings", params=params, timeout=self.config.timeout)
        resp.raise_for_status()
        return resp.json().get("meetings", [])

    def get_transcript(self, recording_id: str) -> dict:
        resp = self.session.get(f"{self.config.base_url}/recordings/{recording_id}/transcript", timeout=self.config.timeout)
        resp.raise_for_status()
        return resp.json()

    def get_summary(self, recording_id: str) -> dict:
        resp = self.session.get(f"{self.config.base_url}/recordings/{recording_id}/summary", timeout=self.config.timeout)
        resp.raise_for_status()
        return resp.json()

TypeScript Client

class FathomClient {
  private apiKey: string;
  private baseUrl: string;

  constructor(apiKey?: string) {
    this.apiKey = apiKey ?? process.env.FATHOM_API_KEY!;
    this.baseUrl = "https://api.fathom.ai/external/v1";
  }

  private async get<T>(path: string, params?: Record<string, string>): Promise<T> {
    const url = new URL(`${this.baseUrl}${path}`);
    if (params) Object.entries(params).forEach(([k, v]) => url.searchParams.set(k, v));
    const resp = await fetch(url, { headers: { "X-Api-Key": this.apiKey } });
    if (!resp.ok) throw new Error(`Fathom ${resp.status}: ${await resp.text()}`);
    return resp.json();
  }

  async listMeetings(limit = 20) { return this.get<{meetings: any[]}>("/meetings", {limit: String(limit)}); }
  async getTranscript(id: string) { return this.get(`/recordings/${id}/transcript`); }
  async getSummary(id: string) { return this.get(`/recordings/${id}/summary`); }
}

Error Handling

Status Meaning Action
401 Invalid API key Regenerate key
404 Recording not found Verify recording ID
429 Rate limited (60/min) Backoff and retry

Resources

Next Steps

Apply in fathom-core-workflow-a for meeting analytics.

Info
Category Development
Name fathom-sdk-patterns
Version v20260423
Size 3.16KB
Updated At 2026-04-26
Language