Download OpenAPI specification:Download
Request a Partner Token
Token request
| accessKeyId required | string |
| accessKeySecret required | string |
{- "accessKeyId": "string",
- "accessKeySecret": "string"
}{- "accessToken": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJhdWQiOiJwYXJ0bmVyIiwiaXNzIjoiRXBpZGVtaWMgU291bmQiLCJwYXJ0bmVySWQiOiJlcGlkZW1pY3NvdW5kIiwiZXhwIjoxNjIwMTA4OTg0fQ"
}Request a User Token. This endpoint requires a Partner Token for authentication.
Token request
| userId required | string End user id. UUID, numeric or matching ^[a-zA-Z0-9_-]+$ |
{- "userId": "379d8eba-6726-4e36-a6e8-d84566aad216"
}{- "accessToken": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJ1c2VyVGllciI6ImJhc2VfdGllciIsImF1ZCI6ImVuZC11c2VyIiwiaXNzIjoiRXBpZGVtaWMgU291bmQiLCJwYXJ0bmVySWQiOiJlcGlkZW1pY3NvdW5kIiwiZXhwIjoxNjIwMTA5MDkyLCJ1c2VySWQiOiJ1c2VyX2lkIn0"
}These endpoints will allow you to explore the Epidemic Sound library. You can display tracks grouped in curated playlists, moods or genres or use search to get tracks by any term.
The collections endpoint returns playlists curated by our team of in-house experts.
We offer collections for any occasion: from holidays like "Día de Muertos" to content types like "Real Estate" or "Badass ads".
You can manage the order and which collections are part or your applications' free tier via the developer portal. As default, we return the collections included in your free tier first, followed by all collections in the Epidemic Sound library.
Collections have attributes like title and cover art. In the few cases where we do not have cover art for a collection we return a default image.
You can choose to return collections with or without tracks. The response will include a maximum of 20 tracks per collection. If a collection contains more than 20 tracks use endpoint '/collections/{collectionId}' to get all tracks.
| excludeField | string Value: "tracks" Add parameter if tracks should be excluded in the response |
| limit | integer <int32> Max number of entries returned in the response, default 10 and max 20 |
| offset | integer <int32> Index of the entry track in the response |
{- "collections": [
- {
- "id": "4caef099-43bd-4653-8203-3086fa01d3b7",
- "name": "Happy",
- "tracks": [
- {
- "id": "6rUPerw2po",
- "mainArtists": [
- "Main Artist"
], - "featuredArtists": [
- "Featured Artist"
], - "title": "Happy Song",
- "bpm": 135,
- "length": 3123,
- "moods": [
- {
- "id": "happy",
- "name": "Happy"
}, - {
- "id": "eccentric",
- "name": "Eccentric"
}
], - "genres": [
- {
- "id": "beats",
- "name": "Beats",
- "parent": {
- "id": "parent",
- "name": "Parent Beats"
}
}, - {
- "id": "trap",
- "name": "Trap"
}
], - "images": {
}, - "hasVocals": true,
- "added": "2020-10-10",
- "isExplicit": false,
- "isPreviewOnly": true
}
], - "availableTracks": 1,
- "images": {
}
}, - {
- "id": "9917d694-511b-4b66-ab8a-c553660399e4",
- "name": "Sad",
- "tracks": [
- {
- "id": "0dZCtol3bs",
- "mainArtists": [
- "Main Artist"
], - "featuredArtists": [
- "Featured Artist"
], - "title": "Sad Song",
- "bpm": 97,
- "length": 2976,
- "moods": [
- {
- "id": "happy",
- "name": "Happy"
}, - {
- "id": "eccentric",
- "name": "Eccentric"
}
], - "genres": [
- {
- "id": "beats",
- "name": "Beats",
- "parent": {
- "id": "parent",
- "name": "Parent Beats"
}
}, - {
- "id": "trap",
- "name": "Trap"
}
], - "images": {
}, - "hasVocals": true,
- "added": "2020-10-10",
- "isExplicit": false,
- "isPreviewOnly": true
}
], - "availableTracks": 1,
- "images": {
}
}
], - "pagination": {
- "page": 3,
- "limit": 20,
- "offset": 40
}, - "links": {
- "next": "/v0/collections?limit=20&offset=60",
- "prev": "/v0/collections?limit=20&offset=20"
}
}The collections endpoint allows you to list all the tracks in a specific collection.
| collectionId required | string Collection id |
| limit | integer <int32> Max number of entries returned in the response, default 50 and max 100 |
| offset | integer <int32> Index of the entry track in the response |
{- "id": "f10e65eb-9998-4c41-9777-ac9183ab85dd",
- "name": "Happy",
- "tracks": [
- {
- "id": "6rUPerw2po",
- "mainArtists": [
- "Main Artist"
], - "featuredArtists": [
- "Featured Artist"
], - "title": "Happy Song",
- "bpm": 135,
- "length": 3123,
- "moods": [
- {
- "id": "happy",
- "name": "Happy"
}, - {
- "id": "eccentric",
- "name": "Eccentric"
}
], - "genres": [
- {
- "id": "beats",
- "name": "Beats",
- "parent": {
- "id": "parent",
- "name": "Parent Beats"
}
}, - {
- "id": "trap",
- "name": "Trap"
}
], - "images": {
}, - "hasVocals": true,
- "added": "2020-10-10",
- "isExplicit": false,
- "isPreviewOnly": true
}
], - "availableTracks": 1,
- "pagination": {
- "page": 4,
- "limit": 20,
- "offset": 60
}, - "links": {
- "next": "/v0/collections/f10e65eb-9998-4c41-9777-ac9183ab85dd?limit=20&offset=80",
- "prev": "/v0/collections/f10e65eb-9998-4c41-9777-ac9183ab85dd?limit=20&offset=40"
}, - "images": {
}
}The search endpoint allows your users to search the entire Epidemic Sound library. Search indexes track attributes such as moods, genres, artist, song title and bpm.
| offset | integer <int32> Index of the entry track in the response |
| limit | any Max number of entries returned in the response, default 50 and max 60 |
| term | string Term for search |
| genre | Array of strings Id for genre |
| mood | Array of strings Id for mood |
| sort | string Default: "Relevance" Enum: "Relevance" "Date" "Title" Sort for search |
| order | string Default: "asc" Enum: "asc" "desc" Order |
{- "tracks": [
- {
- "id": "6rUPerw2po",
- "mainArtists": [
- "Main Artist"
], - "featuredArtists": [
- "Featured Artist"
], - "title": "Happy Song",
- "bpm": 135,
- "length": 3123,
- "moods": [
- {
- "id": "happy",
- "name": "Happy"
}, - {
- "id": "eccentric",
- "name": "Eccentric"
}
], - "genres": [
- {
- "id": "beats",
- "name": "Beats",
- "parent": {
- "id": "parent",
- "name": "Parent Beats"
}
}, - {
- "id": "trap",
- "name": "Trap"
}
], - "images": {
}, - "hasVocals": true,
- "added": "2020-10-10",
- "isExplicit": false,
- "isPreviewOnly": true
}, - {
- "id": "0dZCtol3bs",
- "mainArtists": [
- "Main Artist"
], - "featuredArtists": [
- "Featured Artist"
], - "title": "Sad Song",
- "bpm": 97,
- "length": 2976,
- "moods": [
- {
- "id": "happy",
- "name": "Happy"
}, - {
- "id": "eccentric",
- "name": "Eccentric"
}
], - "genres": [
- {
- "id": "beats",
- "name": "Beats",
- "parent": {
- "id": "parent",
- "name": "Parent Beats"
}
}, - {
- "id": "trap",
- "name": "Trap"
}
], - "images": {
}, - "hasVocals": true,
- "added": "2020-10-10",
- "isExplicit": false,
- "isPreviewOnly": true
}
], - "pagination": {
- "page": 2,
- "limit": 25,
- "offset": 25
}, - "links": {
- "next": "/tracks/search?limit=25&offset=50",
- "prev": "/tracks/search?limit=25&offset=0"
}, - "aggregations": {
- "moods": [
- {
- "id": "energetic",
- "name": "Energetic",
- "count": 1
}
], - "genres": [
- {
- "id": "rock",
- "name": "Rock",
- "count": 1
}
]
}
}The search suggestions endpoint allows your users to get autocomplete suggestions for Epidemic Sound music or external provider music search.
Returns:
Usage: When a user selects a suggestion, use the 'value' field as the 'term' parameter when calling /tracks/search to get matching tracks.
| term | string Term for search |
{- "suggestions": [
- {
- "value": "rock",
- "title": "rock",
- "type": "TEXT"
}, - {
- "value": "rocker",
- "title": "rocker",
- "type": "TEXT"
},
]
}The moods endpoint allows your users to browse the music catalog based on moods like happy, epic or relaxing. Moods have cover art that you can show in your interface.
By specifying the "type" of moods you want to display, you can choose to show all moods in the Epidemic Sound library, only the moods that are featured on epidemicsound.com or only the moods that are available for your free tier tracks.
| sort | string Default: "relevance" Enum: "alphabetic" "relevance" Sorting options. Available values: alphabetic, relevance |
| order | string Default: "asc" Enum: "asc" "desc" Order options. Available values: asc, desc |
| type | string Default: "all" Enum: "all" "featured" "partner-tier" Types to filter by:
|
| limit | integer <int32> Max number of entries returned in the response, default 20 and max 20 |
| offset | integer <int32> Index of the entry track in the response |
{- "moods": [
- {
- "id": "energetic",
- "name": "Epic",
- "images": {
}
}, - {
- "id": "happy",
- "name": "Happy",
- "images": {
}
}
], - "pagination": {
- "page": 1,
- "limit": 20,
- "offset": 0
}, - "links": { }
}Get mood details
| moodId required | string Mood id |
| expand | string Value: "tracks" Add parameter if tracks should be included in the response |
| limit | integer <int32> Max number of entries returned in the response, default 50 and max 100 |
| offset | integer <int32> Index of the entry track in the response |
{- "id": "happy",
- "name": "Happy",
- "images": {
}
}The genres endpoint allows your users to browse the music catalog based on genres like rock, hiphop or acoustic.
Genres are nested and both parent and child genres are returned in the response. Parent genres have cover art that you can show in your interface.
By specifying the "type" of genres you want to display, you can choose to show all genres in the Epidemic Sound library, only the genres that are featured on epidemicsound.com or only the genres that are available for your free tier tracks.
| sort | string Default: "relevance" Enum: "alphabetic" "relevance" Sorting options. Available values: alphabetic, relevance |
| order | string Default: "asc" Enum: "asc" "desc" Order options. Available values: asc, desc |
| type | string Default: "all" Enum: "all" "featured" "partner-tier" Types to filter by:
|
| limit | integer <int32> Max number of entries returned in the response, default 20 and max 20 |
| offset | integer <int32> Index of the entry track in the response |
{- "genres": [
- {
- "id": "beats",
- "name": "Beats",
- "images": {
}
}
], - "pagination": {
- "page": 1,
- "limit": 20,
- "offset": 0
}, - "links": { }
}This endpoint gives you the parent and child relationships of a specific genre as well as all tracks that belong to it.
| genreId required | string Genre id |
| expand | string Value: "tracks" Add parameter if tracks should be included in the response |
| limit | integer <int32> Max number of entries returned in the response, default 50 and max 100 |
| offset | integer <int32> Index of the entry track in the response |
{- "id": "parent-beats",
- "name": "Parent Beats",
- "children": [
- {
- "id": "true-beats",
- "name": "True Beats",
- "parent": {
- "id": "parent-beats",
- "name": "Parent Beats"
}
}
], - "tracks": {
- "tracks": [
- {
- "id": "6rUPerw2po",
- "mainArtists": [
- "Main Artist"
], - "featuredArtists": [
- "Featured Artist"
], - "title": "Happy Song",
- "bpm": 135,
- "length": 3123,
- "moods": [
- {
- "id": "happy",
- "name": "Happy"
}, - {
- "id": "eccentric",
- "name": "Eccentric"
}
], - "genres": [
- {
- "id": "parent-beats",
- "name": "Beats",
- "parent": {
- "id": "parent",
- "name": "Parent Beats"
}
}, - {
- "id": "trap",
- "name": "Trap"
}
], - "images": {
}, - "hasVocals": true,
- "added": "2020-10-10",
- "isExplicit": false,
- "isPreviewOnly": true
}
], - "pagination": {
- "page": 2,
- "limit": 25,
- "offset": 25
}, - "links": {
- "next": "v0/genres/{genreId}?limit=25&offset=50",
- "prev": "v0/genres/{genreId}?limit=25&offset=0"
}
}
}The tracks endpoint allows you to list all tracks based on a specified mood, genre or BPM.
| genre | Array of strings Id for genre |
| mood | Array of strings Id for mood |
| bpmMin | integer <int32> BPM Min |
| bpmMax | integer <int32> BPM Max |
| limit | integer <int32> Max number of entries returned in the response, default 50 and max 100 |
| offset | integer <int32> Index of the entry track in the response |
{- "tracks": [
- {
- "id": "6rUPerw2po",
- "mainArtists": [
- "Main Artist"
], - "featuredArtists": [
- "Featured Artist"
], - "title": "Happy Song",
- "bpm": 135,
- "length": 3123,
- "moods": [
- {
- "id": "happy",
- "name": "Happy"
}, - {
- "id": "eccentric",
- "name": "Eccentric"
}
], - "genres": [
- {
- "id": "beats",
- "name": "Beats",
- "parent": {
- "id": "parent",
- "name": "Parent Beats"
}
}, - {
- "id": "trap",
- "name": "Trap"
}
], - "images": {
}, - "hasVocals": true,
- "added": "2020-10-10",
- "isExplicit": false,
- "isPreviewOnly": true
}, - {
- "id": "0dZCtol3bs",
- "mainArtists": [
- "Main Artist"
], - "featuredArtists": [
- "Featured Artist"
], - "title": "Sad Song",
- "bpm": 97,
- "length": 2976,
- "moods": [
- {
- "id": "happy",
- "name": "Happy"
}, - {
- "id": "eccentric",
- "name": "Eccentric"
}
], - "genres": [
- {
- "id": "beats",
- "name": "Beats",
- "parent": {
- "id": "parent",
- "name": "Parent Beats"
}
}, - {
- "id": "trap",
- "name": "Trap"
}
], - "images": {
}, - "hasVocals": true,
- "added": "2020-10-10",
- "isExplicit": false,
- "isPreviewOnly": true
}
], - "pagination": {
- "page": 4,
- "limit": 20,
- "offset": 60
}, - "links": {
- "next": "/v0/tracks?limit=20&offset=80",
- "prev": "/v0/tracks?limit=20&offset=40"
}
}The metadata endpoint allows you to get metadata for a list of tracks.
| trackId required | Array of strings List of track ids |
[- {
- "id": "6rUPerw2po",
- "mainArtists": [
- "Main Artist"
], - "featuredArtists": [
- "Featured Artist"
], - "title": "Happy Song",
- "bpm": 135,
- "length": 3123,
- "moods": [
- {
- "id": "happy",
- "name": "Happy"
}, - {
- "id": "eccentric",
- "name": "Eccentric"
}
], - "genres": [
- {
- "id": "beats",
- "name": "Beats",
- "parent": {
- "id": "parent",
- "name": "Parent Beats"
}
}, - {
- "id": "trap",
- "name": "Trap"
}
], - "images": {
}, - "hasVocals": true,
- "added": "2020-10-10",
- "isExplicit": false,
- "isPreviewOnly": true
}, - {
- "id": "0dZCtol3bs",
- "mainArtists": [
- "Main Artist"
], - "featuredArtists": [
- "Featured Artist"
], - "title": "Sad Song",
- "bpm": 97,
- "length": 2976,
- "moods": [
- {
- "id": "happy",
- "name": "Happy"
}, - {
- "id": "eccentric",
- "name": "Eccentric"
}
], - "genres": [
- {
- "id": "beats",
- "name": "Beats",
- "parent": {
- "id": "parent",
- "name": "Parent Beats"
}
}, - {
- "id": "trap",
- "name": "Trap"
}
], - "images": {
}, - "hasVocals": true,
- "added": "2020-10-10",
- "isExplicit": false,
- "isPreviewOnly": true
}
]Get a list of possible track query parameters
{- "genres": [
- {
- "id": "rock",
- "name": "Rock",
- "parent": {
- "id": "rock-parent",
- "name": "Rock Parent"
}
}, - {
- "id": "rock-parent",
- "name": "Rock Parent"
}, - {
- "id": "skate-punk",
- "name": "Skate-Punk"
}
], - "moods": [
- {
- "id": "energetic",
- "name": "Energetic"
}, - {
- "id": "happy",
- "name": "Happy"
}
]
}The download endpoint allows you to download an MP3 file of the track.
We offer MP3 files in two qualities; normal (128kbps) and high (320kbps).
The high quality files can be used in content when needed, but normal quality is sufficient for most use cases.
The download links expire after 24 hours (normal quality) or 1 hour (high quality files). The expiration time is stated in the response.
All users can download the tracks that are part of the free tier. Only connected users with an active Epidemic Sound subscription can download tracks that are part of the premium library. If a user does not have access to download a track, you will get an error response. You can proactively mark premium tracks in your UI by using the track attribute isPreviewOnly (see track attributes).
| trackId required | string Track id |
| format | string Value: "mp3" Track format |
| quality | string Default: "normal" Enum: "normal" "high" Track quality, normal is used as the default if not specified |
{- "expires": "2022-12-22T11:01:48Z"
}The beats endpoint provides information about the timestamps of beats in a track. You can use this endpoint to simplify the process to cut the video in sync with the music.
Unlike BPM which is a single number for the entire track, beats can change dynamically across a music piece. This is particularly valuable for capturing variations in tempo, such as a slower intro, a build-up with faster beats, or changes in rhythm throughout the composition.
The response includes two types of metadata: time and value.
time represents the timestamp of the beat in milliseconds. value indicates the beat's position in a bar (or measure in the US), where 1 corresponds to the first beat (downbeat).
Examples:
Most pop songs have four beats in a bar. For example, if we looked at the beats data for Coolio's 1, 2, 3, 4 it would look something like: 1-2-3-4, 1-2-3-4
However, a waltz has three beats in a bar, and the data would look something like: 1-2-3, 1-2-3
Usage Scenarios:
Automatically cut a video in sync with the beat
Adding snap markers aligned with beat timestamps in the UI.
| trackId required | string Track id |
{- "beats": [
- {
- "time": 0,
- "value": "1.0"
}, - {
- "time": 0.62,
- "value": "2.0"
}, - {
- "time": 1.2,
- "value": "3.0"
}, - {
- "time": 1.8,
- "value": "4.0"
}
]
}We recommend using HLS to allow users to play/preview a track. The main benefits of this compared to MP3 are smaller file transfers and alternate qualities, allowing the HLS client library to switch to a lower quality when necessary.
The audio is encoded using the AAC coding standard, which results in a smaller footprint for a similar quality compared to MP3. The primary manifest refers to two variant quality streams. HLS client libraries typically choose the optimal quality automatically, based on download speed.
The format consists of audio files split into smaller chunks and manifests that refer to these audio files. Since the format is made up of multiple files, access to these are controlled using cookies.
We provide an example app for iOS that plays HLS streams. Users do not need to connect their account or have an active Epidemic Sound subscription to play any track using HLS streaming. That allows your users to listen to all tracks before they connect their account.
| trackId required | string Track id |
{- "cookie": {
- "name": "Cloud-CDN-Cookie",
- "domain": "hls-storage.epidemicsite.com",
- "path": "/",
- "value": "URLPrefix=aHR0cHM6Ly9obHMtaW52ZXN0aWdhdGlvbi5lcGlkZW1pY3NpdGUuY29tL2hscy92MS9xNE1JbUtXNDdEL2RhZWZlY2QyMDVjMDE0OTZiNDJhZTY5NTBjNDQ2YzZlLw==:Expires=1638185196:KeyName=KeyName:Signature=S0QZ20ijEWKA-w9B9MycB0yTca0=",
- "expires": "2021-11-29T11:26:36Z"
}
}The similar tracks endpoint allows developers to retrieve a list of tracks that are similar to a given reference track. This feature is designed to help users discover tracks that share similar characteristics, such as genre, mood, tempo, and more. This endpoint helps your users replace tracks that don't fit perfectly or discover multiple alternatives to a track they enjoy.
| trackId required | string Track id |
| offset | integer <int32> Index of the entry track in the response |
| limit | any Max number of entries returned in the response, default 50 and max 60 |
{- "tracks": [
- {
- "id": "6rUPerw2po",
- "mainArtists": [
- "Main Artist"
], - "featuredArtists": [
- "Featured Artist"
], - "title": "Happy Song",
- "bpm": 135,
- "length": 3123,
- "moods": [
- {
- "id": "happy",
- "name": "Happy"
}, - {
- "id": "eccentric",
- "name": "Eccentric"
}
], - "genres": [
- {
- "id": "beats",
- "name": "Beats",
- "parent": {
- "id": "parent",
- "name": "Parent Beats"
}
}, - {
- "id": "trap",
- "name": "Trap"
}
], - "images": {
}, - "hasVocals": true,
- "added": "2020-10-10",
- "isExplicit": false,
- "isPreviewOnly": true
}, - {
- "id": "0dZCtol3bs",
- "mainArtists": [
- "Main Artist"
], - "featuredArtists": [
- "Featured Artist"
], - "title": "Sad Song",
- "bpm": 97,
- "length": 2976,
- "moods": [
- {
- "id": "happy",
- "name": "Happy"
}, - {
- "id": "eccentric",
- "name": "Eccentric"
}
], - "genres": [
- {
- "id": "beats",
- "name": "Beats",
- "parent": {
- "id": "parent",
- "name": "Parent Beats"
}
}, - {
- "id": "trap",
- "name": "Trap"
}
], - "images": {
}, - "hasVocals": true,
- "added": "2020-10-10",
- "isExplicit": false,
- "isPreviewOnly": true
}
], - "pagination": {
- "page": 4,
- "limit": 20,
- "offset": 60
}, - "links": {
- "next": "/v0/tracks?limit=20&offset=80",
- "prev": "/v0/tracks?limit=20&offset=40"
}
}Returns a list of track sections that are matched to the provided audio file id.
| audioUploadId required | string <uuid> Reference to the uploaded audio file |
| start required | integer <int32> Start of the section in milliseconds |
| end required | integer <int32> End of the section in milliseconds |
| offset | integer <int32> Index of the entry track in the response |
| limit | integer <int32> Max number of entries returned in the response, default 50 and max 100 |
{- "trackSections": [
- {
- "track": {
- "id": "0dZCtol3bs",
- "mainArtists": [
- "Main Artist"
], - "featuredArtists": [
- "Featured Artist"
], - "title": "Sad Song",
- "bpm": 97,
- "length": 2976,
- "moods": [
- {
- "id": "happy",
- "name": "Happy"
}, - {
- "id": "eccentric",
- "name": "Eccentric"
}
], - "genres": [
- {
- "id": "beats",
- "name": "Beats",
- "parent": {
- "id": "parent",
- "name": "Parent Beats"
}
}, - {
- "id": "trap",
- "name": "Trap"
}
], - "images": {
}, - "hasVocals": true,
- "added": "2020-10-10",
- "isExplicit": false,
- "isPreviewOnly": true
}, - "start": 0,
- "end": 10000
}
], - "pagination": {
- "page": 4,
- "limit": 20,
- "offset": 60
}, - "links": {
- "next": "/v0/tracks/similar-sections?audioUploadId=cd1d1df3-a43a-425e-9e41-89067a03ab64&limit=20&offset=80&start=0&end=10000",
- "prev": "/v0/tracks/similar-sections?audioUploadId=ebb60d2e-108e-45ef-9539-98140e970880&limit=20&offset=40&start=0&end=10000"
}
}The similar segments endpoint allows developers to use part of a track as a reference to search for music segments in the Epidemic Sound catalog that sound similar.
The feature utilizes the Epidemic Audio Reference (EAR) technology to provide users with the ability to quickly find alternative segments of music.
Usage Scenarios:
| trackId required | string Track id |
| start required | integer <int32> Start of the section in milliseconds |
| end required | integer <int32> End of the section in milliseconds |
| offset | integer <int32> Index of the entry track in the response |
| limit | integer <int32> Max number of entries returned in the response, default 50 and max 100 |
{- "trackSections": [
- {
- "track": {
- "id": "0dZCtol3bs",
- "mainArtists": [
- "Main Artist"
], - "featuredArtists": [
- "Featured Artist"
], - "title": "Sad Song",
- "bpm": 97,
- "length": 2976,
- "moods": [
- {
- "id": "happy",
- "name": "Happy"
}, - {
- "id": "eccentric",
- "name": "Eccentric"
}
], - "genres": [
- {
- "id": "beats",
- "name": "Beats",
- "parent": {
- "id": "parent",
- "name": "Parent Beats"
}
}, - {
- "id": "trap",
- "name": "Trap"
}
], - "images": {
}, - "hasVocals": true,
- "added": "2020-10-10",
- "isExplicit": false,
- "isPreviewOnly": true
}, - "start": 0,
- "end": 10000
}
], - "pagination": {
- "page": 4,
- "limit": 20,
- "offset": 60
}, - "links": {
- "next": "/v0/tracks/trackId/similar-sections?limit=20&offset=80&start=0&end=10000",
- "prev": "/v0/tracks/trackId/similar-sections?limit=20&offset=40&start=0&end=10000"
}
}We recommend using HLS to allow users to play/preview a track. The main benefits of this compared to MP3 are smaller file transfers and alternate qualities, allowing the HLS client library to switch to a lower quality when necessary.
The audio is encoded using the AAC coding standard, which results in a smaller footprint for a similar quality compared to MP3. The primary manifest refers to two variant quality streams. HLS client libraries typically choose the optimal quality automatically, based on download speed.
The format consists of audio files split into smaller chunks and manifests that refer to these audio files.
We provide an example app for iOS that plays HLS streams. Users do not need to connect their account or have an active Epidemic Sound subscription to play any track using HLS streaming. That allows your users to listen to all tracks before they connect their account.
| trackId required | string Track id |
{- "expires": "2022-12-22T11:01:48Z"
}Powered by our 2 billion daily streams on YouTube, the popular segments endpoint uses machine learning to recommend the best time section.
You can use popular segments to start playing the track from the right millisecond, or recommend the right part of the track for shorter content.
The popular segments endpoint provides start and stop timestamps in milliseconds. The default duration is 30 seconds.
The endpoint accepts up to 5 different durations per request where each duration must be at least 5 seconds and at most 60 seconds.
| trackId required | string Track id |
| duration | Array of integers <int32> [ items <int32 > ] The highlight duration in seconds |
{- "highlights": [
- {
- "from": 9000,
- "to": 39000,
- "duration": 30
}
]
}Upload an image from the user's video to get recommendations of tracks in the Epidemic Sound library that would work for the video. Use ImageID retrieved from the Upload Image endpoint to fetch the recommended tracks.
| imageId required | string Image id |
| offset | integer <int32> Index of the entry track in the response |
| limit | integer <int32> Max number of entries returned in the response, default 50 and max 100 |
| genre | Array of strings Id for genre |
| mood | Array of strings Id for mood |
{- "tracks": [
- {
- "id": "6rUPerw2po",
- "mainArtists": [
- "Main Artist"
], - "featuredArtists": [
- "Featured Artist"
], - "title": "Happy Song",
- "bpm": 135,
- "length": 3123,
- "moods": [
- {
- "id": "happy",
- "name": "Happy"
}, - {
- "id": "eccentric",
- "name": "Eccentric"
}
], - "genres": [
- {
- "id": "beats",
- "name": "Beats",
- "parent": {
- "id": "parent",
- "name": "Parent Beats"
}
}, - {
- "id": "trap",
- "name": "Trap"
}
], - "images": {
}, - "hasVocals": true,
- "added": "2020-10-10",
- "isExplicit": false,
- "isPreviewOnly": true
}, - {
- "id": "0dZCtol3bs",
- "mainArtists": [
- "Main Artist"
], - "featuredArtists": [
- "Featured Artist"
], - "title": "Sad Song",
- "bpm": 97,
- "length": 2976,
- "moods": [
- {
- "id": "happy",
- "name": "Happy"
}, - {
- "id": "eccentric",
- "name": "Eccentric"
}
], - "genres": [
- {
- "id": "beats",
- "name": "Beats",
- "parent": {
- "id": "parent",
- "name": "Parent Beats"
}
}, - {
- "id": "trap",
- "name": "Trap"
}
], - "images": {
}, - "hasVocals": true,
- "added": "2020-10-10",
- "isExplicit": false,
- "isPreviewOnly": true
}
], - "pagination": {
- "page": 2,
- "limit": 25,
- "offset": 25
}, - "links": {
- "next": "/tracks/search?limit=25&offset=50",
- "prev": "/tracks/search?limit=25&offset=0"
}, - "aggregations": {
- "moods": [
- {
- "id": "energetic",
- "name": "Energetic",
- "count": 1
}
], - "genres": [
- {
- "id": "rock",
- "name": "Rock",
- "count": 1
}
]
}
}Endpoints to get sound effect specific information. These endpoints allow you to build a UI to browse and search for sound effects.
The sound effects categories endpoint allows you to get a list of all sound effects categories.
You can then browse the sound effects catalog based on categories like "Applause" or "Crowds".
Some sound effect categories have cover art that you can use in your interface. You can choose to display all categories, or choose type "featured" to only show the categories that are chosen by our curation team.
| type | string Default: "all" Enum: "all" "featured" Category type |
| offset | integer <int32> Index of the entry track in the response |
| limit | any Max number of entries returned in the response, default 50 |
{- "categories": [
- {
- "id": "562f2e73-bf63-465e-b3ca-1aef9656c063",
- "name": "Applause",
- "images": {
}, - "parent": {
- "id": "a350dfc3-4825-451f-9317-7e221e504677",
- "name": "Crowds"
}
}
], - "pagination": {
- "page": 2,
- "limit": 10,
- "offset": 10
}, - "links": {
- "next": "/sound-effects/categories?limit=10&offset=20",
- "prev": "/sound-effects/categories?limit=10&offset=0"
}
}The category details endpoint contains info on the requested sound effects category.
The purpose of this endpoint is to be able to validate that an individual object exists in the API if it was cached by the client.
| categoryId required | string <uuid> Category id |
{- "id": "a931f336-4df8-4354-b7c0-ba77bc13ff51",
- "name": "Applause",
- "images": {
}, - "parent": {
- "id": "95f0fae8-407a-4773-b222-72cf5c423fed",
- "name": "Crowds"
}, - "children": [
- {
- "id": "8e9e8c93-b0a7-437d-970f-f9ef65b265ef",
- "name": "Claps"
}
]
}Use the sound effects details endpoint to display all sound effects for a given category.
| categoryId required | string <uuid> Category id |
| offset | integer <int32> Index of the entry track in the response |
| limit | integer <int32> Max number of entries returned in the response, default 50 and max 100 |
| sort | string Default: "newest" Enum: "title" "newest" "length" Sort |
| order | string Default: "asc" Enum: "asc" "desc" Order |
{- "soundEffects": [
- {
- "id": "6bf374f3-be9f-4cd8-b77f-bc254b821387",
- "title": "Applause",
- "added": "2026-01-22T13:33:55.382734866Z",
- "length": 10,
- "images": {
}
}
], - "pagination": {
- "page": 2,
- "limit": 10,
- "offset": 10
}, - "links": {
- "next": "/sound-effects/categories?limit=10&offset=20",
- "prev": "/sound-effects/categories?limit=10&offset=0"
}
}The download endpoint allows you to download an MP3 file of the sound effect.
We offer MP3 files in two qualities; normal (128kbps) and high (320kbps).
The high quality files can be used in content when needed, but normal quality is sufficient for most use cases.
The download links expire after 24 hours (normal quality) or 1 hour (high quality files). The expiration time is stated in the response.
| trackId required | string Track id |
| format | string Value: "mp3" Track format |
| quality | string Default: "normal" Enum: "normal" "high" Track quality, normal is used as the default if not specified |
{- "expires": "2022-12-22T11:01:48Z"
}Use the sound effects search endpoint to allow users to search within the sound effects library.
| offset | integer <int32> Index of the entry track in the response |
| limit | any Max number of entries returned in the response, default 50 and max 60 |
| term | string Term for search |
| sort | string Default: "best-match" Enum: "best-match" "newest" "popular" "length" "title" Sort for search |
| order | string Default: "asc" Enum: "asc" "desc" Order |
{- "soundEffects": [
- {
- "id": "aa583685-a7af-45dd-a57d-61b275a997fa",
- "title": "Applause",
- "added": "2026-01-22T13:33:55.386649225Z",
- "length": 10,
- "images": {
}
}
], - "pagination": {
- "page": 2,
- "limit": 10,
- "offset": 10
}, - "links": {
- "next": "/sound-effects/categories?limit=10&offset=20",
- "prev": "/sound-effects/categories?limit=10&offset=0"
}
}This endpoint should be used when you want to bulk report events to Epidemic Sound. We currently support the following events: trackPreviewed, trackDownloaded and tracksExported. Note that the limit for number of events per request is limited to 100. Also note that for events containing the field trackIds, the limit for number of trackIds per event is 50. Events may not contain a timestamp older than 7 days ago.
Analytics report
required | Array of objects (AnalyticsReportEvent) | ||||||||
Array
| |||||||||
{- "events": [
- {
- "userId": "123",
- "timestamp": "2026-01-22T13:33:55.389330915Z",
- "userConnected": false,
- "analyticsEvent": {
- "trackId": "12345",
- "type": "trackPreviewed"
}
}, - {
- "userId": "456",
- "timestamp": "2026-01-22T13:33:55.389561015Z",
- "userConnected": true,
- "analyticsEvent": {
- "trackId": "12345",
- "format": "mp3",
- "quality": "normal",
- "type": "trackDownloaded"
}
}, - {
- "userId": "456",
- "timestamp": "2026-01-22T13:33:55.389817455Z",
- "analyticsEvent": {
- "trackIds": [
- "12345"
], - "platform": "YOUTUBE",
- "type": "tracksExported"
}
}
]
}{- "batchId": "12345",
- "eventsCount": 10
}The usage endpoint lets you report when a user exports their content to social media or downloads the content file to their device.
You can specify which platform (YouTube, Twitch, Instagram, Facebook, TikTok, Twitter or Other) they export the file to. Use the platform local if the user downloads the content to their device.
This data is used for attribution and analytics purposes as well as to improve personalization.
Usage report
| eventType | string Value: "EXPORTED" |
| platform required | string Enum: "YOUTUBE" "TWITTER" "TWITCH" "FACEBOOK" "INSTAGRAM" "TIKTOK" "OTHER" "LOCAL" |
| trackIds required | Array of strings |
| other | string or null |
{- "eventType": "EXPORTED",
- "platform": "OTHER",
- "trackIds": [
- "trackid1",
- "trackid2"
], - "other": "OptionalValueForWhenNoMatchingPlatformEnum"
}{- "message": "Ok"
}The liked tracks endpoint lets you list the liked tracks of a connected user. Users can add new tracks to their list on epidemicsound.com or via the Epidemic Sound app, giving them a smooth cross-device experience.
| offset | integer <int32> Offset for the pagination. For this endpoint the number of results is fixed at 25, so the offset needs to be evenly divisible by 25. |
{- "tracks": [
- {
- "id": "6rUPerw2po",
- "mainArtists": [
- "Main Artist"
], - "featuredArtists": [
- "Featured Artist"
], - "title": "Happy Song",
- "bpm": 135,
- "length": 3123,
- "moods": [
- {
- "id": "happy",
- "name": "Happy"
}, - {
- "id": "eccentric",
- "name": "Eccentric"
}
], - "genres": [
- {
- "id": "beats",
- "name": "Beats",
- "parent": {
- "id": "parent",
- "name": "Parent Beats"
}
}, - {
- "id": "trap",
- "name": "Trap"
}
], - "images": {
}, - "hasVocals": true,
- "added": "2020-10-10",
- "isExplicit": false,
- "isPreviewOnly": true
}, - {
- "id": "0dZCtol3bs",
- "mainArtists": [
- "Main Artist"
], - "featuredArtists": [
- "Featured Artist"
], - "title": "Sad Song",
- "bpm": 97,
- "length": 2976,
- "moods": [
- {
- "id": "happy",
- "name": "Happy"
}, - {
- "id": "eccentric",
- "name": "Eccentric"
}
], - "genres": [
- {
- "id": "beats",
- "name": "Beats",
- "parent": {
- "id": "parent",
- "name": "Parent Beats"
}
}, - {
- "id": "trap",
- "name": "Trap"
}
], - "images": {
}, - "hasVocals": true,
- "added": "2020-10-10",
- "isExplicit": false,
- "isPreviewOnly": true
}
], - "pagination": {
- "page": 2,
- "limit": 25,
- "offset": 25
}, - "links": {
- "next": "/users/me/liked/tracks?limit=25&offset=50",
- "prev": "/users/me/liked/tracks?limit=25&offset=0"
}
}Will return the audio id of an audio file uploaded by the partner, matched by checksum. Should be used to avoid duplicate uploads
| checksum required | string File checksum |
{- "audioUploadId": "a2f05c71-4000-48dd-86be-c0f9f3b444d6",
- "length": 10,
- "expires": "2026-02-21T13:33:55.369146776Z"
}Use the delete audio endpoint to delete an audio file.
| audioIdOrChecksum required | string Audio upload id or checksum of audio file |
{- "audioFilesRemoved": [
- "ec72983d-d553-4dde-aad6-69f8d14483fa"
]
}Upload an audio file to get recommendations of similar tracks in the Epidemic Sound library. When you post the audio file to this endpoint, you will receive an AudioID in return. Use this AudioID in a request to the similar tracks endpoint to get track recommendations.
We currently support the formats: mp3, mpeg, ogg and vorbis. Maximum file size is 3.5MB. You can only upload music with the partner token, since we currently do not allow end users to use this feature.
| file | string <binary> |
{- "imageId": "ef96f9df-9800-4856-a5d9-21a6159f3214",
- "expirationDate": "2026-01-23T13:33:55.372411915Z"
}Upload an image from the user's video to get recommendations of tracks in the Epidemic Sound library that would work for the video. When you post the image to this endpoint, you will receive an ImageID in return. Use this ImageID in a request to the matching image endpoint to get track recommendations.
We currently support jpeg format and maximum file size is 2MB.
| file | string <binary> |
{- "imageId": "76412714-4c38-4cb5-8a17-174844aadc61",
- "expirationDate": "2026-01-23T13:33:55.375400266Z"
}This endpoint allows you to start a job to generate edited versions of a track. The job will be processed asynchronously and you can check the status using the GET /tracks/versions/{jobId} endpoint. Note that the url expires in 24 hours.
Duration limits:
Track edit request configuration
| durationMs required | integer <int32> |
| loopable | boolean |
| trackId required | string <uuid> |
{- "durationMs": 0,
- "loopable": true,
- "trackId": "fcc44b18-493c-4040-a803-8be99a8f81ac"
}{- "status": "PENDING",
- "results": [ ],
- "message": "Job is still processing",
- "jobId": "9c617764-66d3-43c1-adc2-9a28cdebce2f"
}This endpoint allows you to check the status of a track versions job. When the job is complete, it will return the URLs to the generated tracks.
Waveform Data:
expand=waveform to include waveform data in the response| jobId required | any The ID of the job to check |
| expand | any Include additional data in response. Use 'waveform' to include waveform data. |
{- "status": "COMPLETED",
- "results": [
- {
}
], - "message": "Job completed successfully",
- "jobId": "edc33b62-6e36-46a8-8411-e3c619c899de"
}