Fathom AI API

Fathom AI API as documented publicly: 18 operations. Contract generated from the documentation by API Evangelist (2026-11-08); not the provider's own document.

GitHub OpenAPI

Operations 18

GET /external/v1/meeting_types GET /external/v1/meeting_types #
GET /external/v1/meetings GET /external/v1/meetings #
POST /external/v1/oauth2/token POST /external/v1/oauth2/token #
GET /external/v1/recordings/{recordingid}/download GET /external/v1/recordings/{recordingId}/download #
POST /external/v1/recordings/{recordingid}/download POST /external/v1/recordings/{recordingId}/download #
GET /external/v1/recordings/{recordingid}/downloads/{downloadid} GET /external/v1/recordings/{recordingId}/downloads/{downloadId} #
GET /external/v1/recordings/{recordingid}/summary GET /external/v1/recordings/{recordingId}/summary #
GET /external/v1/webhooks GET /external/v1/webhooks #
POST /external/v1/webhooks POST /external/v1/webhooks #
DELETE /external/v1/webhooks/{id} DELETE /external/v1/webhooks/{id} #
GET /external/v1/webhooks/{id} GET /external/v1/webhooks/{id} #
GET /meeting_types Can I filter meetings by meeting type? #
GET /meetings List recent meetings #
POST /recordings/{recordingId}/download Can I download video or audio recordings via the API? #
GET /recordings/{recordingId}/downloads/{downloadId} Get download status #
GET /recordings/{recordingId}/summary Get summary #
POST /webhooks Create a webhook to receive new meeting content. #
DELETE /webhooks/{id} Delete a webhook #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/fathom-ai:fathom-ai-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

fathom-ai-openapi-generated.yml Raw ↑
openapi: 3.1.0
info:
  title: Fathom AI API
  version: '2026-11-08'
  description: 'GENERATED FROM DOCUMENTATION by API Evangelist on 2026-11-08: 18 operation(s) read from 16 public documentation page(s) (each
    operation names its page in x-source). This is not the provider''s published contract; Fathom AI has published no machine-readable contract
    that the pipeline could find. Engine: local.'
  x-evidence-tiers:
    code-example: 12
    documentation: 6
    pages-with-code: 12
    pages-read: 16
  x-generated-from: documentation
  x-provenance: generated
  x-authored-by: API Evangelist
  x-generated: '2026-11-08'
  x-generator: generate-contract-from-docs.py
  x-engine: local
  x-sources:
  - https://developers.fathom.ai/api-reference/meetings/list-meeting-types.md
  - https://developers.fathom.ai/quickstart
  - https://developers.fathom.ai/quickstart.md
  - https://developers.fathom.ai/faq
  - https://developers.fathom.ai/faq.md
  - https://developers.fathom.ai/llms.txt
  - https://developers.fathom.ai/sdks/oauth.md
  - https://developers.fathom.ai/api-reference/webhooks/create-a-webhook
  - https://developers.fathom.ai/api-reference/recordings/get-transcript
  - https://developers.fathom.ai/api-reference/meetings/list-meetings
  - https://developers.fathom.ai/api-reference/recordings/get-download-status
  - https://developers.fathom.ai/sdks/oauth
  - https://developers.fathom.ai/api-reference/webhooks/delete-a-webhook
  - https://developers.fathom.ai/api-reference/recordings/get-summary
  - https://developers.fathom.ai/api-reference/recordings/request-a-download
  - https://developers.fathom.ai/api-reference/meetings/list-meeting-types
