Fathom ACTION
Request Recording Download
Request a downloadable video/audio file for a recording. The initial response may already have
status: completed with the signed download URL included (common for audio-only recordings, which finish synchronously) — use that URL right away in this case. Otherwise the response returns status: processing and a download_id; use Get Recording Download Status to poll until the status is no longer processing. Stop polling on completed (signed download URL is included) or on failed (inspect the returned failure reason instead of continuing to poll), or provide a Destination URL to have Fathom POST the completed payload there instead of polling. See the documentation- Action
- Writes data
- OAuth
- SDK
- MCP
IMPLEMENTATION
Call this tool
Connect a user's Fathom account once, then configure and run Request Recording Download from your backend or agent.
import { PipedreamClient } from "@pipedream/sdk"
const pd = new PipedreamClient({
projectId: process.env.PIPEDREAM_PROJECT_ID!,
clientId: process.env.PIPEDREAM_CLIENT_ID!,
clientSecret: process.env.PIPEDREAM_CLIENT_SECRET!,
projectEnvironment: "production",
})
const result = await pd.actions.run({
id: "fathom-request-recording-download",
externalUserId: "{external_user_id}", // any stable ID for this user in your system
configuredProps: {
fathom: { authProvisionId: "apn_xxxxxxx" },
recordingId: "Recording ID",
destinationUrl: "Destination URL",
},
})
console.log(result)curl -X POST https://api.pipedream.com/v1/connect/{project_id}/actions/run \
-H "Content-Type: application/json" \
-H "X-PD-Environment: production" \
-H "Authorization: Bearer {access_token}" \
-d '{
"external_user_id": "{external_user_id}",
"id": "fathom-request-recording-download",
"configured_props": {
"fathom": { "authProvisionId": "apn_xxxxxxx" },
"recordingId": "Recording ID",
"destinationUrl": "Destination URL"
}
}'// accessToken: mint a short-lived token with the Connect SDK — see the MCP guide
const transport = new StreamableHTTPClientTransport(
new URL("https://remote.mcp.pipedream.net/v3"),
{
requestInit: {
headers: {
Authorization: `Bearer ${accessToken}`,
"x-pd-project-id": "{project_id}",
"x-pd-environment": "production",
"x-pd-external-user-id": "{external_user_id}", // any stable ID for this user in your system
"x-pd-app-slug": "fathom",
},
},
},
)
const mcp = new Client({ name: "my-agent", version: "1.0.0" })
await mcp.connect(transport)
const { tools } = await mcp.listTools()
// listTools() hands your model this tool's input schema, so it can
// fill the arguments itself:
const result = await mcp.callTool({
name: "fathom-request-recording-download",
arguments: {
recordingId: "Recording ID",
destinationUrl: "Destination URL",
},
})SCHEMA
Inputs
Pipedream supplies the connected account. Your application provides the operation-specific values below. Dynamic inputs are resolved against that user's account.
| Property | Type | Description |
|---|---|---|
recordingId Recording ID | string | The ID of a recording Required Dynamic |
destinationUrl Destination URL | string | A webhook URL where Fathom POSTs the completed download payload once ready, e.g. https://example.com/destination. If omitted, poll Get Recording Download Status instead. Optional |
REFERENCE
Tool details
Behavior hints are published with the component in the Pipedream registry and surface as MCP tool annotations, so an agent can reason about a tool before it calls it.
- Registry key
- fathom-request-recording-download
- Version
- 0.0.2
- App
- Fathom
- Authentication
- OAuth
- Read-only
- No
- Destructive
- No
- Open world
- Yes
- Source
- View on GitHub ↗