{"id":10877,"library":"fathom-typescript","title":"Fathom TypeScript SDK","description":"The `fathom-typescript` package is Fathom's official TypeScript SDK, providing programmatic access to the Fathom External API. It allows developers to interact with Fathom meetings, teams, and team members, including operations like listing meetings, retrieving recording summaries and transcripts, and managing webhooks. The current stable version is 0.0.37. As an official SDK, it is actively maintained and designed to stay in sync with the Fathom API, though semantic versioning might not be strictly followed before a 1.0 release. It offers both CommonJS and ES Modules support, making it versatile for various JavaScript environments. Key differentiators include its direct integration with the Fathom platform and type-safe access to API resources, reducing common development errors through its comprehensive TypeScript definitions.","status":"active","version":"0.0.37","language":"javascript","source_language":"en","source_url":null,"tags":["javascript","typescript"],"install":[{"cmd":"npm install fathom-typescript","lang":"bash","label":"npm"},{"cmd":"yarn add fathom-typescript","lang":"bash","label":"yarn"},{"cmd":"pnpm add fathom-typescript","lang":"bash","label":"pnpm"}],"dependencies":[],"imports":[{"note":"The primary SDK client class. Supports both CommonJS and ES Modules environments.","wrong":"const Fathom = require('fathom-typescript');","symbol":"Fathom","correct":"import { Fathom } from 'fathom-typescript';"},{"note":"Example of importing a specific type for an API operation's response for enhanced type safety. The exact path to specific types might vary based on SDK structure.","symbol":"ListMeetingsResponse","correct":"import type { ListMeetingsResponse } from 'fathom-typescript/dist/sdk/models/operations';"},{"note":"Example of importing an enum type used for request parameters, ensuring type-safe API calls. The exact path to shared types might vary.","symbol":"MeetingType","correct":"import type { MeetingType } from 'fathom-typescript/dist/sdk/models/shared';"}],"quickstart":{"code":"import { Fathom } from \"fathom-typescript\";\n\nconst fathom = new Fathom({\n  security: {\n    apiKeyAuth: process.env.FATHOM_API_KEY ?? 'YOUR_API_KEY_HERE',\n  },\n});\n\nasync function run() {\n  try {\n    const result = await fathom.listMeetings({\n      calendarInviteesDomains: [\n        \"acme.com\",\n        \"client.com\"\n      ],\n      meetingType: \"all\",\n      recordedBy: [\n        \"ceo@acme.com\",\n        \"pm@acme.com\"\n      ],\n      teams: [\n        \"Sales\",\n        \"Engineering\"\n      ]\n    });\n\n    if (result) {\n      for await (const page of result) {\n        console.log(\"Retrieved meetings for page:\", page);\n      }\n    } else {\n      console.log(\"No meetings found or an empty result was returned.\");\n    }\n  } catch (error) {\n    console.error(\"Error listing meetings:\", error);\n  }\n}\n\nrun();","lang":"typescript","description":"Initializes the Fathom SDK client with an API key and demonstrates how to list meetings, iterating through potentially paginated results securely."},"warnings":[{"fix":"Always consult the changelog for each update. Consider pinning exact versions in `package.json` (e.g., `\"fathom-typescript\": \"~0.0.37\"` instead of `\"^0.0.37\"`) and manually review before upgrading to avoid unexpected behavior.","message":"As a pre-1.0 release, minor versions (`0.x.0` to `0.y.0`) and even patch versions (`0.0.x` to `0.0.y`) of `fathom-typescript` may introduce breaking API changes without strictly adhering to semantic versioning.","severity":"breaking","affected_versions":">=0.0.1"},{"fix":"Always use environment variables (e.g., `process.env.FATHOM_API_KEY`), a secure configuration management system, or a secret manager to handle sensitive credentials. Replace `<YOUR_API_KEY_HERE>` with a dynamically loaded secret.","message":"Hardcoding API keys directly in source code or committing them to version control (like in the quickstart example) is a significant security risk.","severity":"gotcha","affected_versions":">=0.0.1"},{"fix":"Utilize the provided asynchronous iterator pattern (e.g., `for await (const page of result)`) to ensure all available pages of data are fetched correctly for paginated responses.","message":"API operations that return multiple results (e.g., `listMeetings`) often implement pagination. Incorrectly handling pagination (e.g., forgetting to iterate or access subsequent pages) can lead to incomplete data retrieval.","severity":"gotcha","affected_versions":">=0.0.1"}],"env_vars":null,"last_verified":"2026-04-19T00:00:00.000Z","next_check":"2026-07-18T00:00:00.000Z","problems":[{"fix":"Ensure `import { Fathom } from \"fathom-typescript\";` is present and the `fathom` object is correctly instantiated with `const fathom = new Fathom({...});`.","cause":"The `Fathom` client instance was not correctly initialized or the import path for the SDK is wrong, leading to an undefined or incorrect object.","error":"TypeError: fathom.listMeetings is not a function"},{"fix":"Pass a valid `security` object with either `apiKeyAuth` or `bearerAuth` when creating the `Fathom` instance: `new Fathom({ security: { apiKeyAuth: process.env.FATHOM_API_KEY ?? '' } })`.","cause":"The `security` object was not provided or was incomplete during the `Fathom` client initialization, preventing proper API authentication.","error":"Error: Missing required authentication scheme `apiKeyAuth` or `bearerAuth` for security."},{"fix":"Consult the SDK's type definitions or the Fathom API documentation to ensure all request parameters are correctly named and typed according to the API specification for the specific operation.","cause":"Attempting to pass an unknown or mistyped property to an API request object, indicating a mismatch with the SDK's type definitions.","error":"Property 'someInvalidProperty' does not exist on type 'ListMeetingsRequest'."}],"ecosystem":"npm"}