key or store it in your account keys under api_key.
Things to know:
- Rate limits: Fathom enforces both an hourly volume limit and a concurrency limit per account. When exceeded, the API returns HTTP 429 with a
Retry-Afterheader. - Retired endpoints: Fathom retired the Wipe endpoints and the event-by-ID endpoints (
events.create,events.get,events.update,events.delete,events.wipe,sites.wipe); they return HTTP 410 Gone. Events now appear once your site tracks them: read them withevents.listand set their currency withevents.setCurrency.events.deleteByNameonly removes an event’s currency setting; it does not delete the event or its completions. Wiping data is no longer possible through the API. - Aggregation filtering: Use
reports.aggregationto query pageview or event analytics with flexible grouping and date ranges. Filters are structured objects matching supported operators (is,is not,is like,is not like,matching,not matching).
- 23 typed API operations
Setup
1
Install
2
Add the plugin
corsair.ts
multiTenancy: true, scope calls with corsair.withTenant(id). See Quick start for KEK + Hub keys, and Multi-tenancy for account isolation.3
Choose authentication
- API Key (Recommended)
Store the Fathom API key before the first call: More: API Key
pnpm corsair setup --plugin=fathom --tenant=acme api_key=<your-key> (leave out --tenant without multiTenancy), or pass it as key in the plugin options. With Hub, each tenant enters their own key on the connect page. See API key auth.4
Connect a tenant
Mint a connect link and send the tenant to it. Hub hosts the page and delivers the result to your app — see Connect / OAuth.
Example API calls
List sites in FathomWhat’s next
API reference
Every
fathom.api.* operation with input and output types.Connect / OAuth
createLink, Hub delivery, and tenant connect flows.
Use with agents
Expose this plugin’s operations as MCP tools.