API Reference
Search
Overview

Search

Search the Slipstream catalog. Four endpoints, each suited to a different starting point: a text query, a reference URL, an existing track, or a list of filters.

Endpoints

MethodPathUse when
GET/api/v4/search/ai/by-text/You have a natural-language description
GET/api/v4/search/ai/by-url/You have a reference song on YouTube, Spotify, etc.
GET/api/v4/search/ai/by-id/You have a Slipstream track and want similar ones
GET/api/v4/search/ai/filters/You need the list of valid genres, moods, BPM ranges, etc.

All four endpoints accept the same set of optional filter parameters and the same pagination scheme.

Authentication

Search is publicly accessible — no token required. Calls are rate-limited; authenticated requests get a higher limit.

Authorization: Bearer <PARTNER_API_KEY>

If you don't send a token, you're throttled at the anonymous tier.

Pagination

All search endpoints support limit/offset pagination via query string:

ParameterDefaultMaxDescription
limit20100Number of results per page
offset0Result index to start from

Responses include next and previous URLs when more pages are available.

Filter parameters

Every search endpoint accepts the same filters in the query string. Use them to narrow results.

ParameterDescriptionExample
genreSingle genregenre=rock
genre__termsMultiple genres separated by __genre__terms=rock__pop
subgenreSingle subgenresubgenre=indie
subgenre__termsMultiple subgenressubgenre__terms=indie__alternative
moodSingle moodmood=happy
mood__termsMultiple moodsmood__terms=happy__sad
vocalsSingle vocal typevocals=Male Vocals
vocals__termsMultiple vocal typesvocals__terms=Male Vocals__Female Vocals
tempoTempo descriptortempo=fast
tempo__termsMultiple tempostempo__terms=fast__slow
bpm__rangeBPM range, low and highbpm__range=90__120
duration__rangeDuration range in secondsduration__range=60__300
titleExact track titletitle=Circle
title__containsPartial title matchtitle__contains=Circ
artistExact artist nameartist=Hint of Mint
artist__containsPartial artist matchartist__contains=T-P
albumExact album namealbum=Bad Habit Tracks
album__containsPartial album matchalbum__contains=Bad Hab
restrictedFilter by restricted flagrestricted=True

For the live, complete list of valid values for each filter, call GET /api/v4/search/ai/filters/.

The __terms suffix lets you pass multiple values for any list-style filter. Separate values with __ (double underscore).

The Track object

Every search endpoint returns the same shape for each track in results:

{
  "id": "8a4b2c1d-9e7f-4a6b-b3c2-1f8d4e5a7c6b",
  "name": "Cinematic Rise",
  "artist": { "name": "Jane Doe", "slug": "jane-doe" },
  "length": 142,
  "tempo": 128,
  "is_explicit": false,
  "is_free": true,
  "audio_url": "/api/v4/stream/8a4b2c1d-9e7f-4a6b-b3c2-1f8d4e5a7c6b/?type=track",
  "genre_name": "Cinematic",
  "subgenre_name": "Orchestral",
  "mood_name": "Inspiring",
  "secondary_mood_name": "Hopeful",
  "vocals": "",
  "has_stems": true,
  "cover": "https://...",
  "release_date": "2025-09-12",
  "short_url": "https://slipstreammusic.com/t/...",
  "restricted": false,
  "highlights": []
}
FieldDescription
idSlipstream track UUID. Pass to /by-id/ to find similar, or to the Licensing API.
nameTrack title.
artistArtist with name and slug.
lengthDuration in seconds.
tempoBPM.
is_explicittrue if marked explicit.
is_freetrue if usable without a paid tier. Inverse of restricted.
audio_urlStream proxy path. Records play analytics, redirects to a presigned S3 URL.
genre_name, subgenre_name, mood_name, secondary_mood_namePrimary classifications.
vocalsVocal type (e.g., Male Vocals, Female Vocals, Mixed Vocals). Empty for instrumentals.
has_stemstrue if individual stems are available.
coverCover image URL.
release_dateRelease date in YYYY-MM-DD.
short_urlPublic Slipstream link to the track.
restrictedtrue if the track is restricted (paid tiers, regional rules, etc).
highlightsHighlight regions on the audio when the result is from a similarity search.

Errors

HTTPWhen
400Missing required parameter or invalid filter value
429Rate limit exceeded — back off using the Retry-After header
500The underlying AI service is temporarily unavailable