From d9e3402eebb3b90eb6494922171eeca68c0428cc Mon Sep 17 00:00:00 2001 From: eddiechayes Date: Thu, 28 Mar 2024 16:40:32 -0700 Subject: [PATCH] pseo: add epidemicsound --- ...from-custom-request_epidemicsound.com.yaml | 1076 ++++ sdks/db/category-cache.yaml | 1 + sdks/db/custom-request-last-fetched.yaml | 1 + .../epidemicsound.com.yaml | 4431 ++++++++++++++++ .../epidemic-sound-fixed-spec.yaml | 4461 +++++++++++++++++ .../epidemic-sound-fixed-spec.yaml | 4448 ++++++++++++++++ .../epidemic-sound.json | 3 + .../epidemic-sound/openapi.yaml | 4444 ++++++++++++++++ .../epidemicsound.com.yaml | 54 + sdks/db/progress/epidemic-sound-progress.yaml | 114 + ...from-custom-request_epidemicsound.com.json | 1785 +++++++ ...from-custom-request_epidemicsound.com.json | 39 + sdks/db/spec-data/mandrillapp.com_1.0.json | 2 +- sdks/publish.yaml | 29 + sdks/src/collect-from-custom-requests.ts | 4 + 15 files changed, 20891 insertions(+), 1 deletion(-) create mode 100644 sdks/db/cached-method-objects/from-custom-request_epidemicsound.com.yaml create mode 100644 sdks/db/custom-request-specs/epidemicsound.com.yaml create mode 100644 sdks/db/fixed-specs-cache/epidemic-sound-fixed-spec.yaml create mode 100644 sdks/db/fixed-specs/epidemic-sound-fixed-spec.yaml create mode 100644 sdks/db/generate-repository-description-cache/epidemic-sound.json create mode 100644 sdks/db/intermediate-fixed-specs/epidemic-sound/openapi.yaml create mode 100644 sdks/db/processed-custom-request-cache/epidemicsound.com.yaml create mode 100644 sdks/db/progress/epidemic-sound-progress.yaml create mode 100644 sdks/db/published/from-custom-request_epidemicsound.com.json create mode 100644 sdks/db/spec-data/from-custom-request_epidemicsound.com.json diff --git a/sdks/db/cached-method-objects/from-custom-request_epidemicsound.com.yaml b/sdks/db/cached-method-objects/from-custom-request_epidemicsound.com.yaml new file mode 100644 index 000000000..2b0006d84 --- /dev/null +++ b/sdks/db/cached-method-objects/from-custom-request_epidemicsound.com.yaml @@ -0,0 +1,1076 @@ +hash: 1a56c283c62b7ccb3bb195532b167f64fcb71317ac4db52836bd26dd534cce27 +methodObjects: + - url: /v0/collections + method: collections + httpMethod: get + tag: Browse & search + typeScriptTag: browse &Search + description: List collections with tracks + parameters: + - name: excludeField + schema: string + required: false + description: Add parameter if tracks should be excluded in the response + - name: limit + schema: integer + required: false + description: Max number of entries returned in the response, default 10 and max 20 + - name: offset + schema: integer + required: false + description: Index of the entry track in the response + responses: + - statusCode: '200' + description: '' + - statusCode: '401' + description: '' + - statusCode: '429' + description: '' + - url: /v0/collections/{collectionId} + method: collection + httpMethod: get + tag: Browse & search + typeScriptTag: browse &Search + description: List all tracks in a collection + parameters: + - name: collectionId + schema: string + required: true + description: Collection id + example: COLLECTIONID + - name: limit + schema: integer + required: false + description: Max number of entries returned in the response, default 50 and max 100 + - name: offset + schema: integer + required: false + description: Index of the entry track in the response + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '401' + description: '' + - statusCode: '404' + description: '' + - statusCode: '429' + description: '' + - url: /v0/tracks + method: tracks + httpMethod: get + tag: Tracks + typeScriptTag: tracks + description: List tracks based on mood, genre or BPM + parameters: + - name: genre + schema: array + required: false + description: Id for genre + - name: mood + schema: array + required: false + description: Id for mood + - name: bpmMin + schema: integer + required: false + description: BPM Min + - name: bpmMax + schema: integer + required: false + description: BPM Max + - name: limit + schema: integer + required: false + description: Max number of entries returned in the response, default 50 and max 100 + - name: offset + schema: integer + required: false + description: Index of the entry track in the response + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '401' + description: '' + - statusCode: '429' + description: '' + - url: /v0/tracks/search + method: tracksSearchList + httpMethod: get + tag: Browse & search + typeScriptTag: browse &Search + description: Search for tracks + parameters: + - name: offset + schema: integer + required: false + description: Index of the entry track in the response + - name: limit + schema: integer + required: false + description: Max number of entries returned in the response, default 50 and max 100 + - name: term + schema: string + required: false + description: Term for search + - name: genre + schema: array + required: false + description: Id for genre + - name: mood + schema: array + required: false + description: Id for mood + - name: sort + schema: string + required: false + description: Sort for search + default: Relevance + - name: order + schema: string + required: false + description: Order + default: Asc + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '401' + description: '' + - statusCode: '403' + description: '' + - statusCode: '429' + description: '' + - statusCode: '503' + description: '' + - url: /v0/tracks/search/suggestions + method: trackSuggestionsGet + httpMethod: get + tag: Browse & search + typeScriptTag: browse &Search + description: Search tracks suggestions + parameters: + - name: term + schema: string + required: false + description: Term for search + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '401' + description: '' + - statusCode: '403' + description: '' + - statusCode: '429' + description: '' + - statusCode: '503' + description: '' + - url: /v0/tracks/parameters + method: listParameters + httpMethod: get + tag: Tracks + typeScriptTag: tracks + description: List track parameters + parameters: [] + responses: + - statusCode: '200' + description: '' + - statusCode: '401' + description: '' + - statusCode: '429' + description: '' + - url: /v0/moods + method: moodsList + httpMethod: get + tag: Browse & search + typeScriptTag: browse &Search + description: List moods + parameters: + - name: sort + schema: string + required: false + description: 'Sorting options. Available values: alphabetic, relevance' + default: relevance + - name: order + schema: string + required: false + description: 'Order options. Available values: asc, desc' + default: asc + - name: type + schema: string + required: false + description: |- + Types to filter by: + * `all` - all the objects in the Epidemic Sound library + * `partner-tier` - objects available to the partner within their tier + * `featured` - only objects featured and curated by Epidemic Sound + default: all + - name: limit + schema: integer + required: false + description: Max number of entries returned in the response, default 20 and max 20 + - name: offset + schema: integer + required: false + description: Index of the entry track in the response + responses: + - statusCode: '200' + description: '' + - statusCode: '401' + description: '' + - statusCode: '429' + description: '' + - url: /v0/moods/{moodId} + method: moodDetails + httpMethod: get + tag: Browse & search + typeScriptTag: browse &Search + description: Mood by ID + parameters: + - name: moodId + schema: string + required: true + description: Mood id + example: MOODID + - name: expand + schema: string + required: false + description: Add parameter if tracks should be included in the response + - name: limit + schema: integer + required: false + description: Max number of entries returned in the response, default 50 and max 100 + - name: offset + schema: integer + required: false + description: Index of the entry track in the response + responses: + - statusCode: '200' + description: '' + - statusCode: '401' + description: '' + - statusCode: '404' + description: '' + - statusCode: '429' + description: '' + - url: /v0/genres + method: genreCatalog + httpMethod: get + tag: Browse & search + typeScriptTag: browse &Search + description: List genres + parameters: + - name: sort + schema: string + required: false + description: 'Sorting options. Available values: alphabetic, relevance' + default: relevance + - name: order + schema: string + required: false + description: 'Order options. Available values: asc, desc' + default: asc + - name: type + schema: string + required: false + description: |- + Types to filter by: + * `all` - all the objects in the Epidemic Sound library + * `partner-tier` - objects available to the partner within their tier + * `featured` - only objects featured and curated by Epidemic Sound + default: all + - name: limit + schema: integer + required: false + description: Max number of entries returned in the response, default 20 and max 20 + - name: offset + schema: integer + required: false + description: Index of the entry track in the response + responses: + - statusCode: '200' + description: '' + - statusCode: '401' + description: '' + - statusCode: '429' + description: '' + - url: /v0/genres/{genreId} + method: genreDetails + httpMethod: get + tag: Browse & search + typeScriptTag: browse &Search + description: Genre details + parameters: + - name: genreId + schema: string + required: true + description: Genre id + example: GENREID + - name: expand + schema: string + required: false + description: Add parameter if tracks should be included in the response + - name: limit + schema: integer + required: false + description: Max number of entries returned in the response, default 50 and max 100 + - name: offset + schema: integer + required: false + description: Index of the entry track in the response + responses: + - statusCode: '200' + description: '' + - statusCode: '401' + description: '' + - statusCode: '404' + description: '' + - statusCode: '429' + description: '' + - url: /v0/tracks/{trackId}/download + method: download + httpMethod: get + tag: Tracks + typeScriptTag: tracks + description: Download track + parameters: + - name: trackId + schema: string + required: true + description: Track id + example: TRACKID + - name: format + schema: string + required: false + description: Track format + - name: quality + schema: string + required: false + description: Track quality, normal is used as the default if not specified + default: normal + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '401' + description: '' + - statusCode: '403' + description: '' + - statusCode: '404' + description: '' + - statusCode: '429' + description: '' + - url: /v0/tracks/{trackId}/beats + method: getBeatsData + httpMethod: get + tag: Tracks + typeScriptTag: tracks + description: Beats + parameters: + - name: trackId + schema: string + required: true + description: Track id + example: TRACKID + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '401' + description: '' + - statusCode: '403' + description: '' + - statusCode: '404' + description: '' + - statusCode: '429' + description: '' + - url: /v0/tracks/{trackId}/hls + method: previewUsingCookies + httpMethod: get + tag: Tracks + typeScriptTag: tracks + description: Preview track using cookies + parameters: + - name: trackId + schema: string + required: true + description: Track id + example: TRACKID + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '401' + description: '' + - statusCode: '404' + description: '' + - statusCode: '429' + description: '' + - url: /v0/tracks/{trackId}/similar + method: getSimilar + httpMethod: get + tag: Tracks + typeScriptTag: tracks + description: Similar tracks + parameters: + - name: trackId + schema: string + required: true + description: Track id + example: TRACKID + - name: offset + schema: integer + required: false + description: Index of the entry track in the response + - name: limit + schema: integer + required: false + description: Max number of entries returned in the response, default 50 and max 100 + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '401' + description: '' + - statusCode: '404' + description: '' + - statusCode: '429' + description: '' + - url: /v0/tracks/similar-sections + method: getSimilarSegments + httpMethod: get + tag: Tracks + typeScriptTag: tracks + description: Similar track segment based on audio file + parameters: + - name: audioUploadId + schema: string + required: true + description: Reference to the uploaded audio file + example: AUDIOUPLOADID + - name: start + schema: integer + required: true + description: Start of the section in milliseconds + example: 0 + - name: end + schema: integer + required: true + description: End of the section in milliseconds + example: 0 + - name: offset + schema: integer + required: false + description: Index of the entry track in the response + - name: limit + schema: integer + required: false + description: Max number of entries returned in the response, default 50 and max 100 + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '401' + description: '' + - statusCode: '404' + description: '' + - statusCode: '429' + description: '' + - url: /v0/tracks/{trackId}/similar-sections + method: findSimilarSegments + httpMethod: get + tag: Tracks + typeScriptTag: tracks + description: Similar track segment based on trackID + parameters: + - name: trackId + schema: string + required: true + description: Track id + example: TRACKID + - name: start + schema: integer + required: true + description: Start of the section in milliseconds + example: 0 + - name: end + schema: integer + required: true + description: End of the section in milliseconds + example: 0 + - name: offset + schema: integer + required: false + description: Index of the entry track in the response + - name: limit + schema: integer + required: false + description: Max number of entries returned in the response, default 50 and max 100 + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '401' + description: '' + - statusCode: '404' + description: '' + - statusCode: '429' + description: '' + - url: /v0/tracks/{trackId}/stream + method: stream + httpMethod: get + tag: Tracks + typeScriptTag: tracks + description: Preview track + parameters: + - name: trackId + schema: string + required: true + description: Track id + example: TRACKID + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '401' + description: '' + - statusCode: '404' + description: '' + - statusCode: '429' + description: '' + - url: /v0/tracks/{trackId}/highlights + method: recommendSection + httpMethod: get + tag: Tracks + typeScriptTag: tracks + description: Recommend section of a track + parameters: + - name: trackId + schema: string + required: true + description: Track id + example: TRACKID + - name: duration + schema: array + required: false + description: The highlight duration in seconds + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '401' + description: '' + - statusCode: '404' + description: '' + - statusCode: '429' + description: '' + - url: /v0/uploads/audio/{checksum} + method: byChecksumGet + httpMethod: get + tag: Assets + typeScriptTag: assets + description: Get audio asset by the checksum + parameters: + - name: checksum + schema: string + required: true + description: File checksum + example: CHECKSUM + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '401' + description: '' + - statusCode: '404' + description: '' + - statusCode: '429' + description: '' + - url: /v0/uploads/audio/{audioIdOrChecksum} + method: deleteAudioFile + httpMethod: delete + tag: Assets + typeScriptTag: assets + description: Delete a single audio file + parameters: + - name: audioIdOrChecksum + schema: string + required: true + description: Audio upload id or checksum of audio file + example: AUDIOIDORCHECKSUM + responses: + - statusCode: '200' + description: '' + - statusCode: '202' + description: '' + - statusCode: '401' + description: '' + - statusCode: '429' + description: '' + - url: /v0/uploads/audio + method: uploadAudioFile + httpMethod: post + tag: Assets + typeScriptTag: assets + description: Uploads an audio file + parameters: + - name: file + schema: string + description: '' + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '401' + description: '' + - statusCode: '429' + description: '' + - url: /v0/uploads/images/{imageId} + method: deleteImage + httpMethod: delete + tag: Assets + typeScriptTag: assets + description: Delete uploaded image + parameters: + - name: imageId + schema: string + required: true + description: Image id + example: IMAGEID + responses: + - statusCode: '204' + description: Image was deleted + - statusCode: '400' + description: '' + - statusCode: '401' + description: '' + - statusCode: '404' + description: '' + - statusCode: '429' + description: '' + - url: /v0/uploads/images + method: removeAllImages + httpMethod: delete + tag: Assets + typeScriptTag: assets + description: Delete all the uploaded images by the user + parameters: [] + responses: + - statusCode: '202' + description: Images were marked for deletion + - statusCode: '401' + description: '' + - statusCode: '429' + description: '' + - url: /v0/uploads/images + method: uploadImageForRecommendation + httpMethod: post + tag: Assets + typeScriptTag: assets + description: Upload image for recommendation + parameters: + - name: file + schema: string + description: '' + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '401' + description: '' + - statusCode: '429' + description: '' + - url: /v0/tracks/matching-image/{imageId} + method: matchingImageGet + httpMethod: get + tag: Tracks + typeScriptTag: tracks + description: Get tracks matching an image + parameters: + - name: imageId + schema: string + required: true + description: Image id + example: IMAGEID + - name: offset + schema: integer + required: false + description: Index of the entry track in the response + - name: limit + schema: integer + required: false + description: Max number of entries returned in the response, default 50 and max 100 + - name: genre + schema: array + required: false + description: Id for genre + - name: mood + schema: array + required: false + description: Id for mood + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '401' + description: '' + - statusCode: '404' + description: '' + - statusCode: '429' + description: '' + - url: /v0/sound-effects/categories + method: listCategories + httpMethod: get + tag: Sound effects + typeScriptTag: soundEffects + description: Get a list of all sound effects categories + parameters: + - name: type + schema: string + required: false + description: Category type + default: all + - name: sort + schema: string + required: false + description: Sorting options + default: title + - name: offset + schema: integer + required: false + description: Index of the entry track in the response + - name: limit + schema: integer + required: false + description: Max number of entries returned in the response, default 50 and max 100 + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '401' + description: '' + - statusCode: '429' + description: '' + - url: /v0/sound-effects/categories/{categoryId} + method: getCategoryById + httpMethod: get + tag: Sound effects + typeScriptTag: soundEffects + description: Get a sound effects category by id + parameters: + - name: categoryId + schema: string + required: true + description: Category id + example: CATEGORYID + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '401' + description: '' + - statusCode: '404' + description: '' + - statusCode: '429' + description: '' + - url: /v0/sound-effects/categories/{categoryId}/tracks + method: getByCategoryTracks + httpMethod: get + tag: Sound effects + typeScriptTag: soundEffects + description: Get sound effects by category + parameters: + - name: categoryId + schema: string + required: true + description: Category id + example: CATEGORYID + - name: offset + schema: integer + required: false + description: Index of the entry track in the response + - name: limit + schema: integer + required: false + description: Max number of entries returned in the response, default 50 and max 100 + - name: sort + schema: string + required: false + description: Sort + default: newest + - name: order + schema: string + required: false + description: Order + default: asc + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '401' + description: '' + - statusCode: '404' + description: '' + - statusCode: '429' + description: '' + - url: /v0/sound-effects/{trackId}/download + method: downloadSoundEffect + httpMethod: get + tag: Sound effects + typeScriptTag: soundEffects + description: Download sound effect + parameters: + - name: trackId + schema: string + required: true + description: Track id + example: TRACKID + - name: format + schema: string + required: false + description: Track format + - name: quality + schema: string + required: false + description: Track quality, normal is used as the default if not specified + default: normal + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '401' + description: '' + - statusCode: '403' + description: '' + - statusCode: '404' + description: '' + - statusCode: '429' + description: '' + - url: /v0/sound-effects/search + method: searchSoundEffects + httpMethod: get + tag: Sound effects + typeScriptTag: soundEffects + description: Search sound effects + parameters: + - name: offset + schema: integer + required: false + description: Index of the entry track in the response + - name: limit + schema: integer + required: false + description: Max number of entries returned in the response, default 50 and max 100 + - name: term + schema: string + required: false + description: Term for search + - name: sort + schema: string + required: false + description: Sort for search + default: best-match + - name: order + schema: string + required: false + description: Order + default: asc + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '401' + description: '' + - statusCode: '429' + description: '' + - url: /v0/analytics/report + method: epidemicEventSubmission + httpMethod: post + tag: Reporting + typeScriptTag: reporting + description: Report events to Epidemic Sound + parameters: + - name: events + schema: array + required: true + description: '' + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '401' + description: '' + - statusCode: '429' + description: '' + - url: /v0/usage + method: use + httpMethod: post + tag: Reporting + typeScriptTag: reporting + description: Report usage + parameters: + - name: eventType + schema: string + required: false + description: '' + - name: platform + schema: string + required: true + description: '' + example: PLATFORM + - name: trackIds + schema: array + required: true + description: '' + - name: other + schema: string + required: false + description: '' + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '401' + description: '' + - statusCode: '429' + description: '' + - url: /v0/partner-token + method: requestPartnerToken + httpMethod: post + tag: Authentication + typeScriptTag: authentication + description: Request a partner token + parameters: + - name: accessKeyId + schema: string + required: true + description: '' + example: ACCESSKEYID + - name: accessKeySecret + schema: string + required: true + description: '' + example: ACCESSKEYSECRET + responses: + - statusCode: '201' + description: '' + - statusCode: '400' + description: '' + - statusCode: '401' + description: '' + - statusCode: '429' + description: '' + - url: /v0/token + method: requestUserToken + httpMethod: post + tag: Authentication + typeScriptTag: authentication + description: Request a user token + parameters: + - name: userId + schema: string + required: true + description: '' + example: 4fbd5793-efcd-4545-b4e9-807c8ed9e2a3 + responses: + - statusCode: '201' + description: '' + - statusCode: '400' + description: '' + - statusCode: '401' + description: '' + - statusCode: '429' + description: '' + - url: /v0/users/me + method: getDetails + httpMethod: get + tag: Users + typeScriptTag: users + description: User details + parameters: [] + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '401' + description: '' + - statusCode: '429' + description: '' + - url: /v0/users/me/subscription + method: getSubscriptionDetails + httpMethod: get + tag: Users + typeScriptTag: users + description: User subscription details + parameters: [] + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '401' + description: '' + - statusCode: '429' + description: '' + - url: /v0/users/me/liked/tracks + method: listLikedTracks + httpMethod: get + tag: Users + typeScriptTag: users + description: List users’ liked tracks + parameters: + - name: offset + schema: integer + required: false + description: >- + 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. + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '401' + description: '' + - statusCode: '429' + description: '' +numberOfSchemas: 65 +apiDescription: >- + Epidemic Sound has transformed the soundtracking experience for global brands + and professional creators, with an expansive catalog of world-class music and + sound effects that's seen and heard over 2.5 billion times a day around the + globe. + + + Providing a direct license model that comes with all rights included and + next-generation soundtracking tools, Epidemic Sound empowers creators to + unlock more feeling in everything they create and share their stories with the + world. Epidemic Sound continuously enriches its world-class catalog of music + by teaming up with artists, composers, and producers to create tracks spanning + all genres, while supporting them financially and creatively. diff --git a/sdks/db/category-cache.yaml b/sdks/db/category-cache.yaml index a6c0f8c48..ae69b15cd 100644 --- a/sdks/db/category-cache.yaml +++ b/sdks/db/category-cache.yaml @@ -265,3 +265,4 @@ apis: Brevo-undefined: CRM (Customer Relationship Management) Belvo-undefined: Finance Global Predictions Inc-undefined: AI Tools + Epidemic Sound-undefined: Music diff --git a/sdks/db/custom-request-last-fetched.yaml b/sdks/db/custom-request-last-fetched.yaml index 856c7a9bb..fbf38f023 100644 --- a/sdks/db/custom-request-last-fetched.yaml +++ b/sdks/db/custom-request-last-fetched.yaml @@ -245,3 +245,4 @@ lastUpdated: brevo.com: 2024-03-28T23:17:22.210Z belvo.com: 2024-03-28T23:22:05.031Z globalpredictions.com: 2024-03-28T23:21:28.988Z + epidemicsound.com: 2024-03-28T23:29:36.084Z diff --git a/sdks/db/custom-request-specs/epidemicsound.com.yaml b/sdks/db/custom-request-specs/epidemicsound.com.yaml new file mode 100644 index 000000000..d11895436 --- /dev/null +++ b/sdks/db/custom-request-specs/epidemicsound.com.yaml @@ -0,0 +1,4431 @@ +openapi: 3.0.1 +info: + title: Partner Content API + version: 0.1.17 +servers: + - url: https://partner-content-api.epidemicsound.com + description: Epidemic Sound Content API +tags: + - name: Authentication + description: Endpoints for user authentication. + - name: Browse & search + description: >- + 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. + - name: Tracks + description: Endpoints to get track specific information. + - name: Sound effects + description: >- + Endpoints to get sound effect specific information. These endpoints allow + you to build a UI to browse and search for sound effects. + - name: Reporting + description: >- + These endpoints will allow you to report how tracks are used in your + application. + - name: Users + description: >- + These endpoints allows your application to get user specific information + such as liked sounds. + - name: Assets + description: >- + These endpoints allows your application to upload assets such as images or + audio. +paths: + /v0/collections: + get: + tags: + - Browse & search + summary: List collections with tracks + description: >- + 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. + operationId: GET_Collections + parameters: + - $ref: '#/components/parameters/excludeField' + - name: limit + in: query + description: >- + Max number of entries returned in the response, default 10 and max + 20 + required: false + schema: + type: integer + format: int32 + - $ref: '#/components/parameters/offset' + responses: + '200': + description: Collection response + content: + application/json: + schema: + $ref: '#/components/schemas/CollectionsPaginatedResponse' + example: + 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: + default: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/300x300.jpg + L: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/1050x1050.jpg + M: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/600x600.jpg + S: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/300x300.jpg + XS: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/128x128.jpg + waveformUrl: >- + https://pdn.epidemicsound.com/waveforms/1600/394079.json + hasVocals: true + added: '2020-10-10' + isExplicit: false + isPreviewOnly: true + availableTracks: 1 + images: + default: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/default/300x300.jpg + L: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/default/1050x1050.jpg + M: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/default/600x600.jpg + S: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/default/300x300.jpg + XS: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/default/128x128.jpg + - 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: + default: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/300x300.jpg + L: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/1050x1050.jpg + M: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/600x600.jpg + S: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/300x300.jpg + XS: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/128x128.jpg + waveformUrl: >- + https://pdn.epidemicsound.com/waveforms/1600/394079.json + hasVocals: true + added: '2020-10-10' + isExplicit: false + isPreviewOnly: true + availableTracks: 1 + images: + default: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/default/300x300.jpg + L: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/default/1050x1050.jpg + M: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/default/600x600.jpg + S: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/default/300x300.jpg + XS: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/default/128x128.jpg + pagination: + page: 3 + limit: 20 + offset: 40 + links: + next: /v0/collections?limit=20&offset=60 + prev: /v0/collections?limit=20&offset=20 + '401': + description: Unauthorized. Most likely your access token has expired. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Invalid credentials + '429': + description: Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Rate limit exceeded + security: + - UserAuth: [] + - EpidemicSoundConnectAuth: [] + /v0/collections/{collectionId}: + get: + tags: + - Browse & search + summary: List all tracks in a collection + description: >- + The collections endpoint allows you to list all the tracks in a specific + collection. + operationId: GET_Collection + parameters: + - $ref: '#/components/parameters/collectionId' + - $ref: '#/components/parameters/limit' + - $ref: '#/components/parameters/offset' + responses: + '200': + description: Collection response + content: + application/json: + schema: + $ref: '#/components/schemas/CollectionPaginatedResponse' + example: + 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: + default: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/300x300.jpg + L: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/1050x1050.jpg + M: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/600x600.jpg + S: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/300x300.jpg + XS: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/128x128.jpg + waveformUrl: https://pdn.epidemicsound.com/waveforms/1600/394079.json + 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: + default: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/default/300x300.jpg + L: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/default/1050x1050.jpg + M: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/default/600x600.jpg + S: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/default/300x300.jpg + XS: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/default/128x128.jpg + '400': + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Bad request + '401': + description: Unauthorized. Most likely your access token has expired. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Invalid credentials + '404': + description: Collection was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Collection was not found + '429': + description: Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Rate limit exceeded + security: + - UserAuth: [] + - EpidemicSoundConnectAuth: [] + /v0/tracks: + get: + tags: + - Tracks + summary: List tracks based on mood, genre or BPM + description: >- + The tracks endpoint allows you to list all tracks based on a specified + mood, genre or BPM. + operationId: GET_Tracks + parameters: + - $ref: '#/components/parameters/genre' + - $ref: '#/components/parameters/mood' + - $ref: '#/components/parameters/bpmMin' + - $ref: '#/components/parameters/bpmMax' + - $ref: '#/components/parameters/limit' + - $ref: '#/components/parameters/offset' + responses: + '200': + description: Tracks response + content: + application/json: + schema: + $ref: '#/components/schemas/TracksResponse' + example: + 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: + default: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/300x300.jpg + L: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/1050x1050.jpg + M: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/600x600.jpg + S: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/300x300.jpg + XS: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/128x128.jpg + waveformUrl: https://pdn.epidemicsound.com/waveforms/1600/394079.json + 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: + default: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/300x300.jpg + L: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/1050x1050.jpg + M: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/600x600.jpg + S: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/300x300.jpg + XS: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/128x128.jpg + waveformUrl: https://pdn.epidemicsound.com/waveforms/1600/394079.json + 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 + '400': + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Bad request + '401': + description: Unauthorized. Most likely your access token has expired. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Invalid credentials + '429': + description: Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Rate limit exceeded + security: + - UserAuth: [] + - EpidemicSoundConnectAuth: [] + /v0/tracks/search: + get: + tags: + - Browse & search + summary: Search for tracks + description: >- + 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. + operationId: GET_Tracks_Search + parameters: + - $ref: '#/components/parameters/offset' + - $ref: '#/components/parameters/limit' + - $ref: '#/components/parameters/term' + - $ref: '#/components/parameters/genre' + - $ref: '#/components/parameters/mood' + - name: sort + in: query + description: Sort for search + required: false + schema: + type: string + enum: + - Relevance + - Date + - Title + default: Relevance + - name: order + in: query + description: Order + required: false + schema: + type: string + enum: + - Asc + - Desc + default: Asc + responses: + '200': + description: Tracks response + content: + application/json: + schema: + $ref: '#/components/schemas/TracksResponse' + example: + 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: + default: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/300x300.jpg + L: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/1050x1050.jpg + M: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/600x600.jpg + S: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/300x300.jpg + XS: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/128x128.jpg + waveformUrl: https://pdn.epidemicsound.com/waveforms/1600/394079.json + 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: + default: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/300x300.jpg + L: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/1050x1050.jpg + M: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/600x600.jpg + S: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/300x300.jpg + XS: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/128x128.jpg + waveformUrl: https://pdn.epidemicsound.com/waveforms/1600/394079.json + hasVocals: true + added: '2020-10-10' + isExplicit: false + isPreviewOnly: true + pagination: + page: 2 + limit: 25 + offset: 25 + links: + next: /v0/tracks/search?limit=25&offset=50 + prev: /v0/tracks/search?limit=25&offset=0 + aggregations: + moods: + - id: energetic + name: Energetic + count: 1 + genres: + - id: rock + name: Rock + count: 1 + '400': + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Bad request + '401': + description: Unauthorized. Most likely your access token has expired. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Invalid credentials + '403': + description: >- + Forbidden. Only available for ES Connect tokens or User tokens when + the app allows to preview tracks. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Forbidden + '429': + description: Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Rate limit exceeded + '503': + description: Service unavailable + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Service unavailable + security: + - UserAuth: [] + - EpidemicSoundConnectAuth: [] + /v0/tracks/search/suggestions: + get: + tags: + - Browse & search + summary: Search tracks suggestions + description: >- + The search suggestions endpoint allows your users to get autocomplete + suggestions for Epidemic Sound music + operationId: GET_Tracks_Search_suggestions + parameters: + - $ref: '#/components/parameters/term' + responses: + '200': + description: Tracks Search Suggestions response + content: + application/json: + schema: + $ref: '#/components/schemas/SearchSuggestionsResponse' + example: + suggestions: + - value: rock + type: TEXT + - value: rocker + type: TEXT + - value: rock n roll + type: TEXT + '400': + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Bad request + '401': + description: Unauthorized. Most likely your access token has expired. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Invalid credentials + '403': + description: >- + Forbidden. Only available for ES Connect tokens or User tokens when + the app allows to preview tracks. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Forbidden + '429': + description: Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Rate limit exceeded + '503': + description: Service unavailable + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Service unavailable + security: + - UserAuth: [] + - EpidemicSoundConnectAuth: [] + /v0/tracks/parameters: + get: + tags: + - Tracks + summary: List track parameters + description: Get a list of possible track query parameters + operationId: GET_Track_Parameters + responses: + '200': + description: Track parameters response + content: + application/json: + schema: + $ref: '#/components/schemas/TrackParametersResponse' + example: + 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 + '401': + description: Unauthorized. Most likely your access token has expired. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Invalid credentials + '429': + description: Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Rate limit exceeded + security: + - UserAuth: [] + - EpidemicSoundConnectAuth: [] + /v0/moods: + get: + tags: + - Browse & search + summary: List moods + description: >- + 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. + operationId: GET_All_Moods + parameters: + - $ref: '#/components/parameters/sort' + - $ref: '#/components/parameters/order' + - $ref: '#/components/parameters/type' + - name: limit + in: query + description: >- + Max number of entries returned in the response, default 20 and max + 20 + required: false + schema: + type: integer + format: int32 + - $ref: '#/components/parameters/offset' + responses: + '200': + description: Track moods response + content: + application/json: + schema: + $ref: '#/components/schemas/MoodsPaginatedResponseWithImages' + example: + moods: + - id: energetic + name: Epic + images: + default: >- + https://images.ctfassets.net/ojtnytzl1djm/3IWOMuMQtqXI01euQ43r6d/19761430ed16d9d35b94b71cb4693c80/Epic.jpg?w=300&h=300&fit=fill&q=90&fm=jpg + L: >- + https://images.ctfassets.net/ojtnytzl1djm/3IWOMuMQtqXI01euQ43r6d/19761430ed16d9d35b94b71cb4693c80/Epic.jpg?w=1050&h=1050&fit=fill&q=90&fm=jpg + M: >- + https://images.ctfassets.net/ojtnytzl1djm/3IWOMuMQtqXI01euQ43r6d/19761430ed16d9d35b94b71cb4693c80/Epic.jpg?w=600&h=600&fit=fill&q=90&fm=jpg + S: >- + https://images.ctfassets.net/ojtnytzl1djm/3IWOMuMQtqXI01euQ43r6d/19761430ed16d9d35b94b71cb4693c80/Epic.jpg?w=300&h=300&fit=fill&q=90&fm=jpg + XS: >- + https://images.ctfassets.net/ojtnytzl1djm/3IWOMuMQtqXI01euQ43r6d/19761430ed16d9d35b94b71cb4693c80/Epic.jpg?w=128&h=128&fit=fill&q=90&fm=jpg + - id: happy + name: Happy + images: + default: >- + https://images.ctfassets.net/ojtnytzl1djm/2u0eIu3GfevvONKEVc0NEi/f0db82add464ad37ec90406c8ab7cab1/Happy.png?w=300&h=300&fit=fill&q=90&fm=jpg + L: >- + https://images.ctfassets.net/ojtnytzl1djm/2u0eIu3GfevvONKEVc0NEi/f0db82add464ad37ec90406c8ab7cab1/Happy.png?w=1050&h=1050&fit=fill&q=90&fm=jpg + M: >- + https://images.ctfassets.net/ojtnytzl1djm/2u0eIu3GfevvONKEVc0NEi/f0db82add464ad37ec90406c8ab7cab1/Happy.png?w=600&h=600&fit=fill&q=90&fm=jpg + S: >- + https://images.ctfassets.net/ojtnytzl1djm/2u0eIu3GfevvONKEVc0NEi/f0db82add464ad37ec90406c8ab7cab1/Happy.png?w=300&h=300&fit=fill&q=90&fm=jpg + XS: >- + https://images.ctfassets.net/ojtnytzl1djm/2u0eIu3GfevvONKEVc0NEi/f0db82add464ad37ec90406c8ab7cab1/Happy.png?w=128&h=128&fit=fill&q=90&fm=jpg + pagination: + page: 1 + limit: 20 + offset: 0 + links: {} + '401': + description: Unauthorized. Most likely your access token has expired. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Invalid credentials + '429': + description: Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Rate limit exceeded + security: + - UserAuth: [] + - EpidemicSoundConnectAuth: [] + /v0/moods/{moodId}: + get: + tags: + - Browse & search + summary: Mood by ID + description: Get mood details + operationId: GET_Mood_details + parameters: + - $ref: '#/components/parameters/moodId' + - $ref: '#/components/parameters/expand' + - $ref: '#/components/parameters/limit' + - $ref: '#/components/parameters/offset' + responses: + '200': + description: Track mood response + content: + application/json: + schema: + $ref: '#/components/schemas/MoodResponseWithImages' + example: + id: happy + name: Happy + images: + default: >- + https://images.ctfassets.net/ojtnytzl1djm/2u0eIu3GfevvONKEVc0NEi/f0db82add464ad37ec90406c8ab7cab1/Happy.png?w=300&h=300&fit=fill&q=90&fm=jpg + L: >- + https://images.ctfassets.net/ojtnytzl1djm/2u0eIu3GfevvONKEVc0NEi/f0db82add464ad37ec90406c8ab7cab1/Happy.png?w=1050&h=1050&fit=fill&q=90&fm=jpg + M: >- + https://images.ctfassets.net/ojtnytzl1djm/2u0eIu3GfevvONKEVc0NEi/f0db82add464ad37ec90406c8ab7cab1/Happy.png?w=600&h=600&fit=fill&q=90&fm=jpg + S: >- + https://images.ctfassets.net/ojtnytzl1djm/2u0eIu3GfevvONKEVc0NEi/f0db82add464ad37ec90406c8ab7cab1/Happy.png?w=300&h=300&fit=fill&q=90&fm=jpg + XS: >- + https://images.ctfassets.net/ojtnytzl1djm/2u0eIu3GfevvONKEVc0NEi/f0db82add464ad37ec90406c8ab7cab1/Happy.png?w=128&h=128&fit=fill&q=90&fm=jpg + '401': + description: Unauthorized. Most likely your access token has expired. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Invalid credentials + '404': + description: Mood was not found + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Mood was not found + '429': + description: Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Rate limit exceeded + security: + - UserAuth: [] + - EpidemicSoundConnectAuth: [] + /v0/genres: + get: + tags: + - Browse & search + summary: List genres + description: >- + 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. + operationId: GET_All_Genres + parameters: + - $ref: '#/components/parameters/sort' + - $ref: '#/components/parameters/order' + - $ref: '#/components/parameters/type' + - name: limit + in: query + description: >- + Max number of entries returned in the response, default 20 and max + 20 + required: false + schema: + type: integer + format: int32 + - $ref: '#/components/parameters/offset' + responses: + '200': + description: Track genres response + content: + application/json: + schema: + $ref: '#/components/schemas/GenresWithImagesPaginatedResponse' + example: + genres: + - id: beats + name: Beats + images: + default: >- + https://images.ctfassets.net/ojtnytzl1djm/4Mm4kJ9nwasLwZpQ54472a/90f35901413025d5a627fa132f6c2b56/Beats.jpg?w=300&h=300&fit=fill&q=90&fm=jpg + L: >- + https://images.ctfassets.net/ojtnytzl1djm/4Mm4kJ9nwasLwZpQ54472a/90f35901413025d5a627fa132f6c2b56/Beats.jpg?w=1050&h=1050&fit=fill&q=90&fm=jpg + M: >- + https://images.ctfassets.net/ojtnytzl1djm/4Mm4kJ9nwasLwZpQ54472a/90f35901413025d5a627fa132f6c2b56/Beats.jpg?w=600&h=600&fit=fill&q=90&fm=jpg + S: >- + https://images.ctfassets.net/ojtnytzl1djm/4Mm4kJ9nwasLwZpQ54472a/90f35901413025d5a627fa132f6c2b56/Beats.jpg?w=300&h=300&fit=fill&q=90&fm=jpg + XS: >- + https://images.ctfassets.net/ojtnytzl1djm/4Mm4kJ9nwasLwZpQ54472a/90f35901413025d5a627fa132f6c2b56/Beats.jpg?w=128&h=128&fit=fill&q=90&fm=jpg + pagination: + page: 1 + limit: 20 + offset: 0 + links: {} + '401': + description: Unauthorized. Most likely your access token has expired. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Invalid credentials + '429': + description: Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Rate limit exceeded + security: + - UserAuth: [] + - EpidemicSoundConnectAuth: [] + /v0/genres/{genreId}: + get: + tags: + - Browse & search + summary: Genre details + description: >- + This endpoint gives you the parent and child relationships of a specific + genre as well as all tracks that belong to it. + operationId: GET_Genre_details + parameters: + - $ref: '#/components/parameters/genreId' + - $ref: '#/components/parameters/expand' + - $ref: '#/components/parameters/limit' + - $ref: '#/components/parameters/offset' + responses: + '200': + description: Track genre response + content: + application/json: + schema: + $ref: '#/components/schemas/GenreResponseWithChildren' + example: + 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: + default: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/300x300.jpg + L: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/1050x1050.jpg + M: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/600x600.jpg + S: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/300x300.jpg + XS: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/128x128.jpg + waveformUrl: https://pdn.epidemicsound.com/waveforms/1600/394079.json + 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 + '401': + description: Unauthorized. Most likely your access token has expired. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Invalid credentials + '404': + description: Genre was not found + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Genre was not found + '429': + description: Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Rate limit exceeded + security: + - UserAuth: [] + - EpidemicSoundConnectAuth: [] + /v0/tracks/{trackId}/download: + get: + tags: + - Tracks + summary: Download track + description: >- + 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). + operationId: GET_Download + parameters: + - $ref: '#/components/parameters/trackId' + - $ref: '#/components/parameters/format' + - $ref: '#/components/parameters/quality' + responses: + '200': + description: Information about download url + content: + application/json: + schema: + $ref: '#/components/schemas/DownloadResponse' + example: + url: >- + https://pdn.epidemicsound.com/ES_ITUNES/Happy_Song/ES_Happy_Song.mp3 + expires: '2022-12-22T11:01:48Z' + '400': + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Bad request + '401': + description: Unauthorized. Most likely your access token has expired. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Invalid credentials + '403': + description: User does not have access to download the track. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: User does not have access to download the track + '404': + description: Track was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Track was not found + '429': + description: Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Rate limit exceeded + security: + - UserAuth: [] + - EpidemicSoundConnectAuth: [] + /v0/tracks/{trackId}/beats: + get: + tags: + - Tracks + summary: Beats + description: " 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.\n\n 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.\n\n The response includes two types of metadata: `time` and `value`.\_\n\n `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).\n\n Examples:\n\n 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\n\n However, a waltz has three beats in a bar, and the data would look something like: 1-2-3, 1-2-3\n\n Usage Scenarios:\n\n* Automatically cut a video in sync with the beat\n\n* Adding snap markers aligned with beat timestamps in the UI. " + operationId: GET_Track_Beats + parameters: + - $ref: '#/components/parameters/trackId' + responses: + '200': + description: Beats response + content: + application/json: + schema: + $ref: '#/components/schemas/TrackBeatsResponse' + example: + beats: + - time: 0 + value: '1.0' + - time: 0.62 + value: '2.0' + - time: 1.2 + value: '3.0' + - time: 1.8 + value: '4.0' + '400': + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Bad request + '401': + description: Unauthorized. Most likely your access token has expired. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Invalid credentials + '403': + description: User does not have access to download the track. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: User does not have access to download the track + '404': + description: Track was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Track was not found + '429': + description: Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Rate limit exceeded + security: + - UserAuth: [] + - EpidemicSoundConnectAuth: [] + /v0/tracks/{trackId}/hls: + get: + tags: + - Tracks + summary: Preview track using cookies + description: >- + 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. + operationId: GET_HLS_Download_Data + parameters: + - $ref: '#/components/parameters/trackId' + responses: + '200': + description: HLS download details for the track + content: + application/json: + schema: + $ref: '#/components/schemas/HLSDownloadResponse' + example: + url: >- + https://hls-storage.epidemicsite.com/hls/v1/q4MImKW47D/daefecd205c01496b42ae6950c446c6e/master.m3u8 + 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' + '400': + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Bad request + '401': + description: Unauthorized. Most likely your access token has expired. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Invalid credentials + '404': + description: Track was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Track was not found + '429': + description: Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Rate limit exceeded + security: + - UserAuth: [] + - EpidemicSoundConnectAuth: [] + /v0/tracks/{trackId}/similar: + get: + tags: + - Tracks + summary: Similar tracks + description: >- + 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. + operationId: GET_Similar_tracks + parameters: + - $ref: '#/components/parameters/trackId' + - $ref: '#/components/parameters/offset' + - $ref: '#/components/parameters/limit' + responses: + '200': + description: Paginated list of similar tracks + content: + application/json: + schema: + $ref: '#/components/schemas/TracksResponse' + example: + 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: + default: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/300x300.jpg + L: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/1050x1050.jpg + M: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/600x600.jpg + S: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/300x300.jpg + XS: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/128x128.jpg + waveformUrl: https://pdn.epidemicsound.com/waveforms/1600/394079.json + 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: + default: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/300x300.jpg + L: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/1050x1050.jpg + M: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/600x600.jpg + S: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/300x300.jpg + XS: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/128x128.jpg + waveformUrl: https://pdn.epidemicsound.com/waveforms/1600/394079.json + 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 + '400': + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Bad request + '401': + description: Unauthorized. Most likely your access token has expired. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Invalid credentials + '404': + description: Track was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Track was not found + '429': + description: Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Rate limit exceeded + security: + - UserAuth: [] + - EpidemicSoundConnectAuth: [] + /v0/tracks/similar-sections: + get: + tags: + - Tracks + summary: Similar track segment based on audio file + description: >- + Returns a list of track sections that are matched to the provided audio + file id. + operationId: GET_Similar_Audio_Match_Section_tracks + parameters: + - name: audioUploadId + in: query + description: Reference to the uploaded audio file + required: true + schema: + type: string + format: uuid + - name: start + in: query + description: Start of the section in milliseconds + required: true + schema: + type: integer + format: int32 + - name: end + in: query + description: End of the section in milliseconds + required: true + schema: + type: integer + format: int32 + - $ref: '#/components/parameters/offset' + - $ref: '#/components/parameters/limit' + responses: + '200': + description: Paginated list of similar tracks + content: + application/json: + schema: + $ref: '#/components/schemas/TrackSectionPaginatedResponse' + example: + 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: + default: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/300x300.jpg + L: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/1050x1050.jpg + M: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/600x600.jpg + S: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/300x300.jpg + XS: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/128x128.jpg + waveformUrl: https://pdn.epidemicsound.com/waveforms/1600/394079.json + 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=1ddc0dbc-a65b-4fdb-8f07-5bcda987abb0&limit=20&offset=80&start=0&end=10000 + prev: >- + /v0/tracks/similar-sections?audioUploadId=63abbf39-4197-42c7-bf4f-66024096cd25&limit=20&offset=40&start=0&end=10000 + '400': + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Bad request + '401': + description: Unauthorized. Most likely your access token has expired. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Invalid credentials + '404': + description: Track was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Track was not found + '429': + description: Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Rate limit exceeded + security: + - UserAuth: [] + - EpidemicSoundConnectAuth: [] + /v0/tracks/{trackId}/similar-sections: + get: + tags: + - Tracks + summary: Similar track segment based on trackID + description: >- + 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: + + * Video Editing Templates: Replace default tracks in video templates with segments that fit better. + * Quick Swaps: Swap out a segment of music in a video where the existing track doesn't quite match. + * Creative Iteration: Easily experiment with different music segments to enhance your video's impact. + operationId: GET_Similar_Section_tracks + parameters: + - $ref: '#/components/parameters/trackId' + - name: start + in: query + description: Start of the section in milliseconds + required: true + schema: + type: integer + format: int32 + - name: end + in: query + description: End of the section in milliseconds + required: true + schema: + type: integer + format: int32 + - $ref: '#/components/parameters/offset' + - $ref: '#/components/parameters/limit' + responses: + '200': + description: Paginated list of similar tracks + content: + application/json: + schema: + $ref: '#/components/schemas/TrackSectionPaginatedResponse' + example: + 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: + default: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/300x300.jpg + L: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/1050x1050.jpg + M: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/600x600.jpg + S: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/300x300.jpg + XS: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/128x128.jpg + waveformUrl: https://pdn.epidemicsound.com/waveforms/1600/394079.json + 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 + '400': + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Bad request + '401': + description: Unauthorized. Most likely your access token has expired. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Invalid credentials + '404': + description: Track was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Track was not found + '429': + description: Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Rate limit exceeded + security: + - UserAuth: [] + - EpidemicSoundConnectAuth: [] + /v0/tracks/{trackId}/stream: + get: + tags: + - Tracks + summary: Preview track + description: >- + 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. + operationId: GET_Stream + parameters: + - $ref: '#/components/parameters/trackId' + responses: + '200': + description: Information about the stream url + content: + application/json: + schema: + $ref: '#/components/schemas/DownloadResponse' + example: + url: >- + https://hls-storage.epidemicsite.com/hls/v1/q4MImKW47D/daefecd205c01496b42ae6950c446c6e/master.m3u8 + expires: '2022-12-22T11:01:48Z' + '400': + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Bad request + '401': + description: Unauthorized. Most likely your access token has expired. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Invalid credentials + '404': + description: Track was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Track was not found + '429': + description: Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Rate limit exceeded + security: + - UserAuth: [] + - EpidemicSoundConnectAuth: [] + /v0/tracks/{trackId}/highlights: + get: + tags: + - Tracks + summary: Recommend section of a track + description: >- + Powered by our 2 billion daily streams on YouTube, the highlights + endpoint uses machine learning to recommend the best time section. + + + You can use highlights to start playing the track from the right + millisecond, or recommend the right part of the track for shorter + content. + + + The highlights 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. + operationId: GET_Highlights_Details + parameters: + - $ref: '#/components/parameters/trackId' + - $ref: '#/components/parameters/duration' + responses: + '200': + description: >- + List of highlighted sections for the track. The times are given in + milliseconds. If there is no available highlight, a fallback to the + first section of the track is returned. + content: + application/json: + schema: + $ref: '#/components/schemas/HighlightsResponse' + example: + highlights: + - from: 9000 + to: 39000 + duration: 30 + '400': + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Bad request + '401': + description: Unauthorized. Most likely your access token has expired. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Invalid credentials + '404': + description: Track was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Track was not found + '429': + description: Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Rate limit exceeded + security: + - UserAuth: [] + - EpidemicSoundConnectAuth: [] + /v0/uploads/audio/{checksum}: + get: + tags: + - Assets + summary: Get audio asset by the checksum + description: >- + Will return the audio id of an audio file uploaded by the partner, + matched by checksum. Should be used to avoid duplicate uploads + operationId: GET_Partner_Audio_By_Checksum + parameters: + - $ref: '#/components/parameters/checksum' + responses: + '200': + description: Partner audio response + content: + application/json: + schema: + $ref: '#/components/schemas/PartnerAudioResponse' + example: + audioUploadId: f064a9f3-8bc7-4073-93f1-781e7a7c134f + length: 10 + expires: '2024-04-27T23:28:40.013476725Z' + '400': + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Bad request + '401': + description: Unauthorized. Most likely your access token has expired. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Invalid credentials + '404': + description: Audio file was not found + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Audio was not found + '429': + description: Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Rate limit exceeded + security: + - UserAuth: [] + - EpidemicSoundConnectAuth: [] + - PartnerAuth: [] + /v0/uploads/audio/{audioIdOrChecksum}: + delete: + tags: + - Assets + summary: Delete a single audio file + description: Delete a single audio file + operationId: DELETE_Partner_audio + parameters: + - $ref: '#/components/parameters/audioIdOrChecksum' + responses: + '200': + description: List of deleted audio ids + content: + application/json: + schema: + $ref: '#/components/schemas/PartnerAudioDeleteResponse' + example: + audioFilesRemoved: + - 3163ce29-28d5-4d39-83ae-beb9cc0f46cf + '202': + description: List of audio files marked for deletion + content: + application/json: + schema: + $ref: '#/components/schemas/PartnerAudioDeleteResponse' + example: + audioFilesRemoved: + - 6847b481-9439-462f-bb77-e6cd5efeb92c + '401': + description: Unauthorized. Most likely your access token has expired. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Invalid credentials + '429': + description: Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Rate limit exceeded + security: + - PartnerAuth: [] + /v0/uploads/audio: + post: + tags: + - Assets + summary: Uploads an audio file + description: Uploads an audio file + operationId: POST_Upload_Partner_Audio + requestBody: + content: + multipart/form-data: + schema: + type: object + properties: + file: + type: string + format: binary + responses: + '200': + description: >- + Returns the id of the uploaded image, as well as the expiration date + for the image. + content: + application/json: + schema: + $ref: '#/components/schemas/UploadUserImageResponse' + example: + imageId: 23378a80-6c55-4847-9297-fcf09f483bf5 + expirationDate: '2024-03-29T23:28:40.016558805Z' + '400': + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Bad request + '401': + description: Unauthorized. Most likely your access token has expired. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Invalid credentials + '429': + description: Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Rate limit exceeded + security: + - PartnerAuth: [] + /v0/uploads/images/{imageId}: + delete: + tags: + - Assets + summary: Delete uploaded image + description: Deletes an image uploaded by the user + operationId: DELETE_User_Image + parameters: + - $ref: '#/components/parameters/imageId' + responses: + '204': + description: Image was deleted + '400': + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Bad request + '401': + description: Unauthorized. Most likely your access token has expired. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Invalid credentials + '404': + description: Image was not found + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Image was not found + '429': + description: Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Rate limit exceeded + security: + - UserAuth: [] + - EpidemicSoundConnectAuth: [] + /v0/uploads/images: + post: + tags: + - Assets + summary: Upload image for recommendation + description: >- + Uploads an image, currently only jpeg format is supported. File limit is + 2Mb. + operationId: POST_Upload_User_Image + requestBody: + content: + multipart/form-data: + schema: + type: object + properties: + file: + type: string + format: binary + responses: + '200': + description: >- + Contains id to be used for endpoints requiring an image id, as well + as the expiration date for the image. + content: + application/json: + schema: + $ref: '#/components/schemas/UploadUserImageResponse' + example: + imageId: ef7ec55a-2b56-469b-8d83-b97b35ea5e25 + expirationDate: '2024-03-29T23:28:40.019058805Z' + '400': + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Bad request + '401': + description: Unauthorized. Most likely your access token has expired. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Invalid credentials + '429': + description: Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Rate limit exceeded + security: + - UserAuth: [] + - EpidemicSoundConnectAuth: [] + delete: + tags: + - Assets + summary: Delete all the uploaded images by the user + description: Deletes all images uploaded by the user + operationId: DELETE_User_Images + responses: + '202': + description: Images were marked for deletion + '401': + description: Unauthorized. Most likely your access token has expired. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Invalid credentials + '429': + description: Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Rate limit exceeded + security: + - UserAuth: [] + - EpidemicSoundConnectAuth: [] + /v0/tracks/matching-image/{imageId}: + get: + tags: + - Tracks + summary: Get tracks matching an image + description: Gets tracks that match an image uploaded by the user + operationId: GET_Tracks_Matching_Image + parameters: + - $ref: '#/components/parameters/imageId' + - $ref: '#/components/parameters/offset' + - $ref: '#/components/parameters/limit' + - $ref: '#/components/parameters/genre' + - $ref: '#/components/parameters/mood' + responses: + '200': + description: Paginated list of tracks + content: + application/json: + schema: + $ref: '#/components/schemas/TracksResponse' + example: + 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: + default: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/300x300.jpg + L: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/1050x1050.jpg + M: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/600x600.jpg + S: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/300x300.jpg + XS: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/128x128.jpg + waveformUrl: https://pdn.epidemicsound.com/waveforms/1600/394079.json + 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: + default: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/300x300.jpg + L: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/1050x1050.jpg + M: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/600x600.jpg + S: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/300x300.jpg + XS: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/128x128.jpg + waveformUrl: https://pdn.epidemicsound.com/waveforms/1600/394079.json + hasVocals: true + added: '2020-10-10' + isExplicit: false + isPreviewOnly: true + pagination: + page: 2 + limit: 25 + offset: 25 + links: + next: /v0/tracks/search?limit=25&offset=50 + prev: /v0/tracks/search?limit=25&offset=0 + aggregations: + moods: + - id: energetic + name: Energetic + count: 1 + genres: + - id: rock + name: Rock + count: 1 + '400': + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Bad request + '401': + description: Unauthorized. Most likely your access token has expired. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Invalid credentials + '404': + description: Image was not found + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Image was not found + '429': + description: Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Rate limit exceeded + security: + - UserAuth: [] + - EpidemicSoundConnectAuth: [] + /v0/sound-effects/categories: + get: + tags: + - Sound effects + summary: Get a list of all sound effects categories + description: >- + 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. + operationId: GET_Sound_Effect_Categories + parameters: + - name: type + in: query + description: Category type + required: false + schema: + type: string + enum: + - all + - featured + default: all + - name: sort + in: query + description: Sorting options + required: false + schema: + type: string + enum: + - title + - relevance + default: title + - $ref: '#/components/parameters/offset' + - $ref: '#/components/parameters/limit' + responses: + '200': + description: >- + Sound effects category list with related parent category. You can + see the parent-child relationship in the response. + content: + application/json: + schema: + $ref: '#/components/schemas/SoundEffectCategoriesResponse' + example: + categories: + - id: 7533dc15-855e-476a-bbb6-8d8081f18b1b + name: Applause + numTracks: 10 + images: + default: https://image.url?w=300&h=300&fit=fill&q=90&fm=jpg + L: https://image.url?w=1050&h=1050&fit=fill&q=90&fm=jpg + M: https://image.url?w=600&h=600&fit=fill&q=90&fm=jpg + S: https://image.url?w=300&h=300&fit=fill&q=90&fm=jpg + XS: https://image.url?w=128&h=128&fit=fill&q=90&fm=jpg + parent: + id: 117d5210-2b78-4bda-9013-419d7f710ddb + name: Crowds + pagination: + page: 2 + limit: 10 + offset: 10 + links: + next: /v0/sound-effects/categories?limit=10&offset=20 + prev: /v0/sound-effects/categories?limit=10&offset=0 + '400': + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Bad request + '401': + description: Unauthorized. Most likely your access token has expired. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Invalid credentials + '429': + description: Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Rate limit exceeded + security: + - UserAuth: [] + - EpidemicSoundConnectAuth: [] + /v0/sound-effects/categories/{categoryId}: + get: + tags: + - Sound effects + summary: Get a sound effects category by id + description: >- + 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. + operationId: GET_Sound_Effect_Category + parameters: + - $ref: '#/components/parameters/categoryId' + responses: + '200': + description: Category with related parent and children categories + content: + application/json: + schema: + $ref: '#/components/schemas/SoundEffectCategoryWithRelativesResponse' + example: + id: 3b7bd645-767a-4a95-a97e-35b5549248de + name: Applause + numTracks: 10 + images: + default: https://image.url?w=300&h=300&fit=fill&q=90&fm=jpg + L: https://image.url?w=1050&h=1050&fit=fill&q=90&fm=jpg + M: https://image.url?w=600&h=600&fit=fill&q=90&fm=jpg + S: https://image.url?w=300&h=300&fit=fill&q=90&fm=jpg + XS: https://image.url?w=128&h=128&fit=fill&q=90&fm=jpg + parent: + id: 417f3061-459b-47c3-b5d7-6838e89a9d50 + name: Crowds + children: + - id: 95c42ecf-ab8b-40be-ace1-b50c0d98beaf + name: Claps + '400': + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Bad request + '401': + description: Unauthorized. Most likely your access token has expired. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Invalid credentials + '404': + description: Category was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Category was not found + '429': + description: Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Rate limit exceeded + security: + - UserAuth: [] + - EpidemicSoundConnectAuth: [] + /v0/sound-effects/categories/{categoryId}/tracks: + get: + tags: + - Sound effects + summary: Get sound effects by category + description: >- + Use the sound effects details endpoint to display all sound effects for + a given category. + operationId: GET_Sound_Effect_Category_Tracks + parameters: + - $ref: '#/components/parameters/categoryId' + - $ref: '#/components/parameters/offset' + - $ref: '#/components/parameters/limit' + - name: sort + in: query + description: Sort + required: false + schema: + type: string + enum: + - title + - newest + - length + default: newest + - name: order + in: query + description: Order + required: false + schema: + type: string + enum: + - asc + - desc + default: asc + responses: + '200': + description: List of sound effects for a given category + content: + application/json: + schema: + $ref: '#/components/schemas/PaginatedSoundEffectsResponse' + example: + soundEffects: + - id: 0a1733df-00da-442e-84fd-3a32736c3a5d + title: Applause + added: '2024-03-28T23:28:40.030876075Z' + length: 10 + images: + default: https://image.url?w=300&h=300&fit=fill&q=90&fm=jpg + L: https://image.url?w=1050&h=1050&fit=fill&q=90&fm=jpg + M: https://image.url?w=600&h=600&fit=fill&q=90&fm=jpg + S: https://image.url?w=300&h=300&fit=fill&q=90&fm=jpg + XS: https://image.url?w=128&h=128&fit=fill&q=90&fm=jpg + categories: [] + pagination: + page: 2 + limit: 10 + offset: 10 + links: + next: /v0/sound-effects/categories?limit=10&offset=20 + prev: /v0/sound-effects/categories?limit=10&offset=0 + '400': + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Bad request + '401': + description: Unauthorized. Most likely your access token has expired. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Invalid credentials + '404': + description: Category was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Category was not found + '429': + description: Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Rate limit exceeded + security: + - UserAuth: [] + - EpidemicSoundConnectAuth: [] + /v0/sound-effects/{trackId}/download: + get: + tags: + - Sound effects + summary: Download sound effect + description: >- + 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. + operationId: GET_Sound_Effect_Download + parameters: + - $ref: '#/components/parameters/trackId' + - $ref: '#/components/parameters/format' + - $ref: '#/components/parameters/quality' + responses: + '200': + description: Information about download url + content: + application/json: + schema: + $ref: '#/components/schemas/DownloadResponse' + example: + url: >- + https://pdn.epidemicsound.com/ES_ITUNES/Happy_Song/ES_Happy_Song.mp3 + expires: '2022-12-22T11:01:48Z' + '400': + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Bad request + '401': + description: Unauthorized. Most likely your access token has expired. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Invalid credentials + '403': + description: User does not have access to download the track. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: User does not have access to download the track + '404': + description: Track was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Track was not found + '429': + description: Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Rate limit exceeded + security: + - UserAuth: [] + - EpidemicSoundConnectAuth: [] + /v0/sound-effects/search: + get: + tags: + - Sound effects + summary: Search sound effects + description: > + Use the sound effects search endpoint to allow users to search within + the sound effects library. + operationId: GET_Sound_Effect_Search + parameters: + - $ref: '#/components/parameters/offset' + - $ref: '#/components/parameters/limit' + - required: true + $ref: '#/components/parameters/term' + - name: sort + in: query + description: Sort for search + required: false + schema: + type: string + enum: + - best-match + - newest + - popular + - length + - title + default: best-match + - name: order + in: query + description: Order + required: false + schema: + type: string + enum: + - asc + - desc + default: asc + responses: + '200': + description: List of sound effect search results + content: + application/json: + schema: + $ref: '#/components/schemas/PaginatedSoundEffectsResponse' + example: + soundEffects: + - id: 021438f7-8c68-4649-8296-d475abdca6a4 + title: Applause + added: '2024-03-28T23:28:40.034835865Z' + length: 10 + images: + default: https://image.url?w=300&h=300&fit=fill&q=90&fm=jpg + L: https://image.url?w=1050&h=1050&fit=fill&q=90&fm=jpg + M: https://image.url?w=600&h=600&fit=fill&q=90&fm=jpg + S: https://image.url?w=300&h=300&fit=fill&q=90&fm=jpg + XS: https://image.url?w=128&h=128&fit=fill&q=90&fm=jpg + categories: [] + pagination: + page: 2 + limit: 10 + offset: 10 + links: + next: /v0/sound-effects/categories?limit=10&offset=20 + prev: /v0/sound-effects/categories?limit=10&offset=0 + '400': + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Bad request + '401': + description: Unauthorized. Most likely your access token has expired. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Invalid credentials + '429': + description: Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Rate limit exceeded + security: + - UserAuth: [] + - EpidemicSoundConnectAuth: [] + /v0/analytics/report: + post: + tags: + - Reporting + summary: Report events to Epidemic Sound + description: >- + This endpoint should be used when you want to 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. + operationId: POST_Analytics_Report + requestBody: + description: Analytics report + content: + application/json: + schema: + $ref: '#/components/schemas/AnalyticsReportRequest' + example: + events: + - userId: '123' + timestamp: '2024-03-28T23:28:40.035772655Z' + userConnected: false + analyticsEvent: + trackId: '12345' + type: trackPreviewed + - userId: '456' + timestamp: '2024-03-28T23:28:40.035976895Z' + userConnected: true + analyticsEvent: + trackId: '12345' + format: mp3 + quality: normal + type: trackDownloaded + - userId: '456' + timestamp: '2024-03-28T23:28:40.036196785Z' + analyticsEvent: + trackIds: + - '12345' + platform: YOUTUBE + type: tracksExported + responses: + '200': + description: Usage report response + content: + application/json: + schema: + $ref: '#/components/schemas/AnalyticsReportResponse' + example: + batchId: '12345' + eventsCount: 10 + '400': + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Bad request + '401': + description: Unauthorized. Most likely your access token has expired. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Invalid credentials + '429': + description: Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Rate limit exceeded + security: + - PartnerAuth: [] + /v0/usage: + post: + tags: + - Reporting + summary: Report usage + description: >- + 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. + operationId: POST_Use + requestBody: + description: Usage report + content: + application/json: + schema: + $ref: '#/components/schemas/TrackUsageRequest' + example: + eventType: EXPORTED + platform: OTHER + trackIds: + - trackid1 + - trackid2 + other: OptionalValueForWhenNoMatchingPlatformEnum + responses: + '200': + description: Usage report response + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Ok + '400': + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Bad request + '401': + description: Unauthorized. Most likely your access token has expired. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Invalid credentials + '429': + description: Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Rate limit exceeded + security: + - UserAuth: [] + - EpidemicSoundConnectAuth: [] + /v0/partner-token: + post: + tags: + - Authentication + summary: Request a partner token + description: Request a Partner Token + operationId: POST_Partner_Token + requestBody: + description: Token request + content: + application/json: + schema: + $ref: '#/components/schemas/PartnerTokenRequest' + responses: + '201': + description: User access token + content: + application/json: + schema: + $ref: '#/components/schemas/AccessTokenResponse' + example: + accessToken: >- + eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJhdWQiOiJwYXJ0bmVyIiwiaXNzIjoiRXBpZGVtaWMgU291bmQiLCJwYXJ0bmVySWQiOiJlcGlkZW1pY3NvdW5kIiwiZXhwIjoxNjIwMTA4OTg0fQ + '400': + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Bad request + '401': + description: Unauthorized. Most likely your access token has expired. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Invalid credentials + '429': + description: Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Rate limit exceeded + /v0/token: + post: + tags: + - Authentication + summary: Request a user token + description: >- + Request a User Token. This endpoint requires a Partner Token for + authentication. + operationId: POST_User_Token + requestBody: + description: Token request + content: + application/json: + schema: + $ref: '#/components/schemas/UserTokenRequest' + responses: + '201': + description: User access token + content: + application/json: + schema: + $ref: '#/components/schemas/AccessTokenResponse' + example: + accessToken: >- + eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJ1c2VyVGllciI6ImJhc2VfdGllciIsImF1ZCI6ImVuZC11c2VyIiwiaXNzIjoiRXBpZGVtaWMgU291bmQiLCJwYXJ0bmVySWQiOiJlcGlkZW1pY3NvdW5kIiwiZXhwIjoxNjIwMTA5MDkyLCJ1c2VySWQiOiJ1c2VyX2lkIn0 + '400': + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Bad request + '401': + description: Unauthorized. Most likely your access token has expired. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Invalid credentials + '429': + description: Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Rate limit exceeded + security: + - PartnerAuth: [] + /v0/users/me: + get: + tags: + - Users + summary: User details + description: Get user details of the authenticated user. + operationId: GET_End_User_Details + responses: + '200': + description: End user details + content: + application/json: + schema: + $ref: '#/components/schemas/UserInfo' + example: + userId: b7d04a6f-a2fb-4574-88f9-b5c6f842eac2 + esConnect: false + hasActiveSubscription: null + email: null + '400': + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Bad request + '401': + description: Unauthorized. Most likely your access token has expired. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Invalid credentials + '429': + description: Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Rate limit exceeded + security: + - UserAuth: [] + - EpidemicSoundConnectAuth: [] + /v0/users/me/subscription: + get: + tags: + - Users + summary: User subscription details + description: Get subscription details for the authenticated user. + operationId: GET_End_User_Subscription_Details + responses: + '200': + description: End user subscription details + content: + application/json: + schema: + $ref: '#/components/schemas/SubscriptionInfo' + example: + epidemicSound: + hasActiveSubscription: true + subscriptionExpiresAt: '2024-04-27T23:28:40Z' + '400': + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Bad request + '401': + description: Unauthorized. Most likely your access token has expired. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Invalid credentials + '429': + description: Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Rate limit exceeded + security: + - EpidemicSoundConnectAuth: [] + /v0/users/me/liked/tracks: + get: + tags: + - Users + summary: List users’ liked tracks + description: >- + 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. + operationId: GET_Users_Liked_Tracks + parameters: + - name: offset + in: query + description: >- + 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. + required: false + schema: + type: integer + format: int32 + responses: + '200': + description: Liked Tracks response + content: + application/json: + schema: + $ref: '#/components/schemas/TracksResponse' + example: + 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: + default: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/300x300.jpg + L: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/1050x1050.jpg + M: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/600x600.jpg + S: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/300x300.jpg + XS: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/128x128.jpg + waveformUrl: https://pdn.epidemicsound.com/waveforms/1600/394079.json + 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: + default: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/300x300.jpg + L: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/1050x1050.jpg + M: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/600x600.jpg + S: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/300x300.jpg + XS: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/128x128.jpg + waveformUrl: https://pdn.epidemicsound.com/waveforms/1600/394079.json + hasVocals: true + added: '2020-10-10' + isExplicit: false + isPreviewOnly: true + pagination: + page: 2 + limit: 25 + offset: 25 + links: + next: /v0/users/me/liked/tracks?limit=25&offset=50 + prev: /v0/users/me/liked/tracks?limit=25&offset=0 + '400': + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Bad request + '401': + description: Unauthorized. Most likely your access token has expired. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Invalid credentials + '429': + description: Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Rate limit exceeded + security: + - EpidemicSoundConnectAuth: [] +components: + schemas: + TrackResponse: + required: + - added + - bpm + - featuredArtists + - genres + - id + - length + - mainArtists + - moods + - title + - waveformUrl + type: object + properties: + id: + type: string + description: Unique ID of the track + mainArtists: + type: array + description: The main artist that created the track. + items: + type: string + description: The main artist that created the track. + featuredArtists: + type: array + description: Additional artists that contributed to the track. + items: + type: string + description: Additional artists that contributed to the track. + title: + type: string + description: Title of the track + bpm: + type: integer + description: Beats per minute for the track. + format: int32 + length: + type: integer + description: Track length in seconds + format: int32 + moods: + type: array + description: Lists the moods of the track. + items: + $ref: '#/components/schemas/MoodResponse' + genres: + type: array + description: Lists the genres of the track. + items: + $ref: '#/components/schemas/GenreResponse' + images: + $ref: '#/components/schemas/ImagesResponse' + waveformUrl: + type: string + description: Reference to the waveform as a json object. + hasVocals: + type: boolean + description: >- + Set to true if the track has vocals. Set to false for instrumental + tracks. + nullable: true + added: + type: string + description: The date the track was released in the format YYYY-mm-dd. + tierOption: + type: string + nullable: true + enum: + - PAID + - FREE + isExplicit: + type: boolean + nullable: true + isPreviewOnly: + type: boolean + MoodResponse: + required: + - id + - name + type: object + properties: + id: + type: string + description: Unique ID of the mood + name: + type: string + description: Name of the mood + MoodImagesResponse: + type: object + properties: + default: + type: string + nullable: true + L: + type: string + nullable: true + M: + type: string + nullable: true + S: + type: string + nullable: true + XS: + type: string + nullable: true + ParentGenreResponse: + required: + - id + - name + type: object + properties: + id: + type: string + description: Unique ID of the parent genre + name: + type: string + description: Name of the parent genre + GenreResponse: + required: + - id + - name + type: object + properties: + id: + type: string + name: + type: string + parent: + $ref: '#/components/schemas/ParentGenreResponse' + GenreImagesResponse: + type: object + properties: + default: + type: string + L: + type: string + nullable: true + M: + type: string + nullable: true + S: + type: string + nullable: true + XS: + type: string + nullable: true + TrackMoodsResponse: + required: + - moods + type: object + properties: + moods: + type: array + items: + $ref: '#/components/schemas/MoodResponse' + TrackGenresResponse: + required: + - genres + type: object + properties: + genres: + type: array + items: + $ref: '#/components/schemas/GenreResponse' + GenreResponseWithChildren: + required: + - children + - id + - name + type: object + properties: + id: + type: string + name: + type: string + parent: + $ref: '#/components/schemas/ParentGenreResponse' + children: + type: array + items: + $ref: '#/components/schemas/GenreResponse' + images: + $ref: '#/components/schemas/GenreImagesResponse' + tracks: + $ref: '#/components/schemas/TracksResponse' + TrackParametersResponse: + required: + - genres + - moods + type: object + properties: + genres: + type: array + items: + $ref: '#/components/schemas/GenreResponse' + moods: + type: array + items: + $ref: '#/components/schemas/MoodResponse' + MoodsPaginatedResponseWithImages: + required: + - links + - moods + - pagination + type: object + properties: + moods: + type: array + items: + $ref: '#/components/schemas/MoodResponseWithImages' + pagination: + $ref: '#/components/schemas/Pagination' + links: + $ref: '#/components/schemas/PaginationLinks' + MoodResponseWithImages: + required: + - id + - name + type: object + properties: + id: + type: string + name: + type: string + images: + $ref: '#/components/schemas/MoodImagesResponse' + tracks: + $ref: '#/components/schemas/TracksResponse' + GenresWithImagesPaginatedResponse: + required: + - genres + - links + - pagination + type: object + properties: + genres: + type: array + items: + $ref: '#/components/schemas/GenreResponseWithImages' + pagination: + $ref: '#/components/schemas/Pagination' + links: + $ref: '#/components/schemas/PaginationLinks' + GenreResponseWithImages: + required: + - id + - name + type: object + properties: + id: + type: string + name: + type: string + parent: + $ref: '#/components/schemas/ParentGenreResponseWithImages' + images: + $ref: '#/components/schemas/GenreImagesResponse' + ParentGenreResponseWithImages: + required: + - id + - name + type: object + properties: + id: + type: string + name: + type: string + images: + $ref: '#/components/schemas/GenreImagesResponse' + TrackSectionPaginatedResponse: + required: + - links + - pagination + - trackSections + type: object + properties: + trackSections: + type: array + items: + $ref: '#/components/schemas/TrackSectionResponse' + pagination: + $ref: '#/components/schemas/Pagination' + links: + $ref: '#/components/schemas/PaginationLinks' + DownloadResponse: + required: + - expires + - url + type: object + properties: + url: + type: string + expires: + type: string + HLSDownloadResponse: + required: + - cookie + - url + type: object + properties: + url: + type: string + cookie: + $ref: '#/components/schemas/HLSCookieResponse' + HLSCookieResponse: + required: + - domain + - expires + - name + - path + - value + type: object + properties: + name: + type: string + domain: + type: string + path: + type: string + value: + type: string + expires: + type: string + HighlightsResponse: + required: + - highlights + type: object + properties: + highlights: + type: array + items: + $ref: '#/components/schemas/HighlightSectionResponse' + HighlightSectionResponse: + required: + - duration + - from + - to + type: object + properties: + from: + type: integer + format: int32 + to: + type: integer + format: int32 + duration: + type: integer + format: int32 + TracksResponse: + required: + - links + - pagination + - tracks + type: object + properties: + tracks: + type: array + items: + $ref: '#/components/schemas/TrackResponse' + pagination: + $ref: '#/components/schemas/Pagination' + links: + $ref: '#/components/schemas/PaginationLinks' + aggregations: + $ref: '#/components/schemas/TaxonomyAggregations' + SearchSuggestionsResponse: + type: object + properties: + suggestions: + type: array + items: + $ref: '#/components/schemas/Option' + Option: + type: object + properties: + type: + type: string + enum: + - TEXT + Pagination: + required: + - limit + - page + type: object + properties: + page: + type: integer + format: int32 + limit: + type: integer + format: int32 + offset: + type: integer + format: int32 + PaginationLinks: + type: object + properties: + next: + type: string + nullable: true + prev: + type: string + nullable: true + AccessTokenResponse: + required: + - accessToken + type: object + properties: + accessToken: + type: string + CollectionPaginatedResponse: + required: + - id + - images + - links + - name + - pagination + - tracks + type: object + properties: + id: + type: string + format: uuid + name: + type: string + tracks: + type: array + items: + $ref: '#/components/schemas/TrackResponse' + availableTracks: + type: integer + format: int32 + nullable: true + pagination: + $ref: '#/components/schemas/Pagination' + links: + $ref: '#/components/schemas/PaginationLinks' + images: + $ref: '#/components/schemas/CollectionImagesPublicResponse' + CollectionResponse: + required: + - id + - images + - name + - tracks + type: object + properties: + id: + type: string + description: Unique ID of the track. + format: uuid + name: + type: string + description: Name of the collection + tracks: + type: array + items: + $ref: '#/components/schemas/TrackResponse' + availableTracks: + type: integer + description: Number of available tracks based on the partner's tier + format: int32 + nullable: true + images: + $ref: '#/components/schemas/CollectionImagesPublicResponse' + CollectionImagesPublicResponse: + required: + - default + type: object + properties: + default: + type: string + L: + type: string + nullable: true + M: + type: string + nullable: true + S: + type: string + nullable: true + XS: + type: string + nullable: true + CollectionsPaginatedResponse: + required: + - collections + - links + - pagination + type: object + properties: + collections: + type: array + items: + $ref: '#/components/schemas/CollectionResponse' + pagination: + $ref: '#/components/schemas/Pagination' + links: + $ref: '#/components/schemas/PaginationLinks' + ImagesResponse: + type: object + properties: + default: + type: string + nullable: true + L: + type: string + nullable: true + M: + type: string + nullable: true + S: + type: string + nullable: true + XS: + type: string + nullable: true + TrackFormat: + type: string + enum: + - mp3 + PartnerTokenRequest: + required: + - accessKeyId + - accessKeySecret + type: object + properties: + accessKeyId: + type: string + accessKeySecret: + type: string + TrackSectionResponse: + required: + - end + - start + - track + type: object + properties: + track: + $ref: '#/components/schemas/TrackResponse' + start: + type: integer + format: int32 + end: + type: integer + format: int32 + UserTokenRequest: + required: + - userId + type: object + properties: + userId: + type: string + description: End user id. UUID, numeric or matching ^[a-zA-Z0-9_-]+$ + example: 4fbd5793-efcd-4545-b4e9-807c8ed9e2a3 + MessageResponse: + required: + - message + type: object + properties: + message: + type: string + description: Human readable message + errors: + type: array + items: + $ref: '#/components/schemas/Error' + Error: + required: + - key + - messages + type: object + properties: + key: + type: string + description: Error key + messages: + type: array + description: Error messages + items: + type: string + description: Error messages + TrackUsageRequest: + required: + - platform + - trackIds + type: object + properties: + eventType: + type: string + enum: + - EXPORTED + platform: + type: string + enum: + - YOUTUBE + - TWITTER + - TWITCH + - FACEBOOK + - INSTAGRAM + - TIKTOK + - OTHER + - LOCAL + trackIds: + type: array + items: + type: string + other: + type: string + nullable: true + UserInfo: + required: + - esConnect + - userId + type: object + properties: + userId: + type: string + description: >- + is the userId given in the User Token if not ES Connect + authenticated or + + the ES Connect user id if user is authenticated against ES Connect. + esConnect: + type: boolean + description: |- + is false for a not ES Connect authenticated user but + is true for a ES Connect authenticated user. + hasActiveSubscription: + type: boolean + description: |- + is true if the user has an active subscription but + is false if the user has no active subscription. + Returns null if the user is not ES Connect authenticated. + nullable: true + email: + type: string + description: >- + email value will present only for the Epidemic Sound users and will + be null otherwise + nullable: true + SubscriptionInfo: + required: + - epidemicSound + type: object + properties: + epidemicSound: + $ref: '#/components/schemas/SubscriptionInfoDetail' + SubscriptionInfoDetail: + required: + - hasActiveSubscription + - subscriptionExpiresAt + type: object + properties: + hasActiveSubscription: + type: boolean + description: >- + is true if the user has an active subscription and false if the user + has no active subscription. + subscriptionExpiresAt: + type: string + description: >- + if the subscription has been canceled, but is not yet expired, this + will return the expiry datetime. In all + + other cases this will be null. + format: date-time + nullable: true + AnalyticsReportRequest: + required: + - events + type: object + properties: + events: + type: array + items: + $ref: '#/components/schemas/AnalyticsReportEvent' + AnalyticsReportEvent: + type: object + properties: + userId: + type: string + timestamp: + type: string + format: date-time + userConnected: + type: boolean + nullable: true + analyticsEvent: + $ref: '#/components/schemas/AnalyticsEvent' + TrackPreviewedEvent: + type: object + properties: + trackId: + type: string + type: + type: string + enum: + - trackPreviewed + TrackDownloadedEvent: + type: object + properties: + trackId: + type: string + format: + type: string + enum: + - mp3 + - hls + - hls_with_cookie + quality: + type: string + enum: + - normal + - high + type: + type: string + enum: + - trackDownloaded + TracksExportedEvent: + type: object + properties: + trackIds: + type: array + items: + type: string + platform: + type: string + enum: + - YOUTUBE + - TWITTER + - TWITCH + - FACEBOOK + - INSTAGRAM + - TIKTOK + - OTHER + - LOCAL + type: + type: string + enum: + - tracksExported + AnalyticsEvent: + type: object + oneOf: + - $ref: '#/components/schemas/TrackPreviewedEvent' + - $ref: '#/components/schemas/TrackDownloadedEvent' + - $ref: '#/components/schemas/TracksExportedEvent' + AnalyticsReportResponse: + required: + - batchId + - eventsCount + type: object + properties: + batchId: + type: string + eventsCount: + type: integer + format: int32 + UploadUserImageResponse: + required: + - expirationDate + - imageId + type: object + properties: + imageId: + type: string + format: uuid + expirationDate: + type: string + format: date-time + PartnerAudioResponse: + required: + - audioUploadId + - expires + - length + type: object + properties: + audioUploadId: + type: string + format: uuid + length: + type: number + format: double + expires: + type: string + format: date-time + PartnerAudioDeleteResponse: + required: + - audioFilesRemoved + type: object + properties: + audioFilesRemoved: + type: array + items: + type: string + format: uuid + SoundEffectCategoriesResponse: + required: + - categories + - links + - pagination + type: object + properties: + categories: + type: array + items: + $ref: '#/components/schemas/SoundEffectCategoryWithParentResponse' + pagination: + $ref: '#/components/schemas/Pagination' + links: + $ref: '#/components/schemas/PaginationLinks' + SoundEffectCategoryWithParentResponse: + required: + - id + - name + - numTracks + type: object + properties: + id: + type: string + format: uuid + name: + type: string + numTracks: + type: integer + format: int32 + images: + $ref: '#/components/schemas/ImagesResponse' + parent: + $ref: '#/components/schemas/RelatedSoundEffectCategoryResponse' + SoundEffectCategoryWithRelativesResponse: + required: + - id + - name + - numTracks + type: object + properties: + id: + type: string + format: uuid + name: + type: string + numTracks: + type: integer + format: int32 + images: + $ref: '#/components/schemas/ImagesResponse' + parent: + $ref: '#/components/schemas/RelatedSoundEffectCategoryResponse' + children: + type: array + items: + $ref: '#/components/schemas/RelatedSoundEffectCategoryResponse' + RelatedSoundEffectCategoryResponse: + required: + - id + - name + type: object + properties: + id: + type: string + format: uuid + name: + type: string + CategoryResponse: + required: + - id + - name + type: object + properties: + id: + type: string + format: uuid + name: + type: string + SoundEffectResponse: + required: + - added + - categories + - id + - length + - title + type: object + properties: + id: + type: string + title: + type: string + added: + type: string + format: date-time + length: + type: integer + format: int32 + images: + $ref: '#/components/schemas/ImagesResponse' + categories: + type: array + items: + $ref: '#/components/schemas/CategoryResponse' + PaginatedSoundEffectsResponse: + required: + - links + - pagination + - soundEffects + type: object + properties: + soundEffects: + type: array + items: + $ref: '#/components/schemas/SoundEffectResponse' + pagination: + $ref: '#/components/schemas/Pagination' + links: + $ref: '#/components/schemas/PaginationLinks' + TrackBeatsResponse: + type: object + properties: + beats: + type: array + items: + $ref: '#/components/schemas/TrackBeatSegmentResponse' + TrackBeatSegmentResponse: + type: object + properties: + time: + type: number + format: double + value: + type: string + TaxonomyAggregations: + type: object + properties: + moods: + type: array + items: + $ref: '#/components/schemas/TaxonomyAggregation' + genres: + type: array + items: + $ref: '#/components/schemas/TaxonomyAggregation' + TaxonomyAggregation: + type: object + properties: + id: + type: string + name: + type: string + count: + type: integer + format: int32 + parameters: + collectionId: + name: collectionId + in: path + description: Collection id + required: true + schema: + type: string + excludeField: + name: excludeField + in: query + description: Add parameter if tracks should be excluded in the response + required: false + schema: + type: string + enum: + - tracks + expand: + name: expand + in: query + description: Add parameter if tracks should be included in the response + required: false + schema: + type: string + enum: + - tracks + genre: + name: genre + in: query + description: Id for genre + required: false + schema: + type: array + items: + type: string + term: + name: term + in: query + description: Term for search + required: false + schema: + type: string + mood: + name: mood + in: query + description: Id for mood + required: false + schema: + type: array + items: + type: string + limit: + name: limit + in: query + description: Max number of entries returned in the response, default 50 and max 100 + required: false + schema: + type: integer + format: int32 + offset: + name: offset + in: query + description: Index of the entry track in the response + required: false + schema: + type: integer + format: int32 + bpmMin: + name: bpmMin + in: query + description: BPM Min + required: false + schema: + type: integer + format: int32 + bpmMax: + name: bpmMax + in: query + description: BPM Max + required: false + schema: + type: integer + format: int32 + trackId: + name: trackId + in: path + description: Track id + required: true + schema: + type: string + imageId: + name: imageId + in: path + description: Image id + required: true + schema: + type: string + checksum: + name: checksum + in: path + description: File checksum + required: true + schema: + type: string + audioIdOrChecksum: + name: audioIdOrChecksum + in: path + description: Audio upload id or checksum of audio file + required: true + schema: + type: string + moodId: + name: moodId + in: path + description: Mood id + required: true + schema: + type: string + genreId: + name: genreId + in: path + description: Genre id + required: true + schema: + type: string + categoryId: + name: categoryId + in: path + description: Category id + required: true + schema: + type: string + format: uuid + format: + name: format + in: query + description: Track format + required: false + schema: + type: string + enum: + - mp3 + quality: + name: quality + in: query + description: Track quality, normal is used as the default if not specified + required: false + schema: + type: string + enum: + - normal + - high + default: normal + sort: + name: sort + in: query + description: 'Sorting options. Available values: alphabetic, relevance' + required: false + schema: + type: string + enum: + - alphabetic + - relevance + default: relevance + order: + name: order + in: query + description: 'Order options. Available values: asc, desc' + required: false + schema: + type: string + enum: + - asc + - desc + default: asc + type: + name: type + in: query + description: |- + Types to filter by: + * `all` - all the objects in the Epidemic Sound library + * `partner-tier` - objects available to the partner within their tier + * `featured` - only objects featured and curated by Epidemic Sound + required: false + schema: + type: string + enum: + - all + - featured + - partner-tier + default: all + duration: + name: duration + in: query + description: The highlight duration in seconds + required: false + schema: + type: array + items: + type: integer + format: int32 + securitySchemes: + PartnerAuth: + type: http + description: >- + Partner authentication is handled with short lived partner access + tokens. + + Use your api credentials to request these tokens. + + The access token is of JWT format and should be passed in a header with + your API requests: + + + > **Example Header:** `Authorization: Bearer your-partner-token` + scheme: Bearer + UserAuth: + type: http + description: |- + User authentication is handled with short lived user access tokens. + Use a partner token to request these tokens. + The access token is of JWT format and should be passed in a header with your API requests: + + > **Example Header:** `Authorization: Bearer a-user-token` + scheme: Bearer + EpidemicSoundConnectAuth: + type: oauth2 + description: >- + For users signing in with an Epidemic Sound account, user authentication + is + + handled with OpenID Connect, which is a layer on top of OAuth 2.0. + + + > **Example Header:** `Authorization: Bearer es-connect-token` + flows: + authorizationCode: + authorizationUrl: >- + https://login.epidemicsound.com/auth/realms/accounts/protocol/openid-connect/auth + tokenUrl: >- + https://login.epidemicsound.com/auth/realms/accounts/protocol/openid-connect/token + scopes: {} diff --git a/sdks/db/fixed-specs-cache/epidemic-sound-fixed-spec.yaml b/sdks/db/fixed-specs-cache/epidemic-sound-fixed-spec.yaml new file mode 100644 index 000000000..38f2cb76b --- /dev/null +++ b/sdks/db/fixed-specs-cache/epidemic-sound-fixed-spec.yaml @@ -0,0 +1,4461 @@ +publishJson: + company: Epidemic Sound + serviceName: false + sdkName: epidemic-sound-{language}-sdk + clientName: EpidemicSound + metaDescription: >- + Epidemic Sound has transformed the soundtracking experience for global + brands and professional creators, with an expansive catalog of world-class + music and sound effects that's seen and heard over 2.5 billion times a day + around the globe. + + + Providing a direct license model that comes with all rights included and + next-generation soundtracking tools, Epidemic Sound empowers creators to + unlock more feeling in everything they create and share their stories with + the world. Epidemic Sound continuously enriches its world-class catalog of + music by teaming up with artists, composers, and producers to create tracks + spanning all genres, while supporting them financially and creatively. + apiStatusUrls: inherit + homepage: www.epidemicsound.com/ + developerDocumentation: partner-content-api.epidemicsound.com/swagger + categories: + - audio_generation + - music + - sound_effects + - media + - entertainment + - royalty_free_music +rawSpecString: | + openapi: 3.0.1 + info: + title: Partner Content API + version: 0.1.17 + servers: + - url: https://partner-content-api.epidemicsound.com + description: Epidemic Sound Content API + tags: + - name: Authentication + description: Endpoints for user authentication. + - name: Browse & search + description: >- + 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. + - name: Tracks + description: Endpoints to get track specific information. + - name: Sound effects + description: >- + Endpoints to get sound effect specific information. These endpoints allow + you to build a UI to browse and search for sound effects. + - name: Reporting + description: >- + These endpoints will allow you to report how tracks are used in your + application. + - name: Users + description: >- + These endpoints allows your application to get user specific information + such as liked sounds. + - name: Assets + description: >- + These endpoints allows your application to upload assets such as images or + audio. + paths: + /v0/collections: + get: + tags: + - Browse & search + summary: List collections with tracks + description: >- + 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. + operationId: GET_Collections + parameters: + - $ref: '#/components/parameters/excludeField' + - name: limit + in: query + description: >- + Max number of entries returned in the response, default 10 and max + 20 + required: false + schema: + type: integer + format: int32 + - $ref: '#/components/parameters/offset' + responses: + '200': + description: Collection response + content: + application/json: + schema: + $ref: '#/components/schemas/CollectionsPaginatedResponse' + example: + 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: + default: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/300x300.jpg + L: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/1050x1050.jpg + M: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/600x600.jpg + S: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/300x300.jpg + XS: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/128x128.jpg + waveformUrl: >- + https://pdn.epidemicsound.com/waveforms/1600/394079.json + hasVocals: true + added: '2020-10-10' + isExplicit: false + isPreviewOnly: true + availableTracks: 1 + images: + default: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/default/300x300.jpg + L: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/default/1050x1050.jpg + M: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/default/600x600.jpg + S: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/default/300x300.jpg + XS: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/default/128x128.jpg + - 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: + default: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/300x300.jpg + L: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/1050x1050.jpg + M: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/600x600.jpg + S: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/300x300.jpg + XS: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/128x128.jpg + waveformUrl: >- + https://pdn.epidemicsound.com/waveforms/1600/394079.json + hasVocals: true + added: '2020-10-10' + isExplicit: false + isPreviewOnly: true + availableTracks: 1 + images: + default: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/default/300x300.jpg + L: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/default/1050x1050.jpg + M: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/default/600x600.jpg + S: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/default/300x300.jpg + XS: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/default/128x128.jpg + pagination: + page: 3 + limit: 20 + offset: 40 + links: + next: /v0/collections?limit=20&offset=60 + prev: /v0/collections?limit=20&offset=20 + '401': + description: Unauthorized. Most likely your access token has expired. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Invalid credentials + '429': + description: Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Rate limit exceeded + security: + - UserAuth: [] + - EpidemicSoundConnectAuth: [] + /v0/collections/{collectionId}: + get: + tags: + - Browse & search + summary: List all tracks in a collection + description: >- + The collections endpoint allows you to list all the tracks in a specific + collection. + operationId: GET_Collection + parameters: + - $ref: '#/components/parameters/collectionId' + - $ref: '#/components/parameters/limit' + - $ref: '#/components/parameters/offset' + responses: + '200': + description: Collection response + content: + application/json: + schema: + $ref: '#/components/schemas/CollectionPaginatedResponse' + example: + 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: + default: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/300x300.jpg + L: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/1050x1050.jpg + M: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/600x600.jpg + S: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/300x300.jpg + XS: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/128x128.jpg + waveformUrl: https://pdn.epidemicsound.com/waveforms/1600/394079.json + 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: + default: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/default/300x300.jpg + L: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/default/1050x1050.jpg + M: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/default/600x600.jpg + S: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/default/300x300.jpg + XS: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/default/128x128.jpg + '400': + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Bad request + '401': + description: Unauthorized. Most likely your access token has expired. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Invalid credentials + '404': + description: Collection was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Collection was not found + '429': + description: Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Rate limit exceeded + security: + - UserAuth: [] + - EpidemicSoundConnectAuth: [] + /v0/tracks: + get: + tags: + - Tracks + summary: List tracks based on mood, genre or BPM + description: >- + The tracks endpoint allows you to list all tracks based on a specified + mood, genre or BPM. + operationId: GET_Tracks + parameters: + - $ref: '#/components/parameters/genre' + - $ref: '#/components/parameters/mood' + - $ref: '#/components/parameters/bpmMin' + - $ref: '#/components/parameters/bpmMax' + - $ref: '#/components/parameters/limit' + - $ref: '#/components/parameters/offset' + responses: + '200': + description: Tracks response + content: + application/json: + schema: + $ref: '#/components/schemas/TracksResponse' + example: + 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: + default: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/300x300.jpg + L: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/1050x1050.jpg + M: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/600x600.jpg + S: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/300x300.jpg + XS: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/128x128.jpg + waveformUrl: https://pdn.epidemicsound.com/waveforms/1600/394079.json + 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: + default: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/300x300.jpg + L: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/1050x1050.jpg + M: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/600x600.jpg + S: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/300x300.jpg + XS: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/128x128.jpg + waveformUrl: https://pdn.epidemicsound.com/waveforms/1600/394079.json + 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 + '400': + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Bad request + '401': + description: Unauthorized. Most likely your access token has expired. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Invalid credentials + '429': + description: Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Rate limit exceeded + security: + - UserAuth: [] + - EpidemicSoundConnectAuth: [] + /v0/tracks/search: + get: + tags: + - Browse & search + summary: Search for tracks + description: >- + 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. + operationId: GET_Tracks_Search + parameters: + - $ref: '#/components/parameters/offset' + - $ref: '#/components/parameters/limit' + - $ref: '#/components/parameters/term' + - $ref: '#/components/parameters/genre' + - $ref: '#/components/parameters/mood' + - name: sort + in: query + description: Sort for search + required: false + schema: + type: string + enum: + - Relevance + - Date + - Title + default: Relevance + - name: order + in: query + description: Order + required: false + schema: + type: string + enum: + - Asc + - Desc + default: Asc + responses: + '200': + description: Tracks response + content: + application/json: + schema: + $ref: '#/components/schemas/TracksResponse' + example: + 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: + default: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/300x300.jpg + L: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/1050x1050.jpg + M: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/600x600.jpg + S: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/300x300.jpg + XS: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/128x128.jpg + waveformUrl: https://pdn.epidemicsound.com/waveforms/1600/394079.json + 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: + default: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/300x300.jpg + L: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/1050x1050.jpg + M: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/600x600.jpg + S: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/300x300.jpg + XS: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/128x128.jpg + waveformUrl: https://pdn.epidemicsound.com/waveforms/1600/394079.json + hasVocals: true + added: '2020-10-10' + isExplicit: false + isPreviewOnly: true + pagination: + page: 2 + limit: 25 + offset: 25 + links: + next: /v0/tracks/search?limit=25&offset=50 + prev: /v0/tracks/search?limit=25&offset=0 + aggregations: + moods: + - id: energetic + name: Energetic + count: 1 + genres: + - id: rock + name: Rock + count: 1 + '400': + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Bad request + '401': + description: Unauthorized. Most likely your access token has expired. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Invalid credentials + '403': + description: >- + Forbidden. Only available for ES Connect tokens or User tokens when + the app allows to preview tracks. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Forbidden + '429': + description: Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Rate limit exceeded + '503': + description: Service unavailable + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Service unavailable + security: + - UserAuth: [] + - EpidemicSoundConnectAuth: [] + /v0/tracks/search/suggestions: + get: + tags: + - Browse & search + summary: Search tracks suggestions + description: >- + The search suggestions endpoint allows your users to get autocomplete + suggestions for Epidemic Sound music + operationId: GET_Tracks_Search_suggestions + parameters: + - $ref: '#/components/parameters/term' + responses: + '200': + description: Tracks Search Suggestions response + content: + application/json: + schema: + $ref: '#/components/schemas/SearchSuggestionsResponse' + example: + suggestions: + - value: rock + type: TEXT + - value: rocker + type: TEXT + - value: rock n roll + type: TEXT + '400': + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Bad request + '401': + description: Unauthorized. Most likely your access token has expired. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Invalid credentials + '403': + description: >- + Forbidden. Only available for ES Connect tokens or User tokens when + the app allows to preview tracks. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Forbidden + '429': + description: Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Rate limit exceeded + '503': + description: Service unavailable + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Service unavailable + security: + - UserAuth: [] + - EpidemicSoundConnectAuth: [] + /v0/tracks/parameters: + get: + tags: + - Tracks + summary: List track parameters + description: Get a list of possible track query parameters + operationId: GET_Track_Parameters + responses: + '200': + description: Track parameters response + content: + application/json: + schema: + $ref: '#/components/schemas/TrackParametersResponse' + example: + 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 + '401': + description: Unauthorized. Most likely your access token has expired. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Invalid credentials + '429': + description: Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Rate limit exceeded + security: + - UserAuth: [] + - EpidemicSoundConnectAuth: [] + /v0/moods: + get: + tags: + - Browse & search + summary: List moods + description: >- + 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. + operationId: GET_All_Moods + parameters: + - $ref: '#/components/parameters/sort' + - $ref: '#/components/parameters/order' + - $ref: '#/components/parameters/type' + - name: limit + in: query + description: >- + Max number of entries returned in the response, default 20 and max + 20 + required: false + schema: + type: integer + format: int32 + - $ref: '#/components/parameters/offset' + responses: + '200': + description: Track moods response + content: + application/json: + schema: + $ref: '#/components/schemas/MoodsPaginatedResponseWithImages' + example: + moods: + - id: energetic + name: Epic + images: + default: >- + https://images.ctfassets.net/ojtnytzl1djm/3IWOMuMQtqXI01euQ43r6d/19761430ed16d9d35b94b71cb4693c80/Epic.jpg?w=300&h=300&fit=fill&q=90&fm=jpg + L: >- + https://images.ctfassets.net/ojtnytzl1djm/3IWOMuMQtqXI01euQ43r6d/19761430ed16d9d35b94b71cb4693c80/Epic.jpg?w=1050&h=1050&fit=fill&q=90&fm=jpg + M: >- + https://images.ctfassets.net/ojtnytzl1djm/3IWOMuMQtqXI01euQ43r6d/19761430ed16d9d35b94b71cb4693c80/Epic.jpg?w=600&h=600&fit=fill&q=90&fm=jpg + S: >- + https://images.ctfassets.net/ojtnytzl1djm/3IWOMuMQtqXI01euQ43r6d/19761430ed16d9d35b94b71cb4693c80/Epic.jpg?w=300&h=300&fit=fill&q=90&fm=jpg + XS: >- + https://images.ctfassets.net/ojtnytzl1djm/3IWOMuMQtqXI01euQ43r6d/19761430ed16d9d35b94b71cb4693c80/Epic.jpg?w=128&h=128&fit=fill&q=90&fm=jpg + - id: happy + name: Happy + images: + default: >- + https://images.ctfassets.net/ojtnytzl1djm/2u0eIu3GfevvONKEVc0NEi/f0db82add464ad37ec90406c8ab7cab1/Happy.png?w=300&h=300&fit=fill&q=90&fm=jpg + L: >- + https://images.ctfassets.net/ojtnytzl1djm/2u0eIu3GfevvONKEVc0NEi/f0db82add464ad37ec90406c8ab7cab1/Happy.png?w=1050&h=1050&fit=fill&q=90&fm=jpg + M: >- + https://images.ctfassets.net/ojtnytzl1djm/2u0eIu3GfevvONKEVc0NEi/f0db82add464ad37ec90406c8ab7cab1/Happy.png?w=600&h=600&fit=fill&q=90&fm=jpg + S: >- + https://images.ctfassets.net/ojtnytzl1djm/2u0eIu3GfevvONKEVc0NEi/f0db82add464ad37ec90406c8ab7cab1/Happy.png?w=300&h=300&fit=fill&q=90&fm=jpg + XS: >- + https://images.ctfassets.net/ojtnytzl1djm/2u0eIu3GfevvONKEVc0NEi/f0db82add464ad37ec90406c8ab7cab1/Happy.png?w=128&h=128&fit=fill&q=90&fm=jpg + pagination: + page: 1 + limit: 20 + offset: 0 + links: {} + '401': + description: Unauthorized. Most likely your access token has expired. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Invalid credentials + '429': + description: Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Rate limit exceeded + security: + - UserAuth: [] + - EpidemicSoundConnectAuth: [] + /v0/moods/{moodId}: + get: + tags: + - Browse & search + summary: Mood by ID + description: Get mood details + operationId: GET_Mood_details + parameters: + - $ref: '#/components/parameters/moodId' + - $ref: '#/components/parameters/expand' + - $ref: '#/components/parameters/limit' + - $ref: '#/components/parameters/offset' + responses: + '200': + description: Track mood response + content: + application/json: + schema: + $ref: '#/components/schemas/MoodResponseWithImages' + example: + id: happy + name: Happy + images: + default: >- + https://images.ctfassets.net/ojtnytzl1djm/2u0eIu3GfevvONKEVc0NEi/f0db82add464ad37ec90406c8ab7cab1/Happy.png?w=300&h=300&fit=fill&q=90&fm=jpg + L: >- + https://images.ctfassets.net/ojtnytzl1djm/2u0eIu3GfevvONKEVc0NEi/f0db82add464ad37ec90406c8ab7cab1/Happy.png?w=1050&h=1050&fit=fill&q=90&fm=jpg + M: >- + https://images.ctfassets.net/ojtnytzl1djm/2u0eIu3GfevvONKEVc0NEi/f0db82add464ad37ec90406c8ab7cab1/Happy.png?w=600&h=600&fit=fill&q=90&fm=jpg + S: >- + https://images.ctfassets.net/ojtnytzl1djm/2u0eIu3GfevvONKEVc0NEi/f0db82add464ad37ec90406c8ab7cab1/Happy.png?w=300&h=300&fit=fill&q=90&fm=jpg + XS: >- + https://images.ctfassets.net/ojtnytzl1djm/2u0eIu3GfevvONKEVc0NEi/f0db82add464ad37ec90406c8ab7cab1/Happy.png?w=128&h=128&fit=fill&q=90&fm=jpg + '401': + description: Unauthorized. Most likely your access token has expired. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Invalid credentials + '404': + description: Mood was not found + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Mood was not found + '429': + description: Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Rate limit exceeded + security: + - UserAuth: [] + - EpidemicSoundConnectAuth: [] + /v0/genres: + get: + tags: + - Browse & search + summary: List genres + description: >- + 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. + operationId: GET_All_Genres + parameters: + - $ref: '#/components/parameters/sort' + - $ref: '#/components/parameters/order' + - $ref: '#/components/parameters/type' + - name: limit + in: query + description: >- + Max number of entries returned in the response, default 20 and max + 20 + required: false + schema: + type: integer + format: int32 + - $ref: '#/components/parameters/offset' + responses: + '200': + description: Track genres response + content: + application/json: + schema: + $ref: '#/components/schemas/GenresWithImagesPaginatedResponse' + example: + genres: + - id: beats + name: Beats + images: + default: >- + https://images.ctfassets.net/ojtnytzl1djm/4Mm4kJ9nwasLwZpQ54472a/90f35901413025d5a627fa132f6c2b56/Beats.jpg?w=300&h=300&fit=fill&q=90&fm=jpg + L: >- + https://images.ctfassets.net/ojtnytzl1djm/4Mm4kJ9nwasLwZpQ54472a/90f35901413025d5a627fa132f6c2b56/Beats.jpg?w=1050&h=1050&fit=fill&q=90&fm=jpg + M: >- + https://images.ctfassets.net/ojtnytzl1djm/4Mm4kJ9nwasLwZpQ54472a/90f35901413025d5a627fa132f6c2b56/Beats.jpg?w=600&h=600&fit=fill&q=90&fm=jpg + S: >- + https://images.ctfassets.net/ojtnytzl1djm/4Mm4kJ9nwasLwZpQ54472a/90f35901413025d5a627fa132f6c2b56/Beats.jpg?w=300&h=300&fit=fill&q=90&fm=jpg + XS: >- + https://images.ctfassets.net/ojtnytzl1djm/4Mm4kJ9nwasLwZpQ54472a/90f35901413025d5a627fa132f6c2b56/Beats.jpg?w=128&h=128&fit=fill&q=90&fm=jpg + pagination: + page: 1 + limit: 20 + offset: 0 + links: {} + '401': + description: Unauthorized. Most likely your access token has expired. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Invalid credentials + '429': + description: Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Rate limit exceeded + security: + - UserAuth: [] + - EpidemicSoundConnectAuth: [] + /v0/genres/{genreId}: + get: + tags: + - Browse & search + summary: Genre details + description: >- + This endpoint gives you the parent and child relationships of a specific + genre as well as all tracks that belong to it. + operationId: GET_Genre_details + parameters: + - $ref: '#/components/parameters/genreId' + - $ref: '#/components/parameters/expand' + - $ref: '#/components/parameters/limit' + - $ref: '#/components/parameters/offset' + responses: + '200': + description: Track genre response + content: + application/json: + schema: + $ref: '#/components/schemas/GenreResponseWithChildren' + example: + 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: + default: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/300x300.jpg + L: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/1050x1050.jpg + M: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/600x600.jpg + S: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/300x300.jpg + XS: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/128x128.jpg + waveformUrl: https://pdn.epidemicsound.com/waveforms/1600/394079.json + 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 + '401': + description: Unauthorized. Most likely your access token has expired. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Invalid credentials + '404': + description: Genre was not found + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Genre was not found + '429': + description: Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Rate limit exceeded + security: + - UserAuth: [] + - EpidemicSoundConnectAuth: [] + /v0/tracks/{trackId}/download: + get: + tags: + - Tracks + summary: Download track + description: >- + 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). + operationId: GET_Download + parameters: + - $ref: '#/components/parameters/trackId' + - $ref: '#/components/parameters/format' + - $ref: '#/components/parameters/quality' + responses: + '200': + description: Information about download url + content: + application/json: + schema: + $ref: '#/components/schemas/DownloadResponse' + example: + url: >- + https://pdn.epidemicsound.com/ES_ITUNES/Happy_Song/ES_Happy_Song.mp3 + expires: '2022-12-22T11:01:48Z' + '400': + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Bad request + '401': + description: Unauthorized. Most likely your access token has expired. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Invalid credentials + '403': + description: User does not have access to download the track. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: User does not have access to download the track + '404': + description: Track was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Track was not found + '429': + description: Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Rate limit exceeded + security: + - UserAuth: [] + - EpidemicSoundConnectAuth: [] + /v0/tracks/{trackId}/beats: + get: + tags: + - Tracks + summary: Beats + description: " 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.\n\n 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.\n\n The response includes two types of metadata: `time` and `value`.\_\n\n `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).\n\n Examples:\n\n 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\n\n However, a waltz has three beats in a bar, and the data would look something like: 1-2-3, 1-2-3\n\n Usage Scenarios:\n\n* Automatically cut a video in sync with the beat\n\n* Adding snap markers aligned with beat timestamps in the UI. " + operationId: GET_Track_Beats + parameters: + - $ref: '#/components/parameters/trackId' + responses: + '200': + description: Beats response + content: + application/json: + schema: + $ref: '#/components/schemas/TrackBeatsResponse' + example: + beats: + - time: 0 + value: '1.0' + - time: 0.62 + value: '2.0' + - time: 1.2 + value: '3.0' + - time: 1.8 + value: '4.0' + '400': + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Bad request + '401': + description: Unauthorized. Most likely your access token has expired. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Invalid credentials + '403': + description: User does not have access to download the track. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: User does not have access to download the track + '404': + description: Track was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Track was not found + '429': + description: Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Rate limit exceeded + security: + - UserAuth: [] + - EpidemicSoundConnectAuth: [] + /v0/tracks/{trackId}/hls: + get: + tags: + - Tracks + summary: Preview track using cookies + description: >- + 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. + operationId: GET_HLS_Download_Data + parameters: + - $ref: '#/components/parameters/trackId' + responses: + '200': + description: HLS download details for the track + content: + application/json: + schema: + $ref: '#/components/schemas/HLSDownloadResponse' + example: + url: >- + https://hls-storage.epidemicsite.com/hls/v1/q4MImKW47D/daefecd205c01496b42ae6950c446c6e/master.m3u8 + 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' + '400': + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Bad request + '401': + description: Unauthorized. Most likely your access token has expired. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Invalid credentials + '404': + description: Track was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Track was not found + '429': + description: Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Rate limit exceeded + security: + - UserAuth: [] + - EpidemicSoundConnectAuth: [] + /v0/tracks/{trackId}/similar: + get: + tags: + - Tracks + summary: Similar tracks + description: >- + 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. + operationId: GET_Similar_tracks + parameters: + - $ref: '#/components/parameters/trackId' + - $ref: '#/components/parameters/offset' + - $ref: '#/components/parameters/limit' + responses: + '200': + description: Paginated list of similar tracks + content: + application/json: + schema: + $ref: '#/components/schemas/TracksResponse' + example: + 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: + default: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/300x300.jpg + L: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/1050x1050.jpg + M: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/600x600.jpg + S: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/300x300.jpg + XS: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/128x128.jpg + waveformUrl: https://pdn.epidemicsound.com/waveforms/1600/394079.json + 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: + default: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/300x300.jpg + L: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/1050x1050.jpg + M: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/600x600.jpg + S: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/300x300.jpg + XS: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/128x128.jpg + waveformUrl: https://pdn.epidemicsound.com/waveforms/1600/394079.json + 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 + '400': + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Bad request + '401': + description: Unauthorized. Most likely your access token has expired. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Invalid credentials + '404': + description: Track was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Track was not found + '429': + description: Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Rate limit exceeded + security: + - UserAuth: [] + - EpidemicSoundConnectAuth: [] + /v0/tracks/similar-sections: + get: + tags: + - Tracks + summary: Similar track segment based on audio file + description: >- + Returns a list of track sections that are matched to the provided audio + file id. + operationId: GET_Similar_Audio_Match_Section_tracks + parameters: + - name: audioUploadId + in: query + description: Reference to the uploaded audio file + required: true + schema: + type: string + format: uuid + - name: start + in: query + description: Start of the section in milliseconds + required: true + schema: + type: integer + format: int32 + - name: end + in: query + description: End of the section in milliseconds + required: true + schema: + type: integer + format: int32 + - $ref: '#/components/parameters/offset' + - $ref: '#/components/parameters/limit' + responses: + '200': + description: Paginated list of similar tracks + content: + application/json: + schema: + $ref: '#/components/schemas/TrackSectionPaginatedResponse' + example: + 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: + default: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/300x300.jpg + L: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/1050x1050.jpg + M: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/600x600.jpg + S: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/300x300.jpg + XS: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/128x128.jpg + waveformUrl: https://pdn.epidemicsound.com/waveforms/1600/394079.json + 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=1ddc0dbc-a65b-4fdb-8f07-5bcda987abb0&limit=20&offset=80&start=0&end=10000 + prev: >- + /v0/tracks/similar-sections?audioUploadId=63abbf39-4197-42c7-bf4f-66024096cd25&limit=20&offset=40&start=0&end=10000 + '400': + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Bad request + '401': + description: Unauthorized. Most likely your access token has expired. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Invalid credentials + '404': + description: Track was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Track was not found + '429': + description: Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Rate limit exceeded + security: + - UserAuth: [] + - EpidemicSoundConnectAuth: [] + /v0/tracks/{trackId}/similar-sections: + get: + tags: + - Tracks + summary: Similar track segment based on trackID + description: >- + 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: + + * Video Editing Templates: Replace default tracks in video templates with segments that fit better. + * Quick Swaps: Swap out a segment of music in a video where the existing track doesn't quite match. + * Creative Iteration: Easily experiment with different music segments to enhance your video's impact. + operationId: GET_Similar_Section_tracks + parameters: + - $ref: '#/components/parameters/trackId' + - name: start + in: query + description: Start of the section in milliseconds + required: true + schema: + type: integer + format: int32 + - name: end + in: query + description: End of the section in milliseconds + required: true + schema: + type: integer + format: int32 + - $ref: '#/components/parameters/offset' + - $ref: '#/components/parameters/limit' + responses: + '200': + description: Paginated list of similar tracks + content: + application/json: + schema: + $ref: '#/components/schemas/TrackSectionPaginatedResponse' + example: + 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: + default: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/300x300.jpg + L: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/1050x1050.jpg + M: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/600x600.jpg + S: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/300x300.jpg + XS: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/128x128.jpg + waveformUrl: https://pdn.epidemicsound.com/waveforms/1600/394079.json + 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 + '400': + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Bad request + '401': + description: Unauthorized. Most likely your access token has expired. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Invalid credentials + '404': + description: Track was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Track was not found + '429': + description: Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Rate limit exceeded + security: + - UserAuth: [] + - EpidemicSoundConnectAuth: [] + /v0/tracks/{trackId}/stream: + get: + tags: + - Tracks + summary: Preview track + description: >- + 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. + operationId: GET_Stream + parameters: + - $ref: '#/components/parameters/trackId' + responses: + '200': + description: Information about the stream url + content: + application/json: + schema: + $ref: '#/components/schemas/DownloadResponse' + example: + url: >- + https://hls-storage.epidemicsite.com/hls/v1/q4MImKW47D/daefecd205c01496b42ae6950c446c6e/master.m3u8 + expires: '2022-12-22T11:01:48Z' + '400': + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Bad request + '401': + description: Unauthorized. Most likely your access token has expired. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Invalid credentials + '404': + description: Track was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Track was not found + '429': + description: Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Rate limit exceeded + security: + - UserAuth: [] + - EpidemicSoundConnectAuth: [] + /v0/tracks/{trackId}/highlights: + get: + tags: + - Tracks + summary: Recommend section of a track + description: >- + Powered by our 2 billion daily streams on YouTube, the highlights + endpoint uses machine learning to recommend the best time section. + + + You can use highlights to start playing the track from the right + millisecond, or recommend the right part of the track for shorter + content. + + + The highlights 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. + operationId: GET_Highlights_Details + parameters: + - $ref: '#/components/parameters/trackId' + - $ref: '#/components/parameters/duration' + responses: + '200': + description: >- + List of highlighted sections for the track. The times are given in + milliseconds. If there is no available highlight, a fallback to the + first section of the track is returned. + content: + application/json: + schema: + $ref: '#/components/schemas/HighlightsResponse' + example: + highlights: + - from: 9000 + to: 39000 + duration: 30 + '400': + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Bad request + '401': + description: Unauthorized. Most likely your access token has expired. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Invalid credentials + '404': + description: Track was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Track was not found + '429': + description: Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Rate limit exceeded + security: + - UserAuth: [] + - EpidemicSoundConnectAuth: [] + /v0/uploads/audio/{checksum}: + get: + tags: + - Assets + summary: Get audio asset by the checksum + description: >- + Will return the audio id of an audio file uploaded by the partner, + matched by checksum. Should be used to avoid duplicate uploads + operationId: GET_Partner_Audio_By_Checksum + parameters: + - $ref: '#/components/parameters/checksum' + responses: + '200': + description: Partner audio response + content: + application/json: + schema: + $ref: '#/components/schemas/PartnerAudioResponse' + example: + audioUploadId: f064a9f3-8bc7-4073-93f1-781e7a7c134f + length: 10 + expires: '2024-04-27T23:28:40.013476725Z' + '400': + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Bad request + '401': + description: Unauthorized. Most likely your access token has expired. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Invalid credentials + '404': + description: Audio file was not found + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Audio was not found + '429': + description: Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Rate limit exceeded + security: + - UserAuth: [] + - EpidemicSoundConnectAuth: [] + - PartnerAuth: [] + /v0/uploads/audio/{audioIdOrChecksum}: + delete: + tags: + - Assets + summary: Delete a single audio file + description: Delete a single audio file + operationId: DELETE_Partner_audio + parameters: + - $ref: '#/components/parameters/audioIdOrChecksum' + responses: + '200': + description: List of deleted audio ids + content: + application/json: + schema: + $ref: '#/components/schemas/PartnerAudioDeleteResponse' + example: + audioFilesRemoved: + - 3163ce29-28d5-4d39-83ae-beb9cc0f46cf + '202': + description: List of audio files marked for deletion + content: + application/json: + schema: + $ref: '#/components/schemas/PartnerAudioDeleteResponse' + example: + audioFilesRemoved: + - 6847b481-9439-462f-bb77-e6cd5efeb92c + '401': + description: Unauthorized. Most likely your access token has expired. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Invalid credentials + '429': + description: Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Rate limit exceeded + security: + - PartnerAuth: [] + /v0/uploads/audio: + post: + tags: + - Assets + summary: Uploads an audio file + description: Uploads an audio file + operationId: POST_Upload_Partner_Audio + requestBody: + content: + multipart/form-data: + schema: + type: object + properties: + file: + type: string + format: binary + responses: + '200': + description: >- + Returns the id of the uploaded image, as well as the expiration date + for the image. + content: + application/json: + schema: + $ref: '#/components/schemas/UploadUserImageResponse' + example: + imageId: 23378a80-6c55-4847-9297-fcf09f483bf5 + expirationDate: '2024-03-29T23:28:40.016558805Z' + '400': + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Bad request + '401': + description: Unauthorized. Most likely your access token has expired. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Invalid credentials + '429': + description: Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Rate limit exceeded + security: + - PartnerAuth: [] + /v0/uploads/images/{imageId}: + delete: + tags: + - Assets + summary: Delete uploaded image + description: Deletes an image uploaded by the user + operationId: DELETE_User_Image + parameters: + - $ref: '#/components/parameters/imageId' + responses: + '204': + description: Image was deleted + '400': + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Bad request + '401': + description: Unauthorized. Most likely your access token has expired. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Invalid credentials + '404': + description: Image was not found + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Image was not found + '429': + description: Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Rate limit exceeded + security: + - UserAuth: [] + - EpidemicSoundConnectAuth: [] + /v0/uploads/images: + post: + tags: + - Assets + summary: Upload image for recommendation + description: >- + Uploads an image, currently only jpeg format is supported. File limit is + 2Mb. + operationId: POST_Upload_User_Image + requestBody: + content: + multipart/form-data: + schema: + type: object + properties: + file: + type: string + format: binary + responses: + '200': + description: >- + Contains id to be used for endpoints requiring an image id, as well + as the expiration date for the image. + content: + application/json: + schema: + $ref: '#/components/schemas/UploadUserImageResponse' + example: + imageId: ef7ec55a-2b56-469b-8d83-b97b35ea5e25 + expirationDate: '2024-03-29T23:28:40.019058805Z' + '400': + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Bad request + '401': + description: Unauthorized. Most likely your access token has expired. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Invalid credentials + '429': + description: Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Rate limit exceeded + security: + - UserAuth: [] + - EpidemicSoundConnectAuth: [] + delete: + tags: + - Assets + summary: Delete all the uploaded images by the user + description: Deletes all images uploaded by the user + operationId: DELETE_User_Images + responses: + '202': + description: Images were marked for deletion + '401': + description: Unauthorized. Most likely your access token has expired. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Invalid credentials + '429': + description: Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Rate limit exceeded + security: + - UserAuth: [] + - EpidemicSoundConnectAuth: [] + /v0/tracks/matching-image/{imageId}: + get: + tags: + - Tracks + summary: Get tracks matching an image + description: Gets tracks that match an image uploaded by the user + operationId: GET_Tracks_Matching_Image + parameters: + - $ref: '#/components/parameters/imageId' + - $ref: '#/components/parameters/offset' + - $ref: '#/components/parameters/limit' + - $ref: '#/components/parameters/genre' + - $ref: '#/components/parameters/mood' + responses: + '200': + description: Paginated list of tracks + content: + application/json: + schema: + $ref: '#/components/schemas/TracksResponse' + example: + 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: + default: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/300x300.jpg + L: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/1050x1050.jpg + M: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/600x600.jpg + S: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/300x300.jpg + XS: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/128x128.jpg + waveformUrl: https://pdn.epidemicsound.com/waveforms/1600/394079.json + 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: + default: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/300x300.jpg + L: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/1050x1050.jpg + M: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/600x600.jpg + S: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/300x300.jpg + XS: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/128x128.jpg + waveformUrl: https://pdn.epidemicsound.com/waveforms/1600/394079.json + hasVocals: true + added: '2020-10-10' + isExplicit: false + isPreviewOnly: true + pagination: + page: 2 + limit: 25 + offset: 25 + links: + next: /v0/tracks/search?limit=25&offset=50 + prev: /v0/tracks/search?limit=25&offset=0 + aggregations: + moods: + - id: energetic + name: Energetic + count: 1 + genres: + - id: rock + name: Rock + count: 1 + '400': + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Bad request + '401': + description: Unauthorized. Most likely your access token has expired. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Invalid credentials + '404': + description: Image was not found + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Image was not found + '429': + description: Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Rate limit exceeded + security: + - UserAuth: [] + - EpidemicSoundConnectAuth: [] + /v0/sound-effects/categories: + get: + tags: + - Sound effects + summary: Get a list of all sound effects categories + description: >- + 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. + operationId: GET_Sound_Effect_Categories + parameters: + - name: type + in: query + description: Category type + required: false + schema: + type: string + enum: + - all + - featured + default: all + - name: sort + in: query + description: Sorting options + required: false + schema: + type: string + enum: + - title + - relevance + default: title + - $ref: '#/components/parameters/offset' + - $ref: '#/components/parameters/limit' + responses: + '200': + description: >- + Sound effects category list with related parent category. You can + see the parent-child relationship in the response. + content: + application/json: + schema: + $ref: '#/components/schemas/SoundEffectCategoriesResponse' + example: + categories: + - id: 7533dc15-855e-476a-bbb6-8d8081f18b1b + name: Applause + numTracks: 10 + images: + default: https://image.url?w=300&h=300&fit=fill&q=90&fm=jpg + L: https://image.url?w=1050&h=1050&fit=fill&q=90&fm=jpg + M: https://image.url?w=600&h=600&fit=fill&q=90&fm=jpg + S: https://image.url?w=300&h=300&fit=fill&q=90&fm=jpg + XS: https://image.url?w=128&h=128&fit=fill&q=90&fm=jpg + parent: + id: 117d5210-2b78-4bda-9013-419d7f710ddb + name: Crowds + pagination: + page: 2 + limit: 10 + offset: 10 + links: + next: /v0/sound-effects/categories?limit=10&offset=20 + prev: /v0/sound-effects/categories?limit=10&offset=0 + '400': + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Bad request + '401': + description: Unauthorized. Most likely your access token has expired. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Invalid credentials + '429': + description: Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Rate limit exceeded + security: + - UserAuth: [] + - EpidemicSoundConnectAuth: [] + /v0/sound-effects/categories/{categoryId}: + get: + tags: + - Sound effects + summary: Get a sound effects category by id + description: >- + 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. + operationId: GET_Sound_Effect_Category + parameters: + - $ref: '#/components/parameters/categoryId' + responses: + '200': + description: Category with related parent and children categories + content: + application/json: + schema: + $ref: '#/components/schemas/SoundEffectCategoryWithRelativesResponse' + example: + id: 3b7bd645-767a-4a95-a97e-35b5549248de + name: Applause + numTracks: 10 + images: + default: https://image.url?w=300&h=300&fit=fill&q=90&fm=jpg + L: https://image.url?w=1050&h=1050&fit=fill&q=90&fm=jpg + M: https://image.url?w=600&h=600&fit=fill&q=90&fm=jpg + S: https://image.url?w=300&h=300&fit=fill&q=90&fm=jpg + XS: https://image.url?w=128&h=128&fit=fill&q=90&fm=jpg + parent: + id: 417f3061-459b-47c3-b5d7-6838e89a9d50 + name: Crowds + children: + - id: 95c42ecf-ab8b-40be-ace1-b50c0d98beaf + name: Claps + '400': + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Bad request + '401': + description: Unauthorized. Most likely your access token has expired. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Invalid credentials + '404': + description: Category was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Category was not found + '429': + description: Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Rate limit exceeded + security: + - UserAuth: [] + - EpidemicSoundConnectAuth: [] + /v0/sound-effects/categories/{categoryId}/tracks: + get: + tags: + - Sound effects + summary: Get sound effects by category + description: >- + Use the sound effects details endpoint to display all sound effects for + a given category. + operationId: GET_Sound_Effect_Category_Tracks + parameters: + - $ref: '#/components/parameters/categoryId' + - $ref: '#/components/parameters/offset' + - $ref: '#/components/parameters/limit' + - name: sort + in: query + description: Sort + required: false + schema: + type: string + enum: + - title + - newest + - length + default: newest + - name: order + in: query + description: Order + required: false + schema: + type: string + enum: + - asc + - desc + default: asc + responses: + '200': + description: List of sound effects for a given category + content: + application/json: + schema: + $ref: '#/components/schemas/PaginatedSoundEffectsResponse' + example: + soundEffects: + - id: 0a1733df-00da-442e-84fd-3a32736c3a5d + title: Applause + added: '2024-03-28T23:28:40.030876075Z' + length: 10 + images: + default: https://image.url?w=300&h=300&fit=fill&q=90&fm=jpg + L: https://image.url?w=1050&h=1050&fit=fill&q=90&fm=jpg + M: https://image.url?w=600&h=600&fit=fill&q=90&fm=jpg + S: https://image.url?w=300&h=300&fit=fill&q=90&fm=jpg + XS: https://image.url?w=128&h=128&fit=fill&q=90&fm=jpg + categories: [] + pagination: + page: 2 + limit: 10 + offset: 10 + links: + next: /v0/sound-effects/categories?limit=10&offset=20 + prev: /v0/sound-effects/categories?limit=10&offset=0 + '400': + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Bad request + '401': + description: Unauthorized. Most likely your access token has expired. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Invalid credentials + '404': + description: Category was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Category was not found + '429': + description: Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Rate limit exceeded + security: + - UserAuth: [] + - EpidemicSoundConnectAuth: [] + /v0/sound-effects/{trackId}/download: + get: + tags: + - Sound effects + summary: Download sound effect + description: >- + 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. + operationId: GET_Sound_Effect_Download + parameters: + - $ref: '#/components/parameters/trackId' + - $ref: '#/components/parameters/format' + - $ref: '#/components/parameters/quality' + responses: + '200': + description: Information about download url + content: + application/json: + schema: + $ref: '#/components/schemas/DownloadResponse' + example: + url: >- + https://pdn.epidemicsound.com/ES_ITUNES/Happy_Song/ES_Happy_Song.mp3 + expires: '2022-12-22T11:01:48Z' + '400': + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Bad request + '401': + description: Unauthorized. Most likely your access token has expired. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Invalid credentials + '403': + description: User does not have access to download the track. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: User does not have access to download the track + '404': + description: Track was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Track was not found + '429': + description: Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Rate limit exceeded + security: + - UserAuth: [] + - EpidemicSoundConnectAuth: [] + /v0/sound-effects/search: + get: + tags: + - Sound effects + summary: Search sound effects + description: > + Use the sound effects search endpoint to allow users to search within + the sound effects library. + operationId: GET_Sound_Effect_Search + parameters: + - $ref: '#/components/parameters/offset' + - $ref: '#/components/parameters/limit' + - required: true + $ref: '#/components/parameters/term' + - name: sort + in: query + description: Sort for search + required: false + schema: + type: string + enum: + - best-match + - newest + - popular + - length + - title + default: best-match + - name: order + in: query + description: Order + required: false + schema: + type: string + enum: + - asc + - desc + default: asc + responses: + '200': + description: List of sound effect search results + content: + application/json: + schema: + $ref: '#/components/schemas/PaginatedSoundEffectsResponse' + example: + soundEffects: + - id: 021438f7-8c68-4649-8296-d475abdca6a4 + title: Applause + added: '2024-03-28T23:28:40.034835865Z' + length: 10 + images: + default: https://image.url?w=300&h=300&fit=fill&q=90&fm=jpg + L: https://image.url?w=1050&h=1050&fit=fill&q=90&fm=jpg + M: https://image.url?w=600&h=600&fit=fill&q=90&fm=jpg + S: https://image.url?w=300&h=300&fit=fill&q=90&fm=jpg + XS: https://image.url?w=128&h=128&fit=fill&q=90&fm=jpg + categories: [] + pagination: + page: 2 + limit: 10 + offset: 10 + links: + next: /v0/sound-effects/categories?limit=10&offset=20 + prev: /v0/sound-effects/categories?limit=10&offset=0 + '400': + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Bad request + '401': + description: Unauthorized. Most likely your access token has expired. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Invalid credentials + '429': + description: Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Rate limit exceeded + security: + - UserAuth: [] + - EpidemicSoundConnectAuth: [] + /v0/analytics/report: + post: + tags: + - Reporting + summary: Report events to Epidemic Sound + description: >- + This endpoint should be used when you want to 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. + operationId: POST_Analytics_Report + requestBody: + description: Analytics report + content: + application/json: + schema: + $ref: '#/components/schemas/AnalyticsReportRequest' + example: + events: + - userId: '123' + timestamp: '2024-03-28T23:28:40.035772655Z' + userConnected: false + analyticsEvent: + trackId: '12345' + type: trackPreviewed + - userId: '456' + timestamp: '2024-03-28T23:28:40.035976895Z' + userConnected: true + analyticsEvent: + trackId: '12345' + format: mp3 + quality: normal + type: trackDownloaded + - userId: '456' + timestamp: '2024-03-28T23:28:40.036196785Z' + analyticsEvent: + trackIds: + - '12345' + platform: YOUTUBE + type: tracksExported + responses: + '200': + description: Usage report response + content: + application/json: + schema: + $ref: '#/components/schemas/AnalyticsReportResponse' + example: + batchId: '12345' + eventsCount: 10 + '400': + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Bad request + '401': + description: Unauthorized. Most likely your access token has expired. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Invalid credentials + '429': + description: Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Rate limit exceeded + security: + - PartnerAuth: [] + /v0/usage: + post: + tags: + - Reporting + summary: Report usage + description: >- + 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. + operationId: POST_Use + requestBody: + description: Usage report + content: + application/json: + schema: + $ref: '#/components/schemas/TrackUsageRequest' + example: + eventType: EXPORTED + platform: OTHER + trackIds: + - trackid1 + - trackid2 + other: OptionalValueForWhenNoMatchingPlatformEnum + responses: + '200': + description: Usage report response + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Ok + '400': + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Bad request + '401': + description: Unauthorized. Most likely your access token has expired. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Invalid credentials + '429': + description: Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Rate limit exceeded + security: + - UserAuth: [] + - EpidemicSoundConnectAuth: [] + /v0/partner-token: + post: + tags: + - Authentication + summary: Request a partner token + description: Request a Partner Token + operationId: POST_Partner_Token + requestBody: + description: Token request + content: + application/json: + schema: + $ref: '#/components/schemas/PartnerTokenRequest' + responses: + '201': + description: User access token + content: + application/json: + schema: + $ref: '#/components/schemas/AccessTokenResponse' + example: + accessToken: >- + eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJhdWQiOiJwYXJ0bmVyIiwiaXNzIjoiRXBpZGVtaWMgU291bmQiLCJwYXJ0bmVySWQiOiJlcGlkZW1pY3NvdW5kIiwiZXhwIjoxNjIwMTA4OTg0fQ + '400': + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Bad request + '401': + description: Unauthorized. Most likely your access token has expired. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Invalid credentials + '429': + description: Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Rate limit exceeded + /v0/token: + post: + tags: + - Authentication + summary: Request a user token + description: >- + Request a User Token. This endpoint requires a Partner Token for + authentication. + operationId: POST_User_Token + requestBody: + description: Token request + content: + application/json: + schema: + $ref: '#/components/schemas/UserTokenRequest' + responses: + '201': + description: User access token + content: + application/json: + schema: + $ref: '#/components/schemas/AccessTokenResponse' + example: + accessToken: >- + eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJ1c2VyVGllciI6ImJhc2VfdGllciIsImF1ZCI6ImVuZC11c2VyIiwiaXNzIjoiRXBpZGVtaWMgU291bmQiLCJwYXJ0bmVySWQiOiJlcGlkZW1pY3NvdW5kIiwiZXhwIjoxNjIwMTA5MDkyLCJ1c2VySWQiOiJ1c2VyX2lkIn0 + '400': + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Bad request + '401': + description: Unauthorized. Most likely your access token has expired. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Invalid credentials + '429': + description: Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Rate limit exceeded + security: + - PartnerAuth: [] + /v0/users/me: + get: + tags: + - Users + summary: User details + description: Get user details of the authenticated user. + operationId: GET_End_User_Details + responses: + '200': + description: End user details + content: + application/json: + schema: + $ref: '#/components/schemas/UserInfo' + example: + userId: b7d04a6f-a2fb-4574-88f9-b5c6f842eac2 + esConnect: false + hasActiveSubscription: null + email: null + '400': + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Bad request + '401': + description: Unauthorized. Most likely your access token has expired. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Invalid credentials + '429': + description: Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Rate limit exceeded + security: + - UserAuth: [] + - EpidemicSoundConnectAuth: [] + /v0/users/me/subscription: + get: + tags: + - Users + summary: User subscription details + description: Get subscription details for the authenticated user. + operationId: GET_End_User_Subscription_Details + responses: + '200': + description: End user subscription details + content: + application/json: + schema: + $ref: '#/components/schemas/SubscriptionInfo' + example: + epidemicSound: + hasActiveSubscription: true + subscriptionExpiresAt: '2024-04-27T23:28:40Z' + '400': + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Bad request + '401': + description: Unauthorized. Most likely your access token has expired. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Invalid credentials + '429': + description: Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Rate limit exceeded + security: + - EpidemicSoundConnectAuth: [] + /v0/users/me/liked/tracks: + get: + tags: + - Users + summary: List users’ liked tracks + description: >- + 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. + operationId: GET_Users_Liked_Tracks + parameters: + - name: offset + in: query + description: >- + 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. + required: false + schema: + type: integer + format: int32 + responses: + '200': + description: Liked Tracks response + content: + application/json: + schema: + $ref: '#/components/schemas/TracksResponse' + example: + 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: + default: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/300x300.jpg + L: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/1050x1050.jpg + M: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/600x600.jpg + S: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/300x300.jpg + XS: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/128x128.jpg + waveformUrl: https://pdn.epidemicsound.com/waveforms/1600/394079.json + 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: + default: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/300x300.jpg + L: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/1050x1050.jpg + M: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/600x600.jpg + S: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/300x300.jpg + XS: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/128x128.jpg + waveformUrl: https://pdn.epidemicsound.com/waveforms/1600/394079.json + hasVocals: true + added: '2020-10-10' + isExplicit: false + isPreviewOnly: true + pagination: + page: 2 + limit: 25 + offset: 25 + links: + next: /v0/users/me/liked/tracks?limit=25&offset=50 + prev: /v0/users/me/liked/tracks?limit=25&offset=0 + '400': + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Bad request + '401': + description: Unauthorized. Most likely your access token has expired. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Invalid credentials + '429': + description: Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Rate limit exceeded + security: + - EpidemicSoundConnectAuth: [] + components: + schemas: + TrackResponse: + required: + - added + - bpm + - featuredArtists + - genres + - id + - length + - mainArtists + - moods + - title + - waveformUrl + type: object + properties: + id: + type: string + description: Unique ID of the track + mainArtists: + type: array + description: The main artist that created the track. + items: + type: string + description: The main artist that created the track. + featuredArtists: + type: array + description: Additional artists that contributed to the track. + items: + type: string + description: Additional artists that contributed to the track. + title: + type: string + description: Title of the track + bpm: + type: integer + description: Beats per minute for the track. + format: int32 + length: + type: integer + description: Track length in seconds + format: int32 + moods: + type: array + description: Lists the moods of the track. + items: + $ref: '#/components/schemas/MoodResponse' + genres: + type: array + description: Lists the genres of the track. + items: + $ref: '#/components/schemas/GenreResponse' + images: + $ref: '#/components/schemas/ImagesResponse' + waveformUrl: + type: string + description: Reference to the waveform as a json object. + hasVocals: + type: boolean + description: >- + Set to true if the track has vocals. Set to false for instrumental + tracks. + nullable: true + added: + type: string + description: The date the track was released in the format YYYY-mm-dd. + tierOption: + type: string + nullable: true + enum: + - PAID + - FREE + isExplicit: + type: boolean + nullable: true + isPreviewOnly: + type: boolean + MoodResponse: + required: + - id + - name + type: object + properties: + id: + type: string + description: Unique ID of the mood + name: + type: string + description: Name of the mood + MoodImagesResponse: + type: object + properties: + default: + type: string + nullable: true + L: + type: string + nullable: true + M: + type: string + nullable: true + S: + type: string + nullable: true + XS: + type: string + nullable: true + ParentGenreResponse: + required: + - id + - name + type: object + properties: + id: + type: string + description: Unique ID of the parent genre + name: + type: string + description: Name of the parent genre + GenreResponse: + required: + - id + - name + type: object + properties: + id: + type: string + name: + type: string + parent: + $ref: '#/components/schemas/ParentGenreResponse' + GenreImagesResponse: + type: object + properties: + default: + type: string + L: + type: string + nullable: true + M: + type: string + nullable: true + S: + type: string + nullable: true + XS: + type: string + nullable: true + TrackMoodsResponse: + required: + - moods + type: object + properties: + moods: + type: array + items: + $ref: '#/components/schemas/MoodResponse' + TrackGenresResponse: + required: + - genres + type: object + properties: + genres: + type: array + items: + $ref: '#/components/schemas/GenreResponse' + GenreResponseWithChildren: + required: + - children + - id + - name + type: object + properties: + id: + type: string + name: + type: string + parent: + $ref: '#/components/schemas/ParentGenreResponse' + children: + type: array + items: + $ref: '#/components/schemas/GenreResponse' + images: + $ref: '#/components/schemas/GenreImagesResponse' + tracks: + $ref: '#/components/schemas/TracksResponse' + TrackParametersResponse: + required: + - genres + - moods + type: object + properties: + genres: + type: array + items: + $ref: '#/components/schemas/GenreResponse' + moods: + type: array + items: + $ref: '#/components/schemas/MoodResponse' + MoodsPaginatedResponseWithImages: + required: + - links + - moods + - pagination + type: object + properties: + moods: + type: array + items: + $ref: '#/components/schemas/MoodResponseWithImages' + pagination: + $ref: '#/components/schemas/Pagination' + links: + $ref: '#/components/schemas/PaginationLinks' + MoodResponseWithImages: + required: + - id + - name + type: object + properties: + id: + type: string + name: + type: string + images: + $ref: '#/components/schemas/MoodImagesResponse' + tracks: + $ref: '#/components/schemas/TracksResponse' + GenresWithImagesPaginatedResponse: + required: + - genres + - links + - pagination + type: object + properties: + genres: + type: array + items: + $ref: '#/components/schemas/GenreResponseWithImages' + pagination: + $ref: '#/components/schemas/Pagination' + links: + $ref: '#/components/schemas/PaginationLinks' + GenreResponseWithImages: + required: + - id + - name + type: object + properties: + id: + type: string + name: + type: string + parent: + $ref: '#/components/schemas/ParentGenreResponseWithImages' + images: + $ref: '#/components/schemas/GenreImagesResponse' + ParentGenreResponseWithImages: + required: + - id + - name + type: object + properties: + id: + type: string + name: + type: string + images: + $ref: '#/components/schemas/GenreImagesResponse' + TrackSectionPaginatedResponse: + required: + - links + - pagination + - trackSections + type: object + properties: + trackSections: + type: array + items: + $ref: '#/components/schemas/TrackSectionResponse' + pagination: + $ref: '#/components/schemas/Pagination' + links: + $ref: '#/components/schemas/PaginationLinks' + DownloadResponse: + required: + - expires + - url + type: object + properties: + url: + type: string + expires: + type: string + HLSDownloadResponse: + required: + - cookie + - url + type: object + properties: + url: + type: string + cookie: + $ref: '#/components/schemas/HLSCookieResponse' + HLSCookieResponse: + required: + - domain + - expires + - name + - path + - value + type: object + properties: + name: + type: string + domain: + type: string + path: + type: string + value: + type: string + expires: + type: string + HighlightsResponse: + required: + - highlights + type: object + properties: + highlights: + type: array + items: + $ref: '#/components/schemas/HighlightSectionResponse' + HighlightSectionResponse: + required: + - duration + - from + - to + type: object + properties: + from: + type: integer + format: int32 + to: + type: integer + format: int32 + duration: + type: integer + format: int32 + TracksResponse: + required: + - links + - pagination + - tracks + type: object + properties: + tracks: + type: array + items: + $ref: '#/components/schemas/TrackResponse' + pagination: + $ref: '#/components/schemas/Pagination' + links: + $ref: '#/components/schemas/PaginationLinks' + aggregations: + $ref: '#/components/schemas/TaxonomyAggregations' + SearchSuggestionsResponse: + type: object + properties: + suggestions: + type: array + items: + $ref: '#/components/schemas/Option' + Option: + type: object + properties: + type: + type: string + enum: + - TEXT + Pagination: + required: + - limit + - page + type: object + properties: + page: + type: integer + format: int32 + limit: + type: integer + format: int32 + offset: + type: integer + format: int32 + PaginationLinks: + type: object + properties: + next: + type: string + nullable: true + prev: + type: string + nullable: true + AccessTokenResponse: + required: + - accessToken + type: object + properties: + accessToken: + type: string + CollectionPaginatedResponse: + required: + - id + - images + - links + - name + - pagination + - tracks + type: object + properties: + id: + type: string + format: uuid + name: + type: string + tracks: + type: array + items: + $ref: '#/components/schemas/TrackResponse' + availableTracks: + type: integer + format: int32 + nullable: true + pagination: + $ref: '#/components/schemas/Pagination' + links: + $ref: '#/components/schemas/PaginationLinks' + images: + $ref: '#/components/schemas/CollectionImagesPublicResponse' + CollectionResponse: + required: + - id + - images + - name + - tracks + type: object + properties: + id: + type: string + description: Unique ID of the track. + format: uuid + name: + type: string + description: Name of the collection + tracks: + type: array + items: + $ref: '#/components/schemas/TrackResponse' + availableTracks: + type: integer + description: Number of available tracks based on the partner's tier + format: int32 + nullable: true + images: + $ref: '#/components/schemas/CollectionImagesPublicResponse' + CollectionImagesPublicResponse: + required: + - default + type: object + properties: + default: + type: string + L: + type: string + nullable: true + M: + type: string + nullable: true + S: + type: string + nullable: true + XS: + type: string + nullable: true + CollectionsPaginatedResponse: + required: + - collections + - links + - pagination + type: object + properties: + collections: + type: array + items: + $ref: '#/components/schemas/CollectionResponse' + pagination: + $ref: '#/components/schemas/Pagination' + links: + $ref: '#/components/schemas/PaginationLinks' + ImagesResponse: + type: object + properties: + default: + type: string + nullable: true + L: + type: string + nullable: true + M: + type: string + nullable: true + S: + type: string + nullable: true + XS: + type: string + nullable: true + TrackFormat: + type: string + enum: + - mp3 + PartnerTokenRequest: + required: + - accessKeyId + - accessKeySecret + type: object + properties: + accessKeyId: + type: string + accessKeySecret: + type: string + TrackSectionResponse: + required: + - end + - start + - track + type: object + properties: + track: + $ref: '#/components/schemas/TrackResponse' + start: + type: integer + format: int32 + end: + type: integer + format: int32 + UserTokenRequest: + required: + - userId + type: object + properties: + userId: + type: string + description: End user id. UUID, numeric or matching ^[a-zA-Z0-9_-]+$ + example: 4fbd5793-efcd-4545-b4e9-807c8ed9e2a3 + MessageResponse: + required: + - message + type: object + properties: + message: + type: string + description: Human readable message + errors: + type: array + items: + $ref: '#/components/schemas/Error' + Error: + required: + - key + - messages + type: object + properties: + key: + type: string + description: Error key + messages: + type: array + description: Error messages + items: + type: string + description: Error messages + TrackUsageRequest: + required: + - platform + - trackIds + type: object + properties: + eventType: + type: string + enum: + - EXPORTED + platform: + type: string + enum: + - YOUTUBE + - TWITTER + - TWITCH + - FACEBOOK + - INSTAGRAM + - TIKTOK + - OTHER + - LOCAL + trackIds: + type: array + items: + type: string + other: + type: string + nullable: true + UserInfo: + required: + - esConnect + - userId + type: object + properties: + userId: + type: string + description: >- + is the userId given in the User Token if not ES Connect + authenticated or + + the ES Connect user id if user is authenticated against ES Connect. + esConnect: + type: boolean + description: |- + is false for a not ES Connect authenticated user but + is true for a ES Connect authenticated user. + hasActiveSubscription: + type: boolean + description: |- + is true if the user has an active subscription but + is false if the user has no active subscription. + Returns null if the user is not ES Connect authenticated. + nullable: true + email: + type: string + description: >- + email value will present only for the Epidemic Sound users and will + be null otherwise + nullable: true + SubscriptionInfo: + required: + - epidemicSound + type: object + properties: + epidemicSound: + $ref: '#/components/schemas/SubscriptionInfoDetail' + SubscriptionInfoDetail: + required: + - hasActiveSubscription + - subscriptionExpiresAt + type: object + properties: + hasActiveSubscription: + type: boolean + description: >- + is true if the user has an active subscription and false if the user + has no active subscription. + subscriptionExpiresAt: + type: string + description: >- + if the subscription has been canceled, but is not yet expired, this + will return the expiry datetime. In all + + other cases this will be null. + format: date-time + nullable: true + AnalyticsReportRequest: + required: + - events + type: object + properties: + events: + type: array + items: + $ref: '#/components/schemas/AnalyticsReportEvent' + AnalyticsReportEvent: + type: object + properties: + userId: + type: string + timestamp: + type: string + format: date-time + userConnected: + type: boolean + nullable: true + analyticsEvent: + $ref: '#/components/schemas/AnalyticsEvent' + TrackPreviewedEvent: + type: object + properties: + trackId: + type: string + type: + type: string + enum: + - trackPreviewed + TrackDownloadedEvent: + type: object + properties: + trackId: + type: string + format: + type: string + enum: + - mp3 + - hls + - hls_with_cookie + quality: + type: string + enum: + - normal + - high + type: + type: string + enum: + - trackDownloaded + TracksExportedEvent: + type: object + properties: + trackIds: + type: array + items: + type: string + platform: + type: string + enum: + - YOUTUBE + - TWITTER + - TWITCH + - FACEBOOK + - INSTAGRAM + - TIKTOK + - OTHER + - LOCAL + type: + type: string + enum: + - tracksExported + AnalyticsEvent: + type: object + oneOf: + - $ref: '#/components/schemas/TrackPreviewedEvent' + - $ref: '#/components/schemas/TrackDownloadedEvent' + - $ref: '#/components/schemas/TracksExportedEvent' + AnalyticsReportResponse: + required: + - batchId + - eventsCount + type: object + properties: + batchId: + type: string + eventsCount: + type: integer + format: int32 + UploadUserImageResponse: + required: + - expirationDate + - imageId + type: object + properties: + imageId: + type: string + format: uuid + expirationDate: + type: string + format: date-time + PartnerAudioResponse: + required: + - audioUploadId + - expires + - length + type: object + properties: + audioUploadId: + type: string + format: uuid + length: + type: number + format: double + expires: + type: string + format: date-time + PartnerAudioDeleteResponse: + required: + - audioFilesRemoved + type: object + properties: + audioFilesRemoved: + type: array + items: + type: string + format: uuid + SoundEffectCategoriesResponse: + required: + - categories + - links + - pagination + type: object + properties: + categories: + type: array + items: + $ref: '#/components/schemas/SoundEffectCategoryWithParentResponse' + pagination: + $ref: '#/components/schemas/Pagination' + links: + $ref: '#/components/schemas/PaginationLinks' + SoundEffectCategoryWithParentResponse: + required: + - id + - name + - numTracks + type: object + properties: + id: + type: string + format: uuid + name: + type: string + numTracks: + type: integer + format: int32 + images: + $ref: '#/components/schemas/ImagesResponse' + parent: + $ref: '#/components/schemas/RelatedSoundEffectCategoryResponse' + SoundEffectCategoryWithRelativesResponse: + required: + - id + - name + - numTracks + type: object + properties: + id: + type: string + format: uuid + name: + type: string + numTracks: + type: integer + format: int32 + images: + $ref: '#/components/schemas/ImagesResponse' + parent: + $ref: '#/components/schemas/RelatedSoundEffectCategoryResponse' + children: + type: array + items: + $ref: '#/components/schemas/RelatedSoundEffectCategoryResponse' + RelatedSoundEffectCategoryResponse: + required: + - id + - name + type: object + properties: + id: + type: string + format: uuid + name: + type: string + CategoryResponse: + required: + - id + - name + type: object + properties: + id: + type: string + format: uuid + name: + type: string + SoundEffectResponse: + required: + - added + - categories + - id + - length + - title + type: object + properties: + id: + type: string + title: + type: string + added: + type: string + format: date-time + length: + type: integer + format: int32 + images: + $ref: '#/components/schemas/ImagesResponse' + categories: + type: array + items: + $ref: '#/components/schemas/CategoryResponse' + PaginatedSoundEffectsResponse: + required: + - links + - pagination + - soundEffects + type: object + properties: + soundEffects: + type: array + items: + $ref: '#/components/schemas/SoundEffectResponse' + pagination: + $ref: '#/components/schemas/Pagination' + links: + $ref: '#/components/schemas/PaginationLinks' + TrackBeatsResponse: + type: object + properties: + beats: + type: array + items: + $ref: '#/components/schemas/TrackBeatSegmentResponse' + TrackBeatSegmentResponse: + type: object + properties: + time: + type: number + format: double + value: + type: string + TaxonomyAggregations: + type: object + properties: + moods: + type: array + items: + $ref: '#/components/schemas/TaxonomyAggregation' + genres: + type: array + items: + $ref: '#/components/schemas/TaxonomyAggregation' + TaxonomyAggregation: + type: object + properties: + id: + type: string + name: + type: string + count: + type: integer + format: int32 + parameters: + collectionId: + name: collectionId + in: path + description: Collection id + required: true + schema: + type: string + excludeField: + name: excludeField + in: query + description: Add parameter if tracks should be excluded in the response + required: false + schema: + type: string + enum: + - tracks + expand: + name: expand + in: query + description: Add parameter if tracks should be included in the response + required: false + schema: + type: string + enum: + - tracks + genre: + name: genre + in: query + description: Id for genre + required: false + schema: + type: array + items: + type: string + term: + name: term + in: query + description: Term for search + required: false + schema: + type: string + mood: + name: mood + in: query + description: Id for mood + required: false + schema: + type: array + items: + type: string + limit: + name: limit + in: query + description: Max number of entries returned in the response, default 50 and max 100 + required: false + schema: + type: integer + format: int32 + offset: + name: offset + in: query + description: Index of the entry track in the response + required: false + schema: + type: integer + format: int32 + bpmMin: + name: bpmMin + in: query + description: BPM Min + required: false + schema: + type: integer + format: int32 + bpmMax: + name: bpmMax + in: query + description: BPM Max + required: false + schema: + type: integer + format: int32 + trackId: + name: trackId + in: path + description: Track id + required: true + schema: + type: string + imageId: + name: imageId + in: path + description: Image id + required: true + schema: + type: string + checksum: + name: checksum + in: path + description: File checksum + required: true + schema: + type: string + audioIdOrChecksum: + name: audioIdOrChecksum + in: path + description: Audio upload id or checksum of audio file + required: true + schema: + type: string + moodId: + name: moodId + in: path + description: Mood id + required: true + schema: + type: string + genreId: + name: genreId + in: path + description: Genre id + required: true + schema: + type: string + categoryId: + name: categoryId + in: path + description: Category id + required: true + schema: + type: string + format: uuid + format: + name: format + in: query + description: Track format + required: false + schema: + type: string + enum: + - mp3 + quality: + name: quality + in: query + description: Track quality, normal is used as the default if not specified + required: false + schema: + type: string + enum: + - normal + - high + default: normal + sort: + name: sort + in: query + description: 'Sorting options. Available values: alphabetic, relevance' + required: false + schema: + type: string + enum: + - alphabetic + - relevance + default: relevance + order: + name: order + in: query + description: 'Order options. Available values: asc, desc' + required: false + schema: + type: string + enum: + - asc + - desc + default: asc + type: + name: type + in: query + description: |- + Types to filter by: + * `all` - all the objects in the Epidemic Sound library + * `partner-tier` - objects available to the partner within their tier + * `featured` - only objects featured and curated by Epidemic Sound + required: false + schema: + type: string + enum: + - all + - featured + - partner-tier + default: all + duration: + name: duration + in: query + description: The highlight duration in seconds + required: false + schema: + type: array + items: + type: integer + format: int32 + securitySchemes: + PartnerAuth: + type: http + description: >- + Partner authentication is handled with short lived partner access + tokens. + + Use your api credentials to request these tokens. + + The access token is of JWT format and should be passed in a header with + your API requests: + + + > **Example Header:** `Authorization: Bearer your-partner-token` + scheme: Bearer + UserAuth: + type: http + description: |- + User authentication is handled with short lived user access tokens. + Use a partner token to request these tokens. + The access token is of JWT format and should be passed in a header with your API requests: + + > **Example Header:** `Authorization: Bearer a-user-token` + scheme: Bearer + EpidemicSoundConnectAuth: + type: oauth2 + description: >- + For users signing in with an Epidemic Sound account, user authentication + is + + handled with OpenID Connect, which is a layer on top of OAuth 2.0. + + + > **Example Header:** `Authorization: Bearer es-connect-token` + flows: + authorizationCode: + authorizationUrl: >- + https://login.epidemicsound.com/auth/realms/accounts/protocol/openid-connect/auth + tokenUrl: >- + https://login.epidemicsound.com/auth/realms/accounts/protocol/openid-connect/token + scopes: {} +konfigCliVersion: 1.38.34 diff --git a/sdks/db/fixed-specs/epidemic-sound-fixed-spec.yaml b/sdks/db/fixed-specs/epidemic-sound-fixed-spec.yaml new file mode 100644 index 000000000..d985e939b --- /dev/null +++ b/sdks/db/fixed-specs/epidemic-sound-fixed-spec.yaml @@ -0,0 +1,4448 @@ +openapi: 3.0.1 +info: + title: Partner Content API + description: >- + Epidemic Sound has transformed the soundtracking experience for global + brands and professional creators, with an expansive catalog of world-class + music and sound effects that's seen and heard over 2.5 billion times a day + around the globe. + + + Providing a direct license model that comes with all rights included and + next-generation soundtracking tools, Epidemic Sound empowers creators to + unlock more feeling in everything they create and share their stories with + the world. Epidemic Sound continuously enriches its world-class catalog of + music by teaming up with artists, composers, and producers to create tracks + spanning all genres, while supporting them financially and creatively. + version: 0.1.17 +servers: + - description: Epidemic Sound Content API + url: https://partner-content-api.epidemicsound.com +tags: + - description: Endpoints to get track specific information. + name: Tracks + - description: >- + 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. + name: Browse & search + - description: >- + These endpoints allows your application to upload assets such as images or + audio. + name: Assets + - description: >- + Endpoints to get sound effect specific information. These endpoints allow + you to build a UI to browse and search for sound effects. + name: Sound effects + - description: >- + These endpoints allows your application to get user specific information + such as liked sounds. + name: Users + - description: Endpoints for user authentication. + name: Authentication + - description: >- + These endpoints will allow you to report how tracks are used in your + application. + name: Reporting +paths: + /v0/collections: + get: + tags: + - Browse & search + summary: List collections with tracks + operationId: GET_Collections + security: + - UserAuth: [] + - EpidemicSoundConnectAuth: [] + description: >- + 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. + parameters: + - $ref: '#/components/parameters/excludeField' + - description: >- + Max number of entries returned in the response, default 10 and max + 20 + name: limit + in: query + required: false + schema: + type: integer + format: int32 + - $ref: '#/components/parameters/offset' + responses: + '200': + description: Collection response + content: + application/json: + schema: + $ref: '#/components/schemas/CollectionsPaginatedResponse' + example: + collections: + - id: 4caef099-43bd-4653-8203-3086fa01d3b7 + name: Happy + tracks: + - title: Happy Song + id: 6rUPerw2po + mainArtists: + - Main Artist + featuredArtists: + - Featured Artist + 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: + default: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/300x300.jpg + L: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/1050x1050.jpg + M: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/600x600.jpg + S: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/300x300.jpg + XS: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/128x128.jpg + waveformUrl: >- + https://pdn.epidemicsound.com/waveforms/1600/394079.json + hasVocals: true + added: '2020-10-10' + isExplicit: false + isPreviewOnly: true + availableTracks: 1 + images: + default: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/default/300x300.jpg + L: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/default/1050x1050.jpg + M: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/default/600x600.jpg + S: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/default/300x300.jpg + XS: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/default/128x128.jpg + - id: 9917d694-511b-4b66-ab8a-c553660399e4 + name: Sad + tracks: + - title: Sad Song + id: 0dZCtol3bs + mainArtists: + - Main Artist + featuredArtists: + - Featured Artist + bpm: 97 + length: 2976 + moods: + - id: happyX + name: Happy + - id: eccentricX + name: Eccentric + genres: + - id: beatsX + name: Beats + parent: + id: parentX + name: Parent Beats + - id: trapX + name: Trap + images: + default: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/300x300.jpg + L: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/1050x1050.jpg + M: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/600x600.jpg + S: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/300x300.jpg + XS: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/128x128.jpg + waveformUrl: >- + https://pdn.epidemicsound.com/waveforms/1600/394079.json + hasVocals: true + added: '2020-10-10' + isExplicit: false + isPreviewOnly: true + availableTracks: 1 + images: + default: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/default/300x300.jpg + L: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/default/1050x1050.jpg + M: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/default/600x600.jpg + S: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/default/300x300.jpg + XS: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/default/128x128.jpg + pagination: + page: 3 + limit: 20 + offset: 40 + links: + next: /v0/collections?limit=20&offset=60 + prev: /v0/collections?limit=20&offset=20 + '401': + description: Unauthorized. Most likely your access token has expired. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Invalid credentials + '429': + description: Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Rate limit exceeded + /v0/collections/{collectionId}: + get: + tags: + - Browse & search + summary: List all tracks in a collection + operationId: GET_Collection + security: + - UserAuth: [] + - EpidemicSoundConnectAuth: [] + description: >- + The collections endpoint allows you to list all the tracks in a specific + collection. + parameters: + - $ref: '#/components/parameters/collectionId' + - $ref: '#/components/parameters/limit' + - $ref: '#/components/parameters/offset' + responses: + '200': + description: Collection response + content: + application/json: + schema: + $ref: '#/components/schemas/CollectionPaginatedResponse' + example: + id: f10e65eb-9998-4c41-9777-ac9183ab85dd + name: Happy + tracks: + - title: Happy Song + id: 6rUPerw2poX + mainArtists: + - Main Artist + featuredArtists: + - Featured Artist + bpm: 135 + length: 3123 + moods: + - id: happyX + name: Happy + - id: eccentricX + name: Eccentric + genres: + - id: beatsX + name: Beats + parent: + id: parentX + name: Parent Beats + - id: trapX + name: Trap + images: + default: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/300x300.jpg + L: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/1050x1050.jpg + M: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/600x600.jpg + S: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/300x300.jpg + XS: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/128x128.jpg + waveformUrl: https://pdn.epidemicsound.com/waveforms/1600/394079.json + 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: + default: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/default/300x300.jpg + L: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/default/1050x1050.jpg + M: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/default/600x600.jpg + S: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/default/300x300.jpg + XS: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/default/128x128.jpg + '400': + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Bad request + '401': + description: Unauthorized. Most likely your access token has expired. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Invalid credentials + '404': + description: Collection was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Collection was not found + '429': + description: Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Rate limit exceeded + /v0/tracks: + get: + tags: + - Tracks + summary: List tracks based on mood, genre or BPM + operationId: GET_Tracks + security: + - UserAuth: [] + - EpidemicSoundConnectAuth: [] + description: >- + The tracks endpoint allows you to list all tracks based on a specified + mood, genre or BPM. + parameters: + - $ref: '#/components/parameters/genre' + - $ref: '#/components/parameters/mood' + - $ref: '#/components/parameters/bpmMin' + - $ref: '#/components/parameters/bpmMax' + - $ref: '#/components/parameters/limit' + - $ref: '#/components/parameters/offset' + responses: + '200': + description: Tracks response + content: + application/json: + schema: + $ref: '#/components/schemas/TracksResponse' + example: + tracks: + - title: Happy Song + id: 6rUPerw2poX + mainArtists: + - Main Artist + featuredArtists: + - Featured Artist + bpm: 135 + length: 3123 + moods: + - id: happyX + name: Happy + - id: eccentricX + name: Eccentric + genres: + - id: beatsX + name: Beats + parent: + id: parentX + name: Parent Beats + - id: trapX + name: Trap + images: + default: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/300x300.jpg + L: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/1050x1050.jpg + M: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/600x600.jpg + S: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/300x300.jpg + XS: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/128x128.jpg + waveformUrl: https://pdn.epidemicsound.com/waveforms/1600/394079.json + hasVocals: true + added: '2020-10-10' + isExplicit: false + isPreviewOnly: true + - title: Sad Song + id: 0dZCtol3bsX + mainArtists: + - Main Artist + featuredArtists: + - Featured Artist + bpm: 97 + length: 2976 + moods: + - id: happyX + name: Happy + - id: eccentricX + name: Eccentric + genres: + - id: beatsX + name: Beats + parent: + id: parentX + name: Parent Beats + - id: trapX + name: Trap + images: + default: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/300x300.jpg + L: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/1050x1050.jpg + M: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/600x600.jpg + S: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/300x300.jpg + XS: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/128x128.jpg + waveformUrl: https://pdn.epidemicsound.com/waveforms/1600/394079.json + 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 + '400': + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Bad request + '401': + description: Unauthorized. Most likely your access token has expired. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Invalid credentials + '429': + description: Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Rate limit exceeded + /v0/tracks/search: + get: + tags: + - Browse & search + summary: Search for tracks + operationId: BrowseSearch_tracksSearchList + security: + - UserAuth: [] + - EpidemicSoundConnectAuth: [] + description: >- + 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. + parameters: + - $ref: '#/components/parameters/offset' + - $ref: '#/components/parameters/limit' + - $ref: '#/components/parameters/term' + - $ref: '#/components/parameters/genre' + - $ref: '#/components/parameters/mood' + - description: Sort for search + name: sort + in: query + required: false + schema: + type: string + enum: + - Relevance + - Date + - Title + default: Relevance + - description: Order + name: order + in: query + required: false + schema: + type: string + enum: + - Asc + - Desc + default: Asc + responses: + '200': + description: Tracks response + content: + application/json: + schema: + $ref: '#/components/schemas/TracksResponse' + example: + tracks: + - title: Happy Song + id: 6rUPerw2poX + mainArtists: + - Main Artist + featuredArtists: + - Featured Artist + bpm: 135 + length: 3123 + moods: + - id: happyX + name: Happy + - id: eccentricX + name: Eccentric + genres: + - id: beatsX + name: Beats + parent: + id: parentX + name: Parent Beats + - id: trapX + name: Trap + images: + default: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/300x300.jpg + L: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/1050x1050.jpg + M: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/600x600.jpg + S: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/300x300.jpg + XS: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/128x128.jpg + waveformUrl: https://pdn.epidemicsound.com/waveforms/1600/394079.json + hasVocals: true + added: '2020-10-10' + isExplicit: false + isPreviewOnly: true + - title: Sad Song + id: 0dZCtol3bsX + mainArtists: + - Main Artist + featuredArtists: + - Featured Artist + bpm: 97 + length: 2976 + moods: + - id: happyX + name: Happy + - id: eccentricX + name: Eccentric + genres: + - id: beatsX + name: Beats + parent: + id: parentX + name: Parent Beats + - id: trapX + name: Trap + images: + default: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/300x300.jpg + L: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/1050x1050.jpg + M: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/600x600.jpg + S: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/300x300.jpg + XS: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/128x128.jpg + waveformUrl: https://pdn.epidemicsound.com/waveforms/1600/394079.json + hasVocals: true + added: '2020-10-10' + isExplicit: false + isPreviewOnly: true + pagination: + page: 2 + limit: 25 + offset: 25 + links: + next: /v0/tracks/search?limit=25&offset=50 + prev: /v0/tracks/search?limit=25&offset=0 + aggregations: + moods: + - id: energetic + name: Energetic + count: 1 + genres: + - id: rock + name: Rock + count: 1 + '400': + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Bad request + '401': + description: Unauthorized. Most likely your access token has expired. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Invalid credentials + '403': + description: >- + Forbidden. Only available for ES Connect tokens or User tokens when + the app allows to preview tracks. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Forbidden + '429': + description: Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Rate limit exceeded + '503': + description: Service unavailable + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Service unavailable + /v0/tracks/search/suggestions: + get: + tags: + - Browse & search + summary: Search tracks suggestions + operationId: BrowseSearch_trackSuggestionsGet + security: + - UserAuth: [] + - EpidemicSoundConnectAuth: [] + description: >- + The search suggestions endpoint allows your users to get autocomplete + suggestions for Epidemic Sound music + parameters: + - $ref: '#/components/parameters/term' + responses: + '200': + description: Tracks Search Suggestions response + content: + application/json: + schema: + $ref: '#/components/schemas/SearchSuggestionsResponse' + example: + suggestions: + - value: rock + type: TEXT + - value: rocker + type: TEXT + - value: rock n roll + type: TEXT + '400': + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Bad request + '401': + description: Unauthorized. Most likely your access token has expired. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Invalid credentials + '403': + description: >- + Forbidden. Only available for ES Connect tokens or User tokens when + the app allows to preview tracks. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Forbidden + '429': + description: Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Rate limit exceeded + '503': + description: Service unavailable + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Service unavailable + /v0/tracks/parameters: + get: + tags: + - Tracks + summary: List track parameters + operationId: Tracks_listParameters + security: + - UserAuth: [] + - EpidemicSoundConnectAuth: [] + description: Get a list of possible track query parameters + responses: + '200': + description: Track parameters response + content: + application/json: + schema: + $ref: '#/components/schemas/TrackParametersResponse' + example: + genres: + - id: rockX + name: Rock + parent: + id: rock-parent + name: Rock Parent + - id: rock-parentX + name: Rock Parent + - id: skate-punk + name: Skate-Punk + moods: + - id: energeticX + name: Energetic + - id: happyX + name: Happy + '401': + description: Unauthorized. Most likely your access token has expired. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Invalid credentials + '429': + description: Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Rate limit exceeded + /v0/moods: + get: + tags: + - Browse & search + summary: List moods + operationId: BrowseSearch_moodsList + security: + - UserAuth: [] + - EpidemicSoundConnectAuth: [] + description: >- + 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. + parameters: + - $ref: '#/components/parameters/sort' + - $ref: '#/components/parameters/order' + - $ref: '#/components/parameters/type' + - description: >- + Max number of entries returned in the response, default 20 and max + 20 + name: limit + in: query + required: false + schema: + type: integer + format: int32 + - $ref: '#/components/parameters/offset' + responses: + '200': + description: Track moods response + content: + application/json: + schema: + $ref: '#/components/schemas/MoodsPaginatedResponseWithImages' + example: + moods: + - id: energeticX + name: Epic + images: + default: >- + https://images.ctfassets.net/ojtnytzl1djm/3IWOMuMQtqXI01euQ43r6d/19761430ed16d9d35b94b71cb4693c80/Epic.jpg?w=300&h=300&fit=fill&q=90&fm=jpg + L: >- + https://images.ctfassets.net/ojtnytzl1djm/3IWOMuMQtqXI01euQ43r6d/19761430ed16d9d35b94b71cb4693c80/Epic.jpg?w=1050&h=1050&fit=fill&q=90&fm=jpg + M: >- + https://images.ctfassets.net/ojtnytzl1djm/3IWOMuMQtqXI01euQ43r6d/19761430ed16d9d35b94b71cb4693c80/Epic.jpg?w=600&h=600&fit=fill&q=90&fm=jpg + S: >- + https://images.ctfassets.net/ojtnytzl1djm/3IWOMuMQtqXI01euQ43r6d/19761430ed16d9d35b94b71cb4693c80/Epic.jpg?w=300&h=300&fit=fill&q=90&fm=jpg + XS: >- + https://images.ctfassets.net/ojtnytzl1djm/3IWOMuMQtqXI01euQ43r6d/19761430ed16d9d35b94b71cb4693c80/Epic.jpg?w=128&h=128&fit=fill&q=90&fm=jpg + - id: happyX + name: Happy + images: + default: >- + https://images.ctfassets.net/ojtnytzl1djm/2u0eIu3GfevvONKEVc0NEi/f0db82add464ad37ec90406c8ab7cab1/Happy.png?w=300&h=300&fit=fill&q=90&fm=jpg + L: >- + https://images.ctfassets.net/ojtnytzl1djm/2u0eIu3GfevvONKEVc0NEi/f0db82add464ad37ec90406c8ab7cab1/Happy.png?w=1050&h=1050&fit=fill&q=90&fm=jpg + M: >- + https://images.ctfassets.net/ojtnytzl1djm/2u0eIu3GfevvONKEVc0NEi/f0db82add464ad37ec90406c8ab7cab1/Happy.png?w=600&h=600&fit=fill&q=90&fm=jpg + S: >- + https://images.ctfassets.net/ojtnytzl1djm/2u0eIu3GfevvONKEVc0NEi/f0db82add464ad37ec90406c8ab7cab1/Happy.png?w=300&h=300&fit=fill&q=90&fm=jpg + XS: >- + https://images.ctfassets.net/ojtnytzl1djm/2u0eIu3GfevvONKEVc0NEi/f0db82add464ad37ec90406c8ab7cab1/Happy.png?w=128&h=128&fit=fill&q=90&fm=jpg + pagination: + page: 1 + limit: 20 + offset: 0 + links: {} + '401': + description: Unauthorized. Most likely your access token has expired. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Invalid credentials + '429': + description: Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Rate limit exceeded + /v0/moods/{moodId}: + get: + tags: + - Browse & search + summary: Mood by ID + operationId: BrowseSearch_moodDetails + security: + - UserAuth: [] + - EpidemicSoundConnectAuth: [] + description: Get mood details + parameters: + - $ref: '#/components/parameters/moodId' + - $ref: '#/components/parameters/expand' + - $ref: '#/components/parameters/limit' + - $ref: '#/components/parameters/offset' + responses: + '200': + description: Track mood response + content: + application/json: + schema: + $ref: '#/components/schemas/MoodResponseWithImages' + example: + id: happyX + name: Happy + images: + default: >- + https://images.ctfassets.net/ojtnytzl1djm/2u0eIu3GfevvONKEVc0NEi/f0db82add464ad37ec90406c8ab7cab1/Happy.png?w=300&h=300&fit=fill&q=90&fm=jpg + L: >- + https://images.ctfassets.net/ojtnytzl1djm/2u0eIu3GfevvONKEVc0NEi/f0db82add464ad37ec90406c8ab7cab1/Happy.png?w=1050&h=1050&fit=fill&q=90&fm=jpg + M: >- + https://images.ctfassets.net/ojtnytzl1djm/2u0eIu3GfevvONKEVc0NEi/f0db82add464ad37ec90406c8ab7cab1/Happy.png?w=600&h=600&fit=fill&q=90&fm=jpg + S: >- + https://images.ctfassets.net/ojtnytzl1djm/2u0eIu3GfevvONKEVc0NEi/f0db82add464ad37ec90406c8ab7cab1/Happy.png?w=300&h=300&fit=fill&q=90&fm=jpg + XS: >- + https://images.ctfassets.net/ojtnytzl1djm/2u0eIu3GfevvONKEVc0NEi/f0db82add464ad37ec90406c8ab7cab1/Happy.png?w=128&h=128&fit=fill&q=90&fm=jpg + '401': + description: Unauthorized. Most likely your access token has expired. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Invalid credentials + '404': + description: Mood was not found + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Mood was not found + '429': + description: Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Rate limit exceeded + /v0/genres: + get: + tags: + - Browse & search + summary: List genres + operationId: BrowseSearch_genreCatalog + security: + - UserAuth: [] + - EpidemicSoundConnectAuth: [] + description: >- + 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. + parameters: + - $ref: '#/components/parameters/sort' + - $ref: '#/components/parameters/order' + - $ref: '#/components/parameters/type' + - description: >- + Max number of entries returned in the response, default 20 and max + 20 + name: limit + in: query + required: false + schema: + type: integer + format: int32 + - $ref: '#/components/parameters/offset' + responses: + '200': + description: Track genres response + content: + application/json: + schema: + $ref: '#/components/schemas/GenresWithImagesPaginatedResponse' + example: + genres: + - id: beatsX + name: Beats + images: + default: >- + https://images.ctfassets.net/ojtnytzl1djm/4Mm4kJ9nwasLwZpQ54472a/90f35901413025d5a627fa132f6c2b56/Beats.jpg?w=300&h=300&fit=fill&q=90&fm=jpg + L: >- + https://images.ctfassets.net/ojtnytzl1djm/4Mm4kJ9nwasLwZpQ54472a/90f35901413025d5a627fa132f6c2b56/Beats.jpg?w=1050&h=1050&fit=fill&q=90&fm=jpg + M: >- + https://images.ctfassets.net/ojtnytzl1djm/4Mm4kJ9nwasLwZpQ54472a/90f35901413025d5a627fa132f6c2b56/Beats.jpg?w=600&h=600&fit=fill&q=90&fm=jpg + S: >- + https://images.ctfassets.net/ojtnytzl1djm/4Mm4kJ9nwasLwZpQ54472a/90f35901413025d5a627fa132f6c2b56/Beats.jpg?w=300&h=300&fit=fill&q=90&fm=jpg + XS: >- + https://images.ctfassets.net/ojtnytzl1djm/4Mm4kJ9nwasLwZpQ54472a/90f35901413025d5a627fa132f6c2b56/Beats.jpg?w=128&h=128&fit=fill&q=90&fm=jpg + pagination: + page: 1 + limit: 20 + offset: 0 + links: {} + '401': + description: Unauthorized. Most likely your access token has expired. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Invalid credentials + '429': + description: Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Rate limit exceeded + /v0/genres/{genreId}: + get: + tags: + - Browse & search + summary: Genre details + operationId: BrowseSearch_genreDetails + security: + - UserAuth: [] + - EpidemicSoundConnectAuth: [] + description: >- + This endpoint gives you the parent and child relationships of a specific + genre as well as all tracks that belong to it. + parameters: + - $ref: '#/components/parameters/genreId' + - $ref: '#/components/parameters/expand' + - $ref: '#/components/parameters/limit' + - $ref: '#/components/parameters/offset' + responses: + '200': + description: Track genre response + content: + application/json: + schema: + $ref: '#/components/schemas/GenreResponseWithChildren' + example: + id: parent-beats + name: Parent Beats + children: + - id: true-beats + name: True Beats + parent: + id: parent-beatsX + name: Parent Beats + tracks: + tracks: + - title: Happy Song + id: 6rUPerw2poX + mainArtists: + - Main Artist + featuredArtists: + - Featured Artist + bpm: 135 + length: 3123 + moods: + - id: happyX + name: Happy + - id: eccentricX + name: Eccentric + genres: + - id: parent-beatsX + name: Beats + parent: + id: parentX + name: Parent Beats + - id: trapX + name: Trap + images: + default: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/300x300.jpg + L: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/1050x1050.jpg + M: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/600x600.jpg + S: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/300x300.jpg + XS: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/128x128.jpg + waveformUrl: https://pdn.epidemicsound.com/waveforms/1600/394079.json + 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 + '401': + description: Unauthorized. Most likely your access token has expired. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Invalid credentials + '404': + description: Genre was not found + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Genre was not found + '429': + description: Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Rate limit exceeded + /v0/tracks/{trackId}/download: + get: + tags: + - Tracks + summary: Download track + operationId: GET_Download + security: + - UserAuth: [] + - EpidemicSoundConnectAuth: [] + description: >- + 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). + parameters: + - $ref: '#/components/parameters/trackId' + - $ref: '#/components/parameters/format' + - $ref: '#/components/parameters/quality' + responses: + '200': + description: Information about download url + content: + application/json: + schema: + $ref: '#/components/schemas/DownloadResponse' + example: + url: >- + https://pdn.epidemicsound.com/ES_ITUNES/Happy_Song/ES_Happy_Song.mp3 + expires: '2022-12-22T11:01:48Z' + '400': + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Bad request + '401': + description: Unauthorized. Most likely your access token has expired. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Invalid credentials + '403': + description: User does not have access to download the track. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: User does not have access to download the track + '404': + description: Track was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Track was not found + '429': + description: Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Rate limit exceeded + /v0/tracks/{trackId}/beats: + get: + tags: + - Tracks + summary: Beats + operationId: Tracks_getBeatsData + security: + - UserAuth: [] + - EpidemicSoundConnectAuth: [] + description: " 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.\n\n 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.\n\n The response includes two types of metadata: `time` and `value`.\_\n\n `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).\n\n Examples:\n\n 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\n\n However, a waltz has three beats in a bar, and the data would look something like: 1-2-3, 1-2-3\n\n Usage Scenarios:\n\n* Automatically cut a video in sync with the beat\n\n* Adding snap markers aligned with beat timestamps in the UI. " + parameters: + - $ref: '#/components/parameters/trackId' + responses: + '200': + description: Beats response + content: + application/json: + schema: + $ref: '#/components/schemas/TrackBeatsResponse' + example: + beats: + - time: 0 + value: '1.0' + - time: 0.62 + value: '2.0' + - time: 1.2 + value: '3.0' + - time: 1.8 + value: '4.0' + '400': + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Bad request + '401': + description: Unauthorized. Most likely your access token has expired. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Invalid credentials + '403': + description: User does not have access to download the track. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: User does not have access to download the track + '404': + description: Track was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Track was not found + '429': + description: Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Rate limit exceeded + /v0/tracks/{trackId}/hls: + get: + tags: + - Tracks + summary: Preview track using cookies + operationId: Tracks_previewUsingCookies + security: + - UserAuth: [] + - EpidemicSoundConnectAuth: [] + description: >- + 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. + parameters: + - $ref: '#/components/parameters/trackId' + responses: + '200': + description: HLS download details for the track + content: + application/json: + schema: + $ref: '#/components/schemas/HLSDownloadResponse' + example: + url: >- + https://hls-storage.epidemicsite.com/hls/v1/q4MImKW47D/daefecd205c01496b42ae6950c446c6e/master.m3u8 + 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' + '400': + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Bad request + '401': + description: Unauthorized. Most likely your access token has expired. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Invalid credentials + '404': + description: Track was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Track was not found + '429': + description: Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Rate limit exceeded + /v0/tracks/{trackId}/similar: + get: + tags: + - Tracks + summary: Similar tracks + operationId: Tracks_getSimilar + security: + - UserAuth: [] + - EpidemicSoundConnectAuth: [] + description: >- + 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. + parameters: + - $ref: '#/components/parameters/trackId' + - $ref: '#/components/parameters/offset' + - $ref: '#/components/parameters/limit' + responses: + '200': + description: Paginated list of similar tracks + content: + application/json: + schema: + $ref: '#/components/schemas/TracksResponse' + example: + tracks: + - title: Happy Song + id: 6rUPerw2poX + mainArtists: + - Main Artist + featuredArtists: + - Featured Artist + bpm: 135 + length: 3123 + moods: + - id: happyX + name: Happy + - id: eccentricX + name: Eccentric + genres: + - id: beatsX + name: Beats + parent: + id: parentX + name: Parent Beats + - id: trapX + name: Trap + images: + default: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/300x300.jpg + L: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/1050x1050.jpg + M: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/600x600.jpg + S: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/300x300.jpg + XS: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/128x128.jpg + waveformUrl: https://pdn.epidemicsound.com/waveforms/1600/394079.json + hasVocals: true + added: '2020-10-10' + isExplicit: false + isPreviewOnly: true + - title: Sad Song + id: 0dZCtol3bsX + mainArtists: + - Main Artist + featuredArtists: + - Featured Artist + bpm: 97 + length: 2976 + moods: + - id: happyX + name: Happy + - id: eccentricX + name: Eccentric + genres: + - id: beatsX + name: Beats + parent: + id: parentX + name: Parent Beats + - id: trapX + name: Trap + images: + default: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/300x300.jpg + L: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/1050x1050.jpg + M: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/600x600.jpg + S: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/300x300.jpg + XS: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/128x128.jpg + waveformUrl: https://pdn.epidemicsound.com/waveforms/1600/394079.json + 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 + '400': + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Bad request + '401': + description: Unauthorized. Most likely your access token has expired. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Invalid credentials + '404': + description: Track was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Track was not found + '429': + description: Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Rate limit exceeded + /v0/tracks/similar-sections: + get: + tags: + - Tracks + summary: Similar track segment based on audio file + operationId: Tracks_getSimilarSegments + security: + - UserAuth: [] + - EpidemicSoundConnectAuth: [] + description: >- + Returns a list of track sections that are matched to the provided audio + file id. + parameters: + - description: Reference to the uploaded audio file + name: audioUploadId + in: query + required: true + schema: + type: string + format: uuid + - description: Start of the section in milliseconds + name: start + in: query + required: true + schema: + type: integer + format: int32 + - description: End of the section in milliseconds + name: end + in: query + required: true + schema: + type: integer + format: int32 + - $ref: '#/components/parameters/offset' + - $ref: '#/components/parameters/limit' + responses: + '200': + description: Paginated list of similar tracks + content: + application/json: + schema: + $ref: '#/components/schemas/TrackSectionPaginatedResponse' + example: + trackSections: + - track: + title: Sad Song + id: 0dZCtol3bsX + mainArtists: + - Main Artist + featuredArtists: + - Featured Artist + bpm: 97 + length: 2976 + moods: + - id: happyX + name: Happy + - id: eccentricX + name: Eccentric + genres: + - id: beatsX + name: Beats + parent: + id: parentX + name: Parent Beats + - id: trapX + name: Trap + images: + default: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/300x300.jpg + L: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/1050x1050.jpg + M: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/600x600.jpg + S: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/300x300.jpg + XS: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/128x128.jpg + waveformUrl: https://pdn.epidemicsound.com/waveforms/1600/394079.json + 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=1ddc0dbc-a65b-4fdb-8f07-5bcda987abb0&limit=20&offset=80&start=0&end=10000 + prev: >- + /v0/tracks/similar-sections?audioUploadId=63abbf39-4197-42c7-bf4f-66024096cd25&limit=20&offset=40&start=0&end=10000 + '400': + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Bad request + '401': + description: Unauthorized. Most likely your access token has expired. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Invalid credentials + '404': + description: Track was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Track was not found + '429': + description: Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Rate limit exceeded + /v0/tracks/{trackId}/similar-sections: + get: + tags: + - Tracks + summary: Similar track segment based on trackID + operationId: Tracks_findSimilarSegments + security: + - UserAuth: [] + - EpidemicSoundConnectAuth: [] + description: >- + 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: + + * Video Editing Templates: Replace default tracks in video templates with segments that fit better. + * Quick Swaps: Swap out a segment of music in a video where the existing track doesn't quite match. + * Creative Iteration: Easily experiment with different music segments to enhance your video's impact. + parameters: + - $ref: '#/components/parameters/trackId' + - description: Start of the section in milliseconds + name: start + in: query + required: true + schema: + type: integer + format: int32 + - description: End of the section in milliseconds + name: end + in: query + required: true + schema: + type: integer + format: int32 + - $ref: '#/components/parameters/offset' + - $ref: '#/components/parameters/limit' + responses: + '200': + description: Paginated list of similar tracks + content: + application/json: + schema: + $ref: '#/components/schemas/TrackSectionPaginatedResponse' + example: + trackSections: + - track: + title: Sad Song + id: 0dZCtol3bsX + mainArtists: + - Main Artist + featuredArtists: + - Featured Artist + bpm: 97 + length: 2976 + moods: + - id: happyX + name: Happy + - id: eccentricX + name: Eccentric + genres: + - id: beatsX + name: Beats + parent: + id: parentX + name: Parent Beats + - id: trapX + name: Trap + images: + default: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/300x300.jpg + L: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/1050x1050.jpg + M: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/600x600.jpg + S: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/300x300.jpg + XS: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/128x128.jpg + waveformUrl: https://pdn.epidemicsound.com/waveforms/1600/394079.json + 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 + '400': + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Bad request + '401': + description: Unauthorized. Most likely your access token has expired. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Invalid credentials + '404': + description: Track was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Track was not found + '429': + description: Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Rate limit exceeded + /v0/tracks/{trackId}/stream: + get: + tags: + - Tracks + summary: Preview track + operationId: GET_Stream + security: + - UserAuth: [] + - EpidemicSoundConnectAuth: [] + description: >- + 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. + parameters: + - $ref: '#/components/parameters/trackId' + responses: + '200': + description: Information about the stream url + content: + application/json: + schema: + $ref: '#/components/schemas/DownloadResponse' + example: + url: >- + https://hls-storage.epidemicsite.com/hls/v1/q4MImKW47D/daefecd205c01496b42ae6950c446c6e/master.m3u8 + expires: '2022-12-22T11:01:48Z' + '400': + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Bad request + '401': + description: Unauthorized. Most likely your access token has expired. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Invalid credentials + '404': + description: Track was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Track was not found + '429': + description: Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Rate limit exceeded + /v0/tracks/{trackId}/highlights: + get: + tags: + - Tracks + summary: Recommend section of a track + operationId: Tracks_recommendSection + security: + - UserAuth: [] + - EpidemicSoundConnectAuth: [] + description: >- + Powered by our 2 billion daily streams on YouTube, the highlights + endpoint uses machine learning to recommend the best time section. + + + You can use highlights to start playing the track from the right + millisecond, or recommend the right part of the track for shorter + content. + + + The highlights 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. + parameters: + - $ref: '#/components/parameters/trackId' + - $ref: '#/components/parameters/duration' + responses: + '200': + description: >- + List of highlighted sections for the track. The times are given in + milliseconds. If there is no available highlight, a fallback to the + first section of the track is returned. + content: + application/json: + schema: + $ref: '#/components/schemas/HighlightsResponse' + example: + highlights: + - from: 9000 + to: 39000 + duration: 30 + '400': + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Bad request + '401': + description: Unauthorized. Most likely your access token has expired. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Invalid credentials + '404': + description: Track was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Track was not found + '429': + description: Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Rate limit exceeded + /v0/uploads/audio/{checksum}: + get: + tags: + - Assets + summary: Get audio asset by the checksum + operationId: Assets_byChecksumGet + security: + - UserAuth: [] + - EpidemicSoundConnectAuth: [] + - PartnerAuth: [] + description: >- + Will return the audio id of an audio file uploaded by the partner, + matched by checksum. Should be used to avoid duplicate uploads + parameters: + - $ref: '#/components/parameters/checksum' + responses: + '200': + description: Partner audio response + content: + application/json: + schema: + $ref: '#/components/schemas/PartnerAudioResponse' + example: + audioUploadId: f064a9f3-8bc7-4073-93f1-781e7a7c134f + length: 10 + expires: '2024-04-27T23:28:40.013476725Z' + '400': + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Bad request + '401': + description: Unauthorized. Most likely your access token has expired. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Invalid credentials + '404': + description: Audio file was not found + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Audio was not found + '429': + description: Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Rate limit exceeded + /v0/uploads/audio/{audioIdOrChecksum}: + delete: + tags: + - Assets + summary: Delete a single audio file + operationId: Assets_deleteAudioFile + security: + - PartnerAuth: [] + description: Delete a single audio file + parameters: + - $ref: '#/components/parameters/audioIdOrChecksum' + responses: + '200': + description: List of deleted audio ids + content: + application/json: + schema: + $ref: '#/components/schemas/PartnerAudioDeleteResponse' + example: + audioFilesRemoved: + - 3163ce29-28d5-4d39-83ae-beb9cc0f46cf + '202': + description: List of audio files marked for deletion + content: + application/json: + schema: + $ref: '#/components/schemas/PartnerAudioDeleteResponse' + example: + audioFilesRemoved: + - 6847b481-9439-462f-bb77-e6cd5efeb92c + '401': + description: Unauthorized. Most likely your access token has expired. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Invalid credentials + '429': + description: Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Rate limit exceeded + /v0/uploads/audio: + post: + tags: + - Assets + summary: Uploads an audio file + operationId: Assets_uploadAudioFile + security: + - PartnerAuth: [] + description: Uploads an audio file + requestBody: + content: + multipart/form-data: + schema: + $ref: '#/components/schemas/AssetsUploadAudioFileRequest' + responses: + '200': + description: >- + Returns the id of the uploaded image, as well as the expiration date + for the image. + content: + application/json: + schema: + $ref: '#/components/schemas/UploadUserImageResponse' + example: + imageId: 23378a80-6c55-4847-9297-fcf09f483bf5 + expirationDate: '2024-03-29T23:28:40.016558805Z' + '400': + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Bad request + '401': + description: Unauthorized. Most likely your access token has expired. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Invalid credentials + '429': + description: Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Rate limit exceeded + /v0/uploads/images/{imageId}: + delete: + tags: + - Assets + summary: Delete uploaded image + operationId: Assets_deleteImage + security: + - UserAuth: [] + - EpidemicSoundConnectAuth: [] + description: Deletes an image uploaded by the user + parameters: + - $ref: '#/components/parameters/imageId' + responses: + '204': + description: Image was deleted + '400': + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Bad request + '401': + description: Unauthorized. Most likely your access token has expired. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Invalid credentials + '404': + description: Image was not found + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Image was not found + '429': + description: Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Rate limit exceeded + /v0/uploads/images: + post: + tags: + - Assets + summary: Upload image for recommendation + operationId: Assets_uploadImageForRecommendation + security: + - UserAuth: [] + - EpidemicSoundConnectAuth: [] + description: >- + Uploads an image, currently only jpeg format is supported. File limit is + 2Mb. + requestBody: + content: + multipart/form-data: + schema: + $ref: '#/components/schemas/AssetsUploadImageForRecommendationRequest' + responses: + '200': + description: >- + Contains id to be used for endpoints requiring an image id, as well + as the expiration date for the image. + content: + application/json: + schema: + $ref: '#/components/schemas/UploadUserImageResponse' + example: + imageId: ef7ec55a-2b56-469b-8d83-b97b35ea5e25 + expirationDate: '2024-03-29T23:28:40.019058805Z' + '400': + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Bad request + '401': + description: Unauthorized. Most likely your access token has expired. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Invalid credentials + '429': + description: Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Rate limit exceeded + delete: + tags: + - Assets + summary: Delete all the uploaded images by the user + operationId: Assets_removeAllImages + security: + - UserAuth: [] + - EpidemicSoundConnectAuth: [] + description: Deletes all images uploaded by the user + responses: + '202': + description: Images were marked for deletion + '401': + description: Unauthorized. Most likely your access token has expired. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Invalid credentials + '429': + description: Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Rate limit exceeded + /v0/tracks/matching-image/{imageId}: + get: + tags: + - Tracks + summary: Get tracks matching an image + operationId: Tracks_matchingImageGet + security: + - UserAuth: [] + - EpidemicSoundConnectAuth: [] + description: Gets tracks that match an image uploaded by the user + parameters: + - $ref: '#/components/parameters/imageId' + - $ref: '#/components/parameters/offset' + - $ref: '#/components/parameters/limit' + - $ref: '#/components/parameters/genre' + - $ref: '#/components/parameters/mood' + responses: + '200': + description: Paginated list of tracks + content: + application/json: + schema: + $ref: '#/components/schemas/TracksResponse' + example: + tracks: + - title: Happy Song + id: 6rUPerw2poX + mainArtists: + - Main Artist + featuredArtists: + - Featured Artist + bpm: 135 + length: 3123 + moods: + - id: happyX + name: Happy + - id: eccentricX + name: Eccentric + genres: + - id: beatsX + name: Beats + parent: + id: parentX + name: Parent Beats + - id: trapX + name: Trap + images: + default: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/300x300.jpg + L: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/1050x1050.jpg + M: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/600x600.jpg + S: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/300x300.jpg + XS: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/128x128.jpg + waveformUrl: https://pdn.epidemicsound.com/waveforms/1600/394079.json + hasVocals: true + added: '2020-10-10' + isExplicit: false + isPreviewOnly: true + - title: Sad Song + id: 0dZCtol3bsX + mainArtists: + - Main Artist + featuredArtists: + - Featured Artist + bpm: 97 + length: 2976 + moods: + - id: happyX + name: Happy + - id: eccentricX + name: Eccentric + genres: + - id: beatsX + name: Beats + parent: + id: parentX + name: Parent Beats + - id: trapX + name: Trap + images: + default: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/300x300.jpg + L: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/1050x1050.jpg + M: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/600x600.jpg + S: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/300x300.jpg + XS: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/128x128.jpg + waveformUrl: https://pdn.epidemicsound.com/waveforms/1600/394079.json + hasVocals: true + added: '2020-10-10' + isExplicit: false + isPreviewOnly: true + pagination: + page: 2 + limit: 25 + offset: 25 + links: + next: /v0/tracks/search?limit=25&offset=50 + prev: /v0/tracks/search?limit=25&offset=0 + aggregations: + moods: + - id: energeticX + name: Energetic + count: 1 + genres: + - id: rockX + name: Rock + count: 1 + '400': + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Bad request + '401': + description: Unauthorized. Most likely your access token has expired. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Invalid credentials + '404': + description: Image was not found + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Image was not found + '429': + description: Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Rate limit exceeded + /v0/sound-effects/categories: + get: + tags: + - Sound effects + summary: Get a list of all sound effects categories + operationId: SoundEffects_listCategories + security: + - UserAuth: [] + - EpidemicSoundConnectAuth: [] + description: >- + 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. + parameters: + - description: Category type + name: type + in: query + required: false + schema: + type: string + enum: + - all + - featured + default: all + - description: Sorting options + name: sort + in: query + required: false + schema: + type: string + enum: + - title + - relevance + default: title + - $ref: '#/components/parameters/offset' + - $ref: '#/components/parameters/limit' + responses: + '200': + description: >- + Sound effects category list with related parent category. You can + see the parent-child relationship in the response. + content: + application/json: + schema: + $ref: '#/components/schemas/SoundEffectCategoriesResponse' + example: + categories: + - id: 7533dc15-855e-476a-bbb6-8d8081f18b1b + name: Applause + numTracks: 10 + images: + default: https://image.url?w=300&h=300&fit=fill&q=90&fm=jpg + L: https://image.url?w=1050&h=1050&fit=fill&q=90&fm=jpg + M: https://image.url?w=600&h=600&fit=fill&q=90&fm=jpg + S: https://image.url?w=300&h=300&fit=fill&q=90&fm=jpg + XS: https://image.url?w=128&h=128&fit=fill&q=90&fm=jpg + parent: + id: 117d5210-2b78-4bda-9013-419d7f710ddb + name: Crowds + pagination: + page: 2 + limit: 10 + offset: 10 + links: + next: /v0/sound-effects/categories?limit=10&offset=20 + prev: /v0/sound-effects/categories?limit=10&offset=0 + '400': + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Bad request + '401': + description: Unauthorized. Most likely your access token has expired. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Invalid credentials + '429': + description: Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Rate limit exceeded + /v0/sound-effects/categories/{categoryId}: + get: + tags: + - Sound effects + summary: Get a sound effects category by id + operationId: SoundEffects_getCategoryById + security: + - UserAuth: [] + - EpidemicSoundConnectAuth: [] + description: >- + 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. + parameters: + - $ref: '#/components/parameters/categoryId' + responses: + '200': + description: Category with related parent and children categories + content: + application/json: + schema: + $ref: '#/components/schemas/SoundEffectCategoryWithRelativesResponse' + example: + id: 3b7bd645-767a-4a95-a97e-35b5549248de + name: Applause + numTracks: 10 + images: + default: https://image.url?w=300&h=300&fit=fill&q=90&fm=jpg + L: https://image.url?w=1050&h=1050&fit=fill&q=90&fm=jpg + M: https://image.url?w=600&h=600&fit=fill&q=90&fm=jpg + S: https://image.url?w=300&h=300&fit=fill&q=90&fm=jpg + XS: https://image.url?w=128&h=128&fit=fill&q=90&fm=jpg + parent: + id: 417f3061-459b-47c3-b5d7-6838e89a9d50 + name: Crowds + children: + - id: 95c42ecf-ab8b-40be-ace1-b50c0d98beaf + name: Claps + '400': + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Bad request + '401': + description: Unauthorized. Most likely your access token has expired. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Invalid credentials + '404': + description: Category was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Category was not found + '429': + description: Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Rate limit exceeded + /v0/sound-effects/categories/{categoryId}/tracks: + get: + tags: + - Sound effects + summary: Get sound effects by category + operationId: SoundEffects_getByCategoryTracks + security: + - UserAuth: [] + - EpidemicSoundConnectAuth: [] + description: >- + Use the sound effects details endpoint to display all sound effects for + a given category. + parameters: + - $ref: '#/components/parameters/categoryId' + - $ref: '#/components/parameters/offset' + - $ref: '#/components/parameters/limit' + - description: Sort + name: sort + in: query + required: false + schema: + type: string + enum: + - title + - newest + - length + default: newest + - description: Order + name: order + in: query + required: false + schema: + type: string + enum: + - asc + - desc + default: asc + responses: + '200': + description: List of sound effects for a given category + content: + application/json: + schema: + $ref: '#/components/schemas/PaginatedSoundEffectsResponse' + example: + soundEffects: + - title: Applause + id: 0a1733df-00da-442e-84fd-3a32736c3a5d + added: '2024-03-28T23:28:40.030876075Z' + length: 10 + images: + default: https://image.url?w=300&h=300&fit=fill&q=90&fm=jpg + L: https://image.url?w=1050&h=1050&fit=fill&q=90&fm=jpg + M: https://image.url?w=600&h=600&fit=fill&q=90&fm=jpg + S: https://image.url?w=300&h=300&fit=fill&q=90&fm=jpg + XS: https://image.url?w=128&h=128&fit=fill&q=90&fm=jpg + categories: [] + pagination: + page: 2 + limit: 10 + offset: 10 + links: + next: /v0/sound-effects/categories?limit=10&offset=20 + prev: /v0/sound-effects/categories?limit=10&offset=0 + '400': + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Bad request + '401': + description: Unauthorized. Most likely your access token has expired. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Invalid credentials + '404': + description: Category was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Category was not found + '429': + description: Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Rate limit exceeded + /v0/sound-effects/{trackId}/download: + get: + tags: + - Sound effects + summary: Download sound effect + operationId: SoundEffects_downloadSoundEffect + security: + - UserAuth: [] + - EpidemicSoundConnectAuth: [] + description: >- + 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. + parameters: + - $ref: '#/components/parameters/trackId' + - $ref: '#/components/parameters/format' + - $ref: '#/components/parameters/quality' + responses: + '200': + description: Information about download url + content: + application/json: + schema: + $ref: '#/components/schemas/DownloadResponse' + example: + url: >- + https://pdn.epidemicsound.com/ES_ITUNES/Happy_Song/ES_Happy_Song.mp3 + expires: '2022-12-22T11:01:48Z' + '400': + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Bad request + '401': + description: Unauthorized. Most likely your access token has expired. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Invalid credentials + '403': + description: User does not have access to download the track. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: User does not have access to download the track + '404': + description: Track was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Track was not found + '429': + description: Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Rate limit exceeded + /v0/sound-effects/search: + get: + tags: + - Sound effects + summary: Search sound effects + operationId: SoundEffects_searchSoundEffects + security: + - UserAuth: [] + - EpidemicSoundConnectAuth: [] + description: > + Use the sound effects search endpoint to allow users to search within + the sound effects library. + parameters: + - $ref: '#/components/parameters/offset' + - $ref: '#/components/parameters/limit' + - required: true + $ref: '#/components/parameters/term' + - description: Sort for search + name: sort + in: query + required: false + schema: + type: string + enum: + - best-match + - newest + - popular + - length + - title + default: best-match + - description: Order + name: order + in: query + required: false + schema: + type: string + enum: + - asc + - desc + default: asc + responses: + '200': + description: List of sound effect search results + content: + application/json: + schema: + $ref: '#/components/schemas/PaginatedSoundEffectsResponse' + example: + soundEffects: + - title: Applause + id: 021438f7-8c68-4649-8296-d475abdca6a4 + added: '2024-03-28T23:28:40.034835865Z' + length: 10 + images: + default: https://image.url?w=300&h=300&fit=fill&q=90&fm=jpg + L: https://image.url?w=1050&h=1050&fit=fill&q=90&fm=jpg + M: https://image.url?w=600&h=600&fit=fill&q=90&fm=jpg + S: https://image.url?w=300&h=300&fit=fill&q=90&fm=jpg + XS: https://image.url?w=128&h=128&fit=fill&q=90&fm=jpg + categories: [] + pagination: + page: 2 + limit: 10 + offset: 10 + links: + next: /v0/sound-effects/categories?limit=10&offset=20 + prev: /v0/sound-effects/categories?limit=10&offset=0 + '400': + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Bad request + '401': + description: Unauthorized. Most likely your access token has expired. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Invalid credentials + '429': + description: Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Rate limit exceeded + /v0/analytics/report: + post: + tags: + - Reporting + summary: Report events to Epidemic Sound + operationId: Reporting_epidemicEventSubmission + security: + - PartnerAuth: [] + description: >- + This endpoint should be used when you want to 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. + requestBody: + description: Analytics report + content: + application/json: + schema: + $ref: '#/components/schemas/AnalyticsReportRequest' + example: + events: + - userId: '123' + timestamp: '2024-03-28T23:28:40.035772655Z' + userConnected: false + analyticsEvent: + trackId: '12345' + type: trackPreviewed + - userId: '456' + timestamp: '2024-03-28T23:28:40.035976895Z' + userConnected: true + analyticsEvent: + trackId: '12345' + format: mp3 + quality: normal + type: trackDownloaded + - userId: '456' + timestamp: '2024-03-28T23:28:40.036196785Z' + analyticsEvent: + trackIds: + - '12345' + platform: YOUTUBE + type: tracksExported + responses: + '200': + description: Usage report response + content: + application/json: + schema: + $ref: '#/components/schemas/AnalyticsReportResponse' + example: + batchId: '12345' + eventsCount: 10 + '400': + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Bad request + '401': + description: Unauthorized. Most likely your access token has expired. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Invalid credentials + '429': + description: Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Rate limit exceeded + /v0/usage: + post: + tags: + - Reporting + summary: Report usage + operationId: POST_Use + security: + - UserAuth: [] + - EpidemicSoundConnectAuth: [] + description: >- + 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. + requestBody: + description: Usage report + content: + application/json: + schema: + $ref: '#/components/schemas/TrackUsageRequest' + example: + eventType: EXPORTED + platform: OTHER + trackIds: + - trackid1 + - trackid2 + other: OptionalValueForWhenNoMatchingPlatformEnum + responses: + '200': + description: Usage report response + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Ok + '400': + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Bad request + '401': + description: Unauthorized. Most likely your access token has expired. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Invalid credentials + '429': + description: Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Rate limit exceeded + /v0/partner-token: + post: + tags: + - Authentication + summary: Request a partner token + operationId: Authentication_requestPartnerToken + description: Request a Partner Token + requestBody: + description: Token request + content: + application/json: + schema: + $ref: '#/components/schemas/PartnerTokenRequest' + responses: + '201': + description: User access token + content: + application/json: + schema: + $ref: '#/components/schemas/AccessTokenResponse' + example: + accessToken: >- + eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJhdWQiOiJwYXJ0bmVyIiwiaXNzIjoiRXBpZGVtaWMgU291bmQiLCJwYXJ0bmVySWQiOiJlcGlkZW1pY3NvdW5kIiwiZXhwIjoxNjIwMTA4OTg0fQ + '400': + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Bad request + '401': + description: Unauthorized. Most likely your access token has expired. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Invalid credentials + '429': + description: Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Rate limit exceeded + /v0/token: + post: + tags: + - Authentication + summary: Request a user token + operationId: Authentication_requestUserToken + security: + - PartnerAuth: [] + description: >- + Request a User Token. This endpoint requires a Partner Token for + authentication. + requestBody: + description: Token request + content: + application/json: + schema: + $ref: '#/components/schemas/UserTokenRequest' + responses: + '201': + description: User access token + content: + application/json: + schema: + $ref: '#/components/schemas/AccessTokenResponse' + example: + accessToken: >- + eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJ1c2VyVGllciI6ImJhc2VfdGllciIsImF1ZCI6ImVuZC11c2VyIiwiaXNzIjoiRXBpZGVtaWMgU291bmQiLCJwYXJ0bmVySWQiOiJlcGlkZW1pY3NvdW5kIiwiZXhwIjoxNjIwMTA5MDkyLCJ1c2VySWQiOiJ1c2VyX2lkIn0 + '400': + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Bad request + '401': + description: Unauthorized. Most likely your access token has expired. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Invalid credentials + '429': + description: Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Rate limit exceeded + /v0/users/me: + get: + tags: + - Users + summary: User details + operationId: Users_getDetails + security: + - UserAuth: [] + - EpidemicSoundConnectAuth: [] + description: Get user details of the authenticated user. + responses: + '200': + description: End user details + content: + application/json: + schema: + $ref: '#/components/schemas/UserInfo' + example: + userId: b7d04a6f-a2fb-4574-88f9-b5c6f842eac2 + esConnect: false + hasActiveSubscription: null + email: null + '400': + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Bad request + '401': + description: Unauthorized. Most likely your access token has expired. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Invalid credentials + '429': + description: Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Rate limit exceeded + /v0/users/me/subscription: + get: + tags: + - Users + summary: User subscription details + operationId: Users_getSubscriptionDetails + security: + - EpidemicSoundConnectAuth: [] + description: Get subscription details for the authenticated user. + responses: + '200': + description: End user subscription details + content: + application/json: + schema: + $ref: '#/components/schemas/SubscriptionInfo' + example: + epidemicSound: + hasActiveSubscription: true + subscriptionExpiresAt: '2024-04-27T23:28:40Z' + '400': + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Bad request + '401': + description: Unauthorized. Most likely your access token has expired. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Invalid credentials + '429': + description: Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Rate limit exceeded + /v0/users/me/liked/tracks: + get: + tags: + - Users + summary: List users’ liked tracks + operationId: Users_listLikedTracks + security: + - EpidemicSoundConnectAuth: [] + description: >- + 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. + parameters: + - description: >- + 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. + name: offset + in: query + required: false + schema: + type: integer + format: int32 + responses: + '200': + description: Liked Tracks response + content: + application/json: + schema: + $ref: '#/components/schemas/TracksResponse' + example: + tracks: + - title: Happy Song + id: 6rUPerw2poX + mainArtists: + - Main Artist + featuredArtists: + - Featured Artist + bpm: 135 + length: 3123 + moods: + - id: happyX + name: Happy + - id: eccentricX + name: Eccentric + genres: + - id: beatsX + name: Beats + parent: + id: parentX + name: Parent Beats + - id: trapX + name: Trap + images: + default: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/300x300.jpg + L: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/1050x1050.jpg + M: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/600x600.jpg + S: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/300x300.jpg + XS: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/128x128.jpg + waveformUrl: https://pdn.epidemicsound.com/waveforms/1600/394079.json + hasVocals: true + added: '2020-10-10' + isExplicit: false + isPreviewOnly: true + - title: Sad Song + id: 0dZCtol3bsX + mainArtists: + - Main Artist + featuredArtists: + - Featured Artist + bpm: 97 + length: 2976 + moods: + - id: happyX + name: Happy + - id: eccentricX + name: Eccentric + genres: + - id: beatsX + name: Beats + parent: + id: parentX + name: Parent Beats + - id: trapX + name: Trap + images: + default: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/300x300.jpg + L: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/1050x1050.jpg + M: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/600x600.jpg + S: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/300x300.jpg + XS: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/128x128.jpg + waveformUrl: https://pdn.epidemicsound.com/waveforms/1600/394079.json + hasVocals: true + added: '2020-10-10' + isExplicit: false + isPreviewOnly: true + pagination: + page: 2 + limit: 25 + offset: 25 + links: + next: /v0/users/me/liked/tracks?limit=25&offset=50 + prev: /v0/users/me/liked/tracks?limit=25&offset=0 + '400': + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Bad request + '401': + description: Unauthorized. Most likely your access token has expired. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Invalid credentials + '429': + description: Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Rate limit exceeded +components: + parameters: + collectionId: + description: Collection id + name: collectionId + in: path + required: true + schema: + type: string + excludeField: + description: Add parameter if tracks should be excluded in the response + name: excludeField + in: query + required: false + schema: + type: string + enum: + - tracks + expand: + description: Add parameter if tracks should be included in the response + name: expand + in: query + required: false + schema: + type: string + enum: + - tracks + genre: + description: Id for genre + name: genre + in: query + required: false + schema: + type: array + items: + type: string + term: + description: Term for search + name: term + in: query + required: false + schema: + type: string + mood: + description: Id for mood + name: mood + in: query + required: false + schema: + type: array + items: + type: string + limit: + description: Max number of entries returned in the response, default 50 and max 100 + name: limit + in: query + required: false + schema: + type: integer + format: int32 + offset: + description: Index of the entry track in the response + name: offset + in: query + required: false + schema: + type: integer + format: int32 + bpmMin: + description: BPM Min + name: bpmMin + in: query + required: false + schema: + type: integer + format: int32 + bpmMax: + description: BPM Max + name: bpmMax + in: query + required: false + schema: + type: integer + format: int32 + trackId: + description: Track id + name: trackId + in: path + required: true + schema: + type: string + imageId: + description: Image id + name: imageId + in: path + required: true + schema: + type: string + checksum: + description: File checksum + name: checksum + in: path + required: true + schema: + type: string + audioIdOrChecksum: + description: Audio upload id or checksum of audio file + name: audioIdOrChecksum + in: path + required: true + schema: + type: string + moodId: + description: Mood id + name: moodId + in: path + required: true + schema: + type: string + genreId: + description: Genre id + name: genreId + in: path + required: true + schema: + type: string + categoryId: + description: Category id + name: categoryId + in: path + required: true + schema: + type: string + format: uuid + format: + description: Track format + name: format + in: query + required: false + schema: + type: string + enum: + - mp3 + quality: + description: Track quality, normal is used as the default if not specified + name: quality + in: query + required: false + schema: + type: string + enum: + - normal + - high + default: normal + sort: + description: 'Sorting options. Available values: alphabetic, relevance' + name: sort + in: query + required: false + schema: + type: string + enum: + - alphabetic + - relevance + default: relevance + order: + description: 'Order options. Available values: asc, desc' + name: order + in: query + required: false + schema: + type: string + enum: + - asc + - desc + default: asc + type: + description: |- + Types to filter by: + * `all` - all the objects in the Epidemic Sound library + * `partner-tier` - objects available to the partner within their tier + * `featured` - only objects featured and curated by Epidemic Sound + name: type + in: query + required: false + schema: + type: string + enum: + - all + - featured + - partner-tier + default: all + duration: + description: The highlight duration in seconds + name: duration + in: query + required: false + schema: + type: array + items: + type: integer + format: int32 + schemas: + TrackResponse: + required: + - added + - bpm + - featuredArtists + - genres + - id + - length + - mainArtists + - moods + - title + - waveformUrl + type: object + properties: + title: + description: Title of the track + type: string + id: + description: Unique ID of the track + type: string + mainArtists: + description: The main artist that created the track. + type: array + items: + description: The main artist that created the track. + type: string + featuredArtists: + description: Additional artists that contributed to the track. + type: array + items: + description: Additional artists that contributed to the track. + type: string + bpm: + description: Beats per minute for the track. + type: integer + format: int32 + length: + description: Track length in seconds + type: integer + format: int32 + moods: + description: Lists the moods of the track. + type: array + items: + $ref: '#/components/schemas/MoodResponse' + genres: + description: Lists the genres of the track. + type: array + items: + $ref: '#/components/schemas/GenreResponse' + images: + $ref: '#/components/schemas/ImagesResponse' + waveformUrl: + description: Reference to the waveform as a json object. + type: string + hasVocals: + description: >- + Set to true if the track has vocals. Set to false for instrumental + tracks. + type: boolean + nullable: true + added: + description: The date the track was released in the format YYYY-mm-dd. + type: string + tierOption: + type: string + nullable: true + enum: + - PAID + - FREE + isExplicit: + type: boolean + nullable: true + isPreviewOnly: + type: boolean + MoodResponse: + required: + - id + - name + type: object + properties: + id: + description: Unique ID of the mood + type: string + name: + description: Name of the mood + type: string + MoodImagesResponse: + type: object + properties: + default: + type: string + nullable: true + L: + type: string + nullable: true + M: + type: string + nullable: true + S: + type: string + nullable: true + XS: + type: string + nullable: true + ParentGenreResponse: + required: + - id + - name + type: object + properties: + id: + description: Unique ID of the parent genre + type: string + name: + description: Name of the parent genre + type: string + GenreResponse: + required: + - id + - name + type: object + properties: + id: + type: string + name: + type: string + parent: + $ref: '#/components/schemas/ParentGenreResponse' + GenreImagesResponse: + type: object + properties: + default: + type: string + L: + type: string + nullable: true + M: + type: string + nullable: true + S: + type: string + nullable: true + XS: + type: string + nullable: true + TrackMoodsResponse: + required: + - moods + type: object + properties: + moods: + type: array + items: + $ref: '#/components/schemas/MoodResponse' + TrackGenresResponse: + required: + - genres + type: object + properties: + genres: + type: array + items: + $ref: '#/components/schemas/GenreResponse' + GenreResponseWithChildren: + required: + - children + - id + - name + type: object + properties: + id: + type: string + name: + type: string + parent: + $ref: '#/components/schemas/ParentGenreResponse' + children: + type: array + items: + $ref: '#/components/schemas/GenreResponse' + images: + $ref: '#/components/schemas/GenreImagesResponse' + tracks: + $ref: '#/components/schemas/TracksResponse' + TrackParametersResponse: + required: + - genres + - moods + type: object + properties: + genres: + type: array + items: + $ref: '#/components/schemas/GenreResponse' + moods: + type: array + items: + $ref: '#/components/schemas/MoodResponse' + MoodsPaginatedResponseWithImages: + required: + - links + - moods + - pagination + type: object + properties: + moods: + type: array + items: + $ref: '#/components/schemas/MoodResponseWithImages' + pagination: + $ref: '#/components/schemas/Pagination' + links: + $ref: '#/components/schemas/PaginationLinks' + MoodResponseWithImages: + required: + - id + - name + type: object + properties: + id: + type: string + name: + type: string + images: + $ref: '#/components/schemas/MoodImagesResponse' + tracks: + $ref: '#/components/schemas/TracksResponse' + GenresWithImagesPaginatedResponse: + required: + - genres + - links + - pagination + type: object + properties: + genres: + type: array + items: + $ref: '#/components/schemas/GenreResponseWithImages' + pagination: + $ref: '#/components/schemas/Pagination' + links: + $ref: '#/components/schemas/PaginationLinks' + GenreResponseWithImages: + required: + - id + - name + type: object + properties: + id: + type: string + name: + type: string + parent: + $ref: '#/components/schemas/ParentGenreResponseWithImages' + images: + $ref: '#/components/schemas/GenreImagesResponse' + ParentGenreResponseWithImages: + required: + - id + - name + type: object + properties: + id: + type: string + name: + type: string + images: + $ref: '#/components/schemas/GenreImagesResponse' + TrackSectionPaginatedResponse: + required: + - links + - pagination + - trackSections + type: object + properties: + trackSections: + type: array + items: + $ref: '#/components/schemas/TrackSectionResponse' + pagination: + $ref: '#/components/schemas/Pagination' + links: + $ref: '#/components/schemas/PaginationLinks' + DownloadResponse: + required: + - expires + - url + type: object + properties: + url: + type: string + expires: + type: string + HLSDownloadResponse: + required: + - cookie + - url + type: object + properties: + url: + type: string + cookie: + $ref: '#/components/schemas/HLSCookieResponse' + HLSCookieResponse: + required: + - domain + - expires + - name + - path + - value + type: object + properties: + name: + type: string + domain: + type: string + path: + type: string + value: + type: string + expires: + type: string + HighlightsResponse: + required: + - highlights + type: object + properties: + highlights: + type: array + items: + $ref: '#/components/schemas/HighlightSectionResponse' + HighlightSectionResponse: + required: + - duration + - from + - to + type: object + properties: + from: + type: integer + format: int32 + to: + type: integer + format: int32 + duration: + type: integer + format: int32 + TracksResponse: + required: + - links + - pagination + - tracks + type: object + properties: + tracks: + type: array + items: + $ref: '#/components/schemas/TrackResponse' + pagination: + $ref: '#/components/schemas/Pagination' + links: + $ref: '#/components/schemas/PaginationLinks' + aggregations: + $ref: '#/components/schemas/TaxonomyAggregations' + SearchSuggestionsResponse: + type: object + properties: + suggestions: + type: array + items: + $ref: '#/components/schemas/Option' + Option: + type: object + properties: + type: + type: string + enum: + - TEXT + Pagination: + required: + - limit + - page + type: object + properties: + page: + type: integer + format: int32 + limit: + type: integer + format: int32 + offset: + type: integer + format: int32 + PaginationLinks: + type: object + properties: + next: + type: string + nullable: true + prev: + type: string + nullable: true + AccessTokenResponse: + required: + - accessToken + type: object + properties: + accessToken: + type: string + CollectionPaginatedResponse: + required: + - id + - images + - links + - name + - pagination + - tracks + type: object + properties: + id: + type: string + format: uuid + name: + type: string + tracks: + type: array + items: + $ref: '#/components/schemas/TrackResponse' + availableTracks: + type: integer + format: int32 + nullable: true + pagination: + $ref: '#/components/schemas/Pagination' + links: + $ref: '#/components/schemas/PaginationLinks' + images: + $ref: '#/components/schemas/CollectionImagesPublicResponse' + CollectionResponse: + required: + - id + - images + - name + - tracks + type: object + properties: + id: + description: Unique ID of the track. + type: string + format: uuid + name: + description: Name of the collection + type: string + tracks: + type: array + items: + $ref: '#/components/schemas/TrackResponse' + availableTracks: + description: Number of available tracks based on the partner's tier + type: integer + format: int32 + nullable: true + images: + $ref: '#/components/schemas/CollectionImagesPublicResponse' + CollectionImagesPublicResponse: + required: + - default + type: object + properties: + default: + type: string + L: + type: string + nullable: true + M: + type: string + nullable: true + S: + type: string + nullable: true + XS: + type: string + nullable: true + CollectionsPaginatedResponse: + required: + - collections + - links + - pagination + type: object + properties: + collections: + type: array + items: + $ref: '#/components/schemas/CollectionResponse' + pagination: + $ref: '#/components/schemas/Pagination' + links: + $ref: '#/components/schemas/PaginationLinks' + ImagesResponse: + type: object + properties: + default: + type: string + nullable: true + L: + type: string + nullable: true + M: + type: string + nullable: true + S: + type: string + nullable: true + XS: + type: string + nullable: true + TrackFormat: + type: string + enum: + - mp3 + PartnerTokenRequest: + required: + - accessKeyId + - accessKeySecret + type: object + properties: + accessKeyId: + type: string + accessKeySecret: + type: string + TrackSectionResponse: + required: + - end + - start + - track + type: object + properties: + track: + $ref: '#/components/schemas/TrackResponse' + start: + type: integer + format: int32 + end: + type: integer + format: int32 + UserTokenRequest: + required: + - userId + type: object + properties: + userId: + description: End user id. UUID, numeric or matching ^[a-zA-Z0-9_-]+$ + type: string + example: 4fbd5793-efcd-4545-b4e9-807c8ed9e2a3 + MessageResponse: + required: + - message + type: object + properties: + message: + description: Human readable message + type: string + errors: + type: array + items: + $ref: '#/components/schemas/Error' + Error: + required: + - key + - messages + type: object + properties: + key: + description: Error key + type: string + messages: + description: Error messages + type: array + items: + description: Error messages + type: string + TrackUsageRequest: + required: + - platform + - trackIds + type: object + properties: + eventType: + type: string + enum: + - EXPORTED + platform: + type: string + enum: + - YOUTUBE + - TWITTER + - TWITCH + - FACEBOOK + - INSTAGRAM + - TIKTOK + - OTHER + - LOCAL + trackIds: + type: array + items: + type: string + other: + type: string + nullable: true + UserInfo: + required: + - esConnect + - userId + type: object + properties: + userId: + description: >- + is the userId given in the User Token if not ES Connect + authenticated or + + the ES Connect user id if user is authenticated against ES Connect. + type: string + esConnect: + description: |- + is false for a not ES Connect authenticated user but + is true for a ES Connect authenticated user. + type: boolean + hasActiveSubscription: + description: |- + is true if the user has an active subscription but + is false if the user has no active subscription. + Returns null if the user is not ES Connect authenticated. + type: boolean + nullable: true + email: + description: >- + email value will present only for the Epidemic Sound users and will + be null otherwise + type: string + nullable: true + SubscriptionInfo: + required: + - epidemicSound + type: object + properties: + epidemicSound: + $ref: '#/components/schemas/SubscriptionInfoDetail' + SubscriptionInfoDetail: + required: + - hasActiveSubscription + - subscriptionExpiresAt + type: object + properties: + hasActiveSubscription: + description: >- + is true if the user has an active subscription and false if the user + has no active subscription. + type: boolean + subscriptionExpiresAt: + description: >- + if the subscription has been canceled, but is not yet expired, this + will return the expiry datetime. In all + + other cases this will be null. + type: string + format: date-time + nullable: true + AnalyticsReportRequest: + required: + - events + type: object + properties: + events: + type: array + items: + $ref: '#/components/schemas/AnalyticsReportEvent' + AnalyticsReportEvent: + type: object + properties: + userId: + type: string + timestamp: + type: string + format: date-time + userConnected: + type: boolean + nullable: true + analyticsEvent: + $ref: '#/components/schemas/AnalyticsEvent' + TrackPreviewedEvent: + type: object + properties: + trackId: + type: string + type: + type: string + enum: + - trackPreviewed + TrackDownloadedEvent: + type: object + properties: + trackId: + type: string + format: + type: string + enum: + - mp3 + - hls + - hls_with_cookie + quality: + type: string + enum: + - normal + - high + type: + type: string + enum: + - trackDownloaded + TracksExportedEvent: + type: object + properties: + trackIds: + type: array + items: + type: string + platform: + type: string + enum: + - YOUTUBE + - TWITTER + - TWITCH + - FACEBOOK + - INSTAGRAM + - TIKTOK + - OTHER + - LOCAL + type: + type: string + enum: + - tracksExported + AnalyticsEvent: + type: object + oneOf: + - $ref: '#/components/schemas/TrackPreviewedEvent' + - $ref: '#/components/schemas/TrackDownloadedEvent' + - $ref: '#/components/schemas/TracksExportedEvent' + AnalyticsReportResponse: + required: + - batchId + - eventsCount + type: object + properties: + batchId: + type: string + eventsCount: + type: integer + format: int32 + UploadUserImageResponse: + required: + - expirationDate + - imageId + type: object + properties: + imageId: + type: string + format: uuid + expirationDate: + type: string + format: date-time + PartnerAudioResponse: + required: + - audioUploadId + - expires + - length + type: object + properties: + audioUploadId: + type: string + format: uuid + length: + type: number + format: double + expires: + type: string + format: date-time + PartnerAudioDeleteResponse: + required: + - audioFilesRemoved + type: object + properties: + audioFilesRemoved: + type: array + items: + type: string + format: uuid + SoundEffectCategoriesResponse: + required: + - categories + - links + - pagination + type: object + properties: + categories: + type: array + items: + $ref: '#/components/schemas/SoundEffectCategoryWithParentResponse' + pagination: + $ref: '#/components/schemas/Pagination' + links: + $ref: '#/components/schemas/PaginationLinks' + SoundEffectCategoryWithParentResponse: + required: + - id + - name + - numTracks + type: object + properties: + id: + type: string + format: uuid + name: + type: string + numTracks: + type: integer + format: int32 + images: + $ref: '#/components/schemas/ImagesResponse' + parent: + $ref: '#/components/schemas/RelatedSoundEffectCategoryResponse' + SoundEffectCategoryWithRelativesResponse: + required: + - id + - name + - numTracks + type: object + properties: + id: + type: string + format: uuid + name: + type: string + numTracks: + type: integer + format: int32 + images: + $ref: '#/components/schemas/ImagesResponse' + parent: + $ref: '#/components/schemas/RelatedSoundEffectCategoryResponse' + children: + type: array + items: + $ref: '#/components/schemas/RelatedSoundEffectCategoryResponse' + RelatedSoundEffectCategoryResponse: + required: + - id + - name + type: object + properties: + id: + type: string + format: uuid + name: + type: string + CategoryResponse: + required: + - id + - name + type: object + properties: + id: + type: string + format: uuid + name: + type: string + SoundEffectResponse: + required: + - added + - categories + - id + - length + - title + type: object + properties: + title: + type: string + id: + type: string + added: + type: string + format: date-time + length: + type: integer + format: int32 + images: + $ref: '#/components/schemas/ImagesResponse' + categories: + type: array + items: + $ref: '#/components/schemas/CategoryResponse' + PaginatedSoundEffectsResponse: + required: + - links + - pagination + - soundEffects + type: object + properties: + soundEffects: + type: array + items: + $ref: '#/components/schemas/SoundEffectResponse' + pagination: + $ref: '#/components/schemas/Pagination' + links: + $ref: '#/components/schemas/PaginationLinks' + TrackBeatsResponse: + type: object + properties: + beats: + type: array + items: + $ref: '#/components/schemas/TrackBeatSegmentResponse' + TrackBeatSegmentResponse: + type: object + properties: + time: + type: number + format: double + value: + type: string + TaxonomyAggregations: + type: object + properties: + moods: + type: array + items: + $ref: '#/components/schemas/TaxonomyAggregation' + genres: + type: array + items: + $ref: '#/components/schemas/TaxonomyAggregation' + TaxonomyAggregation: + type: object + properties: + id: + type: string + name: + type: string + count: + type: integer + format: int32 + AssetsUploadAudioFileRequest: + type: object + properties: + file: + type: string + format: binary + AssetsUploadImageForRecommendationRequest: + type: object + properties: + file: + type: string + format: binary + securitySchemes: + PartnerAuth: + description: >- + Partner authentication is handled with short lived partner access + tokens. + + Use your api credentials to request these tokens. + + The access token is of JWT format and should be passed in a header with + your API requests: + + + > **Example Header:** `Authorization: Bearer your-partner-token` + type: http + scheme: Bearer + UserAuth: + description: |- + User authentication is handled with short lived user access tokens. + Use a partner token to request these tokens. + The access token is of JWT format and should be passed in a header with your API requests: + + > **Example Header:** `Authorization: Bearer a-user-token` + type: http + scheme: Bearer + EpidemicSoundConnectAuth: + description: >- + For users signing in with an Epidemic Sound account, user authentication + is + + handled with OpenID Connect, which is a layer on top of OAuth 2.0. + + + > **Example Header:** `Authorization: Bearer es-connect-token` + type: oauth2 + flows: + authorizationCode: + authorizationUrl: >- + https://login.epidemicsound.com/auth/realms/accounts/protocol/openid-connect/auth + tokenUrl: >- + https://login.epidemicsound.com/auth/realms/accounts/protocol/openid-connect/token + scopes: {} diff --git a/sdks/db/generate-repository-description-cache/epidemic-sound.json b/sdks/db/generate-repository-description-cache/epidemic-sound.json new file mode 100644 index 000000000..581800093 --- /dev/null +++ b/sdks/db/generate-repository-description-cache/epidemic-sound.json @@ -0,0 +1,3 @@ +{ + "Epidemic Sound has transformed the soundtracking experience for global brands and professional creators, with an expansive catalog of world-class music and sound effects that's seen and heard over 2.5 billion times a day around the globe. \n\nProviding a direct license model that comes with all rights included and next-generation soundtracking tools, Epidemic Sound empowers creators to unlock more feeling in everything they create and share their stories with the world. Epidemic Sound continuously enriches its world-class catalog of music by teaming up with artists, composers, and producers to create tracks spanning all genres, while supporting them financially and creatively.": "Epidemic Sound offers a vast catalog of music and sound effects with a direct license model for creators worldwide. Enriched by collaborations with artists and producers, it empowers creators to share their stories through next-generation soundtracking tools. Epidemic Sound's {language} SDK generated by Konfig (https://konfigthis.com/)." +} \ No newline at end of file diff --git a/sdks/db/intermediate-fixed-specs/epidemic-sound/openapi.yaml b/sdks/db/intermediate-fixed-specs/epidemic-sound/openapi.yaml new file mode 100644 index 000000000..c798c8fad --- /dev/null +++ b/sdks/db/intermediate-fixed-specs/epidemic-sound/openapi.yaml @@ -0,0 +1,4444 @@ +openapi: 3.0.1 +info: + title: Partner Content API + version: 0.1.17 + description: >- + Epidemic Sound has transformed the soundtracking experience for global + brands and professional creators, with an expansive catalog of world-class + music and sound effects that's seen and heard over 2.5 billion times a day + around the globe. + + + Providing a direct license model that comes with all rights included and + next-generation soundtracking tools, Epidemic Sound empowers creators to + unlock more feeling in everything they create and share their stories with + the world. Epidemic Sound continuously enriches its world-class catalog of + music by teaming up with artists, composers, and producers to create tracks + spanning all genres, while supporting them financially and creatively. +servers: + - url: https://partner-content-api.epidemicsound.com + description: Epidemic Sound Content API +tags: + - name: Authentication + description: Endpoints for user authentication. + - name: Browse & search + description: >- + 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. + - name: Tracks + description: Endpoints to get track specific information. + - name: Sound effects + description: >- + Endpoints to get sound effect specific information. These endpoints allow + you to build a UI to browse and search for sound effects. + - name: Reporting + description: >- + These endpoints will allow you to report how tracks are used in your + application. + - name: Users + description: >- + These endpoints allows your application to get user specific information + such as liked sounds. + - name: Assets + description: >- + These endpoints allows your application to upload assets such as images or + audio. +paths: + /v0/collections: + get: + tags: + - Browse & search + summary: List collections with tracks + description: >- + 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. + operationId: GET_Collections + parameters: + - $ref: '#/components/parameters/excludeField' + - name: limit + in: query + description: >- + Max number of entries returned in the response, default 10 and max + 20 + required: false + schema: + type: integer + format: int32 + - $ref: '#/components/parameters/offset' + responses: + '200': + description: Collection response + content: + application/json: + schema: + $ref: '#/components/schemas/CollectionsPaginatedResponse' + example: + 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: + default: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/300x300.jpg + L: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/1050x1050.jpg + M: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/600x600.jpg + S: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/300x300.jpg + XS: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/128x128.jpg + waveformUrl: >- + https://pdn.epidemicsound.com/waveforms/1600/394079.json + hasVocals: true + added: '2020-10-10' + isExplicit: false + isPreviewOnly: true + availableTracks: 1 + images: + default: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/default/300x300.jpg + L: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/default/1050x1050.jpg + M: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/default/600x600.jpg + S: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/default/300x300.jpg + XS: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/default/128x128.jpg + - 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: + default: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/300x300.jpg + L: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/1050x1050.jpg + M: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/600x600.jpg + S: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/300x300.jpg + XS: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/128x128.jpg + waveformUrl: >- + https://pdn.epidemicsound.com/waveforms/1600/394079.json + hasVocals: true + added: '2020-10-10' + isExplicit: false + isPreviewOnly: true + availableTracks: 1 + images: + default: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/default/300x300.jpg + L: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/default/1050x1050.jpg + M: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/default/600x600.jpg + S: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/default/300x300.jpg + XS: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/default/128x128.jpg + pagination: + page: 3 + limit: 20 + offset: 40 + links: + next: /v0/collections?limit=20&offset=60 + prev: /v0/collections?limit=20&offset=20 + '401': + description: Unauthorized. Most likely your access token has expired. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Invalid credentials + '429': + description: Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Rate limit exceeded + security: + - UserAuth: [] + - EpidemicSoundConnectAuth: [] + /v0/collections/{collectionId}: + get: + tags: + - Browse & search + summary: List all tracks in a collection + description: >- + The collections endpoint allows you to list all the tracks in a specific + collection. + operationId: GET_Collection + parameters: + - $ref: '#/components/parameters/collectionId' + - $ref: '#/components/parameters/limit' + - $ref: '#/components/parameters/offset' + responses: + '200': + description: Collection response + content: + application/json: + schema: + $ref: '#/components/schemas/CollectionPaginatedResponse' + example: + 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: + default: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/300x300.jpg + L: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/1050x1050.jpg + M: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/600x600.jpg + S: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/300x300.jpg + XS: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/128x128.jpg + waveformUrl: https://pdn.epidemicsound.com/waveforms/1600/394079.json + 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: + default: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/default/300x300.jpg + L: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/default/1050x1050.jpg + M: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/default/600x600.jpg + S: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/default/300x300.jpg + XS: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/default/128x128.jpg + '400': + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Bad request + '401': + description: Unauthorized. Most likely your access token has expired. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Invalid credentials + '404': + description: Collection was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Collection was not found + '429': + description: Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Rate limit exceeded + security: + - UserAuth: [] + - EpidemicSoundConnectAuth: [] + /v0/tracks: + get: + tags: + - Tracks + summary: List tracks based on mood, genre or BPM + description: >- + The tracks endpoint allows you to list all tracks based on a specified + mood, genre or BPM. + operationId: GET_Tracks + parameters: + - $ref: '#/components/parameters/genre' + - $ref: '#/components/parameters/mood' + - $ref: '#/components/parameters/bpmMin' + - $ref: '#/components/parameters/bpmMax' + - $ref: '#/components/parameters/limit' + - $ref: '#/components/parameters/offset' + responses: + '200': + description: Tracks response + content: + application/json: + schema: + $ref: '#/components/schemas/TracksResponse' + example: + 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: + default: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/300x300.jpg + L: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/1050x1050.jpg + M: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/600x600.jpg + S: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/300x300.jpg + XS: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/128x128.jpg + waveformUrl: https://pdn.epidemicsound.com/waveforms/1600/394079.json + 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: + default: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/300x300.jpg + L: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/1050x1050.jpg + M: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/600x600.jpg + S: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/300x300.jpg + XS: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/128x128.jpg + waveformUrl: https://pdn.epidemicsound.com/waveforms/1600/394079.json + 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 + '400': + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Bad request + '401': + description: Unauthorized. Most likely your access token has expired. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Invalid credentials + '429': + description: Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Rate limit exceeded + security: + - UserAuth: [] + - EpidemicSoundConnectAuth: [] + /v0/tracks/search: + get: + tags: + - Browse & search + summary: Search for tracks + description: >- + 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. + operationId: GET_Tracks_Search + parameters: + - $ref: '#/components/parameters/offset' + - $ref: '#/components/parameters/limit' + - $ref: '#/components/parameters/term' + - $ref: '#/components/parameters/genre' + - $ref: '#/components/parameters/mood' + - name: sort + in: query + description: Sort for search + required: false + schema: + type: string + enum: + - Relevance + - Date + - Title + default: Relevance + - name: order + in: query + description: Order + required: false + schema: + type: string + enum: + - Asc + - Desc + default: Asc + responses: + '200': + description: Tracks response + content: + application/json: + schema: + $ref: '#/components/schemas/TracksResponse' + example: + 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: + default: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/300x300.jpg + L: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/1050x1050.jpg + M: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/600x600.jpg + S: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/300x300.jpg + XS: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/128x128.jpg + waveformUrl: https://pdn.epidemicsound.com/waveforms/1600/394079.json + 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: + default: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/300x300.jpg + L: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/1050x1050.jpg + M: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/600x600.jpg + S: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/300x300.jpg + XS: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/128x128.jpg + waveformUrl: https://pdn.epidemicsound.com/waveforms/1600/394079.json + hasVocals: true + added: '2020-10-10' + isExplicit: false + isPreviewOnly: true + pagination: + page: 2 + limit: 25 + offset: 25 + links: + next: /v0/tracks/search?limit=25&offset=50 + prev: /v0/tracks/search?limit=25&offset=0 + aggregations: + moods: + - id: energetic + name: Energetic + count: 1 + genres: + - id: rock + name: Rock + count: 1 + '400': + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Bad request + '401': + description: Unauthorized. Most likely your access token has expired. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Invalid credentials + '403': + description: >- + Forbidden. Only available for ES Connect tokens or User tokens when + the app allows to preview tracks. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Forbidden + '429': + description: Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Rate limit exceeded + '503': + description: Service unavailable + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Service unavailable + security: + - UserAuth: [] + - EpidemicSoundConnectAuth: [] + /v0/tracks/search/suggestions: + get: + tags: + - Browse & search + summary: Search tracks suggestions + description: >- + The search suggestions endpoint allows your users to get autocomplete + suggestions for Epidemic Sound music + operationId: GET_Tracks_Search_suggestions + parameters: + - $ref: '#/components/parameters/term' + responses: + '200': + description: Tracks Search Suggestions response + content: + application/json: + schema: + $ref: '#/components/schemas/SearchSuggestionsResponse' + example: + suggestions: + - value: rock + type: TEXT + - value: rocker + type: TEXT + - value: rock n roll + type: TEXT + '400': + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Bad request + '401': + description: Unauthorized. Most likely your access token has expired. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Invalid credentials + '403': + description: >- + Forbidden. Only available for ES Connect tokens or User tokens when + the app allows to preview tracks. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Forbidden + '429': + description: Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Rate limit exceeded + '503': + description: Service unavailable + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Service unavailable + security: + - UserAuth: [] + - EpidemicSoundConnectAuth: [] + /v0/tracks/parameters: + get: + tags: + - Tracks + summary: List track parameters + description: Get a list of possible track query parameters + operationId: GET_Track_Parameters + responses: + '200': + description: Track parameters response + content: + application/json: + schema: + $ref: '#/components/schemas/TrackParametersResponse' + example: + 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 + '401': + description: Unauthorized. Most likely your access token has expired. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Invalid credentials + '429': + description: Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Rate limit exceeded + security: + - UserAuth: [] + - EpidemicSoundConnectAuth: [] + /v0/moods: + get: + tags: + - Browse & search + summary: List moods + description: >- + 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. + operationId: GET_All_Moods + parameters: + - $ref: '#/components/parameters/sort' + - $ref: '#/components/parameters/order' + - $ref: '#/components/parameters/type' + - name: limit + in: query + description: >- + Max number of entries returned in the response, default 20 and max + 20 + required: false + schema: + type: integer + format: int32 + - $ref: '#/components/parameters/offset' + responses: + '200': + description: Track moods response + content: + application/json: + schema: + $ref: '#/components/schemas/MoodsPaginatedResponseWithImages' + example: + moods: + - id: energetic + name: Epic + images: + default: >- + https://images.ctfassets.net/ojtnytzl1djm/3IWOMuMQtqXI01euQ43r6d/19761430ed16d9d35b94b71cb4693c80/Epic.jpg?w=300&h=300&fit=fill&q=90&fm=jpg + L: >- + https://images.ctfassets.net/ojtnytzl1djm/3IWOMuMQtqXI01euQ43r6d/19761430ed16d9d35b94b71cb4693c80/Epic.jpg?w=1050&h=1050&fit=fill&q=90&fm=jpg + M: >- + https://images.ctfassets.net/ojtnytzl1djm/3IWOMuMQtqXI01euQ43r6d/19761430ed16d9d35b94b71cb4693c80/Epic.jpg?w=600&h=600&fit=fill&q=90&fm=jpg + S: >- + https://images.ctfassets.net/ojtnytzl1djm/3IWOMuMQtqXI01euQ43r6d/19761430ed16d9d35b94b71cb4693c80/Epic.jpg?w=300&h=300&fit=fill&q=90&fm=jpg + XS: >- + https://images.ctfassets.net/ojtnytzl1djm/3IWOMuMQtqXI01euQ43r6d/19761430ed16d9d35b94b71cb4693c80/Epic.jpg?w=128&h=128&fit=fill&q=90&fm=jpg + - id: happy + name: Happy + images: + default: >- + https://images.ctfassets.net/ojtnytzl1djm/2u0eIu3GfevvONKEVc0NEi/f0db82add464ad37ec90406c8ab7cab1/Happy.png?w=300&h=300&fit=fill&q=90&fm=jpg + L: >- + https://images.ctfassets.net/ojtnytzl1djm/2u0eIu3GfevvONKEVc0NEi/f0db82add464ad37ec90406c8ab7cab1/Happy.png?w=1050&h=1050&fit=fill&q=90&fm=jpg + M: >- + https://images.ctfassets.net/ojtnytzl1djm/2u0eIu3GfevvONKEVc0NEi/f0db82add464ad37ec90406c8ab7cab1/Happy.png?w=600&h=600&fit=fill&q=90&fm=jpg + S: >- + https://images.ctfassets.net/ojtnytzl1djm/2u0eIu3GfevvONKEVc0NEi/f0db82add464ad37ec90406c8ab7cab1/Happy.png?w=300&h=300&fit=fill&q=90&fm=jpg + XS: >- + https://images.ctfassets.net/ojtnytzl1djm/2u0eIu3GfevvONKEVc0NEi/f0db82add464ad37ec90406c8ab7cab1/Happy.png?w=128&h=128&fit=fill&q=90&fm=jpg + pagination: + page: 1 + limit: 20 + offset: 0 + links: {} + '401': + description: Unauthorized. Most likely your access token has expired. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Invalid credentials + '429': + description: Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Rate limit exceeded + security: + - UserAuth: [] + - EpidemicSoundConnectAuth: [] + /v0/moods/{moodId}: + get: + tags: + - Browse & search + summary: Mood by ID + description: Get mood details + operationId: GET_Mood_details + parameters: + - $ref: '#/components/parameters/moodId' + - $ref: '#/components/parameters/expand' + - $ref: '#/components/parameters/limit' + - $ref: '#/components/parameters/offset' + responses: + '200': + description: Track mood response + content: + application/json: + schema: + $ref: '#/components/schemas/MoodResponseWithImages' + example: + id: happy + name: Happy + images: + default: >- + https://images.ctfassets.net/ojtnytzl1djm/2u0eIu3GfevvONKEVc0NEi/f0db82add464ad37ec90406c8ab7cab1/Happy.png?w=300&h=300&fit=fill&q=90&fm=jpg + L: >- + https://images.ctfassets.net/ojtnytzl1djm/2u0eIu3GfevvONKEVc0NEi/f0db82add464ad37ec90406c8ab7cab1/Happy.png?w=1050&h=1050&fit=fill&q=90&fm=jpg + M: >- + https://images.ctfassets.net/ojtnytzl1djm/2u0eIu3GfevvONKEVc0NEi/f0db82add464ad37ec90406c8ab7cab1/Happy.png?w=600&h=600&fit=fill&q=90&fm=jpg + S: >- + https://images.ctfassets.net/ojtnytzl1djm/2u0eIu3GfevvONKEVc0NEi/f0db82add464ad37ec90406c8ab7cab1/Happy.png?w=300&h=300&fit=fill&q=90&fm=jpg + XS: >- + https://images.ctfassets.net/ojtnytzl1djm/2u0eIu3GfevvONKEVc0NEi/f0db82add464ad37ec90406c8ab7cab1/Happy.png?w=128&h=128&fit=fill&q=90&fm=jpg + '401': + description: Unauthorized. Most likely your access token has expired. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Invalid credentials + '404': + description: Mood was not found + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Mood was not found + '429': + description: Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Rate limit exceeded + security: + - UserAuth: [] + - EpidemicSoundConnectAuth: [] + /v0/genres: + get: + tags: + - Browse & search + summary: List genres + description: >- + 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. + operationId: GET_All_Genres + parameters: + - $ref: '#/components/parameters/sort' + - $ref: '#/components/parameters/order' + - $ref: '#/components/parameters/type' + - name: limit + in: query + description: >- + Max number of entries returned in the response, default 20 and max + 20 + required: false + schema: + type: integer + format: int32 + - $ref: '#/components/parameters/offset' + responses: + '200': + description: Track genres response + content: + application/json: + schema: + $ref: '#/components/schemas/GenresWithImagesPaginatedResponse' + example: + genres: + - id: beats + name: Beats + images: + default: >- + https://images.ctfassets.net/ojtnytzl1djm/4Mm4kJ9nwasLwZpQ54472a/90f35901413025d5a627fa132f6c2b56/Beats.jpg?w=300&h=300&fit=fill&q=90&fm=jpg + L: >- + https://images.ctfassets.net/ojtnytzl1djm/4Mm4kJ9nwasLwZpQ54472a/90f35901413025d5a627fa132f6c2b56/Beats.jpg?w=1050&h=1050&fit=fill&q=90&fm=jpg + M: >- + https://images.ctfassets.net/ojtnytzl1djm/4Mm4kJ9nwasLwZpQ54472a/90f35901413025d5a627fa132f6c2b56/Beats.jpg?w=600&h=600&fit=fill&q=90&fm=jpg + S: >- + https://images.ctfassets.net/ojtnytzl1djm/4Mm4kJ9nwasLwZpQ54472a/90f35901413025d5a627fa132f6c2b56/Beats.jpg?w=300&h=300&fit=fill&q=90&fm=jpg + XS: >- + https://images.ctfassets.net/ojtnytzl1djm/4Mm4kJ9nwasLwZpQ54472a/90f35901413025d5a627fa132f6c2b56/Beats.jpg?w=128&h=128&fit=fill&q=90&fm=jpg + pagination: + page: 1 + limit: 20 + offset: 0 + links: {} + '401': + description: Unauthorized. Most likely your access token has expired. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Invalid credentials + '429': + description: Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Rate limit exceeded + security: + - UserAuth: [] + - EpidemicSoundConnectAuth: [] + /v0/genres/{genreId}: + get: + tags: + - Browse & search + summary: Genre details + description: >- + This endpoint gives you the parent and child relationships of a specific + genre as well as all tracks that belong to it. + operationId: GET_Genre_details + parameters: + - $ref: '#/components/parameters/genreId' + - $ref: '#/components/parameters/expand' + - $ref: '#/components/parameters/limit' + - $ref: '#/components/parameters/offset' + responses: + '200': + description: Track genre response + content: + application/json: + schema: + $ref: '#/components/schemas/GenreResponseWithChildren' + example: + 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: + default: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/300x300.jpg + L: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/1050x1050.jpg + M: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/600x600.jpg + S: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/300x300.jpg + XS: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/128x128.jpg + waveformUrl: https://pdn.epidemicsound.com/waveforms/1600/394079.json + 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 + '401': + description: Unauthorized. Most likely your access token has expired. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Invalid credentials + '404': + description: Genre was not found + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Genre was not found + '429': + description: Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Rate limit exceeded + security: + - UserAuth: [] + - EpidemicSoundConnectAuth: [] + /v0/tracks/{trackId}/download: + get: + tags: + - Tracks + summary: Download track + description: >- + 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). + operationId: GET_Download + parameters: + - $ref: '#/components/parameters/trackId' + - $ref: '#/components/parameters/format' + - $ref: '#/components/parameters/quality' + responses: + '200': + description: Information about download url + content: + application/json: + schema: + $ref: '#/components/schemas/DownloadResponse' + example: + url: >- + https://pdn.epidemicsound.com/ES_ITUNES/Happy_Song/ES_Happy_Song.mp3 + expires: '2022-12-22T11:01:48Z' + '400': + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Bad request + '401': + description: Unauthorized. Most likely your access token has expired. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Invalid credentials + '403': + description: User does not have access to download the track. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: User does not have access to download the track + '404': + description: Track was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Track was not found + '429': + description: Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Rate limit exceeded + security: + - UserAuth: [] + - EpidemicSoundConnectAuth: [] + /v0/tracks/{trackId}/beats: + get: + tags: + - Tracks + summary: Beats + description: " 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.\n\n 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.\n\n The response includes two types of metadata: `time` and `value`.\_\n\n `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).\n\n Examples:\n\n 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\n\n However, a waltz has three beats in a bar, and the data would look something like: 1-2-3, 1-2-3\n\n Usage Scenarios:\n\n* Automatically cut a video in sync with the beat\n\n* Adding snap markers aligned with beat timestamps in the UI. " + operationId: GET_Track_Beats + parameters: + - $ref: '#/components/parameters/trackId' + responses: + '200': + description: Beats response + content: + application/json: + schema: + $ref: '#/components/schemas/TrackBeatsResponse' + example: + beats: + - time: 0 + value: '1.0' + - time: 0.62 + value: '2.0' + - time: 1.2 + value: '3.0' + - time: 1.8 + value: '4.0' + '400': + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Bad request + '401': + description: Unauthorized. Most likely your access token has expired. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Invalid credentials + '403': + description: User does not have access to download the track. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: User does not have access to download the track + '404': + description: Track was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Track was not found + '429': + description: Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Rate limit exceeded + security: + - UserAuth: [] + - EpidemicSoundConnectAuth: [] + /v0/tracks/{trackId}/hls: + get: + tags: + - Tracks + summary: Preview track using cookies + description: >- + 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. + operationId: GET_HLS_Download_Data + parameters: + - $ref: '#/components/parameters/trackId' + responses: + '200': + description: HLS download details for the track + content: + application/json: + schema: + $ref: '#/components/schemas/HLSDownloadResponse' + example: + url: >- + https://hls-storage.epidemicsite.com/hls/v1/q4MImKW47D/daefecd205c01496b42ae6950c446c6e/master.m3u8 + 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' + '400': + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Bad request + '401': + description: Unauthorized. Most likely your access token has expired. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Invalid credentials + '404': + description: Track was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Track was not found + '429': + description: Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Rate limit exceeded + security: + - UserAuth: [] + - EpidemicSoundConnectAuth: [] + /v0/tracks/{trackId}/similar: + get: + tags: + - Tracks + summary: Similar tracks + description: >- + 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. + operationId: GET_Similar_tracks + parameters: + - $ref: '#/components/parameters/trackId' + - $ref: '#/components/parameters/offset' + - $ref: '#/components/parameters/limit' + responses: + '200': + description: Paginated list of similar tracks + content: + application/json: + schema: + $ref: '#/components/schemas/TracksResponse' + example: + 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: + default: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/300x300.jpg + L: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/1050x1050.jpg + M: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/600x600.jpg + S: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/300x300.jpg + XS: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/128x128.jpg + waveformUrl: https://pdn.epidemicsound.com/waveforms/1600/394079.json + 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: + default: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/300x300.jpg + L: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/1050x1050.jpg + M: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/600x600.jpg + S: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/300x300.jpg + XS: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/128x128.jpg + waveformUrl: https://pdn.epidemicsound.com/waveforms/1600/394079.json + 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 + '400': + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Bad request + '401': + description: Unauthorized. Most likely your access token has expired. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Invalid credentials + '404': + description: Track was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Track was not found + '429': + description: Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Rate limit exceeded + security: + - UserAuth: [] + - EpidemicSoundConnectAuth: [] + /v0/tracks/similar-sections: + get: + tags: + - Tracks + summary: Similar track segment based on audio file + description: >- + Returns a list of track sections that are matched to the provided audio + file id. + operationId: GET_Similar_Audio_Match_Section_tracks + parameters: + - name: audioUploadId + in: query + description: Reference to the uploaded audio file + required: true + schema: + type: string + format: uuid + - name: start + in: query + description: Start of the section in milliseconds + required: true + schema: + type: integer + format: int32 + - name: end + in: query + description: End of the section in milliseconds + required: true + schema: + type: integer + format: int32 + - $ref: '#/components/parameters/offset' + - $ref: '#/components/parameters/limit' + responses: + '200': + description: Paginated list of similar tracks + content: + application/json: + schema: + $ref: '#/components/schemas/TrackSectionPaginatedResponse' + example: + 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: + default: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/300x300.jpg + L: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/1050x1050.jpg + M: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/600x600.jpg + S: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/300x300.jpg + XS: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/128x128.jpg + waveformUrl: https://pdn.epidemicsound.com/waveforms/1600/394079.json + 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=1ddc0dbc-a65b-4fdb-8f07-5bcda987abb0&limit=20&offset=80&start=0&end=10000 + prev: >- + /v0/tracks/similar-sections?audioUploadId=63abbf39-4197-42c7-bf4f-66024096cd25&limit=20&offset=40&start=0&end=10000 + '400': + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Bad request + '401': + description: Unauthorized. Most likely your access token has expired. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Invalid credentials + '404': + description: Track was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Track was not found + '429': + description: Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Rate limit exceeded + security: + - UserAuth: [] + - EpidemicSoundConnectAuth: [] + /v0/tracks/{trackId}/similar-sections: + get: + tags: + - Tracks + summary: Similar track segment based on trackID + description: >- + 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: + + * Video Editing Templates: Replace default tracks in video templates with segments that fit better. + * Quick Swaps: Swap out a segment of music in a video where the existing track doesn't quite match. + * Creative Iteration: Easily experiment with different music segments to enhance your video's impact. + operationId: GET_Similar_Section_tracks + parameters: + - $ref: '#/components/parameters/trackId' + - name: start + in: query + description: Start of the section in milliseconds + required: true + schema: + type: integer + format: int32 + - name: end + in: query + description: End of the section in milliseconds + required: true + schema: + type: integer + format: int32 + - $ref: '#/components/parameters/offset' + - $ref: '#/components/parameters/limit' + responses: + '200': + description: Paginated list of similar tracks + content: + application/json: + schema: + $ref: '#/components/schemas/TrackSectionPaginatedResponse' + example: + 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: + default: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/300x300.jpg + L: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/1050x1050.jpg + M: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/600x600.jpg + S: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/300x300.jpg + XS: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/128x128.jpg + waveformUrl: https://pdn.epidemicsound.com/waveforms/1600/394079.json + 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 + '400': + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Bad request + '401': + description: Unauthorized. Most likely your access token has expired. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Invalid credentials + '404': + description: Track was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Track was not found + '429': + description: Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Rate limit exceeded + security: + - UserAuth: [] + - EpidemicSoundConnectAuth: [] + /v0/tracks/{trackId}/stream: + get: + tags: + - Tracks + summary: Preview track + description: >- + 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. + operationId: GET_Stream + parameters: + - $ref: '#/components/parameters/trackId' + responses: + '200': + description: Information about the stream url + content: + application/json: + schema: + $ref: '#/components/schemas/DownloadResponse' + example: + url: >- + https://hls-storage.epidemicsite.com/hls/v1/q4MImKW47D/daefecd205c01496b42ae6950c446c6e/master.m3u8 + expires: '2022-12-22T11:01:48Z' + '400': + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Bad request + '401': + description: Unauthorized. Most likely your access token has expired. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Invalid credentials + '404': + description: Track was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Track was not found + '429': + description: Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Rate limit exceeded + security: + - UserAuth: [] + - EpidemicSoundConnectAuth: [] + /v0/tracks/{trackId}/highlights: + get: + tags: + - Tracks + summary: Recommend section of a track + description: >- + Powered by our 2 billion daily streams on YouTube, the highlights + endpoint uses machine learning to recommend the best time section. + + + You can use highlights to start playing the track from the right + millisecond, or recommend the right part of the track for shorter + content. + + + The highlights 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. + operationId: GET_Highlights_Details + parameters: + - $ref: '#/components/parameters/trackId' + - $ref: '#/components/parameters/duration' + responses: + '200': + description: >- + List of highlighted sections for the track. The times are given in + milliseconds. If there is no available highlight, a fallback to the + first section of the track is returned. + content: + application/json: + schema: + $ref: '#/components/schemas/HighlightsResponse' + example: + highlights: + - from: 9000 + to: 39000 + duration: 30 + '400': + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Bad request + '401': + description: Unauthorized. Most likely your access token has expired. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Invalid credentials + '404': + description: Track was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Track was not found + '429': + description: Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Rate limit exceeded + security: + - UserAuth: [] + - EpidemicSoundConnectAuth: [] + /v0/uploads/audio/{checksum}: + get: + tags: + - Assets + summary: Get audio asset by the checksum + description: >- + Will return the audio id of an audio file uploaded by the partner, + matched by checksum. Should be used to avoid duplicate uploads + operationId: GET_Partner_Audio_By_Checksum + parameters: + - $ref: '#/components/parameters/checksum' + responses: + '200': + description: Partner audio response + content: + application/json: + schema: + $ref: '#/components/schemas/PartnerAudioResponse' + example: + audioUploadId: f064a9f3-8bc7-4073-93f1-781e7a7c134f + length: 10 + expires: '2024-04-27T23:28:40.013476725Z' + '400': + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Bad request + '401': + description: Unauthorized. Most likely your access token has expired. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Invalid credentials + '404': + description: Audio file was not found + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Audio was not found + '429': + description: Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Rate limit exceeded + security: + - UserAuth: [] + - EpidemicSoundConnectAuth: [] + - PartnerAuth: [] + /v0/uploads/audio/{audioIdOrChecksum}: + delete: + tags: + - Assets + summary: Delete a single audio file + description: Delete a single audio file + operationId: DELETE_Partner_audio + parameters: + - $ref: '#/components/parameters/audioIdOrChecksum' + responses: + '200': + description: List of deleted audio ids + content: + application/json: + schema: + $ref: '#/components/schemas/PartnerAudioDeleteResponse' + example: + audioFilesRemoved: + - 3163ce29-28d5-4d39-83ae-beb9cc0f46cf + '202': + description: List of audio files marked for deletion + content: + application/json: + schema: + $ref: '#/components/schemas/PartnerAudioDeleteResponse' + example: + audioFilesRemoved: + - 6847b481-9439-462f-bb77-e6cd5efeb92c + '401': + description: Unauthorized. Most likely your access token has expired. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Invalid credentials + '429': + description: Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Rate limit exceeded + security: + - PartnerAuth: [] + /v0/uploads/audio: + post: + tags: + - Assets + summary: Uploads an audio file + description: Uploads an audio file + operationId: POST_Upload_Partner_Audio + requestBody: + content: + multipart/form-data: + schema: + type: object + properties: + file: + type: string + format: binary + responses: + '200': + description: >- + Returns the id of the uploaded image, as well as the expiration date + for the image. + content: + application/json: + schema: + $ref: '#/components/schemas/UploadUserImageResponse' + example: + imageId: 23378a80-6c55-4847-9297-fcf09f483bf5 + expirationDate: '2024-03-29T23:28:40.016558805Z' + '400': + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Bad request + '401': + description: Unauthorized. Most likely your access token has expired. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Invalid credentials + '429': + description: Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Rate limit exceeded + security: + - PartnerAuth: [] + /v0/uploads/images/{imageId}: + delete: + tags: + - Assets + summary: Delete uploaded image + description: Deletes an image uploaded by the user + operationId: DELETE_User_Image + parameters: + - $ref: '#/components/parameters/imageId' + responses: + '204': + description: Image was deleted + '400': + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Bad request + '401': + description: Unauthorized. Most likely your access token has expired. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Invalid credentials + '404': + description: Image was not found + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Image was not found + '429': + description: Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Rate limit exceeded + security: + - UserAuth: [] + - EpidemicSoundConnectAuth: [] + /v0/uploads/images: + post: + tags: + - Assets + summary: Upload image for recommendation + description: >- + Uploads an image, currently only jpeg format is supported. File limit is + 2Mb. + operationId: POST_Upload_User_Image + requestBody: + content: + multipart/form-data: + schema: + type: object + properties: + file: + type: string + format: binary + responses: + '200': + description: >- + Contains id to be used for endpoints requiring an image id, as well + as the expiration date for the image. + content: + application/json: + schema: + $ref: '#/components/schemas/UploadUserImageResponse' + example: + imageId: ef7ec55a-2b56-469b-8d83-b97b35ea5e25 + expirationDate: '2024-03-29T23:28:40.019058805Z' + '400': + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Bad request + '401': + description: Unauthorized. Most likely your access token has expired. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Invalid credentials + '429': + description: Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Rate limit exceeded + security: + - UserAuth: [] + - EpidemicSoundConnectAuth: [] + delete: + tags: + - Assets + summary: Delete all the uploaded images by the user + description: Deletes all images uploaded by the user + operationId: DELETE_User_Images + responses: + '202': + description: Images were marked for deletion + '401': + description: Unauthorized. Most likely your access token has expired. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Invalid credentials + '429': + description: Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Rate limit exceeded + security: + - UserAuth: [] + - EpidemicSoundConnectAuth: [] + /v0/tracks/matching-image/{imageId}: + get: + tags: + - Tracks + summary: Get tracks matching an image + description: Gets tracks that match an image uploaded by the user + operationId: GET_Tracks_Matching_Image + parameters: + - $ref: '#/components/parameters/imageId' + - $ref: '#/components/parameters/offset' + - $ref: '#/components/parameters/limit' + - $ref: '#/components/parameters/genre' + - $ref: '#/components/parameters/mood' + responses: + '200': + description: Paginated list of tracks + content: + application/json: + schema: + $ref: '#/components/schemas/TracksResponse' + example: + 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: + default: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/300x300.jpg + L: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/1050x1050.jpg + M: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/600x600.jpg + S: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/300x300.jpg + XS: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/128x128.jpg + waveformUrl: https://pdn.epidemicsound.com/waveforms/1600/394079.json + 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: + default: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/300x300.jpg + L: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/1050x1050.jpg + M: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/600x600.jpg + S: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/300x300.jpg + XS: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/128x128.jpg + waveformUrl: https://pdn.epidemicsound.com/waveforms/1600/394079.json + hasVocals: true + added: '2020-10-10' + isExplicit: false + isPreviewOnly: true + pagination: + page: 2 + limit: 25 + offset: 25 + links: + next: /v0/tracks/search?limit=25&offset=50 + prev: /v0/tracks/search?limit=25&offset=0 + aggregations: + moods: + - id: energetic + name: Energetic + count: 1 + genres: + - id: rock + name: Rock + count: 1 + '400': + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Bad request + '401': + description: Unauthorized. Most likely your access token has expired. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Invalid credentials + '404': + description: Image was not found + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Image was not found + '429': + description: Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Rate limit exceeded + security: + - UserAuth: [] + - EpidemicSoundConnectAuth: [] + /v0/sound-effects/categories: + get: + tags: + - Sound effects + summary: Get a list of all sound effects categories + description: >- + 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. + operationId: GET_Sound_Effect_Categories + parameters: + - name: type + in: query + description: Category type + required: false + schema: + type: string + enum: + - all + - featured + default: all + - name: sort + in: query + description: Sorting options + required: false + schema: + type: string + enum: + - title + - relevance + default: title + - $ref: '#/components/parameters/offset' + - $ref: '#/components/parameters/limit' + responses: + '200': + description: >- + Sound effects category list with related parent category. You can + see the parent-child relationship in the response. + content: + application/json: + schema: + $ref: '#/components/schemas/SoundEffectCategoriesResponse' + example: + categories: + - id: 7533dc15-855e-476a-bbb6-8d8081f18b1b + name: Applause + numTracks: 10 + images: + default: https://image.url?w=300&h=300&fit=fill&q=90&fm=jpg + L: https://image.url?w=1050&h=1050&fit=fill&q=90&fm=jpg + M: https://image.url?w=600&h=600&fit=fill&q=90&fm=jpg + S: https://image.url?w=300&h=300&fit=fill&q=90&fm=jpg + XS: https://image.url?w=128&h=128&fit=fill&q=90&fm=jpg + parent: + id: 117d5210-2b78-4bda-9013-419d7f710ddb + name: Crowds + pagination: + page: 2 + limit: 10 + offset: 10 + links: + next: /v0/sound-effects/categories?limit=10&offset=20 + prev: /v0/sound-effects/categories?limit=10&offset=0 + '400': + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Bad request + '401': + description: Unauthorized. Most likely your access token has expired. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Invalid credentials + '429': + description: Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Rate limit exceeded + security: + - UserAuth: [] + - EpidemicSoundConnectAuth: [] + /v0/sound-effects/categories/{categoryId}: + get: + tags: + - Sound effects + summary: Get a sound effects category by id + description: >- + 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. + operationId: GET_Sound_Effect_Category + parameters: + - $ref: '#/components/parameters/categoryId' + responses: + '200': + description: Category with related parent and children categories + content: + application/json: + schema: + $ref: '#/components/schemas/SoundEffectCategoryWithRelativesResponse' + example: + id: 3b7bd645-767a-4a95-a97e-35b5549248de + name: Applause + numTracks: 10 + images: + default: https://image.url?w=300&h=300&fit=fill&q=90&fm=jpg + L: https://image.url?w=1050&h=1050&fit=fill&q=90&fm=jpg + M: https://image.url?w=600&h=600&fit=fill&q=90&fm=jpg + S: https://image.url?w=300&h=300&fit=fill&q=90&fm=jpg + XS: https://image.url?w=128&h=128&fit=fill&q=90&fm=jpg + parent: + id: 417f3061-459b-47c3-b5d7-6838e89a9d50 + name: Crowds + children: + - id: 95c42ecf-ab8b-40be-ace1-b50c0d98beaf + name: Claps + '400': + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Bad request + '401': + description: Unauthorized. Most likely your access token has expired. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Invalid credentials + '404': + description: Category was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Category was not found + '429': + description: Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Rate limit exceeded + security: + - UserAuth: [] + - EpidemicSoundConnectAuth: [] + /v0/sound-effects/categories/{categoryId}/tracks: + get: + tags: + - Sound effects + summary: Get sound effects by category + description: >- + Use the sound effects details endpoint to display all sound effects for + a given category. + operationId: GET_Sound_Effect_Category_Tracks + parameters: + - $ref: '#/components/parameters/categoryId' + - $ref: '#/components/parameters/offset' + - $ref: '#/components/parameters/limit' + - name: sort + in: query + description: Sort + required: false + schema: + type: string + enum: + - title + - newest + - length + default: newest + - name: order + in: query + description: Order + required: false + schema: + type: string + enum: + - asc + - desc + default: asc + responses: + '200': + description: List of sound effects for a given category + content: + application/json: + schema: + $ref: '#/components/schemas/PaginatedSoundEffectsResponse' + example: + soundEffects: + - id: 0a1733df-00da-442e-84fd-3a32736c3a5d + title: Applause + added: '2024-03-28T23:28:40.030876075Z' + length: 10 + images: + default: https://image.url?w=300&h=300&fit=fill&q=90&fm=jpg + L: https://image.url?w=1050&h=1050&fit=fill&q=90&fm=jpg + M: https://image.url?w=600&h=600&fit=fill&q=90&fm=jpg + S: https://image.url?w=300&h=300&fit=fill&q=90&fm=jpg + XS: https://image.url?w=128&h=128&fit=fill&q=90&fm=jpg + categories: [] + pagination: + page: 2 + limit: 10 + offset: 10 + links: + next: /v0/sound-effects/categories?limit=10&offset=20 + prev: /v0/sound-effects/categories?limit=10&offset=0 + '400': + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Bad request + '401': + description: Unauthorized. Most likely your access token has expired. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Invalid credentials + '404': + description: Category was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Category was not found + '429': + description: Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Rate limit exceeded + security: + - UserAuth: [] + - EpidemicSoundConnectAuth: [] + /v0/sound-effects/{trackId}/download: + get: + tags: + - Sound effects + summary: Download sound effect + description: >- + 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. + operationId: GET_Sound_Effect_Download + parameters: + - $ref: '#/components/parameters/trackId' + - $ref: '#/components/parameters/format' + - $ref: '#/components/parameters/quality' + responses: + '200': + description: Information about download url + content: + application/json: + schema: + $ref: '#/components/schemas/DownloadResponse' + example: + url: >- + https://pdn.epidemicsound.com/ES_ITUNES/Happy_Song/ES_Happy_Song.mp3 + expires: '2022-12-22T11:01:48Z' + '400': + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Bad request + '401': + description: Unauthorized. Most likely your access token has expired. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Invalid credentials + '403': + description: User does not have access to download the track. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: User does not have access to download the track + '404': + description: Track was not found. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Track was not found + '429': + description: Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Rate limit exceeded + security: + - UserAuth: [] + - EpidemicSoundConnectAuth: [] + /v0/sound-effects/search: + get: + tags: + - Sound effects + summary: Search sound effects + description: > + Use the sound effects search endpoint to allow users to search within + the sound effects library. + operationId: GET_Sound_Effect_Search + parameters: + - $ref: '#/components/parameters/offset' + - $ref: '#/components/parameters/limit' + - required: true + $ref: '#/components/parameters/term' + - name: sort + in: query + description: Sort for search + required: false + schema: + type: string + enum: + - best-match + - newest + - popular + - length + - title + default: best-match + - name: order + in: query + description: Order + required: false + schema: + type: string + enum: + - asc + - desc + default: asc + responses: + '200': + description: List of sound effect search results + content: + application/json: + schema: + $ref: '#/components/schemas/PaginatedSoundEffectsResponse' + example: + soundEffects: + - id: 021438f7-8c68-4649-8296-d475abdca6a4 + title: Applause + added: '2024-03-28T23:28:40.034835865Z' + length: 10 + images: + default: https://image.url?w=300&h=300&fit=fill&q=90&fm=jpg + L: https://image.url?w=1050&h=1050&fit=fill&q=90&fm=jpg + M: https://image.url?w=600&h=600&fit=fill&q=90&fm=jpg + S: https://image.url?w=300&h=300&fit=fill&q=90&fm=jpg + XS: https://image.url?w=128&h=128&fit=fill&q=90&fm=jpg + categories: [] + pagination: + page: 2 + limit: 10 + offset: 10 + links: + next: /v0/sound-effects/categories?limit=10&offset=20 + prev: /v0/sound-effects/categories?limit=10&offset=0 + '400': + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Bad request + '401': + description: Unauthorized. Most likely your access token has expired. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Invalid credentials + '429': + description: Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Rate limit exceeded + security: + - UserAuth: [] + - EpidemicSoundConnectAuth: [] + /v0/analytics/report: + post: + tags: + - Reporting + summary: Report events to Epidemic Sound + description: >- + This endpoint should be used when you want to 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. + operationId: POST_Analytics_Report + requestBody: + description: Analytics report + content: + application/json: + schema: + $ref: '#/components/schemas/AnalyticsReportRequest' + example: + events: + - userId: '123' + timestamp: '2024-03-28T23:28:40.035772655Z' + userConnected: false + analyticsEvent: + trackId: '12345' + type: trackPreviewed + - userId: '456' + timestamp: '2024-03-28T23:28:40.035976895Z' + userConnected: true + analyticsEvent: + trackId: '12345' + format: mp3 + quality: normal + type: trackDownloaded + - userId: '456' + timestamp: '2024-03-28T23:28:40.036196785Z' + analyticsEvent: + trackIds: + - '12345' + platform: YOUTUBE + type: tracksExported + responses: + '200': + description: Usage report response + content: + application/json: + schema: + $ref: '#/components/schemas/AnalyticsReportResponse' + example: + batchId: '12345' + eventsCount: 10 + '400': + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Bad request + '401': + description: Unauthorized. Most likely your access token has expired. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Invalid credentials + '429': + description: Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Rate limit exceeded + security: + - PartnerAuth: [] + /v0/usage: + post: + tags: + - Reporting + summary: Report usage + description: >- + 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. + operationId: POST_Use + requestBody: + description: Usage report + content: + application/json: + schema: + $ref: '#/components/schemas/TrackUsageRequest' + example: + eventType: EXPORTED + platform: OTHER + trackIds: + - trackid1 + - trackid2 + other: OptionalValueForWhenNoMatchingPlatformEnum + responses: + '200': + description: Usage report response + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Ok + '400': + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Bad request + '401': + description: Unauthorized. Most likely your access token has expired. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Invalid credentials + '429': + description: Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Rate limit exceeded + security: + - UserAuth: [] + - EpidemicSoundConnectAuth: [] + /v0/partner-token: + post: + tags: + - Authentication + summary: Request a partner token + description: Request a Partner Token + operationId: POST_Partner_Token + requestBody: + description: Token request + content: + application/json: + schema: + $ref: '#/components/schemas/PartnerTokenRequest' + responses: + '201': + description: User access token + content: + application/json: + schema: + $ref: '#/components/schemas/AccessTokenResponse' + example: + accessToken: >- + eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJhdWQiOiJwYXJ0bmVyIiwiaXNzIjoiRXBpZGVtaWMgU291bmQiLCJwYXJ0bmVySWQiOiJlcGlkZW1pY3NvdW5kIiwiZXhwIjoxNjIwMTA4OTg0fQ + '400': + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Bad request + '401': + description: Unauthorized. Most likely your access token has expired. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Invalid credentials + '429': + description: Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Rate limit exceeded + /v0/token: + post: + tags: + - Authentication + summary: Request a user token + description: >- + Request a User Token. This endpoint requires a Partner Token for + authentication. + operationId: POST_User_Token + requestBody: + description: Token request + content: + application/json: + schema: + $ref: '#/components/schemas/UserTokenRequest' + responses: + '201': + description: User access token + content: + application/json: + schema: + $ref: '#/components/schemas/AccessTokenResponse' + example: + accessToken: >- + eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJ1c2VyVGllciI6ImJhc2VfdGllciIsImF1ZCI6ImVuZC11c2VyIiwiaXNzIjoiRXBpZGVtaWMgU291bmQiLCJwYXJ0bmVySWQiOiJlcGlkZW1pY3NvdW5kIiwiZXhwIjoxNjIwMTA5MDkyLCJ1c2VySWQiOiJ1c2VyX2lkIn0 + '400': + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Bad request + '401': + description: Unauthorized. Most likely your access token has expired. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Invalid credentials + '429': + description: Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Rate limit exceeded + security: + - PartnerAuth: [] + /v0/users/me: + get: + tags: + - Users + summary: User details + description: Get user details of the authenticated user. + operationId: GET_End_User_Details + responses: + '200': + description: End user details + content: + application/json: + schema: + $ref: '#/components/schemas/UserInfo' + example: + userId: b7d04a6f-a2fb-4574-88f9-b5c6f842eac2 + esConnect: false + hasActiveSubscription: null + email: null + '400': + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Bad request + '401': + description: Unauthorized. Most likely your access token has expired. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Invalid credentials + '429': + description: Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Rate limit exceeded + security: + - UserAuth: [] + - EpidemicSoundConnectAuth: [] + /v0/users/me/subscription: + get: + tags: + - Users + summary: User subscription details + description: Get subscription details for the authenticated user. + operationId: GET_End_User_Subscription_Details + responses: + '200': + description: End user subscription details + content: + application/json: + schema: + $ref: '#/components/schemas/SubscriptionInfo' + example: + epidemicSound: + hasActiveSubscription: true + subscriptionExpiresAt: '2024-04-27T23:28:40Z' + '400': + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Bad request + '401': + description: Unauthorized. Most likely your access token has expired. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Invalid credentials + '429': + description: Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Rate limit exceeded + security: + - EpidemicSoundConnectAuth: [] + /v0/users/me/liked/tracks: + get: + tags: + - Users + summary: List users’ liked tracks + description: >- + 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. + operationId: GET_Users_Liked_Tracks + parameters: + - name: offset + in: query + description: >- + 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. + required: false + schema: + type: integer + format: int32 + responses: + '200': + description: Liked Tracks response + content: + application/json: + schema: + $ref: '#/components/schemas/TracksResponse' + example: + 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: + default: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/300x300.jpg + L: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/1050x1050.jpg + M: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/600x600.jpg + S: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/300x300.jpg + XS: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/128x128.jpg + waveformUrl: https://pdn.epidemicsound.com/waveforms/1600/394079.json + 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: + default: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/300x300.jpg + L: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/1050x1050.jpg + M: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/600x600.jpg + S: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/300x300.jpg + XS: >- + https://cdn.epidemicsound.com/curation-assets/commercial-release-cover-images/123456/128x128.jpg + waveformUrl: https://pdn.epidemicsound.com/waveforms/1600/394079.json + hasVocals: true + added: '2020-10-10' + isExplicit: false + isPreviewOnly: true + pagination: + page: 2 + limit: 25 + offset: 25 + links: + next: /v0/users/me/liked/tracks?limit=25&offset=50 + prev: /v0/users/me/liked/tracks?limit=25&offset=0 + '400': + description: Bad request. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Bad request + '401': + description: Unauthorized. Most likely your access token has expired. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Invalid credentials + '429': + description: Rate limit exceeded. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageResponse' + example: + message: Rate limit exceeded + security: + - EpidemicSoundConnectAuth: [] +components: + schemas: + TrackResponse: + required: + - added + - bpm + - featuredArtists + - genres + - id + - length + - mainArtists + - moods + - title + - waveformUrl + type: object + properties: + id: + type: string + description: Unique ID of the track + mainArtists: + type: array + description: The main artist that created the track. + items: + type: string + description: The main artist that created the track. + featuredArtists: + type: array + description: Additional artists that contributed to the track. + items: + type: string + description: Additional artists that contributed to the track. + title: + type: string + description: Title of the track + bpm: + type: integer + description: Beats per minute for the track. + format: int32 + length: + type: integer + description: Track length in seconds + format: int32 + moods: + type: array + description: Lists the moods of the track. + items: + $ref: '#/components/schemas/MoodResponse' + genres: + type: array + description: Lists the genres of the track. + items: + $ref: '#/components/schemas/GenreResponse' + images: + $ref: '#/components/schemas/ImagesResponse' + waveformUrl: + type: string + description: Reference to the waveform as a json object. + hasVocals: + type: boolean + description: >- + Set to true if the track has vocals. Set to false for instrumental + tracks. + nullable: true + added: + type: string + description: The date the track was released in the format YYYY-mm-dd. + tierOption: + type: string + nullable: true + enum: + - PAID + - FREE + isExplicit: + type: boolean + nullable: true + isPreviewOnly: + type: boolean + MoodResponse: + required: + - id + - name + type: object + properties: + id: + type: string + description: Unique ID of the mood + name: + type: string + description: Name of the mood + MoodImagesResponse: + type: object + properties: + default: + type: string + nullable: true + L: + type: string + nullable: true + M: + type: string + nullable: true + S: + type: string + nullable: true + XS: + type: string + nullable: true + ParentGenreResponse: + required: + - id + - name + type: object + properties: + id: + type: string + description: Unique ID of the parent genre + name: + type: string + description: Name of the parent genre + GenreResponse: + required: + - id + - name + type: object + properties: + id: + type: string + name: + type: string + parent: + $ref: '#/components/schemas/ParentGenreResponse' + GenreImagesResponse: + type: object + properties: + default: + type: string + L: + type: string + nullable: true + M: + type: string + nullable: true + S: + type: string + nullable: true + XS: + type: string + nullable: true + TrackMoodsResponse: + required: + - moods + type: object + properties: + moods: + type: array + items: + $ref: '#/components/schemas/MoodResponse' + TrackGenresResponse: + required: + - genres + type: object + properties: + genres: + type: array + items: + $ref: '#/components/schemas/GenreResponse' + GenreResponseWithChildren: + required: + - children + - id + - name + type: object + properties: + id: + type: string + name: + type: string + parent: + $ref: '#/components/schemas/ParentGenreResponse' + children: + type: array + items: + $ref: '#/components/schemas/GenreResponse' + images: + $ref: '#/components/schemas/GenreImagesResponse' + tracks: + $ref: '#/components/schemas/TracksResponse' + TrackParametersResponse: + required: + - genres + - moods + type: object + properties: + genres: + type: array + items: + $ref: '#/components/schemas/GenreResponse' + moods: + type: array + items: + $ref: '#/components/schemas/MoodResponse' + MoodsPaginatedResponseWithImages: + required: + - links + - moods + - pagination + type: object + properties: + moods: + type: array + items: + $ref: '#/components/schemas/MoodResponseWithImages' + pagination: + $ref: '#/components/schemas/Pagination' + links: + $ref: '#/components/schemas/PaginationLinks' + MoodResponseWithImages: + required: + - id + - name + type: object + properties: + id: + type: string + name: + type: string + images: + $ref: '#/components/schemas/MoodImagesResponse' + tracks: + $ref: '#/components/schemas/TracksResponse' + GenresWithImagesPaginatedResponse: + required: + - genres + - links + - pagination + type: object + properties: + genres: + type: array + items: + $ref: '#/components/schemas/GenreResponseWithImages' + pagination: + $ref: '#/components/schemas/Pagination' + links: + $ref: '#/components/schemas/PaginationLinks' + GenreResponseWithImages: + required: + - id + - name + type: object + properties: + id: + type: string + name: + type: string + parent: + $ref: '#/components/schemas/ParentGenreResponseWithImages' + images: + $ref: '#/components/schemas/GenreImagesResponse' + ParentGenreResponseWithImages: + required: + - id + - name + type: object + properties: + id: + type: string + name: + type: string + images: + $ref: '#/components/schemas/GenreImagesResponse' + TrackSectionPaginatedResponse: + required: + - links + - pagination + - trackSections + type: object + properties: + trackSections: + type: array + items: + $ref: '#/components/schemas/TrackSectionResponse' + pagination: + $ref: '#/components/schemas/Pagination' + links: + $ref: '#/components/schemas/PaginationLinks' + DownloadResponse: + required: + - expires + - url + type: object + properties: + url: + type: string + expires: + type: string + HLSDownloadResponse: + required: + - cookie + - url + type: object + properties: + url: + type: string + cookie: + $ref: '#/components/schemas/HLSCookieResponse' + HLSCookieResponse: + required: + - domain + - expires + - name + - path + - value + type: object + properties: + name: + type: string + domain: + type: string + path: + type: string + value: + type: string + expires: + type: string + HighlightsResponse: + required: + - highlights + type: object + properties: + highlights: + type: array + items: + $ref: '#/components/schemas/HighlightSectionResponse' + HighlightSectionResponse: + required: + - duration + - from + - to + type: object + properties: + from: + type: integer + format: int32 + to: + type: integer + format: int32 + duration: + type: integer + format: int32 + TracksResponse: + required: + - links + - pagination + - tracks + type: object + properties: + tracks: + type: array + items: + $ref: '#/components/schemas/TrackResponse' + pagination: + $ref: '#/components/schemas/Pagination' + links: + $ref: '#/components/schemas/PaginationLinks' + aggregations: + $ref: '#/components/schemas/TaxonomyAggregations' + SearchSuggestionsResponse: + type: object + properties: + suggestions: + type: array + items: + $ref: '#/components/schemas/Option' + Option: + type: object + properties: + type: + type: string + enum: + - TEXT + Pagination: + required: + - limit + - page + type: object + properties: + page: + type: integer + format: int32 + limit: + type: integer + format: int32 + offset: + type: integer + format: int32 + PaginationLinks: + type: object + properties: + next: + type: string + nullable: true + prev: + type: string + nullable: true + AccessTokenResponse: + required: + - accessToken + type: object + properties: + accessToken: + type: string + CollectionPaginatedResponse: + required: + - id + - images + - links + - name + - pagination + - tracks + type: object + properties: + id: + type: string + format: uuid + name: + type: string + tracks: + type: array + items: + $ref: '#/components/schemas/TrackResponse' + availableTracks: + type: integer + format: int32 + nullable: true + pagination: + $ref: '#/components/schemas/Pagination' + links: + $ref: '#/components/schemas/PaginationLinks' + images: + $ref: '#/components/schemas/CollectionImagesPublicResponse' + CollectionResponse: + required: + - id + - images + - name + - tracks + type: object + properties: + id: + type: string + description: Unique ID of the track. + format: uuid + name: + type: string + description: Name of the collection + tracks: + type: array + items: + $ref: '#/components/schemas/TrackResponse' + availableTracks: + type: integer + description: Number of available tracks based on the partner's tier + format: int32 + nullable: true + images: + $ref: '#/components/schemas/CollectionImagesPublicResponse' + CollectionImagesPublicResponse: + required: + - default + type: object + properties: + default: + type: string + L: + type: string + nullable: true + M: + type: string + nullable: true + S: + type: string + nullable: true + XS: + type: string + nullable: true + CollectionsPaginatedResponse: + required: + - collections + - links + - pagination + type: object + properties: + collections: + type: array + items: + $ref: '#/components/schemas/CollectionResponse' + pagination: + $ref: '#/components/schemas/Pagination' + links: + $ref: '#/components/schemas/PaginationLinks' + ImagesResponse: + type: object + properties: + default: + type: string + nullable: true + L: + type: string + nullable: true + M: + type: string + nullable: true + S: + type: string + nullable: true + XS: + type: string + nullable: true + TrackFormat: + type: string + enum: + - mp3 + PartnerTokenRequest: + required: + - accessKeyId + - accessKeySecret + type: object + properties: + accessKeyId: + type: string + accessKeySecret: + type: string + TrackSectionResponse: + required: + - end + - start + - track + type: object + properties: + track: + $ref: '#/components/schemas/TrackResponse' + start: + type: integer + format: int32 + end: + type: integer + format: int32 + UserTokenRequest: + required: + - userId + type: object + properties: + userId: + type: string + description: End user id. UUID, numeric or matching ^[a-zA-Z0-9_-]+$ + example: 4fbd5793-efcd-4545-b4e9-807c8ed9e2a3 + MessageResponse: + required: + - message + type: object + properties: + message: + type: string + description: Human readable message + errors: + type: array + items: + $ref: '#/components/schemas/Error' + Error: + required: + - key + - messages + type: object + properties: + key: + type: string + description: Error key + messages: + type: array + description: Error messages + items: + type: string + description: Error messages + TrackUsageRequest: + required: + - platform + - trackIds + type: object + properties: + eventType: + type: string + enum: + - EXPORTED + platform: + type: string + enum: + - YOUTUBE + - TWITTER + - TWITCH + - FACEBOOK + - INSTAGRAM + - TIKTOK + - OTHER + - LOCAL + trackIds: + type: array + items: + type: string + other: + type: string + nullable: true + UserInfo: + required: + - esConnect + - userId + type: object + properties: + userId: + type: string + description: >- + is the userId given in the User Token if not ES Connect + authenticated or + + the ES Connect user id if user is authenticated against ES Connect. + esConnect: + type: boolean + description: |- + is false for a not ES Connect authenticated user but + is true for a ES Connect authenticated user. + hasActiveSubscription: + type: boolean + description: |- + is true if the user has an active subscription but + is false if the user has no active subscription. + Returns null if the user is not ES Connect authenticated. + nullable: true + email: + type: string + description: >- + email value will present only for the Epidemic Sound users and will + be null otherwise + nullable: true + SubscriptionInfo: + required: + - epidemicSound + type: object + properties: + epidemicSound: + $ref: '#/components/schemas/SubscriptionInfoDetail' + SubscriptionInfoDetail: + required: + - hasActiveSubscription + - subscriptionExpiresAt + type: object + properties: + hasActiveSubscription: + type: boolean + description: >- + is true if the user has an active subscription and false if the user + has no active subscription. + subscriptionExpiresAt: + type: string + description: >- + if the subscription has been canceled, but is not yet expired, this + will return the expiry datetime. In all + + other cases this will be null. + format: date-time + nullable: true + AnalyticsReportRequest: + required: + - events + type: object + properties: + events: + type: array + items: + $ref: '#/components/schemas/AnalyticsReportEvent' + AnalyticsReportEvent: + type: object + properties: + userId: + type: string + timestamp: + type: string + format: date-time + userConnected: + type: boolean + nullable: true + analyticsEvent: + $ref: '#/components/schemas/AnalyticsEvent' + TrackPreviewedEvent: + type: object + properties: + trackId: + type: string + type: + type: string + enum: + - trackPreviewed + TrackDownloadedEvent: + type: object + properties: + trackId: + type: string + format: + type: string + enum: + - mp3 + - hls + - hls_with_cookie + quality: + type: string + enum: + - normal + - high + type: + type: string + enum: + - trackDownloaded + TracksExportedEvent: + type: object + properties: + trackIds: + type: array + items: + type: string + platform: + type: string + enum: + - YOUTUBE + - TWITTER + - TWITCH + - FACEBOOK + - INSTAGRAM + - TIKTOK + - OTHER + - LOCAL + type: + type: string + enum: + - tracksExported + AnalyticsEvent: + type: object + oneOf: + - $ref: '#/components/schemas/TrackPreviewedEvent' + - $ref: '#/components/schemas/TrackDownloadedEvent' + - $ref: '#/components/schemas/TracksExportedEvent' + AnalyticsReportResponse: + required: + - batchId + - eventsCount + type: object + properties: + batchId: + type: string + eventsCount: + type: integer + format: int32 + UploadUserImageResponse: + required: + - expirationDate + - imageId + type: object + properties: + imageId: + type: string + format: uuid + expirationDate: + type: string + format: date-time + PartnerAudioResponse: + required: + - audioUploadId + - expires + - length + type: object + properties: + audioUploadId: + type: string + format: uuid + length: + type: number + format: double + expires: + type: string + format: date-time + PartnerAudioDeleteResponse: + required: + - audioFilesRemoved + type: object + properties: + audioFilesRemoved: + type: array + items: + type: string + format: uuid + SoundEffectCategoriesResponse: + required: + - categories + - links + - pagination + type: object + properties: + categories: + type: array + items: + $ref: '#/components/schemas/SoundEffectCategoryWithParentResponse' + pagination: + $ref: '#/components/schemas/Pagination' + links: + $ref: '#/components/schemas/PaginationLinks' + SoundEffectCategoryWithParentResponse: + required: + - id + - name + - numTracks + type: object + properties: + id: + type: string + format: uuid + name: + type: string + numTracks: + type: integer + format: int32 + images: + $ref: '#/components/schemas/ImagesResponse' + parent: + $ref: '#/components/schemas/RelatedSoundEffectCategoryResponse' + SoundEffectCategoryWithRelativesResponse: + required: + - id + - name + - numTracks + type: object + properties: + id: + type: string + format: uuid + name: + type: string + numTracks: + type: integer + format: int32 + images: + $ref: '#/components/schemas/ImagesResponse' + parent: + $ref: '#/components/schemas/RelatedSoundEffectCategoryResponse' + children: + type: array + items: + $ref: '#/components/schemas/RelatedSoundEffectCategoryResponse' + RelatedSoundEffectCategoryResponse: + required: + - id + - name + type: object + properties: + id: + type: string + format: uuid + name: + type: string + CategoryResponse: + required: + - id + - name + type: object + properties: + id: + type: string + format: uuid + name: + type: string + SoundEffectResponse: + required: + - added + - categories + - id + - length + - title + type: object + properties: + id: + type: string + title: + type: string + added: + type: string + format: date-time + length: + type: integer + format: int32 + images: + $ref: '#/components/schemas/ImagesResponse' + categories: + type: array + items: + $ref: '#/components/schemas/CategoryResponse' + PaginatedSoundEffectsResponse: + required: + - links + - pagination + - soundEffects + type: object + properties: + soundEffects: + type: array + items: + $ref: '#/components/schemas/SoundEffectResponse' + pagination: + $ref: '#/components/schemas/Pagination' + links: + $ref: '#/components/schemas/PaginationLinks' + TrackBeatsResponse: + type: object + properties: + beats: + type: array + items: + $ref: '#/components/schemas/TrackBeatSegmentResponse' + TrackBeatSegmentResponse: + type: object + properties: + time: + type: number + format: double + value: + type: string + TaxonomyAggregations: + type: object + properties: + moods: + type: array + items: + $ref: '#/components/schemas/TaxonomyAggregation' + genres: + type: array + items: + $ref: '#/components/schemas/TaxonomyAggregation' + TaxonomyAggregation: + type: object + properties: + id: + type: string + name: + type: string + count: + type: integer + format: int32 + parameters: + collectionId: + name: collectionId + in: path + description: Collection id + required: true + schema: + type: string + excludeField: + name: excludeField + in: query + description: Add parameter if tracks should be excluded in the response + required: false + schema: + type: string + enum: + - tracks + expand: + name: expand + in: query + description: Add parameter if tracks should be included in the response + required: false + schema: + type: string + enum: + - tracks + genre: + name: genre + in: query + description: Id for genre + required: false + schema: + type: array + items: + type: string + term: + name: term + in: query + description: Term for search + required: false + schema: + type: string + mood: + name: mood + in: query + description: Id for mood + required: false + schema: + type: array + items: + type: string + limit: + name: limit + in: query + description: Max number of entries returned in the response, default 50 and max 100 + required: false + schema: + type: integer + format: int32 + offset: + name: offset + in: query + description: Index of the entry track in the response + required: false + schema: + type: integer + format: int32 + bpmMin: + name: bpmMin + in: query + description: BPM Min + required: false + schema: + type: integer + format: int32 + bpmMax: + name: bpmMax + in: query + description: BPM Max + required: false + schema: + type: integer + format: int32 + trackId: + name: trackId + in: path + description: Track id + required: true + schema: + type: string + imageId: + name: imageId + in: path + description: Image id + required: true + schema: + type: string + checksum: + name: checksum + in: path + description: File checksum + required: true + schema: + type: string + audioIdOrChecksum: + name: audioIdOrChecksum + in: path + description: Audio upload id or checksum of audio file + required: true + schema: + type: string + moodId: + name: moodId + in: path + description: Mood id + required: true + schema: + type: string + genreId: + name: genreId + in: path + description: Genre id + required: true + schema: + type: string + categoryId: + name: categoryId + in: path + description: Category id + required: true + schema: + type: string + format: uuid + format: + name: format + in: query + description: Track format + required: false + schema: + type: string + enum: + - mp3 + quality: + name: quality + in: query + description: Track quality, normal is used as the default if not specified + required: false + schema: + type: string + enum: + - normal + - high + default: normal + sort: + name: sort + in: query + description: 'Sorting options. Available values: alphabetic, relevance' + required: false + schema: + type: string + enum: + - alphabetic + - relevance + default: relevance + order: + name: order + in: query + description: 'Order options. Available values: asc, desc' + required: false + schema: + type: string + enum: + - asc + - desc + default: asc + type: + name: type + in: query + description: |- + Types to filter by: + * `all` - all the objects in the Epidemic Sound library + * `partner-tier` - objects available to the partner within their tier + * `featured` - only objects featured and curated by Epidemic Sound + required: false + schema: + type: string + enum: + - all + - featured + - partner-tier + default: all + duration: + name: duration + in: query + description: The highlight duration in seconds + required: false + schema: + type: array + items: + type: integer + format: int32 + securitySchemes: + PartnerAuth: + type: http + description: >- + Partner authentication is handled with short lived partner access + tokens. + + Use your api credentials to request these tokens. + + The access token is of JWT format and should be passed in a header with + your API requests: + + + > **Example Header:** `Authorization: Bearer your-partner-token` + scheme: Bearer + UserAuth: + type: http + description: |- + User authentication is handled with short lived user access tokens. + Use a partner token to request these tokens. + The access token is of JWT format and should be passed in a header with your API requests: + + > **Example Header:** `Authorization: Bearer a-user-token` + scheme: Bearer + EpidemicSoundConnectAuth: + type: oauth2 + description: >- + For users signing in with an Epidemic Sound account, user authentication + is + + handled with OpenID Connect, which is a layer on top of OAuth 2.0. + + + > **Example Header:** `Authorization: Bearer es-connect-token` + flows: + authorizationCode: + authorizationUrl: >- + https://login.epidemicsound.com/auth/realms/accounts/protocol/openid-connect/auth + tokenUrl: >- + https://login.epidemicsound.com/auth/realms/accounts/protocol/openid-connect/token + scopes: {} diff --git a/sdks/db/processed-custom-request-cache/epidemicsound.com.yaml b/sdks/db/processed-custom-request-cache/epidemicsound.com.yaml new file mode 100644 index 000000000..c321379cd --- /dev/null +++ b/sdks/db/processed-custom-request-cache/epidemicsound.com.yaml @@ -0,0 +1,54 @@ +processed: + securitySchemes: + PartnerAuth: + type: http + description: >- + Partner authentication is handled with short lived partner access + tokens. + + Use your api credentials to request these tokens. + + The access token is of JWT format and should be passed in a header with + your API requests: + + + > **Example Header:** `Authorization: Bearer your-partner-token` + scheme: Bearer + UserAuth: + type: http + description: |- + User authentication is handled with short lived user access tokens. + Use a partner token to request these tokens. + The access token is of JWT format and should be passed in a header with your API requests: + + > **Example Header:** `Authorization: Bearer a-user-token` + scheme: Bearer + EpidemicSoundConnectAuth: + type: oauth2 + description: >- + For users signing in with an Epidemic Sound account, user authentication + is + + handled with OpenID Connect, which is a layer on top of OAuth 2.0. + + + > **Example Header:** `Authorization: Bearer es-connect-token` + flows: + authorizationCode: + authorizationUrl: >- + https://login.epidemicsound.com/auth/realms/accounts/protocol/openid-connect/auth + tokenUrl: >- + https://login.epidemicsound.com/auth/realms/accounts/protocol/openid-connect/token + scopes: {} + apiBaseUrl: https://partner-content-api.epidemicsound.com + apiVersion: 0.1.17 + apiTitle: Partner Content API + endpoints: 36 + sdkMethods: 37 + schemas: 63 + parameters: 96 + originalCustomRequest: + type: GET + url: https://partner-content-api.epidemicsound.com/docs/spec.json + customRequestSpecFilename: epidemicsound.com.yaml + difficultyScore: 92.5 diff --git a/sdks/db/progress/epidemic-sound-progress.yaml b/sdks/db/progress/epidemic-sound-progress.yaml new file mode 100644 index 000000000..4ac0900cc --- /dev/null +++ b/sdks/db/progress/epidemic-sound-progress.yaml @@ -0,0 +1,114 @@ +examples: {} +examples_2: {} +examples_3: {} +operationIds: + /v0/analytics/report: + post: Reporting_epidemicEventSubmission + /v0/genres: + get: BrowseSearch_genreCatalog + /v0/genres/{genreId}: + get: BrowseSearch_genreDetails + /v0/moods: + get: BrowseSearch_moodsList + /v0/moods/{moodId}: + get: BrowseSearch_moodDetails + /v0/partner-token: + post: Authentication_requestPartnerToken + /v0/sound-effects/categories: + get: SoundEffects_listCategories + /v0/sound-effects/categories/{categoryId}: + get: SoundEffects_getCategoryById + /v0/sound-effects/categories/{categoryId}/tracks: + get: SoundEffects_getByCategoryTracks + /v0/sound-effects/search: + get: SoundEffects_searchSoundEffects + /v0/sound-effects/{trackId}/download: + get: SoundEffects_downloadSoundEffect + /v0/token: + post: Authentication_requestUserToken + /v0/tracks/matching-image/{imageId}: + get: Tracks_matchingImageGet + /v0/tracks/parameters: + get: Tracks_listParameters + /v0/tracks/search: + get: BrowseSearch_tracksSearchList + /v0/tracks/search/suggestions: + get: BrowseSearch_trackSuggestionsGet + /v0/tracks/similar-sections: + get: Tracks_getSimilarSegments + /v0/tracks/{trackId}/beats: + get: Tracks_getBeatsData + /v0/tracks/{trackId}/highlights: + get: Tracks_recommendSection + /v0/tracks/{trackId}/hls: + get: Tracks_previewUsingCookies + /v0/tracks/{trackId}/similar: + get: Tracks_getSimilar + /v0/tracks/{trackId}/similar-sections: + get: Tracks_findSimilarSegments + /v0/uploads/audio: + post: Assets_uploadAudioFile + /v0/uploads/audio/{audioIdOrChecksum}: + delete: Assets_deleteAudioFile + /v0/uploads/audio/{checksum}: + get: Assets_byChecksumGet + /v0/uploads/images: + delete: Assets_removeAllImages + post: Assets_uploadImageForRecommendation + /v0/uploads/images/{imageId}: + delete: Assets_deleteImage + /v0/users/me: + get: Users_getDetails + /v0/users/me/liked/tracks: + get: Users_listLikedTracks + /v0/users/me/subscription: + get: Users_getSubscriptionDetails +operationTags: {} +renameTags: {} +requestSchemaNames: + /v0/uploads/audio: + post: + multipart/form-data: AssetsUploadAudioFileRequest + /v0/uploads/images: + post: + multipart/form-data: AssetsUploadImageForRecommendationRequest +responseDescriptions: {} +responseSchemaNames: {} +securityParameters: + audioUploadId: + query: false + bpmMax: + query: false + bpmMin: + query: false + duration: + query: false + end: + query: false + excludeField: + query: false + expand: + query: false + format: + query: false + genre: + query: false + limit: + query: false + mood: + query: false + offset: + query: false + order: + query: false + quality: + query: false + sort: + query: false + start: + query: false + term: + query: false + type: + query: false +validServerUrls: {} diff --git a/sdks/db/published/from-custom-request_epidemicsound.com.json b/sdks/db/published/from-custom-request_epidemicsound.com.json new file mode 100644 index 000000000..b9c19e5f0 --- /dev/null +++ b/sdks/db/published/from-custom-request_epidemicsound.com.json @@ -0,0 +1,1785 @@ +{ + "securitySchemes": { + "PartnerAuth": { + "type": "http", + "description": "Partner authentication is handled with short lived partner access tokens.\nUse your api credentials to request these tokens.\nThe access token is of JWT format and should be passed in a header with your API requests:\n\n> **Example Header:** `Authorization: Bearer your-partner-token`", + "scheme": "Bearer" + }, + "UserAuth": { + "type": "http", + "description": "User authentication is handled with short lived user access tokens.\n Use a partner token to request these tokens.\n The access token is of JWT format and should be passed in a header with your API requests:\n \n > **Example Header:** `Authorization: Bearer a-user-token`", + "scheme": "Bearer" + }, + "EpidemicSoundConnectAuth": { + "type": "oauth2", + "description": "For users signing in with an Epidemic Sound account, user authentication is\nhandled with OpenID Connect, which is a layer on top of OAuth 2.0.\n\n> **Example Header:** `Authorization: Bearer es-connect-token`", + "flows": { + "authorizationCode": { + "authorizationUrl": "https://login.epidemicsound.com/auth/realms/accounts/protocol/openid-connect/auth", + "tokenUrl": "https://login.epidemicsound.com/auth/realms/accounts/protocol/openid-connect/token", + "scopes": {} + } + } + } + }, + "apiBaseUrl": "https://partner-content-api.epidemicsound.com", + "apiVersion": "0.1.17", + "apiTitle": "Partner Content API", + "endpoints": 36, + "sdkMethods": 37, + "schemas": 65, + "parameters": 96, + "originalCustomRequest": { + "type": "GET", + "url": "https://partner-content-api.epidemicsound.com/docs/spec.json" + }, + "customRequestSpecFilename": "epidemicsound.com.yaml", + "difficultyScore": 92.5, + "difficulty": "Easy", + "company": "Epidemic Sound", + "sdkName": "epidemic-sound-{language}-sdk", + "clientName": "EpidemicSound", + "metaDescription": "Epidemic Sound has transformed the soundtracking experience for global brands and professional creators, with an expansive catalog of world-class music and sound effects that's seen and heard over 2.5 billion times a day around the globe. \n\nProviding a direct license model that comes with all rights included and next-generation soundtracking tools, Epidemic Sound empowers creators to unlock more feeling in everything they create and share their stories with the world. Epidemic Sound continuously enriches its world-class catalog of music by teaming up with artists, composers, and producers to create tracks spanning all genres, while supporting them financially and creatively.", + "apiStatusUrls": "inherit", + "homepage": "www.epidemicsound.com/", + "developerDocumentation": "partner-content-api.epidemicsound.com/swagger", + "categories": [ + "audio_generation", + "music", + "sound_effects", + "media", + "entertainment", + "royalty_free_music" + ], + "category": "Music", + "apiDescription": "Epidemic Sound has transformed the soundtracking experience for global brands and professional creators, with an expansive catalog of world-class music and sound effects that's seen and heard over 2.5 billion times a day around the globe. \n\nProviding a direct license model that comes with all rights included and next-generation soundtracking tools, Epidemic Sound empowers creators to unlock more feeling in everything they create and share their stories with the world. Epidemic Sound continuously enriches its world-class catalog of music by teaming up with artists, composers, and producers to create tracks spanning all genres, while supporting them financially and creatively.", + "methods": [ + { + "url": "/v0/collections", + "method": "collections", + "httpMethod": "get", + "tag": "Browse & search", + "typeScriptTag": "browse &Search", + "description": "List collections with tracks", + "parameters": [ + { + "name": "excludeField", + "schema": "string", + "required": false, + "description": "Add parameter if tracks should be excluded in the response" + }, + { + "name": "limit", + "schema": "integer", + "required": false, + "description": "Max number of entries returned in the response, default 10 and max 20" + }, + { + "name": "offset", + "schema": "integer", + "required": false, + "description": "Index of the entry track in the response" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "429", + "description": "" + } + ] + }, + { + "url": "/v0/collections/{collectionId}", + "method": "collection", + "httpMethod": "get", + "tag": "Browse & search", + "typeScriptTag": "browse &Search", + "description": "List all tracks in a collection", + "parameters": [ + { + "name": "collectionId", + "schema": "string", + "required": true, + "description": "Collection id", + "example": "COLLECTIONID" + }, + { + "name": "limit", + "schema": "integer", + "required": false, + "description": "Max number of entries returned in the response, default 50 and max 100" + }, + { + "name": "offset", + "schema": "integer", + "required": false, + "description": "Index of the entry track in the response" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "404", + "description": "" + }, + { + "statusCode": "429", + "description": "" + } + ] + }, + { + "url": "/v0/tracks", + "method": "tracks", + "httpMethod": "get", + "tag": "Tracks", + "typeScriptTag": "tracks", + "description": "List tracks based on mood, genre or BPM", + "parameters": [ + { + "name": "genre", + "schema": "array", + "required": false, + "description": "Id for genre" + }, + { + "name": "mood", + "schema": "array", + "required": false, + "description": "Id for mood" + }, + { + "name": "bpmMin", + "schema": "integer", + "required": false, + "description": "BPM Min" + }, + { + "name": "bpmMax", + "schema": "integer", + "required": false, + "description": "BPM Max" + }, + { + "name": "limit", + "schema": "integer", + "required": false, + "description": "Max number of entries returned in the response, default 50 and max 100" + }, + { + "name": "offset", + "schema": "integer", + "required": false, + "description": "Index of the entry track in the response" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "429", + "description": "" + } + ] + }, + { + "url": "/v0/tracks/search", + "method": "tracksSearchList", + "httpMethod": "get", + "tag": "Browse & search", + "typeScriptTag": "browse &Search", + "description": "Search for tracks", + "parameters": [ + { + "name": "offset", + "schema": "integer", + "required": false, + "description": "Index of the entry track in the response" + }, + { + "name": "limit", + "schema": "integer", + "required": false, + "description": "Max number of entries returned in the response, default 50 and max 100" + }, + { + "name": "term", + "schema": "string", + "required": false, + "description": "Term for search" + }, + { + "name": "genre", + "schema": "array", + "required": false, + "description": "Id for genre" + }, + { + "name": "mood", + "schema": "array", + "required": false, + "description": "Id for mood" + }, + { + "name": "sort", + "schema": "string", + "required": false, + "description": "Sort for search", + "default": "Relevance" + }, + { + "name": "order", + "schema": "string", + "required": false, + "description": "Order", + "default": "Asc" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "429", + "description": "" + }, + { + "statusCode": "503", + "description": "" + } + ] + }, + { + "url": "/v0/tracks/search/suggestions", + "method": "trackSuggestionsGet", + "httpMethod": "get", + "tag": "Browse & search", + "typeScriptTag": "browse &Search", + "description": "Search tracks suggestions", + "parameters": [ + { + "name": "term", + "schema": "string", + "required": false, + "description": "Term for search" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "429", + "description": "" + }, + { + "statusCode": "503", + "description": "" + } + ] + }, + { + "url": "/v0/tracks/parameters", + "method": "listParameters", + "httpMethod": "get", + "tag": "Tracks", + "typeScriptTag": "tracks", + "description": "List track parameters", + "parameters": [], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "429", + "description": "" + } + ] + }, + { + "url": "/v0/moods", + "method": "moodsList", + "httpMethod": "get", + "tag": "Browse & search", + "typeScriptTag": "browse &Search", + "description": "List moods", + "parameters": [ + { + "name": "sort", + "schema": "string", + "required": false, + "description": "Sorting options. Available values: alphabetic, relevance", + "default": "relevance" + }, + { + "name": "order", + "schema": "string", + "required": false, + "description": "Order options. Available values: asc, desc", + "default": "asc" + }, + { + "name": "type", + "schema": "string", + "required": false, + "description": "Types to filter by:\n * `all` - all the objects in the Epidemic Sound library\n * `partner-tier` - objects available to the partner within their tier\n * `featured` - only objects featured and curated by Epidemic Sound", + "default": "all" + }, + { + "name": "limit", + "schema": "integer", + "required": false, + "description": "Max number of entries returned in the response, default 20 and max 20" + }, + { + "name": "offset", + "schema": "integer", + "required": false, + "description": "Index of the entry track in the response" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "429", + "description": "" + } + ] + }, + { + "url": "/v0/moods/{moodId}", + "method": "moodDetails", + "httpMethod": "get", + "tag": "Browse & search", + "typeScriptTag": "browse &Search", + "description": "Mood by ID", + "parameters": [ + { + "name": "moodId", + "schema": "string", + "required": true, + "description": "Mood id", + "example": "MOODID" + }, + { + "name": "expand", + "schema": "string", + "required": false, + "description": "Add parameter if tracks should be included in the response" + }, + { + "name": "limit", + "schema": "integer", + "required": false, + "description": "Max number of entries returned in the response, default 50 and max 100" + }, + { + "name": "offset", + "schema": "integer", + "required": false, + "description": "Index of the entry track in the response" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "404", + "description": "" + }, + { + "statusCode": "429", + "description": "" + } + ] + }, + { + "url": "/v0/genres", + "method": "genreCatalog", + "httpMethod": "get", + "tag": "Browse & search", + "typeScriptTag": "browse &Search", + "description": "List genres", + "parameters": [ + { + "name": "sort", + "schema": "string", + "required": false, + "description": "Sorting options. Available values: alphabetic, relevance", + "default": "relevance" + }, + { + "name": "order", + "schema": "string", + "required": false, + "description": "Order options. Available values: asc, desc", + "default": "asc" + }, + { + "name": "type", + "schema": "string", + "required": false, + "description": "Types to filter by:\n * `all` - all the objects in the Epidemic Sound library\n * `partner-tier` - objects available to the partner within their tier\n * `featured` - only objects featured and curated by Epidemic Sound", + "default": "all" + }, + { + "name": "limit", + "schema": "integer", + "required": false, + "description": "Max number of entries returned in the response, default 20 and max 20" + }, + { + "name": "offset", + "schema": "integer", + "required": false, + "description": "Index of the entry track in the response" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "429", + "description": "" + } + ] + }, + { + "url": "/v0/genres/{genreId}", + "method": "genreDetails", + "httpMethod": "get", + "tag": "Browse & search", + "typeScriptTag": "browse &Search", + "description": "Genre details", + "parameters": [ + { + "name": "genreId", + "schema": "string", + "required": true, + "description": "Genre id", + "example": "GENREID" + }, + { + "name": "expand", + "schema": "string", + "required": false, + "description": "Add parameter if tracks should be included in the response" + }, + { + "name": "limit", + "schema": "integer", + "required": false, + "description": "Max number of entries returned in the response, default 50 and max 100" + }, + { + "name": "offset", + "schema": "integer", + "required": false, + "description": "Index of the entry track in the response" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "404", + "description": "" + }, + { + "statusCode": "429", + "description": "" + } + ] + }, + { + "url": "/v0/tracks/{trackId}/download", + "method": "download", + "httpMethod": "get", + "tag": "Tracks", + "typeScriptTag": "tracks", + "description": "Download track", + "parameters": [ + { + "name": "trackId", + "schema": "string", + "required": true, + "description": "Track id", + "example": "TRACKID" + }, + { + "name": "format", + "schema": "string", + "required": false, + "description": "Track format" + }, + { + "name": "quality", + "schema": "string", + "required": false, + "description": "Track quality, normal is used as the default if not specified", + "default": "normal" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "404", + "description": "" + }, + { + "statusCode": "429", + "description": "" + } + ] + }, + { + "url": "/v0/tracks/{trackId}/beats", + "method": "getBeatsData", + "httpMethod": "get", + "tag": "Tracks", + "typeScriptTag": "tracks", + "description": "Beats", + "parameters": [ + { + "name": "trackId", + "schema": "string", + "required": true, + "description": "Track id", + "example": "TRACKID" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "404", + "description": "" + }, + { + "statusCode": "429", + "description": "" + } + ] + }, + { + "url": "/v0/tracks/{trackId}/hls", + "method": "previewUsingCookies", + "httpMethod": "get", + "tag": "Tracks", + "typeScriptTag": "tracks", + "description": "Preview track using cookies", + "parameters": [ + { + "name": "trackId", + "schema": "string", + "required": true, + "description": "Track id", + "example": "TRACKID" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "404", + "description": "" + }, + { + "statusCode": "429", + "description": "" + } + ] + }, + { + "url": "/v0/tracks/{trackId}/similar", + "method": "getSimilar", + "httpMethod": "get", + "tag": "Tracks", + "typeScriptTag": "tracks", + "description": "Similar tracks", + "parameters": [ + { + "name": "trackId", + "schema": "string", + "required": true, + "description": "Track id", + "example": "TRACKID" + }, + { + "name": "offset", + "schema": "integer", + "required": false, + "description": "Index of the entry track in the response" + }, + { + "name": "limit", + "schema": "integer", + "required": false, + "description": "Max number of entries returned in the response, default 50 and max 100" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "404", + "description": "" + }, + { + "statusCode": "429", + "description": "" + } + ] + }, + { + "url": "/v0/tracks/similar-sections", + "method": "getSimilarSegments", + "httpMethod": "get", + "tag": "Tracks", + "typeScriptTag": "tracks", + "description": "Similar track segment based on audio file", + "parameters": [ + { + "name": "audioUploadId", + "schema": "string", + "required": true, + "description": "Reference to the uploaded audio file", + "example": "AUDIOUPLOADID" + }, + { + "name": "start", + "schema": "integer", + "required": true, + "description": "Start of the section in milliseconds", + "example": 0 + }, + { + "name": "end", + "schema": "integer", + "required": true, + "description": "End of the section in milliseconds", + "example": 0 + }, + { + "name": "offset", + "schema": "integer", + "required": false, + "description": "Index of the entry track in the response" + }, + { + "name": "limit", + "schema": "integer", + "required": false, + "description": "Max number of entries returned in the response, default 50 and max 100" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "404", + "description": "" + }, + { + "statusCode": "429", + "description": "" + } + ] + }, + { + "url": "/v0/tracks/{trackId}/similar-sections", + "method": "findSimilarSegments", + "httpMethod": "get", + "tag": "Tracks", + "typeScriptTag": "tracks", + "description": "Similar track segment based on trackID", + "parameters": [ + { + "name": "trackId", + "schema": "string", + "required": true, + "description": "Track id", + "example": "TRACKID" + }, + { + "name": "start", + "schema": "integer", + "required": true, + "description": "Start of the section in milliseconds", + "example": 0 + }, + { + "name": "end", + "schema": "integer", + "required": true, + "description": "End of the section in milliseconds", + "example": 0 + }, + { + "name": "offset", + "schema": "integer", + "required": false, + "description": "Index of the entry track in the response" + }, + { + "name": "limit", + "schema": "integer", + "required": false, + "description": "Max number of entries returned in the response, default 50 and max 100" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "404", + "description": "" + }, + { + "statusCode": "429", + "description": "" + } + ] + }, + { + "url": "/v0/tracks/{trackId}/stream", + "method": "stream", + "httpMethod": "get", + "tag": "Tracks", + "typeScriptTag": "tracks", + "description": "Preview track", + "parameters": [ + { + "name": "trackId", + "schema": "string", + "required": true, + "description": "Track id", + "example": "TRACKID" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "404", + "description": "" + }, + { + "statusCode": "429", + "description": "" + } + ] + }, + { + "url": "/v0/tracks/{trackId}/highlights", + "method": "recommendSection", + "httpMethod": "get", + "tag": "Tracks", + "typeScriptTag": "tracks", + "description": "Recommend section of a track", + "parameters": [ + { + "name": "trackId", + "schema": "string", + "required": true, + "description": "Track id", + "example": "TRACKID" + }, + { + "name": "duration", + "schema": "array", + "required": false, + "description": "The highlight duration in seconds" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "404", + "description": "" + }, + { + "statusCode": "429", + "description": "" + } + ] + }, + { + "url": "/v0/uploads/audio/{checksum}", + "method": "byChecksumGet", + "httpMethod": "get", + "tag": "Assets", + "typeScriptTag": "assets", + "description": "Get audio asset by the checksum", + "parameters": [ + { + "name": "checksum", + "schema": "string", + "required": true, + "description": "File checksum", + "example": "CHECKSUM" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "404", + "description": "" + }, + { + "statusCode": "429", + "description": "" + } + ] + }, + { + "url": "/v0/uploads/audio/{audioIdOrChecksum}", + "method": "deleteAudioFile", + "httpMethod": "delete", + "tag": "Assets", + "typeScriptTag": "assets", + "description": "Delete a single audio file", + "parameters": [ + { + "name": "audioIdOrChecksum", + "schema": "string", + "required": true, + "description": "Audio upload id or checksum of audio file", + "example": "AUDIOIDORCHECKSUM" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "202", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "429", + "description": "" + } + ] + }, + { + "url": "/v0/uploads/audio", + "method": "uploadAudioFile", + "httpMethod": "post", + "tag": "Assets", + "typeScriptTag": "assets", + "description": "Uploads an audio file", + "parameters": [ + { + "name": "file", + "schema": "string", + "description": "" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "429", + "description": "" + } + ] + }, + { + "url": "/v0/uploads/images/{imageId}", + "method": "deleteImage", + "httpMethod": "delete", + "tag": "Assets", + "typeScriptTag": "assets", + "description": "Delete uploaded image", + "parameters": [ + { + "name": "imageId", + "schema": "string", + "required": true, + "description": "Image id", + "example": "IMAGEID" + } + ], + "responses": [ + { + "statusCode": "204", + "description": "Image was deleted" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "404", + "description": "" + }, + { + "statusCode": "429", + "description": "" + } + ] + }, + { + "url": "/v0/uploads/images", + "method": "removeAllImages", + "httpMethod": "delete", + "tag": "Assets", + "typeScriptTag": "assets", + "description": "Delete all the uploaded images by the user", + "parameters": [], + "responses": [ + { + "statusCode": "202", + "description": "Images were marked for deletion" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "429", + "description": "" + } + ] + }, + { + "url": "/v0/uploads/images", + "method": "uploadImageForRecommendation", + "httpMethod": "post", + "tag": "Assets", + "typeScriptTag": "assets", + "description": "Upload image for recommendation", + "parameters": [ + { + "name": "file", + "schema": "string", + "description": "" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "429", + "description": "" + } + ] + }, + { + "url": "/v0/tracks/matching-image/{imageId}", + "method": "matchingImageGet", + "httpMethod": "get", + "tag": "Tracks", + "typeScriptTag": "tracks", + "description": "Get tracks matching an image", + "parameters": [ + { + "name": "imageId", + "schema": "string", + "required": true, + "description": "Image id", + "example": "IMAGEID" + }, + { + "name": "offset", + "schema": "integer", + "required": false, + "description": "Index of the entry track in the response" + }, + { + "name": "limit", + "schema": "integer", + "required": false, + "description": "Max number of entries returned in the response, default 50 and max 100" + }, + { + "name": "genre", + "schema": "array", + "required": false, + "description": "Id for genre" + }, + { + "name": "mood", + "schema": "array", + "required": false, + "description": "Id for mood" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "404", + "description": "" + }, + { + "statusCode": "429", + "description": "" + } + ] + }, + { + "url": "/v0/sound-effects/categories", + "method": "listCategories", + "httpMethod": "get", + "tag": "Sound effects", + "typeScriptTag": "soundEffects", + "description": "Get a list of all sound effects categories", + "parameters": [ + { + "name": "type", + "schema": "string", + "required": false, + "description": "Category type", + "default": "all" + }, + { + "name": "sort", + "schema": "string", + "required": false, + "description": "Sorting options", + "default": "title" + }, + { + "name": "offset", + "schema": "integer", + "required": false, + "description": "Index of the entry track in the response" + }, + { + "name": "limit", + "schema": "integer", + "required": false, + "description": "Max number of entries returned in the response, default 50 and max 100" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "429", + "description": "" + } + ] + }, + { + "url": "/v0/sound-effects/categories/{categoryId}", + "method": "getCategoryById", + "httpMethod": "get", + "tag": "Sound effects", + "typeScriptTag": "soundEffects", + "description": "Get a sound effects category by id", + "parameters": [ + { + "name": "categoryId", + "schema": "string", + "required": true, + "description": "Category id", + "example": "CATEGORYID" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "404", + "description": "" + }, + { + "statusCode": "429", + "description": "" + } + ] + }, + { + "url": "/v0/sound-effects/categories/{categoryId}/tracks", + "method": "getByCategoryTracks", + "httpMethod": "get", + "tag": "Sound effects", + "typeScriptTag": "soundEffects", + "description": "Get sound effects by category", + "parameters": [ + { + "name": "categoryId", + "schema": "string", + "required": true, + "description": "Category id", + "example": "CATEGORYID" + }, + { + "name": "offset", + "schema": "integer", + "required": false, + "description": "Index of the entry track in the response" + }, + { + "name": "limit", + "schema": "integer", + "required": false, + "description": "Max number of entries returned in the response, default 50 and max 100" + }, + { + "name": "sort", + "schema": "string", + "required": false, + "description": "Sort", + "default": "newest" + }, + { + "name": "order", + "schema": "string", + "required": false, + "description": "Order", + "default": "asc" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "404", + "description": "" + }, + { + "statusCode": "429", + "description": "" + } + ] + }, + { + "url": "/v0/sound-effects/{trackId}/download", + "method": "downloadSoundEffect", + "httpMethod": "get", + "tag": "Sound effects", + "typeScriptTag": "soundEffects", + "description": "Download sound effect", + "parameters": [ + { + "name": "trackId", + "schema": "string", + "required": true, + "description": "Track id", + "example": "TRACKID" + }, + { + "name": "format", + "schema": "string", + "required": false, + "description": "Track format" + }, + { + "name": "quality", + "schema": "string", + "required": false, + "description": "Track quality, normal is used as the default if not specified", + "default": "normal" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "404", + "description": "" + }, + { + "statusCode": "429", + "description": "" + } + ] + }, + { + "url": "/v0/sound-effects/search", + "method": "searchSoundEffects", + "httpMethod": "get", + "tag": "Sound effects", + "typeScriptTag": "soundEffects", + "description": "Search sound effects", + "parameters": [ + { + "name": "offset", + "schema": "integer", + "required": false, + "description": "Index of the entry track in the response" + }, + { + "name": "limit", + "schema": "integer", + "required": false, + "description": "Max number of entries returned in the response, default 50 and max 100" + }, + { + "name": "term", + "schema": "string", + "required": false, + "description": "Term for search" + }, + { + "name": "sort", + "schema": "string", + "required": false, + "description": "Sort for search", + "default": "best-match" + }, + { + "name": "order", + "schema": "string", + "required": false, + "description": "Order", + "default": "asc" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "429", + "description": "" + } + ] + }, + { + "url": "/v0/analytics/report", + "method": "epidemicEventSubmission", + "httpMethod": "post", + "tag": "Reporting", + "typeScriptTag": "reporting", + "description": "Report events to Epidemic Sound", + "parameters": [ + { + "name": "events", + "schema": "array", + "required": true, + "description": "" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "429", + "description": "" + } + ] + }, + { + "url": "/v0/usage", + "method": "use", + "httpMethod": "post", + "tag": "Reporting", + "typeScriptTag": "reporting", + "description": "Report usage", + "parameters": [ + { + "name": "eventType", + "schema": "string", + "required": false, + "description": "" + }, + { + "name": "platform", + "schema": "string", + "required": true, + "description": "", + "example": "PLATFORM" + }, + { + "name": "trackIds", + "schema": "array", + "required": true, + "description": "" + }, + { + "name": "other", + "schema": "string", + "required": false, + "description": "" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "429", + "description": "" + } + ] + }, + { + "url": "/v0/partner-token", + "method": "requestPartnerToken", + "httpMethod": "post", + "tag": "Authentication", + "typeScriptTag": "authentication", + "description": "Request a partner token", + "parameters": [ + { + "name": "accessKeyId", + "schema": "string", + "required": true, + "description": "", + "example": "ACCESSKEYID" + }, + { + "name": "accessKeySecret", + "schema": "string", + "required": true, + "description": "", + "example": "ACCESSKEYSECRET" + } + ], + "responses": [ + { + "statusCode": "201", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "429", + "description": "" + } + ] + }, + { + "url": "/v0/token", + "method": "requestUserToken", + "httpMethod": "post", + "tag": "Authentication", + "typeScriptTag": "authentication", + "description": "Request a user token", + "parameters": [ + { + "name": "userId", + "schema": "string", + "required": true, + "description": "", + "example": "4fbd5793-efcd-4545-b4e9-807c8ed9e2a3" + } + ], + "responses": [ + { + "statusCode": "201", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "429", + "description": "" + } + ] + }, + { + "url": "/v0/users/me", + "method": "getDetails", + "httpMethod": "get", + "tag": "Users", + "typeScriptTag": "users", + "description": "User details", + "parameters": [], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "429", + "description": "" + } + ] + }, + { + "url": "/v0/users/me/subscription", + "method": "getSubscriptionDetails", + "httpMethod": "get", + "tag": "Users", + "typeScriptTag": "users", + "description": "User subscription details", + "parameters": [], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "429", + "description": "" + } + ] + }, + { + "url": "/v0/users/me/liked/tracks", + "method": "listLikedTracks", + "httpMethod": "get", + "tag": "Users", + "typeScriptTag": "users", + "description": "List users’ liked tracks", + "parameters": [ + { + "name": "offset", + "schema": "integer", + "required": false, + "description": "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." + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "429", + "description": "" + } + ] + } + ], + "repositoryDescription": "Epidemic Sound offers a vast catalog of music and sound effects with a direct license model for creators worldwide. Enriched by collaborations with artists and producers, it empowers creators to share their stories through next-generation soundtracking tools. Epidemic Sound's {language} SDK generated by Konfig (https://konfigthis.com/).", + "logo": "https://raw.githubusercontent.com/konfig-sdks/openapi-examples/HEAD/epidemic-sound/logo.png", + "openApiRaw": "https://raw.githubusercontent.com/konfig-sdks/openapi-examples/HEAD/epidemic-sound/openapi.yaml", + "openApiGitHubUi": "https://github.com/konfig-sdks/openapi-examples/tree/HEAD/epidemic-sound/openapi.yaml", + "previewLinkImage": "https://raw.githubusercontent.com/konfig-sdks/openapi-examples/HEAD/epidemic-sound/imagePreview.png", + "faviconUrl": "https://raw.githubusercontent.com/konfig-sdks/openapi-examples/HEAD/epidemic-sound/favicon.png", + "clientNameCamelCase": "epidemicSound", + "lastUpdated": "2024-03-28T23:35:30.055Z", + "typescriptSdkUsageCode": "import { EpidemicSound } from 'epidemic-sound-typescript-sdk';\n\nconst epidemicSound = new EpidemicSound({\n /*\n * Partner authentication is handled with short lived partner access tokens.\n * Use your api credentials to request these tokens.\n * The access token is of JWT format and should be passed in a header with your API requests:\n * \n * > **Example Header:** `Authorization: Bearer your-partner-token`\n */\n partnerAuth: \"PARTNER_AUTH\",\n /*\n * User authentication is handled with short lived user access tokens.\n * Use a partner token to request these tokens.\n * The access token is of JWT format and should be passed in a header with your API requests:\n * \n * > **Example Header:** `Authorization: Bearer a-user-token`\n */\n userAuth: \"USER_AUTH\",\n /*\n * For users signing in with an Epidemic Sound account, user authentication is\n * handled with OpenID Connect, which is a layer on top of OAuth 2.0.\n * \n * > **Example Header:** `Authorization: Bearer es-connect-token`\n */\n clientId: \"CLIENT_ID\",\n clientSecret: \"CLIENT_SECRET\",\n redirectUri: \"REDIRECT_URI\"\n})", + "typescriptSdkFirstRequestCode": "// List collections with tracks\nconst collectionsResponse = epidemicSound.browse &Search.collections()", + "fixedSpecFileName": "epidemic-sound-fixed-spec.yaml" +} \ No newline at end of file diff --git a/sdks/db/spec-data/from-custom-request_epidemicsound.com.json b/sdks/db/spec-data/from-custom-request_epidemicsound.com.json new file mode 100644 index 000000000..a8eb39326 --- /dev/null +++ b/sdks/db/spec-data/from-custom-request_epidemicsound.com.json @@ -0,0 +1,39 @@ +{ + "securitySchemes": { + "PartnerAuth": { + "type": "http", + "description": "Partner authentication is handled with short lived partner access tokens.\nUse your api credentials to request these tokens.\nThe access token is of JWT format and should be passed in a header with your API requests:\n\n> **Example Header:** `Authorization: Bearer your-partner-token`", + "scheme": "Bearer" + }, + "UserAuth": { + "type": "http", + "description": "User authentication is handled with short lived user access tokens.\n Use a partner token to request these tokens.\n The access token is of JWT format and should be passed in a header with your API requests:\n \n > **Example Header:** `Authorization: Bearer a-user-token`", + "scheme": "Bearer" + }, + "EpidemicSoundConnectAuth": { + "type": "oauth2", + "description": "For users signing in with an Epidemic Sound account, user authentication is\nhandled with OpenID Connect, which is a layer on top of OAuth 2.0.\n\n> **Example Header:** `Authorization: Bearer es-connect-token`", + "flows": { + "authorizationCode": { + "authorizationUrl": "https://login.epidemicsound.com/auth/realms/accounts/protocol/openid-connect/auth", + "tokenUrl": "https://login.epidemicsound.com/auth/realms/accounts/protocol/openid-connect/token", + "scopes": {} + } + } + } + }, + "apiBaseUrl": "https://partner-content-api.epidemicsound.com", + "apiVersion": "0.1.17", + "apiTitle": "Partner Content API", + "endpoints": 36, + "sdkMethods": 37, + "schemas": 63, + "parameters": 96, + "originalCustomRequest": { + "type": "GET", + "url": "https://partner-content-api.epidemicsound.com/docs/spec.json" + }, + "customRequestSpecFilename": "epidemicsound.com.yaml", + "difficultyScore": 92.5, + "difficulty": "Easy" +} \ No newline at end of file diff --git a/sdks/db/spec-data/mandrillapp.com_1.0.json b/sdks/db/spec-data/mandrillapp.com_1.0.json index a4e632a78..f098f8940 100644 --- a/sdks/db/spec-data/mandrillapp.com_1.0.json +++ b/sdks/db/spec-data/mandrillapp.com_1.0.json @@ -17,5 +17,5 @@ "schemas": 95, "parameters": 244, "difficultyScore": 198.5, - "difficulty": "Medium" + "difficulty": "Hard" } \ No newline at end of file diff --git a/sdks/publish.yaml b/sdks/publish.yaml index aeccf9a80..6182a58bb 100644 --- a/sdks/publish.yaml +++ b/sdks/publish.yaml @@ -7065,3 +7065,32 @@ publish: serviceName: false sdkName: global-predictions-inc-{language}-sdk clientName: GlobalPredictionsInc + from-custom-request_epidemicsound.com: + homepage: www.epidemicsound.com/ + company: Epidemic Sound + developerDocumentation: partner-content-api.epidemicsound.com/swagger + apiStatusUrls: inherit + metaDescription: >- + Epidemic Sound has transformed the soundtracking experience for global + brands and professional creators, with an expansive catalog of world-class + music and sound effects that's seen and heard over 2.5 billion times a day + around the globe. + + + Providing a direct license model that comes with all rights included and + next-generation soundtracking tools, Epidemic Sound empowers creators to + unlock more feeling in everything they create and share their stories with + the world. Epidemic Sound continuously enriches its world-class catalog of + music by teaming up with artists, composers, and producers to create + tracks spanning all genres, while supporting them financially and + creatively. + categories: + - audio_generation + - music + - sound_effects + - media + - entertainment + - royalty_free_music + serviceName: false + sdkName: epidemic-sound-{language}-sdk + clientName: EpidemicSound diff --git a/sdks/src/collect-from-custom-requests.ts b/sdks/src/collect-from-custom-requests.ts index 52d476cfc..ad0fe0e56 100644 --- a/sdks/src/collect-from-custom-requests.ts +++ b/sdks/src/collect-from-custom-requests.ts @@ -2236,6 +2236,10 @@ const customRequests: Record = { type: "GET", url: "https://portfoliopilot.com/static/external_api/external_api.yaml", }, + "epidemicsound.com": { + type: "GET", + url: "https://partner-content-api.epidemicsound.com/docs/spec.json", + }, }; async function downloadOpenApiSpecFromMintlify({