Introduction
What the Listener API is, who it is for, and how its pieces fit together.
2 min read
The Listener API gives your code the same view of a podcast business that the Listener apps show: shows, reach across YouTube, audio and social, episodes, episode clusters, sponsorship campaigns and shared reports. It is one API for every Listener account, whether that is a single creator on listener.com or a network on Listener Networks.
The API, the MCP server, the in-app agent and the apps themselves all read through the same metric code, so a reach number you fetch here matches the number on the Analytics page for the same window.
What you can build#
The pieces#
| Surface | Where | Use it for |
|---|---|---|
| REST API | https://api.listener.com/v1 | Reading and changing workspace data from your servers and scripts. |
| OAuth 2.0 | https://api.listener.com/oauth | Acting on behalf of Listener users who connect your app. |
| Webhooks and events | /v1/webhook-endpoints, /v1/events | Hearing about changes without polling everything. |
| MCP server | https://mcp.listener.com/mcp | Giving Claude, ChatGPT or Cursor access to a workspace. |
| OpenAPI document | https://api.listener.com/v1/openapi.json | Generating clients, importing into Postman or Insomnia, feeding LLM tools. |
Design principles#
- Resource-oriented and predictable. Every payload has an
objectand anid, lists share one envelope, errors share one shape. See Requests & responses. - Honest numbers. Windowed analytics say which window they resolved, how much of it has data and how fresh each platform is. Growth is
nullrather than a misleading percentage when the baseline is thin. See Time windows and Data freshness. - Safe writes. Every write accepts
dry_run, every write accepts anIdempotency-Key, and destructive or metered writes needconfirm: true. See Testing with dry_run. - Least privilege. Keys and OAuth grants carry fine-grained scopes, and every endpoint declares the one scope it needs. See Scopes.
What the API does not do#
Some actions stay in the apps on purpose: billing and plan changes, adding or removing team members and subnetworks, connecting platform accounts (YouTube, Instagram and so on), and brand invites. You can read most of that state through the API; you change it in the app.
Using an AI assistant?
Every page has a Copy page button and the whole site is available as llms.txt and llms-full.txt. If you want an assistant to work with your workspace directly, connect it to the MCP server instead.