[Cotlet](https://cotlet.dev/index.md) · [Integrations](https://cotlet.dev/integrations.md) · [How it works](https://cotlet.dev/how-it-works.md) · [Security](https://cotlet.dev/security.md) · [For developers](https://cotlet.dev/for-developers.md) · [For automation agencies](https://cotlet.dev/for-agencies.md) · [Blog](https://cotlet.dev/blog.md) · [API docs](https://cotlet.dev/docs.md) · [Help center](https://cotlet.dev/help.md) · [Changelog](https://cotlet.dev/changelog.md) · [Contact](https://cotlet.dev/contact.md) · [Pricing](https://cotlet.dev/pricing.md) · [Sign up](https://cotlet.dev/signup)

# DistroKid API and MCP server: Let your AI agent read your DistroKid Bank.

> DistroKid has no public API, no developer docs, no webhooks and no MCP server (checked 28 Oct 2026). Your money and stats leave the dashboard only as a Bank file you download by hand. Cotlet runs 10 DistroKid tools hosted, over MCP for agents and REST for scripts.

Releases, earnings, stats and splits from your DistroKid account. Use it in ChatGPT, Claude or any AI agent over MCP, or in n8n, Make and scripts over REST.

[MCP setup](https://cotlet.dev/integrations/distrokid-api-mcp-server.md#connect)
[REST API guide](https://cotlet.dev/integrations/distrokid-api-mcp-server.md#rest-api)

- Free 7-day trial, no card
- Unofficial, not affiliated with DistroKid
- Page: https://cotlet.dev/integrations/distrokid-api-mcp-server

## What can you automate in DistroKid?

- Earnings by store, song or artist
- Spot releases stuck in yellow or red
- Daily streams from Spotify and Apple Music
- Pay collaborators with Splits
- Count HyperFollow followers
- Submit a metadata edit request

## Does DistroKid have an MCP server or an API?

- Zapier, n8n, Pipedream and Composio have no DistroKid app; each answers 404 for it.
- A DistroKid job ad for an API engineer names "Model Context Protocol (MCP) server implementations" as future work. Nothing has shipped.
- Community code on GitHub calls the private API of the iOS app with a token you intercept. DistroKid's terms ban reverse engineering.

| What you need | Bank CSV by hand | GitHub wrapper | Cotlet |
|---|---|---|---|
| Earnings by store, song or month | Download, then a spreadsheet | If you write it | Yes, filtered |
| Release status and daily stats | No | If you write it | Yes |
| Read and change Splits | No | If you write it | Yes, change after your OK |
| Runs while your computer sleeps | No | No | Yes, hosted |
| Kept working when DistroKid changes | Yes, official | Up to you | Yes, tested every 12 h |

Checked 28 Oct 2026. Sources: [DistroKid Help: Using the DistroKid Bank to see your earnings](https://support.distrokid.com/hc/en-us/articles/360013534474-Using-the-DistroKid-Bank-to-See-Your-Earnings), [DistroKid Help: Saving your earnings information as a spreadsheet file](https://support.distrokid.com/hc/en-us/articles/360013648253-Saving-Your-Earnings-Information-as-a-Spreadsheet-File), [DistroKid API Engineer job ad](https://jobs.insightpartners.com/companies/distrokid/jobs/66375441-api-engineer), [DistroKid Terms of Service](https://distrokid.com/terms/)

## How does Cotlet connect to DistroKid?

1. **Sign in to DistroKid.** Use your own account in its Cotlet Cloud Browser.
2. **Choose MCP or REST.** Connect your agent or create a Cotlet API key.
3. **Run your workflow.** Ask your agent or send an HTTP request.

We never keep your DistroKid password, no tool withdraws money, and a split change waits for your approval.

## Connect DistroKid to your agent or workflow

Use MCP with your AI agent, or HTTP requests in n8n, Make, Zapier and scripts. Follow the MCP setup below or jump to the REST guide.

1. **Sign in to DistroKid in a Cloud Browser.** Make a Cotlet account, open DistroKid in its Cloud Browser, sign in as the account owner, type the emailed code and press Enable for agents.
2. **Add the Cotlet address.** Enter https://cotlet.dev/mcp/v1 as a new MCP server or connector in your agent.
3. **Allow the agent.** Chat apps open a Cotlet sign-in window. Code editors, n8n and cron scripts use an API key from the console instead.

DistroKid shares `https://cotlet.dev/mcp/v1` with every other app in your workspace. Turned DistroKid on after you connected? Refresh the connector and its 10 tools appear.

Claude:

```
Settings > Connectors > Add custom connector
URL: https://cotlet.dev/mcp/v1/connect

Claude Code:
claude mcp add --transport http cotlet-distrokid \
  https://cotlet.dev/mcp/v1 \
  --header "Authorization: Bearer $COTLET_API_KEY"
```

ChatGPT:

```
Settings > Apps & Connectors > Create
MCP server URL: https://cotlet.dev/mcp/v1/connect
Authentication: OAuth
```

Cursor:

```
// ~/.cursor/mcp.json
{
  "mcpServers": {
    "cotlet-distrokid": {
      "url": "https://cotlet.dev/mcp/v1",
      "headers": { "Authorization": "Bearer ${env:COTLET_API_KEY}" }
    }
  }
}
```

Codex:

```
# ~/.codex/config.toml
[mcp_servers.cotlet-distrokid]
url = "https://cotlet.dev/mcp/v1"
bearer_token_env_var = "COTLET_API_KEY"
```

n8n:

```
MCP Client Tool (inside an AI Agent)
Transport: HTTP Streamable
URL: https://cotlet.dev/mcp/v1
Auth: Bearer, <your key>
Tool: distrokid_read
```

Make, Zapier:

```
Make: MCP Client > Call a tool
Zapier: MCP Client by Zapier > Run Tool
Server URL: https://cotlet.dev/mcp/v1
Token: <your key>
Tool: distrokid_write
```

## How to use the DistroKid REST API

### Create your Cotlet API key

Create a Cotlet API key with access to DistroKid and its read operations. Store it as `COTLET_API_KEY` in your environment or automation platform's credential store.

Connect DistroKid in Cotlet and enable it for agents. Account access: Your own DistroKid account (the account owner; Daily Stats needs the Musician Plus or Ultimate plan).

### Make your first DistroKid API request

REST:

```
curl https://cotlet.dev/api/v1/distrokid/releases \
  -H "Authorization: Bearer $COTLET_API_KEY"
```

### Read releases and apply the operation limits

A successful REST call puts the tool output in `result`. This illustrative response excerpt omits call IDs, messages and credit details.

Illustrative response excerpt:

```
{
  "status": "success",
  "app": "distrokid",
  "tool": "list_releases",
  "result": {
    "releases": [
      {
        "release_id": "r_8f3a21",
        "title": "Night Drive",
        "artist": "Mara Quill",
        "release_date": "2026-09-12",
        "status": "delivered"
      },
      {
        "release_id": "r_71c0be",
        "title": "Low Tide EP",
        "artist": "Mara Quill",
        "release_date": "2026-10-24",
        "status": "processing"
      }
    ],
    "next_cursor": null
  }
}
```

Returns title, artist, release date and status for each release, newest first, one page at a time with next_cursor. The status mirrors the colored circle left of the artwork on MyMusic: green is delivered to services, yellow is still processing or being delivered, red is an error that blocks delivery.

Release review, approval and delivery can take several days, so yellow is normal for a new upload.

`cursor`: next_cursor from the previous page.

Keep the same selection when continuing a list. Compare changed record values as well as identifiers when refreshing your destination.

### DistroKid workflows for agents and automations

| Tool | Connect through | Example workflow |
|---|---|---|
| n8n | HTTP Request | Get one release: tracks, label, release date, status and whether an edit request is pending. Use `get_release` in your configured content report. |
| Make | HTTP > Make a request | List the detail rows behind the Bank totals, as under "See excruciating detail". Use `list_earnings_rows` in your configured content report. |
| Python or Node.js | REST API | Estimated daily streams and sales for the last days, from the Stats page. Use `get_daily_stats` in your configured content report. |

Send `Authorization: Bearer <your Cotlet API key>` in request headers. You configure the schedule, destination and record comparisons.

Cotlet reads DistroKid; your workflow steps write to your chosen destination. These HTTP workflows do not require a native Cotlet connector or a prebuilt template.

Python and Node.js can use the same HTTP requests without an AI agent. Keep access keys in credentials, outside shared workflow exports.

The [API and MCP reference](https://cotlet.dev/integrations/distrokid-api-mcp-server.md#tools) lists operations and inputs. The [REST API guide](https://cotlet.dev/docs/api.md) explains authentication, errors and approvals.

## DistroKid API endpoints and MCP tools

### Bank earnings, daily stats and HyperFollow

Stores report every 1 to 2 months, so the last months of the Bank can be empty. Daily stats need Musician Plus or Ultimate. Fan emails from HyperFollow are never returned.

- **Get earnings summary** (`get_earnings_summary`, read): Earnings totals from the Bank page, grouped by artist, song or service.
- **List earnings rows** (`list_earnings_rows`, read): List the detail rows behind the Bank totals, as under "See excruciating detail".
- **Get daily stats** (`get_daily_stats`, read): Estimated daily streams and sales for the last days, from the Stats page.
- **Get HyperFollow stats** (`get_hyperfollow_stats`, read): Visitors and followers added by the HyperFollow page of a release.

### Releases and edit requests

Status follows the colored circle on MyMusic. One edit request at a time; track order, genres and ISRCs stay locked. A removal cannot be called back.

- **List releases** (`list_releases`, read): List the releases on the account, as on the MyMusic page, with their delivery status.
- **Get release** (`get_release`, read): Get one release: tracks, label, release date, status and whether an edit request is pending.
- **Edit release** (`edit_release`, write, asks first): Submit an edit request for a release, as with Edit Release and Submit Edit Request.
- **Remove release from stores** (`remove_release`, write, asks first): Remove a release from all stores, as with "Remove this release from all stores".

### Splits

Percentages on a song add up to 100. Any change sends collaborators a fresh invitation to accept.

- **Get splits** (`get_splits`, read): Get the collaborators and percentages set on a release.
- **Set splits** (`set_splits`, write, asks first): Replace the collaborators and percentages on a song.

Inputs, REST path and example response of every tool: https://cotlet.dev/integrations/distrokid-api-mcp-server#tools

## Who can see my DistroKid session, and how do I revoke it?

- **What we store.** Your signed-in DistroKid profile, AES-256-GCM encrypted, in Finland. No password.
- **What your agent gets.** The 10 DistroKid tools, never the cookie.
- **What the session sees.** Your releases, Bank totals, stats and collaborator emails in Splits.
- **What no tool touches.** Withdrawals, payout details, tax forms, your plan and new uploads.
- **The emailed sign-in code.** DistroKid emails a code on a new device. You type it; we never do.
- **How to cut access.** Disable for agents, reset the browser, or change your DistroKid password.

cotlet.dev rates A+ on Qualys SSL Labs, securityheaders.com and Mozilla Observatory ([live results](https://cotlet.dev/security.md)). We have no SOC 2 report or third-party pentest yet.

## Is it against DistroKid's terms? Account safety

> You may not: ... use any high volume, automated, or electronic means to access the Services (including, without limitation, robots, spiders or scripts).
>
> [DistroKid Terms of Service, Restrictions, 24 Sep 2026](https://distrokid.com/terms/)

The same list bars combining the Services "with hardware, software or other technology or materials not provided by us", and DistroKid may close an account "at any time without notice". That covers every DistroKid tool outside the dashboard, GitHub wrappers too. The takedowns artists report are for fake streams on Spotify, which no tool here creates. We found no case of an account closed for automation (checked 28 Oct 2026).

How we keep your account looking like you:

- Your own artist account, signed in by you
- One Cloud Browser that keeps its cookies, so DistroKid sees a known device
- Split changes, edit requests and removals wait for your OK
- No tool uploads, withdraws or plays your music
- If DistroKid objects, we pause the DistroKid tools for everyone within 24 h

> Read wide Bank periods with filters, a month or a store at a time. DistroKid builds reports over 50,000 rows as files, and the terms name "high volume" access.

## What happens when DistroKid changes?

- **12 h** between tests of the DistroKid reads
- **24 h** between tests of writes your collaborators would notice
- **$0** for a call to a DistroKid tool paused for a fix

DistroKid reworked its Bank export in July 2025, from one TSV to a zip of CSV files. A change like that is ours to absorb, not yours. [status.cotlet.dev](https://status.cotlet.dev) checks the site, console and API every 3 minutes.

## Approvals, undo and mistakes

1. **Reads the current split.** Who is on the song, at what share, accepted or pending.
2. **Checks the new shares.** They must add up to 100, or nothing is saved.
3. **Waits for your OK.** The change shows up in your Cotlet console first.
4. **Reports who was invited.** Saved shares and each collaborator's state.

| Action | Undo |
|---|---|
| Set splits | Set them again; collaborators accept anew |
| Submit an edit request | No, it cannot be cancelled or sped up |
| Remove a release from stores | No, and it takes up to 2 weeks |
| Any read | Nothing to undo |

3 of 10 tools ask first: set_splits, edit_release and remove_release, the three that change what stores or collaborators get. The other 7 only read. You can switch the wait off per tool for a scheduled run.

> A pending collaborator's share is held by DistroKid until they join, so a typo in an email only delays their money.

MCP call:

```
{
  "name": "set_splits",
  "arguments": {
    "release_id": "r_8f3a21",
    "song": "Night Drive",
    "collaborators": [
      {
        "email": "mara@example.com",
        "percent": 70
      },
      {
        "email": "producer@example.com",
        "percent": 30
      }
    ]
  }
}
```

REST:

```
curl -X PUT https://cotlet.dev/api/v1/distrokid/releases/r_8f3a21/splits \
  -H "Authorization: Bearer $COTLET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"song":"Night Drive","collaborators":[{"email":"mara@example.com","percent":70},{"email":"producer@example.com","percent":30}]}'
```

Response:

```
{
  "release_id": "r_8f3a21",
  "song": "Night Drive",
  "status": "saved",
  "collaborators": [
    {
      "email": "mara@example.com",
      "percent": 70,
      "state": "owner"
    },
    {
      "email": "producer@example.com",
      "percent": 30,
      "state": "pending"
    }
  ]
}
```

A royalty spreadsheet or cron job can call the same tools over REST at `/api/v1/distrokid`, one key, one price. get_daily_stats on the Musician plan fails with `APP_PERMISSION_DENIED`, and a failed call is free. The tools table lists the REST path of each tool.

## How much does the DistroKid MCP server cost?

**About $12 a month** for one artist with about a release a month, 2,120 credits. Your DistroKid plan stays billed by DistroKid.

| Job | Calls | Credits |
|---|---|---|
| Delivery check on new releases, daily | 1 × 30 | 300 |
| Bank earnings by store and song, weekly | 4 × 4 | 160 |
| Daily stats and HyperFollow digest, weekly | 3 × 4 | 120 |
| Splits for the new release | 2 × 1 | 20 |
| Label name fix by edit request | 2 × 1 | 20 |
| Cloud Browser, 30 days |  | 1,500 |
| Total |  | 2,120 |

- Free 7-day trial, no card
- 10 credits per successful call, MCP or REST
- 50 credits a day for the Cloud Browser
- Works on Musician, Musician Plus and Ultimate

The month is our example: one artist on Musician Plus ($44.99 a year at DistroKid), on the 6 to 12 singles a year most release advice gives independents. Dollars at the $29 pack rate.

## DistroKid MCP server on GitHub, royalty tools or hosted: which to use

| Option | What it does | Where it stops |
|---|---|---|
| [sowahq/distrogo](https://github.com/sowahq/distrogo) | Go wrapper of the private API behind the DistroKid iOS app, 21 stars, MIT. | You intercept the app's token yourself; last push 29 Jul 2024; the terms ban reverse engineering. |
| [Xtvback/solvero-distrokid-mcp](https://github.com/Xtvback/solvero-distrokid-mcp) | The only DistroKid MCP server on GitHub: prepares release manifests and checks audio and cover files. | By its own README it has no live link to a DistroKid account. |
| [Infinite Catalog](https://help.infinitecatalog.com/article/62-distrokid), Royalti.io | Royalty accounting with a DistroKid statement importer. | You still download each Bank file and upload it by hand. |
| Sheet Split, Good Splits | Free calculators that split the DistroKid export among collaborators. | DistroKid Splits already pays shares; these work on a file, not the account. |

For a yearly royalty statement, a royalty tool on the CSV is enough. For a weekly look at money, release status and splits without downloading anything, Cotlet lets an agent read your DistroKid account directly.

## Who runs Cotlet

Cotlet belongs to Take Group sp. z o.o., a Polish software company in the EU (VAT PL6342984273) working since 2019. Its founders are Bart Krawczyk (Co-founder, CTO) and Jake Slugocki (Co-founder, SEO, sales and marketing). Questions about the DistroKid tools go to contact@cotlet.dev.

## DistroKid API and MCP: questions

### How do I get access?

Sign up free at https://cotlet.dev, open DistroKid under Integrations in the console and sign in to DistroKid in its Cloud Browser, with the code DistroKid emails you. The trial starts with your first app and needs no card.

### How do I connect DistroKid to ChatGPT or Claude?

Sign up at cotlet.dev, log in to DistroKid once in its Cloud Browser and add Cotlet to ChatGPT or Claude, following the steps in your console. No API key is needed. ChatGPT and Claude then work in your DistroKid account through Cotlet, in their phone apps too.

### What can ChatGPT do in DistroKid?

With Cotlet, ChatGPT, Claude and other AI agents handle jobs like these in DistroKid: monthly earnings report by store; check release delivery status; set up splits for a new release. You ask in plain words, and anything that reaches other people waits for your OK first.

### Can my agent upload a release or withdraw money?

No. Uploading new releases and withdrawals are outside these tools, and money leaves your Bank only when you withdraw it in DistroKid. The tools read earnings and stats, set splits, and submit edit and removal requests. DistroKid also documents that earnings are paid out after streaming services report them, 2 to 3 months later.

### Which DistroKid plan do I need?

Earnings, releases, splits and HyperFollow stats work on any plan. get_daily_stats needs Musician Plus or Ultimate, because DistroKid shows Daily Stats only on those plans.

### Does DistroKid have webhooks?

No. DistroKid sends no events out, so nothing tells an agent that a release went green or new earnings arrived. Run it on a schedule instead: a daily list_releases and a weekly get_earnings_summary cover most needs.

### Is DistroKid building its own API or MCP server?

A DistroKid job ad for an API engineer lists MCP server work among its duties, but nothing is public as of 28 Oct 2026. If an official route appears, this page will say what it covers.

### Is the MCP server different from the REST API?

Only in how you call it. Both carry the same 10 tools, inputs and answers, with one API key and one price. Agents use MCP; spreadsheets, scripts and HTTP steps use REST.

### Is Cotlet affiliated with DistroKid?

No. Cotlet is independent and not affiliated with DistroKid LLC.

### Can I use the DistroKid API without an AI agent?

Yes. Call Cotlet's REST API from a script or an HTTP step in n8n, Make or Zapier with your Cotlet key. MCP is the alternative for AI agents; you do not need to connect an agent to use REST.

---

Give your AI agents your signed-in browser.

**Product:** [Integrations](https://cotlet.dev/integrations.md) · [How it works](https://cotlet.dev/how-it-works.md) · [Pricing](https://cotlet.dev/pricing.md) · [Security](https://cotlet.dev/security.md)

**Resources:** [Blog](https://cotlet.dev/blog.md) · [API docs](https://cotlet.dev/docs.md) · [Help center](https://cotlet.dev/help.md) · [Changelog](https://cotlet.dev/changelog.md) · [GitHub](https://github.com/cotletdev/cotlet)

**Solutions:** [For developers](https://cotlet.dev/for-developers.md) · [For automation agencies](https://cotlet.dev/for-agencies.md)

**Company:** [About](https://cotlet.dev/about.md) · [AI info: company facts](https://cotlet.dev/ai-info.md) · [Contact](https://cotlet.dev/contact.md)

**Legal:** [Terms of service](https://cotlet.dev/terms) · [Privacy policy](https://cotlet.dev/privacy) · [Refund policy](https://cotlet.dev/refunds) · [Acceptable use](https://cotlet.dev/acceptable-use) · [Cookie policy](https://cotlet.dev/cookies) · [DPA](https://cotlet.dev/dpa) · [Subprocessors](https://cotlet.dev/subprocessors)

**Elsewhere:** [Status page](https://status.cotlet.dev) · [Cotlet on GitHub](https://github.com/cotletdev) · [Cotlet on X](https://x.com/cotletdev) · [Cotlet on LinkedIn](https://www.linkedin.com/company/cotletdev) · [Cotlet on Product Hunt](https://www.producthunt.com/products/cotlet) · [Cotlet on Crunchbase](https://www.crunchbase.com/organization/cotlet) · [Cotlet on SaaSHub](https://www.saashub.com/cotlet)

Cotlet.dev is built by Bart Krawczyk and Jake Slugocki, the founders of Take Group sp. z o.o., ul. Wincentego Janasa 4, 40-855 Katowice, Poland. KRS 0000871398, NIP 6342984273, VAT EU: PL6342984273. [About us](https://cotlet.dev/about.md)

Cotlet is an independent service. It is not affiliated with, endorsed by or sponsored by any of the products listed on this site. Product names are trademarks of their respective owners.
