openapi: 3.0.0
info:
title: Shutterstock API Reference audio API
description: The Shutterstock API provides access to Shutterstock's library of media, as well as information about customers' accounts and the contributors that provide the media. The API enables searching, browsing, licensing, and downloading images, videos, audio tracks, and sound effects. It also supports editorial content, computer vision features, collection management, and OAuth 2.0 authentication.
version: 1.0.30
contact:
name: Shutterstock Developer Support
url: https://www.shutterstock.com/developers/contact-us
license:
name: Shutterstock API Terms
url: https://www.shutterstock.com/api/terms
servers:
- url: https://api.shutterstock.com
description: Shutterstock API
tags:
- name: audio
paths:
/v2/audio/search:
get:
parameters:
- description: Show tracks with one of the specified artist names or IDs
in: query
name: artists
schema:
type: array
items:
type: string
uniqueItems: false
- description: (Deprecated; use bpm_from and bpm_to instead) Show tracks with the specified beats per minute
in: query
name: bpm
deprecated: true
schema:
type: integer
uniqueItems: true
- description: Show tracks with the specified beats per minute or faster
in: query
name: bpm_from
schema:
type: integer
uniqueItems: true
- description: Show tracks with the specified beats per minute or slower
in: query
name: bpm_to
schema:
type: integer
uniqueItems: true
- description: Show tracks with the specified duration in seconds
in: query
name: duration
schema:
type: integer
uniqueItems: true
- description: Show tracks with the specified duration or longer in seconds
in: query
name: duration_from
schema:
type: integer
uniqueItems: true
- description: Show tracks with the specified duration or shorter in seconds
in: query
name: duration_to
schema:
type: integer
uniqueItems: true
- description: Show tracks with each of the specified genres; to get the list of genres, use `GET /v2/audio/genres`
in: query
name: genre
explode: true
example:
- Classical
- Holiday
schema:
type: array
items:
type: string
uniqueItems: false
- description: Show instrumental music only
in: query
name: is_instrumental
schema:
type: boolean
uniqueItems: true
- description: Show tracks with each of the specified instruments; to get the list of instruments, use `GET /v2/audio/instruments`
in: query
name: instruments
explode: true
example:
- Trumpet
- Percussion
schema:
type: array
items:
type: string
uniqueItems: false
- description: Show tracks with each of the specified moods; to get the list of moods, use `GET /v2/audio/moods`
in: query
name: moods
explode: true
example:
- Confident
- Playful
schema:
type: array
items:
type: string
uniqueItems: false
- description: Page number
in: query
name: page
schema:
type: integer
minimum: 1
default: 1
uniqueItems: true
- description: Number of results per page
in: query
name: per_page
example: 1
schema:
type: integer
minimum: 0
maximum: 500
default: 20
uniqueItems: true
- description: One or more search terms separated by spaces
in: query
name: query
example: drum
schema:
type: string
uniqueItems: true
- description: Sort by
in: query
name: sort
schema:
type: string
enum:
- score
- ranking_all
- artist
- title
- bpm
- freshness
- duration
uniqueItems: true
- description: Sort order
in: query
name: sort_order
schema:
type: string
default: desc
enum:
- asc
- desc
uniqueItems: true
- description: Show tracks with the specified vocal description (male, female)
in: query
name: vocal_description
schema:
type: string
uniqueItems: true
- description: Amount of detail to render in the response
in: query
name: view
example: full
schema:
type: string
enum:
- minimal
- full
default: minimal
uniqueItems: true
- description: Fields to display in the response; see the documentation for the fields parameter in the overview section
in: query
name: fields
schema:
type: string
uniqueItems: true
- description: Which library to search
in: query
name: library
schema:
type: string
enum:
- shutterstock
- premier
default: premier
uniqueItems: true
- description: Which language to search in
in: query
name: language
schema:
type: string
uniqueItems: true
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/AudioSearchResults'
examples:
response:
value:
page: 1
per_page: 5
total_count: 25
search_id: c298887c-6f3e-45df-b6cd-41b246e4a104
data:
- vocal_description: ''
keywords:
- celebratory
- chic
- euphoric
- good times
- hip
- optimistic
- party
- soaring
- upbeat
artists:
- name: Klimenko Music
genres:
- Dance/Electronic
- Electro Pop
- Pop/Rock
instruments:
- Piano
- Synth bass
- Synth drums
- Synthesizer
id: '442583'
isrc: ''
description: Pulsing and feel-good, featuring soaring synthesizer, groovy synth bass drums and synth drums that create a euphoric, upbeat mood.
similar_artists: []
releases: []
is_instrumental: true
title: Another Tomorrow
is_adult: false
lyrics: ''
media_type: audio
recording_version: ''
moods:
- Bright
- Confident
- Fun
- Happy
- Inspiring
- Optimistic
- Playful
- Sophisticated
- Stylish
- Uplifting
language: en
assets:
clean_audio:
file_size: 35188408
preview_mp3:
file_size: 4400203
url: https://ak.picdn.net/shutterstock/audio/442583/preview/preview.mp3
preview_ogg:
file_size: 4453197
url: https://ak.picdn.net/shutterstock/audio/442583/preview/preview.ogg
waveform:
file_size: 18778
url: https://ak.picdn.net/shutterstock/audio/442583/waveform/waveform.png
contributor:
id: '2847971'
duration: 183
album:
id: ''
title: ''
published_time: '2016-08-16T14:30:03-04:00'
updated_time: '2016-08-18T17:59:33-04:00'
bpm: 110
added_date: '2016-08-16'
url: ''
'400':
description: Bad Request
'401':
description: Unauthorized
'403':
description: Forbidden
security:
- basic: []
- customer_accessCode: []
tags:
- audio
x-code-samples:
- lang: shell
source: 'curl -X GET "https://api.shutterstock.com/v2/audio/search" \
--header "Authorization: Bearer $SHUTTERSTOCK_API_TOKEN" \
-G \
--data-urlencode "query=bluegrass" \
--data-urlencode "duration_from=60" \
--data-urlencode "moods=uplifting"
'
- lang: javascript--nodejs
source: "const sstk = require(\"shutterstock-api\");\n\nsstk.setAccessToken(process.env.SHUTTERSTOCK_API_TOKEN);\n\nconst audioApi = new sstk.AudioApi();\n\nconst queryParams = {\n \"query\": \"bluegrass\",\n \"duration_from\": 60,\n \"moods\": [\"uplifting\"]\n};\n\naudioApi.searchAudio(queryParams)\n .then((data) => {\n console.log(data);\n })\n .catch((error) => {\n console.error(error);\n });\n"
- lang: php
source: "$queryFields = [\n \"query\" => \"bluegrass\",\n \"duration_from\" => 60,\n \"moods\" => \"uplifting\"\n];\n\n$options = [\n CURLOPT_URL => \"https://api.shutterstock.com/v2/audio/search?\" . http_build_query($queryFields),\n CURLOPT_USERAGENT => \"php/curl\",\n CURLOPT_HTTPHEADER => [\n \"Authorization: Bearer $SHUTTERSTOCK_API_TOKEN\"\n ],\n CURLOPT_RETURNTRANSFER => 1\n];\n\n$handle = curl_init();\ncurl_setopt_array($handle, $options);\n$response = curl_exec($handle);\ncurl_close($handle);\n\n$decodedResponse = json_decode($response);\nprint_r($decodedResponse);\n"
operationId: searchAudio
summary: Search for tracks
description: This endpoint searches for tracks. If you specify more than one search parameter, the API uses an AND condition. Array parameters can be specified multiple times; in this case, the API uses an AND or an OR condition with those values, depending on the parameter.
/v2/audio/genres:
get:
security:
- basic: []
- customer_accessCode: []
tags:
- audio
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/GenreList'
examples:
response:
value:
data:
- Rock
operationId: getGenres
summary: List audio genres
description: This endpoint returns a list of all audio genres.
/v2/audio/instruments:
get:
security:
- basic: []
- customer_accessCode: []
tags:
- audio
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/InstrumentList'
examples:
response:
value:
data:
- Electric Guitar
operationId: getInstruments
summary: List audio instruments
description: This endpoint returns a list of all audio instruments.
/v2/audio/moods:
get:
security:
- basic: []
- customer_accessCode: []
tags:
- audio
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/MoodList'
examples:
response:
value:
data:
- Aggressive
operationId: getMoods
summary: List audio moods
description: This endpoint returns a list of all audio moods.
/v2/audio:
get:
parameters:
- description: One or more audio IDs
in: query
name: id
required: true
example:
- '442583'
- '434750'
schema:
type: array
items:
type: string
minItems: 1
- description: Amount of detail to render in the response
in: query
name: view
example: full
schema:
type: string
enum:
- minimal
- full
default: minimal
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/AudioDataList'
examples:
response:
value:
data:
- vocal_description: ''
keywords:
- breezy
- celebration
- festive
- good times
- hopeful
- optimistic
- party
- positive
- reflective
artists:
- name: Fin Productions
genres:
- Dance/Electronic
- Electro Pop
- Pop/Rock
instruments:
- Bass
- Drums
- Electric guitar
- Pads
- Percussion
- Synthesizer
id: '434750'
isrc: ''
description: Pulsing and feel-good, featuring slick electric guitar, synthesizer, bass, electronic drum pads and drums that create a positive, celebratory mood.
similar_artists: []
releases: []
is_instrumental: true
title: Fresh Love
is_adult: false
lyrics: ''
media_type: audio
recording_version: ''
moods:
- Bright
- Confident
- Fun
- Happy
- Inspiring
- Optimistic
- Playful
- Sophisticated
- Stylish
- Uplifting
language: en
assets:
clean_audio:
file_size: 30760372
preview_mp3:
file_size: 3846606
url: https://ak.picdn.net/shutterstock/audio/434750/preview/preview.mp3
preview_ogg:
file_size: 4402608
url: https://ak.picdn.net/shutterstock/audio/434750/preview/preview.ogg
waveform:
file_size: 19822
url: https://ak.picdn.net/shutterstock/audio/434750/waveform/waveform.png
contributor:
id: '2847971'
duration: 160
album:
id: ''
title: ''
published_time: '2016-04-12T17:45:29-04:00'
updated_time: '2016-08-18T18:03:11-04:00'
bpm: 100
added_date: '2016-04-12'
url: ''
'400':
description: Bad Request
'401':
description: Unauthorized
'403':
description: Forbidden
security:
- basic: []
- customer_accessCode: []
tags:
- audio
operationId: getTrackList
summary: List audio tracks
description: This endpoint lists information about one or more audio tracks, including the description and publication date.
/v2/audio/{id}:
get:
parameters:
- description: Audio track ID
in: path
name: id
required: true
example: '442583'
schema:
type: integer
- description: Amount of detail to render in the response
in: query
name: view
example: full
schema:
type: string
enum:
- minimal
- full
default: full
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/Audio'
examples:
response:
value:
vocal_description: ''
keywords:
- celebratory
- chic
- euphoric
- good times
- hip
- optimistic
- party
- soaring
- upbeat
artists:
- name: Klimenko Music
genres:
- Dance/Electronic
- Electro Pop
- Pop/Rock
instruments:
- Piano
- Synth bass
- Synth drums
- Synthesizer
id: '442583'
isrc: ''
description: Pulsing and feel-good, featuring soaring synthesizer, groovy synth bass drums and synth drums that create a euphoric, upbeat mood.
similar_artists: []
releases: []
is_instrumental: true
title: Another Tomorrow
is_adult: false
lyrics: ''
media_type: audio
recording_version: ''
moods:
- Bright
- Confident
- Fun
- Happy
- Inspiring
- Optimistic
- Playful
- Sophisticated
- Stylish
- Uplifting
language: en
assets:
clean_audio:
file_size: 35188408
preview_mp3:
file_size: 4400203
url: https://ak.picdn.net/shutterstock/audio/442583/preview/preview.mp3
preview_ogg:
file_size: 4453197
url: https://ak.picdn.net/shutterstock/audio/442583/preview/preview.ogg
waveform:
file_size: 18778
url: https://ak.picdn.net/shutterstock/audio/442583/waveform/waveform.png
contributor:
id: '2847971'
duration: 183
album:
id: ''
title: ''
published_time: '2016-08-16T14:30:03-04:00'
updated_time: '2016-08-18T17:59:33-04:00'
bpm: 110
added_date: '2016-08-16'
url: ''
'400':
description: Bad Request
'401':
description: Unauthorized
'403':
description: Forbidden
security:
- basic: []
- customer_accessCode: []
tags:
- audio
operationId: getTrack
summary: Get details about audio tracks
description: This endpoint shows information about a track, including its genres, instruments, and other attributes.
/v2/audio/licenses:
post:
parameters:
- description: License type
in: query
name: license
schema:
type: string
enum:
- audio_platform
- premier_music_basic
- premier_music_extended
- premier_music_pro
- premier_music_comp
- description: The ID of the search that led to licensing this track
in: query
name: search_id
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/LicenseAudioResultDataList'
examples:
response:
value:
data:
- audio_id: '1'
download:
url: http://download2.dev.shutterstock.com/gatekeeper/abc/original.wav
'400':
description: Bad Request
'401':
description: Unauthorized
'403':
description: Forbidden
security:
- customer_accessCode:
- licenses.create
x-code-samples:
- lang: shell
source: "DATA='{\n \"audio\": [\n {\n \"audio_id\": \"591623\",\n \"license\": \"audio_platform\",\n \"metadata\": {\n \"customer_id\": \"12345\"\n }\n }\n ]\n}'\n\ncurl -X POST https://api.shutterstock.com/v2/audio/licenses \\\n-d \"$DATA\" \\\n-H \"Content-Type: application/json\" \\\n-H \"Accept: application/json\" \\\n-H \"Authorization: Bearer $SHUTTERSTOCK_API_TOKEN\"\n"
- lang: javascript--nodejs
source: "const sstk = require(\"shutterstock-api\");\n\nsstk.setAccessToken(process.env.SHUTTERSTOCK_API_TOKEN);\n\nconst audioApi = new sstk.AudioApi();\n\nconst body = {\n \"audio\": [\n {\n \"audio_id\": \"446348\",\n \"license\": \"audio_platform\",\n \"metadata\": {\n \"customer_id\": \"12345\"\n }\n }\n ]\n};\n\naudioApi.licenseTrack(body)\n .then(({ data }) => {\n console.log(data);\n })\n .catch((error) => {\n console.error(error);\n });\n"
- lang: php
source: "$body = [\n \"audio\" => [\n [\n \"audio_id\" => \"591623\",\n \"license\" => \"audio_platform\",\n \"metadata\" => [\n \"customer_id\" => \"12345\"\n ]\n ]\n ]\n];\n$encodedBody = json_encode($body);\n\n$options = [\n CURLOPT_URL => \"https://api.shutterstock.com/v2/audio/licenses\",\n CURLOPT_CUSTOMREQUEST => \"POST\",\n CURLOPT_POSTFIELDS => $encodedBody,\n CURLOPT_USERAGENT => \"php/curl\",\n CURLOPT_HTTPHEADER => [\n \"Authorization: Bearer $SHUTTERSTOCK_API_TOKEN\",\n \"Content-Type: application/json\"\n ],\n CURLOPT_RETURNTRANSFER => 1\n];\n\n$handle = curl_init();\ncurl_setopt_array($handle, $options);\n$response = curl_exec($handle);\ncurl_close($handle);\n\n$decodedResponse = json_decode($response);\nprint_r($decodedResponse);\n"
tags:
- audio
operationId: licenseTrack
summary: License audio tracks
description: This endpoint gets licenses for one or more tracks.
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/LicenseAudioRequest'
examples:
default:
description: Overwrite content of soundbox with new items
value:
audio:
- audio_id: '591623'
license: audio_platform
metadata:
customer_id: '12345'
description: Tracks to license
required: true
get:
parameters:
- description: Show licenses for the specified track ID
in: query
name: audio_id
example: '1'
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/DownloadHistoryDataList'
'400':
description: Bad Request
'401':
description: Unauthorized
'403':
description: Forbidden
security:
- customer_accessCode:
- licenses.view
tags:
- audio
operationId: getAudioLicenseList
summary: List audio licenses
description: This endpoint lists existing licenses. You can filter the results according to the track ID to see if you have an existing license for a specific track.
/v2/audio/licenses/{id}/downloads:
post:
parameters:
- description: License ID
in: path
name: id
required: true
example: e123
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/Url'
'400':
description: Bad Request
'401':
description: Unauthorized
'403':
description: Forbidden
security:
- customer_accessCode:
- licenses.view
x-code-samples:
- lang: shell
source: 'curl -X POST https://api.shutterstock.com/v2/audio/licenses/e123/downloads \
-H "Accept: application/json" \
-H "Authorization: Bearer $SHUTTERSTOCK_API_TOKEN"
'
- lang: javascript--nodejs
source: "const sstk = require(\"shutterstock-api\");\n\nsstk.setAccessToken(process.env.SHUTTERSTOCK_API_TOKEN);\n\nconst audioApi = new sstk.AudioApi();\n\nconst licenseId = \"e123\"; // license ID, not track ID\n\naudioApi.downloadTracks(licenseId)\n .then((data) => {\n console.log(data);\n })\n .catch((error) => {\n console.error(error);\n });\n"
- lang: php
source: "$options = [\n CURLOPT_URL => \"https://api.shutterstock.com/v2/audio/licenses/e123/downloads\",\n CURLOPT_USERAGENT => \"php/curl\",\n CURLOPT_HTTPHEADER => [\n \"Authorization: Bearer $SHUTTERSTOCK_API_TOKEN\"\n ],\n CURLOPT_RETURNTRANSFER => 1\n];\n\n$handle = curl_init();\ncurl_setopt_array($handle, $options);\n$response = curl_exec($handle);\ncurl_close($handle);\n\n$decodedResponse = json_decode($response);\nprint_r($decodedResponse);\n"
tags:
- audio
operationId: downloadTracks
summary: Download audio tracks
description: This endpoint redownloads tracks that you have already received a license for.
/v2/audio/collections:
post:
responses:
'200':
description: No response was specified
content:
application/json:
schema:
$ref: '#/components/schemas/CollectionCreateResponse'
'201':
description: Successfully created collection
content:
application/json:
examples:
response:
value:
id: '48433105'
'400':
description: Bad Request
'401':
description: Unauthorized
'403':
description: Forbidden
security:
- customer_accessCode:
- collections.edit
x-code-samples:
- lang: shell
source: "DATA='{\n \"name\": \"Best rock music\"\n}'\n\ncurl -X POST https://api.shutterstock.com/v2/audio/collections \\\n-d \"$DATA\" \\\n-H \"Content-Type: application/json\" \\\n-H \"Accept: application/json\" \\\n-H \"Authorization: Bearer $SHUTTERSTOCK_API_TOKEN\""
- lang: javascript--nodejs
source: "const sstk = require(\"shutterstock-api\");\n\nsstk.setAccessToken(process.env.SHUTTERSTOCK_API_TOKEN);\n\nconst audioApi = new sstk.AudioApi();\n\nconst body = {\n \"name\": \"Best rock music\"\n};\n\naudioApi.createSoundbox(body)\n .catch((error) => {\n console.error(error);\n });\n"
- lang: php
source: "$body = [\n \"name\" => \"Best rock music\"\n];\n$encodedBody = json_encode($body);\n\n$options = [\n CURLOPT_URL => \"https://api.shutterstock.com/v2/audio/collections\",\n CURLOPT_CUSTOMREQUEST => \"POST\",\n CURLOPT_POSTFIELDS => $encodedBody,\n CURLOPT_USERAGENT => \"php/curl\",\n CURLOPT_HTTPHEADER => [\n \"Authorization: Bearer $SHUTTERSTOCK_API_TOKEN\",\n \"Content-Type: application/json\"\n ],\n CURLOPT_RETURNTRANSFER => 1\n];\n\n$handle = curl_init();\ncurl_setopt_array($handle, $options);\n$response = curl_exec($handle);\ncurl_close($handle);\n\n$decodedResponse = json_decode($response);\nprint_r($decodedResponse);"
tags:
- audio
operationId: createSoundbox
summary: Create audio collections
description: This endpoint creates one or more collections (soundboxes). To add tracks, use `POST /v2/audio/collections/{id}/items`.
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/CollectionCreateRequest'
examples:
default:
description: Create a soundbox
value:
name: Best rock music
description: Collection metadata
required: true
get:
parameters:
- description: Page number
in: query
name: page
example: '1'
schema:
type: integer
minimum: 1
default: 1
- description: Number of results per page
in: query
name: per_page
example: '100'
schema:
type: integer
minimum: 1
maximum: 150
default: 100
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/CollectionDataList'
examples:
response:
value:
data:
- name: Test Collection cdad
updated_time: '2014-11-05T19:29:56-05:00'
id: '5747953'
total_item_count: 0
created_time: '2014-11-05T19:29:56-05:00'
- name: Test Collection ff5f
updated_time: '2014-11-05T19:29:56-05:00'
id: '5747955'
total_item_count: 0
created_time: '2014-11-05T19:29:56-05:00'
- name: Updated Collection ebc4
updated_time: '2014-11-05T19:29:58-05:00'
id: '5747957'
total_item_count: 0
created_time: '2014-11-05T19:29:58-05:00'
- name: Test Collection 0072
updated_time: '2014-11-05T19:32:13-05:00'
id: '5747971'
total_item_count: 0
created_time: '2014-11-05T19:32:13-05:00'
- name: Test Collection d332
updated_time: '2014-11-05T19:32:13-05:00'
id: '5747973'
total_item_count: 0
created_time: '2014-11-05T19:32:13-05:00'
'400':
description: Bad Request
'401':
description: Unauthorized
'403':
description: Forbidden
security:
- customer_accessCode:
- collections.view
tags:
- audio
operationId: getSoundboxList
summary: List audio collections
description: This endpoint lists your collections of audio tracks and their basic attributes.
/v2/audio/collections/{id}:
get:
parameters:
- description: Collection ID
in: path
name: id
required: true
example: '48433107'
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/Collection'
examples:
response:
value:
name: Test Co
# --- truncated at 32 KB (68 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/shutterstock/refs/heads/main/openapi/shutterstock-audio-api-openapi.yml