1. Create a credential
Pick one. An API key is enough when the client can send a header. OAuth is for clients that open a browser and ask for a client id and secret. Soundlink does not support dynamic client registration. You create the credential in the app, then paste it into the client.API keys
Settings → Developer → API keys. Sign in first. Soundlink opens the keys
page for your current organization.
OAuth apps
Settings → Developer → OAuth apps. Same shortcut. Use this when the
client runs an OAuth login.
campaigns:read, metrics:read, soundlinks:read, and wallet:read.
API key
1
Open API keys
2
Create a key
Click Create key. Set a name, an expiration, and the scopes above.
Details and screenshots are in Authentication.
3
Copy the secret
Soundlink shows the full
sk_ key once. Store it where the MCP client can
read it. You cannot reveal it again.OAuth app
1
Open OAuth apps
2
Create the app
Set a name. Enable the Authorization code grant. Paste the redirect URI
your MCP client shows you — it must match exactly, including
http vs
https and localhost vs 127.0.0.1. Select the scopes above.3
Copy the client id and secret
Paste both into the MCP client. The secret is shown once. Access tokens last
one hour, and Soundlink does not issue refresh tokens. When a token expires,
sign in again. See OAuth.
2. Add the server
Cursor
Open Cursor Settings → MCP → Add new global MCP server. With an API key:headers. Cursor starts the login. Enter the client id and secret from the OAuth app.
Claude
In Claude, open Settings → Connectors → Add custom connector and paste:Other clients
Any client that speaks Streamable HTTP can use the same URL. If it cannot open a browser, send the API key asAuthorization: Bearer sk_your_key.
3. Check the connection
Ask the client to callping. A working credential returns {"status":"ok"}. ping does not require a specific scope.
Then ask for a campaign list. If a tool fails with an authorization error, the key or app is missing the scope in the table below. Create a new key, or edit the OAuth app, and reconnect.
Tools
get_campaign_tiers only succeeds for a wallet campaign. Engagement tools take an optional engagementContext of catalog or playlist. Exports default to the last 90 days and return JSONL, not the JSON envelope. get_soundlinks does not include soundlinks created for a campaign.
Field definitions: Campaign metrics, Soundlink metrics, JSONL exports.