servers:
- url: https://api.fathom.ai
paths:
  /external/v1/meeting_types:
    get:
      operationId: get_external_v1_meeting_types
      tags:
      - External
      summary: GET /external/v1/meeting_types
      x-source: https://developers.fathom.ai/api-reference/meetings/list-meeting-types
      responses:
        '200':
          description: Success (shape read from the example response on the page)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetExternalV1MeetingTypesResponse'
      x-evidence:
        kind: code-example
        language: curl
        snippet: 'curl curl --request GET  --url https://api.fathom.ai/external/v1/meeting_types  --header ''X-Api-Key: <api-key>'' import requests

          url = "https://api.fathom.ai/external/v1/meeting_types"

          headers = {"X-Api-Key": "<api-key>"}

          response = requests.get(url, headers=headers)

          print(response.text) const options = {method: ''GET'', headers: {''X-Api-Key'': ''<api-key>''}};

          fetch(''https://api.fathom.ai/external/v1/m'
  /external/v1/meetings:
    get:
      operationId: get_external_v1_meetings
      tags:
      - External
      summary: GET /external/v1/meetings
      x-source: https://developers.fathom.ai/quickstart
      responses:
        '200':
          description: Success (shape read from the example response on the page)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetExternalV1MeetingsResponse'
      x-evidence:
        kind: code-example
        language: curl
        snippet: "curl Python TypeScript curl https://api.fathom.ai/external/v1/meetings  -H \"X-Api-Key: YOUR_API_KEY\" \n import requests "
  /external/v1/oauth2/token:
    post:
      operationId: post_external_v1_oauth2_token
      tags:
      - External
      summary: POST /external/v1/oauth2/token
      x-source: https://developers.fathom.ai/sdks/oauth.md
      responses:
        '201':
          description: Success (status as documented)
      x-evidence:
        kind: code-example
        language: curl
        snippet: 'curl -X POST https://api.fathom.ai/external/v1/oauth2/token  -H "Content-Type: application/x-www-form-urlencoded"  -d "grant_type=authorization_code"  -d
          "code=AUTH_CODE"  -d "client_id=YOUR_CLIENT_ID"  -d "client_secret=YOUR_CLIENT_SECRET"  -d "redirect_uri=YOUR_REDIRECT_URI"

          ```'
  /external/v1/recordings/{recordingid}/download:
    get:
      operationId: get_external_v1_recordings_recordingid_download
      tags:
      - External
      summary: GET /external/v1/recordings/{recordingId}/download
      x-source: https://developers.fathom.ai/api-reference/recordings/request-a-download
      parameters:
      - name: recordingid
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Success (shape read from the example response on the page)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetExternalV1RecordingsRecordingidDownloadResponse'
      x-evidence:
        kind: code-example
        language: curl
        snippet: "curl);\nif ($err) {\n echo \"cURL Error #:\" . $err;\n} else {\n echo $response;\n} package main\nimport (\n \"fmt\"\n \"strings\"\
          \n \"net/http\"\n \"io\"\n)\nfunc main() {\n url := \"https://api.fathom.ai/external/v1/recordings/{recording_id}/download\"\n payload\
          \ := strings.NewReader(\"{\\n \\\"destination_url\\\": \\\"https://example.com/destination\\\"\\n}\")\n req, _ := http.NewRequest(\"\
          POST\", url, payload)\n req.Header.Add(\"X-Api-K"
    post:
      operationId: post_external_v1_recordings_recordingid_download
      tags:
      - External
      summary: POST /external/v1/recordings/{recordingId}/download
      x-source: https://developers.fathom.ai/api-reference/recordings/request-a-download
      parameters:
      - name: recordingid
        in: path
        required: true
        schema:
          type: string
      responses:
        '201':
          description: Success (shape read from the example response on the page)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PostExternalV1RecordingsRecordingidDownloadResponse'
      x-evidence:
        kind: code-example
        language: curl
        snippet: "curl curl --request POST  --url https://api.fathom.ai/external/v1/recordings/{recording_id}/download  --header 'Content-Type:\
          \ application/json'  --header 'X-Api-Key: <api-key>'  --data ' \n { \n \"destination_url\": \"https://example.com/destination\" \n }\
          \ \n ' import requests\nurl = \"https://api.fathom.ai/external/v1/recordings/{recording_id}/download\"\npayload = { \"destination_url\"\
          : \"https://example.com/d"
  /external/v1/recordings/{recordingid}/downloads/{downloadid}:
    get:
      operationId: get_external_v1_recordings_recordingid_downloads_downloadid
      tags:
      - External
      summary: GET /external/v1/recordings/{recordingId}/downloads/{downloadId}
      x-source: https://developers.fathom.ai/api-reference/recordings/get-download-status
      parameters:
      - name: recordingid
        in: path
        required: true
        schema:
          type: string
      - name: downloadid
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Success (shape read from the example response on the page)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetExternalV1RecordingsRecordingidDownloadsDownloadidRespons'
      x-evidence:
        kind: code-example
        language: curl
        snippet: 'curl curl --request GET  --url https://api.fathom.ai/external/v1/recordings/{recording_id}/downloads/{download_id}  --header
          ''X-Api-Key: <api-key>'' import requests

          url = "https://api.fathom.ai/external/v1/recordings/{recording_id}/downloads/{download_id}"

          headers = {"X-Api-Key": "<api-key>"}

          response = requests.get(url, headers=headers)

          print(response.text) const options = {method: ''GET'', headers:'
  /external/v1/recordings/{recordingid}/summary:
    get:
      operationId: get_external_v1_recordings_recordingid_summary
      tags:
      - External
      summary: GET /external/v1/recordings/{recordingId}/summary
      x-source: https://developers.fathom.ai/api-reference/recordings/get-summary
      parameters:
      - name: recordingid
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Success (shape read from the example response on the page)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetExternalV1RecordingsRecordingidSummaryResponse'
      x-evidence:
        kind: code-example
        language: curl
        snippet: 'curl curl --request GET  --url https://api.fathom.ai/external/v1/recordings/{recording_id}/summary  --header ''X-Api-Key: <api-key>''
          import requests

          url = "https://api.fathom.ai/external/v1/recordings/{recording_id}/summary"

          headers = {"X-Api-Key": "<api-key>"}

          response = requests.get(url, headers=headers)

          print(response.text) const options = {method: ''GET'', headers: {''X-Api-Key'': ''<api-key>''}};

          fe'
  /external/v1/webhooks:
    get:
      operationId: get_external_v1_webhooks
      tags:
      - External
      summary: GET /external/v1/webhooks
      x-source: https://developers.fathom.ai/api-reference/webhooks/create-a-webhook
      responses:
        '200':
          description: Success (shape read from the example response on the page)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetExternalV1WebhooksResponse'
      x-evidence:
        kind: code-example
        language: curl
        snippet: "curl);\nif ($err) {\n echo \"cURL Error #:\" . $err;\n} else {\n echo $response;\n} package main\nimport (\n \"fmt\"\n \"strings\"\
          \n \"net/http\"\n \"io\"\n)\nfunc main() {\n url := \"https://api.fathom.ai/external/v1/webhooks\"\n payload := strings.NewReader(\"\
          {\\n \\\"destination_url\\\": \\\"https://example.com/webhook\\\",\\n \\\"triggered_for\\\": [\\n \\\"my_recordings\\\",\\n \\\"my_shared_with_team_recordings\\\
          \",\\n \\\"shared_external_recor"
    post:
      operationId: post_external_v1_webhooks
      tags:
      - External
      summary: POST /external/v1/webhooks
      x-source: https://developers.fathom.ai/api-reference/webhooks/create-a-webhook
      responses:
        '201':
          description: Success (status as documented)
      x-evidence:
        kind: code-example
        language: curl
        snippet: "curl curl --request POST  --url https://api.fathom.ai/external/v1/webhooks  --header 'Content-Type: application/json'  --header\
          \ 'X-Api-Key: <api-key>'  --data ' \n { \n \"destination_url\": \"https://example.com/webhook\", \n \"triggered_for\": [ \n \"my_recordings\"\
          , \n \"my_shared_with_team_recordings\", \n \"shared_external_recordings\" \n ], \n \"include_action_items\": true, \n \"include_crm_matches\"\
          : true, \n \"inclu"
  /external/v1/webhooks/{id}:
    delete:
      operationId: delete_external_v1_webhooks_id
      tags:
      - External
      summary: DELETE /external/v1/webhooks/{id}
      x-source: https://developers.fathom.ai/api-reference/webhooks/delete-a-webhook
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Success (shape read from the example response on the page)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeleteExternalV1WebhooksIdResponse'
      x-evidence:
        kind: code-example
        language: curl
        snippet: 'curl curl --request DELETE  --url https://api.fathom.ai/external/v1/webhooks/{id}  --header ''X-Api-Key: <api-key>'' import
          requests

          url = "https://api.fathom.ai/external/v1/webhooks/{id}"

          headers = {"X-Api-Key": "<api-key>"}

          response = requests.delete(url, headers=headers)

          print(response.text) const options = {method: ''DELETE'', headers: {''X-Api-Key'': ''<api-key>''}};

          fetch(''https://api.fathom.ai/exte'
    get:
      operationId: get_external_v1_webhooks_id
      tags:
      - External
      summary: GET /external/v1/webhooks/{id}
      x-source: https://developers.fathom.ai/api-reference/webhooks/delete-a-webhook
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Success (status as documented)
      x-evidence:
        kind: code-example
        language: curl
        snippet: "curl);\nif ($err) {\n echo \"cURL Error #:\" . $err;\n} else {\n echo $response;\n} package main\nimport (\n \"fmt\"\n \"net/http\"\
          \n \"io\"\n)\nfunc main() {\n url := \"https://api.fathom.ai/external/v1/webhooks/{id}\"\n req, _ := http.NewRequest(\"DELETE\", url,\
          \ nil)\n req.Header.Add(\"X-Api-Key\", \"<api-key>\")\n res, _ := http.DefaultClient.Do(req)\n defer res.Body.Close()\n body, _ := io.ReadAll(res.Body)\n\
          \ fmt.Println(strin"
  /meeting_types:
    get:
      operationId: get_meeting_types
      tags:
      - Meeting Types
      summary: Can I filter meetings by meeting type?
      x-source: https://developers.fathom.ai/faq
      responses:
        '200':
          description: Success (status as documented)
      x-evidence:
        kind: documentation
  /meetings:
    get:
      operationId: get_meetings
      tags:
      - Meetings
      summary: List recent meetings
      description: List the 10 most recent meetings recorded by you or shared to your team.
      x-source: https://developers.fathom.ai/quickstart
      parameters:
      - name: cursor
        in: query
        required: false
        schema:
          type: string
        description: Cursor for pagination (use next_cursor from previous response)
      - name: include_transcript
        in: query
        required: false
        schema:
          type: string
        description: Include transcripts in the response
      - name: recorded_by[]
        in: query
        required: false
        schema:
          type: string
        description: Filter meetings recorded by the given email
      - name: created_after
        in: query
        required: false
        schema:
          type: string
        description: Filter meetings created after this timestamp
      - name: created_before
        in: query
        required: false
        schema:
          type: string
        description: Filter meetings created before this timestamp
      responses:
        '200':
          description: Success (status as documented)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetMeetingsResponse'
      x-evidence:
        kind: documentation
  /recordings/{recordingId}/download:
    post:
      operationId: post_recordings_recordingId_download
      tags:
      - Recordings
      summary: Can I download video or audio recordings via the API?
      x-source: https://developers.fathom.ai/faq
      parameters:
      - name: recordingId
        in: path
        required: true
        schema:
          type: string
      responses:
        '201':
          description: Success (status as documented)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PostRecordingsRecordingidDownloadResponse'
      x-evidence:
        kind: documentation
  /recordings/{recordingId}/downloads/{downloadId}:
    get:
      operationId: get_recordings_recordingId_downloads_downloadId
      tags:
      - Recordings
      summary: Get download status
      x-source: https://developers.fathom.ai/api-reference/recordings/get-download-status
      parameters:
      - name: recordingId
        in: path
        required: true
        schema:
          type: string
      - name: downloadId
        in: path
        required: true
        schema:
          type: string
      - name: X-Api-Key
        in: header
        required: true
        schema:
          type: string
        description: Include your API key in the X-Api-Key header of every request.
      responses:
        '200':
          description: Success (status as documented)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetRecordingsRecordingidDownloadsDownloadidResponse'
      x-evidence:
        kind: documentation
  /recordings/{recordingId}/summary:
    get:
      operationId: get_recordings_recordingId_summary
      tags:
      - Recordings
      summary: Get summary
      x-source: https://developers.fathom.ai/api-reference/recordings/get-summary
      parameters:
      - name: recordingId
        in: path
        required: true
        schema:
          type: string
      - name: destination_url
        in: query
        required: false
        schema:
          type: string
        description: Destination URL for where we'll POST the call summary. If not sent, this endpoint will return the data directly.
      responses:
        '200':
          description: Success (status as documented)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetRecordingsRecordingidSummaryResponse'
      x-evidence:
        kind: documentation
  /webhooks:
    post:
      operationId: post_webhooks
      tags:
      - Webhooks
      summary: Create a webhook to receive new meeting content.
      x-source: https://developers.fathom.ai/api-reference/webhooks/create-a-webhook
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PostWebhooksRequest'
      responses:
        '201':
          description: Success (status as documented)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PostWebhooksResponse'
      x-evidence:
        kind: documentation
  /webhooks/{id}:
    delete:
      operationId: delete_webhooks_id
      tags:
      - Webhooks
      summary: Delete a webhook
      x-source: https://developers.fathom.ai/api-reference/webhooks/delete-a-webhook
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
      - name: X-Api-Key
        in: header
        required: true
        schema:
          type: string
        description: Include your API key in the X-Api-Key header of every request.
      responses:
        '204':
          description: Success (status as documented)
      x-evidence:
        kind: documentation
components:
  schemas:
    GetExternalV1MeetingTypesResponse:
      type: object
      properties:
        method:
          type: string
        headers:
          type: object
          properties:
            X-Api-Key:
              type: string
    GetExternalV1MeetingsResponse:
      type: object
      properties:
        X-Api-Key:
          type: string
    GetExternalV1RecordingsRecordingidDownloadResponse:
      type: object
      properties:
        download_id:
          type: string
        recording_id:
          type: integer
        status:
          type: string
        video:
          type: object
          properties:
            url:
              type: string
            content_type:
              type: string
            file_size_bytes:
              type: integer
            expires_at:
              type: string
              format: date-time
        audio:
          type: object
          properties:
            url:
              type: string
            content_type:
              type: string
            file_size_bytes:
              type: integer
            expires_at:
              type: string
              format: date-time
        failure_reason:
          type: string
    PostExternalV1RecordingsRecordingidDownloadResponse:
      type: object
      properties:
        download_id:
          type: string
        recording_id:
          type: integer
        status:
          type: string
        video:
          type: object
          properties:
            url:
              type: string
            content_type:
              type: string
            file_size_bytes:
              type: integer
            expires_at:
              type: string
              format: date-time
        audio:
          type: object
          properties:
            url:
              type: string
            content_type:
              type: string
            file_size_bytes:
              type: integer
            expires_at:
              type: string
              format: date-time
        failure_reason:
          type: string
    GetExternalV1RecordingsRecordingidDownloadsDownloadidRespons:
      type: object
      properties:
        method:
          type: string
        headers:
          type: object
          properties:
            X-Api-Key:
              type: string
    GetExternalV1RecordingsRecordingidSummaryResponse:
      type: object
      properties:
        method:
          type: string
        headers:
          type: object
          properties:
            X-Api-Key:
              type: string
    GetExternalV1WebhooksResponse:
      type: object
      properties:
        id:
          type: string
        url:
          type: string
        secret:
          type: string
        created_at:
          type: string
          format: date-time
        include_transcript:
          type: boolean
        include_crm_matches:
          type: boolean
        include_summary:
          type: boolean
        include_action_items:
          type: boolean
        triggered_for:
          type: array
          items:
            type: string
    DeleteExternalV1WebhooksIdResponse:
      type: object
      properties:
        method:
          type: string
        headers:
          type: object
          properties:
            X-Api-Key:
              type: string
    GetMeetingsResponse:
      type: object
      properties:
        items:
          type: array
          description: List of meeting objects
        limit:
          type: integer
          description: Page size limit
        next_cursor:
          type: string
          description: Cursor for the next page
    PostRecordingsRecordingidDownloadResponse:
      type: object
      properties:
        signed_url:
          type: string
          description: A short‑lived signed URL that expires ~24 hours after generation.
    GetRecordingsRecordingidDownloadsDownloadidResponse:
      type: object
      properties:
        download_id:
          type: string
          description: Download identifier.
        recording_id:
          type: integer
          description: Recording identifier.
        status:
          type: string
          description: 'Current status of the download. Options: processing, completed, failed, expired.'
        video:
          type: object
          description: Present when a video recording's download is completed.
        audio:
          type: object
          description: Present when an audio‑only recording's download is completed.
        failure_reason:
          type: string
          description: 'Present when the download failed. Options: generation_failed, generation_timeout.'
    GetRecordingsRecordingidSummaryResponse:
      type: object
      properties:
        summary:
          type: object
          description: Summary object returned when destination_url is not provided.
    PostWebhooksRequest:
      type: object
      properties:
        destination_url:
          type: string
          description: The URL to send the webhook to.
        triggered_for:
          type: array
          description: You must send at least one of the following types of recordings to trigger on.
        include_action_items:
          type: boolean
          description: Include the action items for each meeting.
        include_crm_matches:
          type: boolean
          description: Include CRM matches for each meeting.
        include_summary:
          type: boolean
          description: Include the summary for each meeting.
        include_transcript:
          type: boolean
          description: Include the transcript for each meeting.
      required:
      - destination_url
      - triggered_for
    PostWebhooksResponse:
      type: object
      properties:
        id:
          type: string
          description: The created webhook ID.
        url:
          type: string
          description: The webhook URL.
        secret:
          type: string
          description: The secret used to verify the webhook signature.
        created_at:
          type: string
          description: The date and time the webhook was created in ISO 8601 format.
        include_transcript:
          type: boolean
          description: Whether transcript is included.
        include_crm_matches:
          type: boolean
          description: Whether CRM matches are included.
        include_summary:
          type: boolean
          description: Whether summary is included.
        include_action_items:
          type: boolean
          description: Whether action items are included.
        triggered_for:
          type: array
          description: The list of recording types that trigger the webhook.
  securitySchemes:
    apiKey:
      type: apiKey
      in: header
      name: X-Api-Key
security:
- apiKey: []
tags:
- name: External
- name: Meeting Types
- name: Meetings
- name: Recordings
- name: Webhooks