POST /v1/soundlinks creates a soundlink that is not tied to a Soundlink-funded campaign. Requires the soundlinks:write scope.
This does not create a campaign and does not appear on
GET /v1/campaigns. Ads
run in your own Meta account. On create, the Idempotency-Key header
is required.Prerequisites
- An API key with the
soundlinks:writescope — see Authentication - A Spotify track or playlist URL that exists on Spotify
Create a soundlink
201). data is the same shape as soundlink detail:
active immediately. Use data.url as the public landing page.
Request fields
Spotify URLs
spotifyUrl must be https://open.spotify.com/track/{id} or https://open.spotify.com/playlist/{id}. Locale prefixes (/intl-pt/...) and query strings (?si=...) are accepted.
Album, artist, spotify: URIs, and a track or playlist that does not exist on Spotify return 422 invalid_spotify_url.
Meta pixel
To attach a Meta pixel, send bothmetaPixelId and metaConversionAccessToken. Sending only one returns 400 invalid_request. Omit both to skip Meta tracking.
metaPixelId when set. The CAPI token is never returned.
Idempotency
TheIdempotency-Key header is required on POST /v1/soundlinks.
- Any unique string up to 255 characters — a UUID or
<action>-<date>-<ref>pattern works well - Keys are honored for 24 hours
- Retrying with the same key and same body replays the original
201— it does not create a second soundlink - Reusing a key with a different body returns
409 idempotency_key_conflict - If a concurrent request with the same key is still processing, you also get
409— retry shortly
Errors
See Errors for the full list.
Archive a soundlink
DELETE /v1/soundlinks/{soundlinkId} — same as Archive in the app. Requires soundlinks:write. No Idempotency-Key.
200). data.status is archived. The public landing page returns 404 after cache expires. List and detail still return the row. A second delete, unknown id, other org, campaign-linked id, or a soundlink that is not active returns 404 not_found.
This cannot be undone via the API.