# SoundCloud API and MCP server

> SoundCloud has a public API, but you need an Artist Pro subscription to register an app and get credentials (checked 11 Oct 2026). It uploads tracks, edits track details, builds playlists and posts comments, but its guide lists no stats, no direct messages and no scheduled releases.

Music and audio platform where artists, DJs and podcasters upload tracks, build playlists and talk to listeners through comments and messages.

## What is the SoundCloud API?

Cotlet's SoundCloud API exposes 14 endpoints for your own SoundCloud account: list tracks, get track, get Insights, get audience, list comments, list conversations, upload track, update track details, schedule release, set track privacy, create playlist, reply to comment, delete comment and send message. The list_tracks endpoint returns your uploads, newest first, with privacy, release date and lifetime counts. Each endpoint takes simple JSON inputs like track_id, privacy or cursor and works both as an MCP tool for agents and as a REST call for scripts.

- **Category:** [Creators & communities](https://cotlet.dev/integrations/category/creators-communities)
- **Endpoints:** 14 (6 read, 8 write)
- **Updated:** 2026-10-11

SoundCloud has a public API, but you need an Artist Pro subscription to register an app and get credentials (checked 11 Oct 2026). Cotlet is a hosted MCP server and REST API for SoundCloud with 14 endpoints (6 read, 8 write): your AI agent signs in as you and does the work.

## Does SoundCloud have an official API?

SoundCloud has a public API, but you need an Artist Pro subscription to register an app and get credentials (checked 11 Oct 2026). It uploads tracks, edits track details, builds playlists and posts comments, but its guide lists no stats, no direct messages and no scheduled releases.

| Task | SoundCloud official | Cotlet |
|---|---|---|
| Upload a track | Partly: With Artist Pro credentials; the audio file cannot be changed after upload | Yes |
| Edit title, description, genre and tags | Partly: With Artist Pro credentials | Yes |
| Schedule a release date | No | Yes |
| Create playlists, public or private | Partly: With Artist Pro credentials | Yes |
| Plays, likes and reposts for a period | No | Yes |
| Top listeners, countries, cities and play sources | No | Yes |
| Read comments and post new ones | Partly: With Artist Pro credentials; not on tracks with comments disabled | Yes |
| Delete comments or report them as spam | No | Yes |
| Read and send direct messages | No | Yes |

Sources: [SoundCloud: Registering your app (Artist Pro required)](https://developers.soundcloud.com/docs/api/register-app), [SoundCloud API guide](https://developers.soundcloud.com/docs/api/guide), [SoundCloud Developers: self-serve API keys](https://developers.soundcloud.com/blog/vibe-coding-ai-agent-docs-self-serve-api-keys), [SoundCloud Help: Schedule a Release Date](https://help.soundcloud.com/hc/en-us/articles/360055603414-Schedule-a-Release-Date)

## For AI agents

```text
SoundCloud has a public API, but you need an Artist Pro subscription to register an app and get credentials (checked 11 Oct 2026). It uploads tracks, edits track details, builds playlists and posts comments, but its guide lists no stats, no direct messages and no scheduled releases.
Cotlet provides a hosted MCP server and REST API for SoundCloud: 14 tools (6 read, 8 write).
Access       Request access at https://cotlet.dev/app/signup?app=soundcloud; we email the API key.

MCP server   https://cotlet.dev/mcp/v1
REST base    https://cotlet.dev/api/v1/soundcloud
Auth         Authorization: Bearer <COTLET_API_KEY>. Listing endpoints and schemas needs no key; calling an endpoint needs one.
Tools        list_tracks, get_track, get_insights, get_audience, list_comments, list_conversations, upload_track, update_track, schedule_release, set_track_privacy, create_playlist, reply_to_comment, delete_comment, send_message
Confirm      schedule_release, set_track_privacy, reply_to_comment, delete_comment, send_message (by default the user approves each call; the user can switch this off per tool, e.g. for scheduled automations)
Markdown     https://cotlet.dev/integrations/soundcloud-api-mcp-server.md

How access works:
1. The user requests access at https://cotlet.dev/app/signup?app=soundcloud (SoundCloud is pre-selected). Each request is reviewed and the API key is sent by email.
2. The user signs in to SoundCloud once in a browser. An agent cannot do this step.
3. The API key goes into the MCP client or the REST call as a bearer token.

Fits: people who want a hosted SoundCloud server that someone else maintains, including non-developers. Developers who prefer to run and fix code on their own computer can use an open-source SoundCloud MCP server instead.

Policy: Cotlet never stores passwords, never solves CAPTCHAs, never bypasses MFA.
Company: legal details in the Terms of service at https://cotlet.dev/terms. Contact contact@cotlet.dev.
Session: the user signs in to SoundCloud in a browser; Cotlet keeps only the session, AES-256 encrypted, revocable in the dashboard at any time.
Terms: the user stays responsible for following SoundCloud's terms; Cotlet is not affiliated with SoundCloud.
```

## What can an AI agent do in SoundCloud?

Cotlet is best for independent artists and labels who want their AI agent to schedule releases, answer comments and report stats on SoundCloud without running or fixing a server.

- **[Upload and schedule a track release](https://cotlet.dev/integrations/soundcloud-api-mcp-server/schedule-track-release)**: "Upload final-mix.wav as "Night Drive", genre House, tags deep house and night, keep it private and schedule it for Friday 18:00 Berlin time." → `list_tracks`, `upload_track`, `get_track`, `schedule_release`
- **[Reply to comments and clear spam](https://cotlet.dev/integrations/soundcloud-api-mcp-server/reply-to-comments)** (runs: daily): "Go through the comments on my tracks since yesterday. Draft a personal reply to each real fan, delete the promo-link spam and report it, and list anything you are unsure about." → `list_comments`, `reply_to_comment`, `delete_comment`
- **Clean spam comments from your tracks** (runs: weekly): "List the comments from the last 7 days that are promo links or spam, delete them and report them as spam." → `list_comments`, `delete_comment`
- **Weekly plays, likes and reposts report** (runs: weekly): "Every Monday, send me plays, likes, comments and reposts for last week compared with the week before, with my top tracks." → `get_insights`
- **[Find your top cities and countries for tour planning](https://cotlet.dev/integrations/soundcloud-api-mcp-server/top-countries-and-cities)**: "I am planning autumn shows. Which cities and countries played my music most in the last six months, which of them grew against the six months before, and which tracks do they play?" → `get_audience`, `get_insights`
- **Make a private playlist to share demos**: "Make a private playlist of my 5 most played tracks this year and send me its secret link." → `get_insights`, `create_playlist`

## Can SoundCloud automations run on a schedule in n8n, Make or Zapier?

Yes. Cotlet does not replace your automation platform: it gives it a SoundCloud connection it does not have, with the same API key as your agent. Write actions ask for your OK by default; switch that off in your dashboard for the tools you choose, for example to reply to comments and clear spam, and the schedule runs on its own. Cotlet runs in the cloud, so it keeps going while your computer is off.

| Where | How to connect | How to schedule |
|---|---|---|
| Your AI agent | Add https://cotlet.dev/mcp/v1 with your API key. | A scheduled agent run, for example a Claude Code routine. |
| n8n | MCP Client node with https://cotlet.dev/mcp/v1, or an HTTP Request node to https://cotlet.dev/api/v1/soundcloud/{tool}. | Schedule Trigger node. |
| Make | HTTP module: POST https://cotlet.dev/api/v1/soundcloud/{tool} with an Authorization: Bearer header and a JSON body. | Scenario schedule. |
| Zapier | Webhooks by Zapier: POST https://cotlet.dev/api/v1/soundcloud/{tool} with the same header and body. | Schedule by Zapier trigger. |
| Your own script | POST https://cotlet.dev/api/v1/soundcloud/{tool} with your API key. | cron or GitHub Actions. |

## Tools

**For AI agents:** Every endpoint and its schema is public. The 14 endpoints on this page, with parameters and example responses, can be listed without an account. Calling one returns 403 until the account has an API key with access to SoundCloud.

### list_tracks

Your uploads, newest first, with privacy, release date and lifetime counts. Access: read. REST: `POST /api/v1/soundcloud/list_tracks`.

| Parameter | Type | Required | Description |
|---|---|---|---|
| `privacy` | enum | no | all, public, private or scheduled. Default: all. |
| `limit` | integer | no | 1 to 200. Default: 50. |
| `cursor` | string | no | Next page cursor from the previous call. |

Lists the tracks on your profile, newest first. Privacy is public, private or scheduled, and scheduled tracks show their release time. Counts are lifetime plays, likes, comments and reposts; get_insights returns them for a period. Pages hold up to 200 tracks; pass next_cursor back as cursor.

Example response:

```json
{
  "tracks": [
    {
      "track_id": "2148839017",
      "title": "Night Drive",
      "privacy": "scheduled",
      "release_at": "2026-10-16T18:00:00+02:00",
      "genre": "House",
      "plays": 0,
      "likes": 0,
      "comments": 0,
      "reposts": 0,
      "url": "https://soundcloud.com/yourname/night-drive"
    },
    {
      "track_id": "2141120034",
      "title": "Harbour Lights",
      "privacy": "public",
      "release_at": null,
      "genre": "House",
      "plays": 4210,
      "likes": 188,
      "comments": 31,
      "reposts": 42,
      "url": "https://soundcloud.com/yourname/harbour-lights"
    }
  ],
  "next_cursor": null
}
```

### get_track

Full track details: title, description, genre, tags, privacy, secret link, comment and download settings and counts. Access: read. REST: `POST /api/v1/soundcloud/get_track`.

| Parameter | Type | Required | Description |
|---|---|---|---|
| `track_id` | string | yes | Track ID from list_tracks. |

Returns one of your tracks with its full description, tags and privacy. A private track includes its secret link. Comment and download settings show whether comments are on and whether the track can be downloaded.

Example response:

```json
{
  "track_id": "2148839017",
  "title": "Night Drive",
  "description": "Late-night deep house, 124 BPM.",
  "genre": "House",
  "tags": [
    "deep house",
    "night"
  ],
  "privacy": "private",
  "secret_url": "https://soundcloud.com/yourname/night-drive/s-Ab12Cd34Ef",
  "comments_enabled": true,
  "downloadable": false,
  "plays": 0,
  "likes": 0,
  "comments": 0,
  "reposts": 0
}
```

### get_insights

Plays, likes, comments, reposts and downloads for a period, for your profile or one track, with top tracks. Access: read. REST: `POST /api/v1/soundcloud/get_insights`.

| Parameter | Type | Required | Description |
|---|---|---|---|
| `from` | date | no | Start of the period, inclusive. |
| `to` | date | no | End of the period, inclusive. Default: today. |
| `track_id` | string | no | Limit to one track. Default: all tracks. |

Returns the numbers SoundCloud shows in Insights for the period you set, for your whole profile or one track. The response lists top tracks by plays, highest first. Available to every account. Counts match the Insights page at the time of the call.

Example response:

```json
{
  "from": "2026-10-05",
  "to": "2026-10-11",
  "totals": {
    "plays": 1840,
    "likes": 96,
    "comments": 14,
    "reposts": 22,
    "downloads": 5
  },
  "top_tracks": [
    {
      "track_id": "2141120034",
      "title": "Harbour Lights",
      "plays": 1210
    },
    {
      "track_id": "2139904418",
      "title": "Slow Burn",
      "plays": 630
    }
  ]
}
```

### get_audience

Top 50 listeners, countries, cities or play sources for a period. Needs Artist Pro. Access: read. REST: `POST /api/v1/soundcloud/get_audience`.

| Parameter | Type | Required | Description |
|---|---|---|---|
| `breakdown` | enum | yes | top_listeners, countries, cities or sources. |
| `from` | date | no | Start of the period, inclusive. |
| `to` | date | no | End of the period, inclusive. Default: today. |
| `track_id` | string | no | Limit to one track. Default: all tracks. |

Returns the top 50 for one breakdown and any period you set, highest first. Top listeners include only signed-in listeners, and plays from your own account are not counted. Sources show where plays came from, such as the SoundCloud app, a playlist or an embed on another website. Needs Artist Pro; other accounts get a permission error.

Example response:

```json
{
  "breakdown": "countries",
  "from": "2026-07-01",
  "to": "2026-09-30",
  "items": [
    {
      "name": "Germany",
      "plays": 5120
    },
    {
      "name": "United Kingdom",
      "plays": 3874
    },
    {
      "name": "United States",
      "plays": 2950
    }
  ]
}
```

### list_comments

Comments on your tracks, newest first, with author, text, waveform timestamp and whether you replied. Access: read. REST: `POST /api/v1/soundcloud/list_comments`.

| Parameter | Type | Required | Description |
|---|---|---|---|
| `track_id` | string | no | Limit to one track. Default: all tracks. |
| `since` | date | no | Only comments posted on or after this date. |
| `unanswered_only` | boolean | no | Skip comments you already replied to. |
| `cursor` | string | no | Next page cursor from the previous call. |

Lists comments on your tracks, newest first. Each has the author, the text, the position on the waveform where it was left and a flag for whether you already replied. Use since to read only what came in after your last check and unanswered_only to skip answered ones.

Example response:

```json
{
  "comments": [
    {
      "comment_id": "3347102215",
      "track_id": "2141120034",
      "author": "Mira K.",
      "body": "That bass line!",
      "at_seconds": 83,
      "created_at": "2026-10-09T20:14:00Z",
      "replied": false
    },
    {
      "comment_id": "3347102498",
      "track_id": "2141120034",
      "author": "promo_bot_77",
      "body": "Follow me for free beats http://spam.example",
      "at_seconds": 12,
      "created_at": "2026-10-09T21:02:00Z",
      "replied": false
    }
  ],
  "next_cursor": null
}
```

### list_conversations

Your direct message threads with the other person, last message and unread state. Access: read. REST: `POST /api/v1/soundcloud/list_conversations`.

| Parameter | Type | Required | Description |
|---|---|---|---|
| `unread_only` | boolean | no | Only threads with unread messages. |
| `limit` | integer | no | 1 to 50. Default: 20. |
| `cursor` | string | no | Next page cursor from the previous call. |

Lists your direct message threads, most recent first, with the other person, the last messages and whether the thread is unread. Set unread_only to see only what needs an answer. Pass conversation_id or the person's profile URL to send_message.

Example response:

```json
{
  "conversations": [
    {
      "conversation_id": "cv_5521",
      "with": {
        "name": "Jonas Weber",
        "profile_url": "https://soundcloud.com/jonas-weber"
      },
      "unread": true,
      "last_message": "Love Night Drive. Want to do a remix?",
      "updated_at": "2026-10-10T08:30:00Z"
    }
  ],
  "next_cursor": null
}
```

### upload_track

Upload an audio file as a private track. Nobody sees it until you make it public or it is released. Access: write. REST: `POST /api/v1/soundcloud/upload_track`.

| Parameter | Type | Required | Description |
|---|---|---|---|
| `file_url` | string | yes | URL of the audio file. |
| `title` | string | yes | Track title. |
| `description` | string | no | Track description. |
| `genre` | string | no | Genre, e.g. House. |
| `tags` | string[] | no | Additional tags. |
| `artwork_url` | string | no | URL of a square image for the artwork. |

Uploads an audio file from a URL and creates a private track with the details you give. Private tracks are hidden from followers and search, and reached only through a secret link. upload_track reaches no one and one call to set_track_privacy or a delete in SoundCloud undoes it, so it runs without asking first.

Example response:

```json
{
  "track_id": "2148839017",
  "title": "Night Drive",
  "privacy": "private",
  "status": "processing",
  "secret_url": "https://soundcloud.com/yourname/night-drive/s-Ab12Cd34Ef"
}
```

### update_track

Change the title, description, genre, tags, artwork or comment and download settings of a track. Access: write. REST: `POST /api/v1/soundcloud/update_track`.

| Parameter | Type | Required | Description |
|---|---|---|---|
| `track_id` | string | yes | Track ID from list_tracks. |
| `fields` | object | yes | Any of title, description, genre, tags, artwork_url, comments_enabled, downloadable. |

Changes the fields you pass and leaves the rest as they are. The audio file itself cannot be replaced after upload. Changes show on the public track page right away. update_track reaches no one directly and the old values can be set again with one call, so it runs without asking first.

Example response:

```json
{
  "track_id": "2148839017",
  "updated": [
    "title",
    "tags"
  ],
  "title": "Night Drive (Extended)",
  "tags": [
    "deep house",
    "night",
    "extended"
  ]
}
```

### schedule_release

Set when a private track goes public and lands in followers' feeds. Needs Artist Pro. Access: write, asks the user first. REST: `POST /api/v1/soundcloud/schedule_release`.

| Parameter | Type | Required | Description |
|---|---|---|---|
| `track_id` | string | yes | Track ID from list_tracks. |
| `release_at` | datetime | yes | ISO 8601 with time zone. |

Schedules a private track to go public at the time you give. At that time it is released and appears in followers' Feeds. Only Artist Pro creators can schedule, only single tracks, and only tracks that are private. By default you confirm each call; you can switch that off for this tool.

Example response:

```json
{
  "track_id": "2148839017",
  "title": "Night Drive",
  "privacy": "scheduled",
  "status": "scheduled",
  "release_at": "2026-10-16T18:00:00+02:00",
  "url": "https://soundcloud.com/yourname/night-drive"
}
```

### set_track_privacy

Make a track public now, or private with a secret link you can share. Access: write, asks the user first. REST: `POST /api/v1/soundcloud/set_track_privacy`.

| Parameter | Type | Required | Description |
|---|---|---|---|
| `track_id` | string | yes | Track ID from list_tracks. |
| `privacy` | enum | yes | public or private. |

Makes a track public, so followers and search can see it, or private, so only people with its secret link can. Going public from private is a first release and reaches followers' Feeds. By default you confirm each call; you can switch that off for this tool.

Example response:

```json
{
  "track_id": "2148839017",
  "privacy": "private",
  "secret_url": "https://soundcloud.com/yourname/night-drive/s-Ab12Cd34Ef"
}
```

### create_playlist

New playlist from your tracks. Private by default, with a secret link. Access: write. REST: `POST /api/v1/soundcloud/create_playlist`.

| Parameter | Type | Required | Description |
|---|---|---|---|
| `title` | string | yes | Playlist title. |
| `track_ids` | string[] | yes | Track IDs in play order. |
| `description` | string | no | Playlist description. |
| `privacy` | enum | no | private or public. Default: private. |

Creates a playlist from your tracks in the order you give. It is private by default and the response includes its secret link; anyone with that link can listen. Private tracks in a public playlist are not visible to listeners. create_playlist reaches no one until you share the link and is undone by deleting the playlist in SoundCloud, so it runs without asking first.

Example response:

```json
{
  "playlist_id": "1877340021",
  "title": "Demos for Jan",
  "privacy": "private",
  "track_count": 3,
  "secret_url": "https://soundcloud.com/yourname/sets/demos-for-jan/s-Qw98Er76Ty"
}
```

### reply_to_comment

Reply as you under a comment on your track. Access: write, asks the user first. REST: `POST /api/v1/soundcloud/reply_to_comment`.

| Parameter | Type | Required | Description |
|---|---|---|---|
| `comment_id` | string | yes | Comment ID from list_comments. |
| `body` | string | yes | Reply text. |

Posts a reply under a comment on one of your tracks. The reply appears under your name. SoundCloud may block commenting for a while if many similar messages go out quickly. By default you confirm each call; you can switch that off for this tool.

Example response:

```json
{
  "comment_id": "3347102560",
  "reply_to": "3347102215",
  "status": "published"
}
```

### delete_comment

Permanently remove a comment from your track, optionally reporting it as spam. Access: write, asks the user first. REST: `POST /api/v1/soundcloud/delete_comment`.

| Parameter | Type | Required | Description |
|---|---|---|---|
| `comment_id` | string | yes | Comment ID from list_comments. |
| `report_spam` | boolean | no | Also report it as spam. Default: false. |

Removes a comment from one of your tracks. Deleted comments cannot be restored. With report_spam the comment is also reported for review by SoundCloud. By default you confirm each call; you can switch that off for this tool.

Example response:

```json
{
  "comment_id": "3347102498",
  "status": "deleted",
  "reported_as_spam": true
}
```

### send_message

Send a direct message to one user, optionally with one of your tracks attached. Access: write, asks the user first. REST: `POST /api/v1/soundcloud/send_message`.

| Parameter | Type | Required | Description |
|---|---|---|---|
| `to` | string | yes | Profile URL or conversation ID from list_conversations. |
| `body` | string | yes | Message text. |
| `track_id` | string | no | Attach one of your tracks. |

Sends a direct message to one SoundCloud user, or into an existing conversation, under your name. By default you confirm each call; you can switch that off for this tool.

Example response:

```json
{
  "conversation_id": "cv_5521",
  "message_id": "msg_88410",
  "status": "sent",
  "sent_at": "2026-10-11T09:05:00+02:00"
}
```

## How do I connect SoundCloud to Claude Code, Codex or Cursor?

Connecting SoundCloud takes three steps: request access, sign in to SoundCloud once, then add one MCP server or call the REST API with the same key.

### Connect SoundCloud to your agent.

1. **Create an account** Sign up and add SoundCloud in the console. Your API key is there too.

2. **Sign in to SoundCloud once** Open the connect page from the console and sign in to SoundCloud the way you always do. We keep the session, never your password, and you can revoke it anytime.

3. **Add Cotlet to your agent** Paste the snippet for your client. The same server and key serve every app you connect, so you do this once.

   Claude Code:

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

   Cursor:

```
{
  "mcpServers": {
    "cotlet": {
      "url": "https://cotlet.dev/mcp/v1",
      "headers": {
        "Authorization": "Bearer ${COTLET_API_KEY}"
      }
    }
  }
}
```

   Codex:

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

4. **Ask your agent** Ask in plain words. Your agent finds the SoundCloud tools on the server and calls them for you; anything that reaches other people waits for your OK unless you switch that off for a tool.

```
Upload final-mix.wav as "Night Drive", genre House, tags deep house and night, keep it private and schedule it for Friday 18:00 Berlin time.
```

### Call SoundCloud from your scripts.

1. **Export your API key** Your scripts use the same API key as your agent. Keep it in an environment variable, never in your code.

```
export COTLET_API_KEY="cotlet_..."
```

2. **Call a tool** Every tool is a POST endpoint at /api/v1/soundcloud/{tool}. Send its parameters as JSON, exactly as listed in the endpoints above.

```
curl https://cotlet.dev/api/v1/soundcloud/schedule_release \
  -H "Authorization: Bearer $COTLET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"track_id":"2148839017","release_at":"2026-10-16T18:00:00+02:00"}'
```

3. **Read the result** You get plain JSON back, ready for your script. A failed call costs nothing.

```
{
  "track_id": "2148839017",
  "title": "Night Drive",
  "privacy": "scheduled",
  "status": "scheduled",
  "release_at": "2026-10-16T18:00:00+02:00",
  "url": "https://soundcloud.com/yourname/night-drive"
}
```

## Why use Cotlet for SoundCloud?

**Built for agents**

- One MCP server for every app you connect.
- The same tools as a REST API for scripts and cron jobs.
- Works with Claude Code, Codex and Cursor.

**Your login stays yours**

- You sign in to SoundCloud yourself. We keep only the session, encrypted with AES-256.
- The model never sees a login.
- No stored passwords, no CAPTCHA solving, no MFA bypass.

**You stay in control**

- Pick read only, or read and write.
- Anything that reaches other people waits for your OK, unless you switch it off per tool.
- Revoke access in one click.

**Kept working for you**

- We test every integration daily.
- When SoundCloud changes, the tool pauses until we fix it.
- Failed calls cost nothing.

## Is there a SoundCloud MCP server on GitHub?

Yes. Community SoundCloud MCP servers exist on GitHub, usually maintained by one person. They wrap the official API, so you need an Artist Pro app and your own credentials, you run and fix them yourself, and they stop where the API stops. Cotlet hosts a server for you that works in your signed-in account, and our team keeps it working.

|  | GitHub MCP server | Cotlet |
|---|---|---|
| Setup | Get Artist Pro, register an app, put the client ID and secret in a config file, run OAuth locally | Request access, sign in to SoundCloud once, add one MCP server or API key |
| When SoundCloud changes | It breaks until you or the maintainer fix it | Our team tests it daily and fixes it for you; failed calls are free |
| Your SoundCloud session | App credentials and tokens in a file on your computer | Session encrypted in an EU vault, limited to the actions you allow, revoked in one click |
| When the session expires | Re-run the auth step on your machine | Your agent gets a link to sign in again |
| Insights, messages, scheduling | Limited to what the official API offers | Audience Insights, direct messages and scheduled releases, each send confirmed by you |
| Where it runs | Your computer, while it is on | Hosted: Claude Code, Codex, Cursor, n8n and scripts, also on a schedule |
| Price | Free code, but API credentials need Artist Pro | Free 7-day trial with 5,000 credits, then credits per call |

### Which one fits you

**Pick Cotlet if**

- you are not a developer, or you do not want to maintain a server
- you need it to keep working when SoundCloud changes, without checking it yourself
- your agent or a script should run it on a schedule, also while your computer is off

**Pick an open-source server if**

- you are comfortable installing, updating and fixing it yourself
- you want the session to stay on your own computer
- you only need it now and then, from one MCP client

## How much does the SoundCloud API cost?

Free 7-day trial with 5,000 credits, no card needed. After that, the SoundCloud API comes with the Cotlet plan, from $29 a month for 3,000 credits, with no limit on apps. Each month's credits stay valid for 3 months, so unused credits add up.

| Size | Price | Credits / month | Per credit |
|---|---|---|---|
| Solo | $29/mo | 3,000 | about $0.0097 |
| Pro | $99/mo | 12,000 | about $0.0083 |
| Agency | $299/mo | 40,000 | $0.0075 |

Each successful call uses credits for the work it takes; failed calls and timeouts cost nothing. A hard spend cap is on by default. Authenticate with the `Authorization: Bearer` header. [See full pricing](https://cotlet.dev/pricing)

## How Cotlet holds your access

Cotlet hosts MCP servers and REST APIs for apps with no usable API. Your agent works in your own SoundCloud account.

- **Company details:** The legal name, address and registration numbers of the company behind Cotlet are in the Terms of service. [Terms](https://cotlet.dev/terms)
- **Your session:** You sign in to SoundCloud yourself, in your browser. We keep only the session, never your password: encrypted with AES-256 in an EU vault, isolated to your account and used only when your agent calls a SoundCloud tool you allowed. When it expires, your agent gives you a link to sign in again. [Security](https://cotlet.dev/security)
- **Revoking access:** Disconnect SoundCloud in your dashboard: the session is deleted and access ends at once. Actions that reach other people wait for your OK unless you switch that off per tool.
- **What we never do:** Store passwords, solve CAPTCHAs or bypass MFA.
- **SoundCloud's terms:** You use your own SoundCloud account and stay responsible for following SoundCloud's terms. Cotlet is independent and not affiliated with SoundCloud. [Terms](https://cotlet.dev/terms)
- **Contact:** Questions about the company, security or an app: [contact@cotlet.dev](mailto:contact@cotlet.dev)

## Frequently asked questions

**How do I get access?**

Request access and pick SoundCloud. Cotlet reviews each request and emails you your API key.

**Do I need to be technical?**

No. You sign in to SoundCloud once in your browser and paste one command into your agent, or one URL into n8n. Your agent can walk you through it. There is no server to install, update or fix.

**Is a hosted server safe? My SoundCloud session would leave my computer.**

Cotlet keeps your SoundCloud session encrypted with AES-256 in an EU vault, isolated to your account and used only for the tools you allow: read only, or read and write. The AI model never sees it, and you revoke it in one click. A local server keeps the same session in a file on your computer, readable by any program you run, and needs a fresh sign-in whenever it expires.

**Do I need Artist Pro to use SoundCloud with Cotlet?**

No for most tools: uploads, track edits, playlists, comments, messages and get_insights work on your own account without API credentials. get_audience and schedule_release need Artist Pro, because SoundCloud shows audience Insights and scheduling only to Artist Pro creators.

**Can my agent delete spam comments on its own?**

Yes. list_comments finds them and delete_comment removes them, optionally reporting each as spam. Deletion cannot be undone, so each call asks for your OK by default; you can switch that off for this tool.

**Can my agent post or send messages in SoundCloud without asking me?**

No. Every call to schedule_release, set_track_privacy, reply_to_comment, delete_comment or send_message waits for your OK by default. For scheduled automations you can switch confirmation off per tool in your dashboard, for example only for approvals. upload_track, update_track, create_playlist runs without asking, because it sends nothing to anyone and one call undoes it.

**Can I use the SoundCloud API in n8n?**

Yes. Add https://cotlet.dev/mcp/v1 with your API key in n8n's MCP Client node, or call https://cotlet.dev/api/v1/soundcloud/{tool} from the HTTP Request node.
