Photography — entry 021 of 25

shutterstock

Verified Jul 2026

Shutterstock's REST API covers search across its image, video, audio, and editorial libraries plus licensing, downloading, collections, and contributor account management, returning JSON with pagination up to 500 results per page. Endpoints that don't touch customer-specific data — like search and metadata lookups — accept simple HTTP Basic Auth with an application's consumer key and secret, but licensing, downloading, and any account- or subscription-scoped action require a full OAuth2 bearer token tied to a logged-in Shutterstock user. Access rides on the customer's Shutterstock subscription — a limited free tier covers search, while licensing and downloads draw against a paid Standard or Enterprise content plan — with per-minute rate limits enforced via RateLimit-* response headers.

stock-photosstock-videoslicensingeditorial-content
AuthenticationOAuthRequires an OAuth flow; expect app registration.
HTTPSSupportedTraffic is encrypted in transit.
CORSEnabledCallable directly from browser JavaScript.
PricingFreemiumA usable free tier exists, with paid plans for more volume.
FormatsJSONResponses can be requested as JSON.

GreatAPIs Score

Score74out of 100
Authentication8/25OAuth flow required
Pricing17/20Freemium tier available
Docs20/20Machine-readable spec file bundled
Formats9/15Single response format
Freshness20/20Verified within 6 months

Embed this badge

Scored 74 on greatapis.com
<a href="https://greatapis.com/api/shutterstock/"><img src="https://greatapis.com/badge/shutterstock.svg" alt="Scored 74 on greatapis.com"></a>

Auth quickstart

  1. Register an app / run the OAuth flow to obtain a bearer token.
  2. Send it as an Authorization headerAuthorization: Bearer <token>
Stored keyNo key stored

Your key is stored only in this browser (localStorage) and sent directly to the API — never to greatapis.

Endpoints

Servers
https://api.shutterstock.comhttps://api-sandbox.shutterstock.com
Auth
basiccustomer_accessCode
audio17
GET/v2/audioList audio tracks
Parameters
NameInRequiredType
idqueryyesarray
viewquerynostring
search_idquerynostring
Responses
StatusDescriptionSchema
200OKAudioDataList
400Bad Request
401Unauthorized
403Forbidden
GET/v2/audio/collectionsList audio collections
Parameters
NameInRequiredType
pagequerynointeger
per_pagequerynointeger
embedquerynoarray
Responses
StatusDescriptionSchema
200OKCollectionDataList
400Bad Request
401Unauthorized
403Forbidden
POST/v2/audio/collectionsCreate audio collections
Request body

application/jsonCollectionCreateRequest (required)

Responses
StatusDescriptionSchema
201Successfully created audio collectionCollectionCreateResponse
400Bad Request
401Unauthorized
403Forbidden
GET/v2/audio/collections/{id}Get the details of audio collections
Parameters
NameInRequiredType
idpathyesstring
embedquerynoarray
share_codequerynostring
Responses
StatusDescriptionSchema
200OKCollection
400Bad Request
401Unauthorized
403Forbidden
404Collection not found
POST/v2/audio/collections/{id}Rename audio collections
Parameters
NameInRequiredType
idpathyesstring
Request body

application/jsonCollectionUpdateRequest (required)

Responses
StatusDescriptionSchema
204Successfully updated collection
400Bad Request
401Unauthorized
403Forbidden
404Collection not found
DELETE/v2/audio/collections/{id}Delete audio collections
Parameters
NameInRequiredType
idpathyesstring
Responses
StatusDescriptionSchema
204Successfully deleted collection
400Bad Request
401Unauthorized
403Forbidden
404Collection not found
GET/v2/audio/collections/{id}/itemsGet the contents of audio collections
Parameters
NameInRequiredType
idpathyesstring
pagequerynointeger
per_pagequerynointeger
share_codequerynostring
sortquerynostring
Responses
StatusDescriptionSchema
200OKCollectionItemDataList
400Bad Request
401Unauthorized
403Forbidden
404Collection not found
POST/v2/audio/collections/{id}/itemsAdd audio tracks to collections
Parameters
NameInRequiredType
idpathyesstring
Request body

application/jsonCollectionItemRequest (required)

Responses
StatusDescriptionSchema
204Successfully added collection items
400Bad Request
401Unauthorized
403Forbidden
404Collection not found
DELETE/v2/audio/collections/{id}/itemsRemove audio tracks from collections
Parameters
NameInRequiredType
idpathyesstring
item_idquerynoarray
Responses
StatusDescriptionSchema
204Successfully removed collection items
400Bad Request
401Unauthorized
403Forbidden
404Collection not found
GET/v2/audio/genresList audio genres
Parameters
NameInRequiredType
languagequerynostring
Responses
StatusDescriptionSchema
200OKGenreList
GET/v2/audio/instrumentsList audio instruments
Parameters
NameInRequiredType
languagequerynostring
Responses
StatusDescriptionSchema
200OKInstrumentList
GET/v2/audio/licensesList audio licenses
Parameters
NameInRequiredType
audio_idquerynostring
licensequerynostring
pagequerynointeger
per_pagequerynointeger
sortquerynostring
usernamequerynostring
start_datequerynostring
end_datequerynostring
download_availabilityquerynostring
team_historyquerynoboolean
Responses
StatusDescriptionSchema
200OKDownloadHistoryDataList
400Bad Request
401Unauthorized
403Forbidden
POST/v2/audio/licensesLicense audio tracks
Parameters
NameInRequiredType
licensequerynostring
search_idquerynostring
Request body

application/jsonLicenseAudioRequest (required)

Responses
StatusDescriptionSchema
200OKLicenseAudioResultDataList
400Bad Request
401Unauthorized
403Forbidden
POST/v2/audio/licenses/{id}/downloadsDownload audio tracks
Parameters
NameInRequiredType
idpathyesstring
Responses
StatusDescriptionSchema
200OKAudioUrl
400Bad Request
401Unauthorized
403Forbidden
GET/v2/audio/moodsList audio moods
Parameters
NameInRequiredType
languagequerynostring
Responses
StatusDescriptionSchema
200OKMoodList
GET/v2/audio/searchSearch for tracks
Parameters
NameInRequiredType
artistsquerynoarray
bpmquerynointeger
bpm_fromquerynointeger
bpm_toquerynointeger
durationquerynointeger
duration_fromquerynointeger
duration_toquerynointeger
genrequerynoarray
is_instrumentalquerynoboolean
instrumentsquerynoarray
moodsquerynoarray
pagequerynointeger
per_pagequerynointeger
queryquerynostring
sortquerynostring
sort_orderquerynostring
vocal_descriptionquerynostring
viewquerynostring
fieldsquerynostring
libraryquerynostring
languagequerynostring
Responses
StatusDescriptionSchema
200OKAudioSearchResults
400Bad Request
401Unauthorized
403Forbidden
GET/v2/audio/{id}Get details about audio tracks
Parameters
NameInRequiredType
idpathyesinteger
viewquerynostring
search_idquerynostring
Responses
StatusDescriptionSchema
200OKAudio
400Bad Request
401Unauthorized
403Forbidden
catalog7
GET/v2/catalog/collectionsList catalog collections
Parameters
NameInRequiredType
pagequerynointeger
per_pagequerynointeger
sortquerynostring
sharedquerynoboolean
Responses
StatusDescriptionSchema
200OKCatalogCollectionDataList
400Invalid status value
POST/v2/catalog/collectionsCreate catalog collections
Request body

application/jsonCreateCatalogCollection (required)

Responses
StatusDescriptionSchema
201OKCatalogCollection
PATCH/v2/catalog/collections/{collection_id}Update collection metadata
Parameters
NameInRequiredType
collection_idpathyesstring
Request body

application/jsonUpdateCatalogCollection (required)

Responses
StatusDescriptionSchema
200OKCatalogCollection
DELETE/v2/catalog/collections/{collection_id}Delete catalog collections
Parameters
NameInRequiredType
collection_idpathyesstring
Responses
StatusDescriptionSchema
204OK
404Collection not found
POST/v2/catalog/collections/{collection_id}/itemsAdd items to catalog collections
Parameters
NameInRequiredType
collection_idpathyesstring
Request body

application/jsonCreateCatalogCollectionItems (required)

Responses
StatusDescriptionSchema
200OKCatalogCollection
DELETE/v2/catalog/collections/{collection_id}/itemsRemove items from catalog collection
Parameters
NameInRequiredType
collection_idpathyesstring
Request body

application/jsonRemoveCatalogCollectionItems (required)

Responses
StatusDescriptionSchema
200OKCatalogCollection
GET/v2/catalog/searchSearch catalogs for assets
Parameters
NameInRequiredType
sortquerynostring
pagequerynointeger
per_pagequerynointeger
queryquerynostring
collection_idquerynoarray
asset_typequerynoarray
Responses
StatusDescriptionSchema
200OKCatalogCollectionItemDataList
400Bad Request
401Unauthorized
403Forbidden
computer_vision5
POST/v2/cv/imagesUpload images
Request body

application/jsonImageCreateRequest (required)

Responses
StatusDescriptionSchema
201CreatedComputerVisionImageCreateResponse
400Bad Request
401Unauthorized
403Forbidden
413Payload Too Large
415Unsupported Media Type
GET/v2/cv/keywordsList suggested keywords
Parameters
NameInRequiredType
asset_idqueryyes
Responses
StatusDescriptionSchema
200OKKeywordDataList
400Bad Request
401Unauthorized
403Forbidden
415Unsupported Media Type
GET/v2/cv/similar/imagesList similar images
Parameters
NameInRequiredType
asset_idqueryyesstring
licensequerynoarray
safequerynoboolean
languagequeryno
pagequerynointeger
per_pagequerynointeger
viewquerynostring
Responses
StatusDescriptionSchema
200OKImageSearchResults
400Bad Request
401Unauthorized
403Forbidden
GET/v2/cv/similar/videosList similar videos
Parameters
NameInRequiredType
asset_idqueryyesstring
licensequerynoarray
safequerynoboolean
languagequeryno
pagequerynointeger
per_pagequerynointeger
viewquerynostring
Responses
StatusDescriptionSchema
200OKVideoSearchResults
400Bad Request
401Unauthorized
403Forbidden
POST/v2/imagesUpload ephemeral images
Request body

application/jsonImageCreateRequest (required)

Responses
StatusDescriptionSchema
201CreatedImageCreateResponse
400Bad Request
401Unauthorized
403Forbidden
413Payload Too Large
contributors5
GET/v2/contributorsGet details about multiple contributors
Parameters
NameInRequiredType
idqueryyesarray
Responses
StatusDescriptionSchema
200OKContributorProfileDataList
400Bad Request
401Unauthorized
403Forbidden
GET/v2/contributors/{contributor_id}Get details about a single contributor
Parameters
NameInRequiredType
contributor_idpathyesstring
Responses
StatusDescriptionSchema
200OKContributorProfile
400Bad Request
401Unauthorized
403Forbidden
GET/v2/contributors/{contributor_id}/collectionsList contributors' collections
Parameters
NameInRequiredType
contributor_idpathyesstring
sortquerynostring
Responses
StatusDescriptionSchema
200OKCollectionDataList
400Bad Request
401Unauthorized
403Forbidden
404Contributor not found
GET/v2/contributors/{contributor_id}/collections/{id}Get details about contributors' collections
Parameters
NameInRequiredType
contributor_idpathyesstring
idpathyesstring
Responses
StatusDescriptionSchema
200OKCollection
400Bad Request
401Unauthorized
403Forbidden
404Set not found
GET/v2/contributors/{contributor_id}/collections/{id}/itemsGet the items in contributors' collections
Parameters
NameInRequiredType
contributor_idpathyesstring
idpathyesstring
pagequerynointeger
per_pagequerynointeger
sortquerynostring
Responses
StatusDescriptionSchema
200OKCollectionItemDataList
400Bad Request
401Unauthorized
403Forbidden
404Set not found
custom_music4
GET/v2/ai/audio/descriptorsList computer audio descriptors
Parameters
NameInRequiredType
render_speed_overquerynonumber
band_idquerynostring
band_namequerynostring
pagequerynointeger
per_pagequerynointeger
idquerynoarray
instrument_namequerynostring
instrument_idquerynostring
tempoquerynonumber
tempo_toquerynonumber
tempo_fromquerynonumber
namequerynostring
tagquerynostring
Responses
StatusDescriptionSchema
200OKDescriptorsListResult
400Bad Request
401Unauthorized
403Forbidden
404Not Found
GET/v2/ai/audio/instrumentsList computer audio instruments
Parameters
NameInRequiredType
idquerynoarray
per_pagequerynointeger
pagequerynointeger
namequerynostring
tagquerynostring
Responses
StatusDescriptionSchema
200OKInstrumentsListResult
400Bad Request
401Unauthorized
403Forbidden
GET/v2/ai/audio/rendersGet details about audio renders
Parameters
NameInRequiredType
idqueryyesarray
Responses
StatusDescriptionSchema
200OKAudioRendersListResults
400Bad Request
401Unauthorized
403Forbidden
404Not Found
POST/v2/ai/audio/rendersCreate rendered audio
Request body

application/jsonCreateAudioRendersRequest (required)

Responses
StatusDescriptionSchema
200OKAudioRendersListResults
400Bad Request
401Unauthorized
403Forbidden
editorial_images17
GET/v2/editorial/categories(Deprecated) List editorial categories
Responses
StatusDescriptionSchema
200OKEditorialCategoryResults
400Bad Request
401Unauthorized
403Forbidden
GET/v2/editorial/images/categoriesList editorial categories
Responses
StatusDescriptionSchema
200OKEditorialImageCategoryResults
400Bad Request
401Unauthorized
403Forbidden
GET/v2/editorial/images/licensesList editorial image licenses
Parameters
NameInRequiredType
image_idquerynostring
licensequerynostring
pagequerynointeger
per_pagequerynointeger
sortquerynostring
usernamequerynostring
start_datequerynostring
end_datequerynostring
download_availabilityquerynostring
team_historyquerynoboolean
Responses
StatusDescriptionSchema
200OKDownloadHistoryDataList
400Bad Request
401Unauthorized
403Forbidden
POST/v2/editorial/images/licensesLicense editorial content
Request body

application/jsonLicenseEditorialContentRequest (required)

Responses
StatusDescriptionSchema
200OKLicenseEditorialContentResults
400Bad Request
401Unauthorized
403Forbidden
406Not Acceptable
GET/v2/editorial/images/livefeedsGet editorial livefeed list
Parameters
NameInRequiredType
countryqueryyesstring
pagequerynointeger
per_pagequerynointeger
Responses
StatusDescriptionSchema
200OKEditorialImageLivefeedList
400Bad Request
401Unauthorized
403Forbidden
404Not Found
GET/v2/editorial/images/livefeeds/{id}Get editorial livefeed
Parameters
NameInRequiredType
idpathyesstring
countryqueryyesstring
Responses
StatusDescriptionSchema
200OKEditorialImageLivefeed
400Bad Request
401Unauthorized
403Forbidden
404Not Found
GET/v2/editorial/images/livefeeds/{id}/itemsGet editorial livefeed items
Parameters
NameInRequiredType
idpathyesstring
countryqueryyesstring
Responses
StatusDescriptionSchema
200OKEditorialImageContentDataList
400Bad Request
401Unauthorized
403Forbidden
404Not Found
GET/v2/editorial/images/searchSearch editorial images
Parameters
NameInRequiredType
queryquerynostring
sortquerynostring
categoryquerynostring
countryqueryyesstring
supplier_codequerynoarray
date_startquerynostring
date_endquerynostring
per_pagequerynointeger
cursorquerynostring
Responses
StatusDescriptionSchema
200OKEditorialSearchResults
400Bad Request
401Unauthorized
403Forbidden
406Not Acceptable
GET/v2/editorial/images/updatedList updated content
Parameters
NameInRequiredType
typequeryyesstring
date_updated_startqueryyesstring
date_updated_endqueryyesstring
date_taken_startquerynostring
date_taken_endquerynostring
cursorquerynostring
sortquerynostring
supplier_codequerynoarray
countryqueryyesstring
per_pagequerynointeger
Responses
StatusDescriptionSchema
200OKEditorialUpdatedResults
400Bad Request
401Unauthorized
403Forbidden
406Not Acceptable
GET/v2/editorial/images/{id}Get editorial content details
Parameters
NameInRequiredType
idpathyesstring
countryqueryyesstring
Responses
StatusDescriptionSchema
200OKEditorialContent
400Bad Request
401Unauthorized
403Forbidden
404Not Found
POST/v2/editorial/licenses(Deprecated) License editorial content
Request body

application/jsonLicenseEditorialContentRequest (required)

Responses
StatusDescriptionSchema
200OKLicenseEditorialContentResults
400Bad Request
401Unauthorized
403Forbidden
406Not Acceptable
GET/v2/editorial/livefeeds(Deprecated) Get editorial livefeed list
Parameters
NameInRequiredType
countryqueryyesstring
pagequerynointeger
per_pagequerynointeger
Responses
StatusDescriptionSchema
200OKEditorialLivefeedList
400Bad Request
401Unauthorized
403Forbidden
406Not Acceptable
GET/v2/editorial/livefeeds/{id}(Deprecated) Get editorial livefeed
Parameters
NameInRequiredType
idpathyesstring
countryqueryyesstring
Responses
StatusDescriptionSchema
200OKEditorialLivefeed
400Bad Request
401Unauthorized
403Forbidden
406Not Acceptable
GET/v2/editorial/livefeeds/{id}/items(Deprecated) Get editorial livefeed items
Parameters
NameInRequiredType
idpathyesstring
countryqueryyesstring
Responses
StatusDescriptionSchema
200OKEditorialContentDataList
400Bad Request
401Unauthorized
403Forbidden
406Not Acceptable
GET/v2/editorial/search(Deprecated) Search editorial content
Parameters
NameInRequiredType
queryquerynostring
sortquerynostring
categoryquerynostring
countryqueryyesstring
supplier_codequerynoarray
date_startquerynostring
date_endquerynostring
per_pagequerynointeger
cursorquerynostring
Responses
StatusDescriptionSchema
200OKEditorialSearchResults
400Bad Request
401Unauthorized
403Forbidden
406Not Acceptable
GET/v2/editorial/updated(Deprecated) List updated content
Parameters
NameInRequiredType
typequeryyesstring
date_updated_startqueryyesstring
date_updated_endqueryyesstring
date_taken_startquerynostring
date_taken_endquerynostring
cursorquerynostring
sortquerynostring
supplier_codequerynoarray
countryqueryyesstring
per_pagequerynointeger
Responses
StatusDescriptionSchema
200OKEditorialUpdatedResults
400Bad Request
401Unauthorized
403Forbidden
406Not Acceptable
GET/v2/editorial/{id}(Deprecated) Get editorial content details
Parameters
NameInRequiredType
idpathyesstring
countryqueryyesstring
search_idquerynostring
Responses
StatusDescriptionSchema
200OKEditorialContent
400Bad Request
401Unauthorized
403Forbidden
404Not Found
editorial_video5
GET/v2/editorial/videos/categoriesList editorial video categories
Responses
StatusDescriptionSchema
200OKEditorialVideoCategoryResults
400Bad Request
401Unauthorized
403Forbidden
GET/v2/editorial/videos/licensesList editorial video licenses
Parameters
NameInRequiredType
video_idquerynostring
licensequerynostring
pagequerynointeger
per_pagequerynointeger
sortquerynostring
usernamequerynostring
start_datequerynostring
end_datequerynostring
download_availabilityquerynostring
team_historyquerynoboolean
Responses
StatusDescriptionSchema
200OKDownloadHistoryDataList
400Bad Request
401Unauthorized
403Forbidden
POST/v2/editorial/videos/licensesLicense editorial video content
Request body

application/jsonLicenseEditorialVideoContentRequest (required)

Responses
StatusDescriptionSchema
200OKLicenseEditorialContentResults
400Bad Request
401Unauthorized
403Forbidden
GET/v2/editorial/videos/searchSearch editorial video content
Parameters
NameInRequiredType
queryquerynostring
sortquerynostring
categoryquerynostring
countryqueryyesstring
supplier_codequerynoarray
date_startquerynostring
date_endquerynostring
resolutionquerynostring
fpsquerynonumber
per_pagequerynointeger
cursorquerynostring
Responses
StatusDescriptionSchema
200OKEditorialVideoSearchResults
400Bad Request
401Unauthorized
403Forbidden
406Not Acceptable
GET/v2/editorial/videos/{id}Get editorial video content details
Parameters
NameInRequiredType
idpathyesstring
countryqueryyesstring
search_idquerynostring
Responses
StatusDescriptionSchema
200OKEditorialVideoContent
400Bad Request
401Unauthorized
403Forbidden
406Not Acceptable
images24
POST/v2/bulk_search/imagesRun multiple image searches
Parameters
NameInRequiredType
added_datequerynostring
added_date_startquerynostring
aspect_ratio_minquerynonumber
aspect_ratio_maxquerynonumber
aspect_ratioquerynonumber
added_date_endquerynostring
categoryquerynostring
colorquerynostring
contributorquerynoarray
contributor_countryqueryno
fieldsquerynostring
heightquerynointeger
height_fromquerynointeger
height_toquerynointeger
image_typequerynoarray
keyword_safe_searchquerynoboolean
languagequeryno
licensequerynoarray
modelquerynoarray
orientationquerynostring
pagequerynointeger
per_pagequerynointeger
people_model_releasedquerynoboolean
people_agequerynostring
people_ethnicityquerynoarray
people_genderquerynostring
people_numberquerynointeger
regionqueryno
safequerynoboolean
sortquerynostring
spellcheck_queryquerynoboolean
viewquerynostring
widthquerynointeger
width_fromquerynointeger
width_toquerynointeger
Request body

application/jsonBulkImageSearchRequest (required)

Responses
StatusDescriptionSchema
200OKBulkImageSearchResults
400Bad Request
401Unauthorized
403Forbidden
GET/v2/imagesList images
Parameters
NameInRequiredType
idqueryyesarray
viewquerynostring
search_idquerynostring
Responses
StatusDescriptionSchema
200OKImageDataList
400Bad Request
401Unauthorized
403Forbidden
GET/v2/images/categoriesList image categories
Parameters
NameInRequiredType
languagequeryno
Responses
StatusDescriptionSchema
200OKCategoryDataList
400Bad Request
401Unauthorized
403Forbidden
GET/v2/images/collectionsList image collections
Parameters
NameInRequiredType
embedquerynoarray
pagequerynointeger
per_pagequerynointeger
Responses
StatusDescriptionSchema
200OKCollectionDataList
400Bad Request
401Unauthorized
403Forbidden
POST/v2/images/collectionsCreate image collections
Request body

application/jsonCollectionCreateRequest (required)

Responses
StatusDescriptionSchema
201Successfully created image collectionCollectionCreateResponse
400Bad Request
401Unauthorized
403Forbidden
GET/v2/images/collections/featuredList featured image collections
Parameters
NameInRequiredType
embedquerynostring
typequerynoarray
asset_hintquerynostring
Responses
StatusDescriptionSchema
200OKFeaturedCollectionDataList
400Bad Request
401Unauthorized
403Forbidden
GET/v2/images/collections/featured/{id}Get the details of featured image collections
Parameters
NameInRequiredType
idpathyesstring
embedquerynostring
asset_hintquerynostring
Responses
StatusDescriptionSchema
200OKFeaturedCollection
400Bad Request
401Unauthorized
403Forbidden
404Featured collection not found
GET/v2/images/collections/featured/{id}/itemsGet the contents of featured image collections
Parameters
NameInRequiredType
idpathyesstring
pagequerynointeger
per_pagequerynointeger
Responses
StatusDescriptionSchema
200OKCollectionItemDataList
400Bad Request
401Unauthorized
403Forbidden
404Featured collection not found
GET/v2/images/collections/{id}Get the details of image collections
Parameters
NameInRequiredType
idpathyesstring
embedquerynoarray
share_codequerynostring
Responses
StatusDescriptionSchema
200OKCollection
400Bad Request
401Unauthorized
403Forbidden
404Collection not found
POST/v2/images/collections/{id}Rename image collections
Parameters
NameInRequiredType
idpathyesstring
Request body

application/jsonCollectionUpdateRequest (required)

Responses
StatusDescriptionSchema
204Successfully updated collection
400Bad Request
401Unauthorized
403Forbidden
404Collection not found
DELETE/v2/images/collections/{id}Delete image collections
Parameters
NameInRequiredType
idpathyesstring
Responses
StatusDescriptionSchema
204Successfully deleted collection
400Bad Request
401Unauthorized
403Forbidden
404Collection not found
GET/v2/images/collections/{id}/itemsGet the contents of image collections
Parameters
NameInRequiredType
idpathyesstring
pagequerynointeger
per_pagequerynointeger
share_codequerynostring
sortquerynostring
Responses
StatusDescriptionSchema
200OKCollectionItemDataList
400Bad Request
401Unauthorized
403Forbidden
404Collection not found
POST/v2/images/collections/{id}/itemsAdd images to collections
Parameters
NameInRequiredType
idpathyesstring
Request body

application/jsonCollectionItemRequest (required)

Responses
StatusDescriptionSchema
204Successfully added collection items
400Bad Request
401Unauthorized
403Forbidden
404Collection not found
DELETE/v2/images/collections/{id}/itemsRemove images from collections
Parameters
NameInRequiredType
idpathyesstring
item_idquerynoarray
Responses
StatusDescriptionSchema
204Successfully removed collection items
400Bad Request
401Unauthorized
403Forbidden
404Collection not found
GET/v2/images/licensesList image licenses
Parameters
NameInRequiredType
image_idquerynostring
licensequerynostring
pagequerynointeger
per_pagequerynointeger
sortquerynostring
usernamequerynostring
start_datequerynostring
end_datequerynostring
download_availabilityquerynostring
team_historyquerynoboolean
Responses
StatusDescriptionSchema
200OKDownloadHistoryDataList
400Bad Request
401Unauthorized
403Forbidden
POST/v2/images/licensesLicense images
Parameters
NameInRequiredType
subscription_idquerynostring
formatquerynostring
sizequerynostring
search_idquerynostring
Request body

application/jsonLicenseImageRequest (required)

Responses
StatusDescriptionSchema
200OKLicenseImageResultDataList
400Bad Request
401Unauthorized
403Forbidden
POST/v2/images/licenses/{id}/downloadsDownload images
Parameters
NameInRequiredType
idpathyesstring
Request body

application/jsonRedownloadImage (required)

Responses
StatusDescriptionSchema
200OKUrl
400Bad Request
401Unauthorized
403Forbidden
GET/v2/images/recommendationsList recommended images
Parameters
NameInRequiredType
idqueryyesarray
max_itemsquerynointeger
safequerynoboolean
Responses
StatusDescriptionSchema
200OKRecommendationDataList
400Bad Request
401Unauthorized
403Forbidden
GET/v2/images/searchSearch for images
Parameters
NameInRequiredType
added_datequerynostring
added_date_startquerynostring
aspect_ratio_minquerynonumber
aspect_ratio_maxquerynonumber
aspect_ratioquerynonumber
ai_searchquerynoboolean
ai_labels_limitquerynointeger
ai_industryquerynostring
ai_objectivequerynostring
added_date_endquerynostring
categoryquerynostring
colorquerynostring
contributorquerynoarray
contributor_countryqueryno
fieldsquerynostring
heightquerynointeger
height_fromquerynointeger
height_toquerynointeger
image_typequerynoarray
keyword_safe_searchquerynoboolean
languagequeryno
licensequerynoarray
modelquerynoarray
orientationquerynostring
pagequerynointeger
per_pagequerynointeger
people_model_releasedquerynoboolean
people_agequerynostring
people_ethnicityquerynoarray
people_genderquerynostring
people_numberquerynointeger
queryquerynostring
regionqueryno
safequerynoboolean
sortquerynostring
spellcheck_queryquerynoboolean
viewquerynostring
widthquerynointeger
width_fromquerynointeger
width_toquerynointeger
Responses
StatusDescriptionSchema
200OKImageSearchResults
400Bad Request
401Unauthorized
403Forbidden
GET/v2/images/search/suggestionsGet suggestions for a search term
Parameters
NameInRequiredType
queryqueryyesstring
limitquerynointeger
Responses
StatusDescriptionSchema
200OKSuggestions
400Bad Request
401Unauthorized
403Forbidden
POST/v2/images/search/suggestionsGet keywords from text
Request body

application/jsonSearchEntitiesRequest (required)

Responses
StatusDescriptionSchema
200OKSearchEntitiesResponse
400Bad Request
401Unauthorized
403Forbidden
GET/v2/images/updatedList updated images
Parameters
NameInRequiredType
typequerynoarray
start_datequerynostring
end_datequerynostring
intervalquerynostring
pagequerynointeger
per_pagequerynointeger
sortquerynostring
Responses
StatusDescriptionSchema
200OKUpdatedMediaDataList
GET/v2/images/{id}Get details about images
Parameters
NameInRequiredType
idpathyesstring
languagequeryno
viewquerynostring
search_idquerynostring
Responses
StatusDescriptionSchema
200OKImage
400Bad Request
401Unauthorized
403Forbidden
GET/v2/images/{id}/similarList similar images
Parameters
NameInRequiredType
idpathyesstring
languagequeryno
pagequerynointeger
per_pagequerynointeger
viewquerynostring
Responses
StatusDescriptionSchema
200OKImageSearchResults
400Bad Request
401Unauthorized
403Forbidden
oauth2
POST/v2/oauth/access_tokenGet access tokens
Request body

application/json

Responses
StatusDescriptionSchema
200OKOauthAccessTokenResponse
400Bad Request
401Unauthorized
403Forbidden
GET/v2/oauth/authorizeAuthorize applications
Parameters
NameInRequiredType
client_idqueryyesstring
realmquerynostring
redirect_uriqueryyesstring
response_typequeryyesstring
scopequerynostring
statequeryyesstring
Responses
StatusDescriptionSchema
302Redirect user to authenticate with ShutterstockAuthorizeResponse
400Bad Request
401Unauthorized
403Forbidden
sound_effects6
GET/v2/sfxList details about sound effects
Parameters
NameInRequiredType
idqueryyesarray
viewquerynostring
languagequeryno
libraryquerynostring
search_idquerynostring
Responses
StatusDescriptionSchema
200OKSFXDataList
400Bad Request
401Unauthorized
403Forbidden
GET/v2/sfx/licensesList sound effects licenses
Parameters
NameInRequiredType
sfx_idquerynostring
licensequerynostring
pagequerynointeger
per_pagequerynointeger
sortquerynostring
usernamequerynostring
start_datequerynostring
end_datequerynostring
license_idquerynostring
download_availabilityquerynostring
team_historyquerynoboolean
Responses
StatusDescriptionSchema
200OKDownloadHistoryDataList
400Bad Request
401Unauthorized
403Forbidden
POST/v2/sfx/licensesLicense sound effects
Request body

application/jsonLicenseSFXRequest (required)

Responses
StatusDescriptionSchema
200OKLicenseSFXResultDataList
400Bad Request
401Unauthorized
403Forbidden
POST/v2/sfx/licenses/{id}/downloadsDownload sound effects
Parameters
NameInRequiredType
idpathyesstring
Responses
StatusDescriptionSchema
200OKSfxUrl
400Bad Request
401Unauthorized
403Forbidden
GET/v2/sfx/searchSearch for sound effects
Parameters
NameInRequiredType
added_datequerynostring
added_date_startquerynostring
added_date_endquerynostring
durationquerynointeger
duration_fromquerynointeger
duration_toquerynointeger
pagequerynointeger
per_pagequerynointeger
queryquerynostring
safequerynoboolean
sortquerynostring
viewquerynostring
languagequeryno
Responses
StatusDescriptionSchema
200OKSFXSearchResults
400Bad Request
401Unauthorized
403Forbidden
GET/v2/sfx/{id}Get details about sound effects
Parameters
NameInRequiredType
idpathyesinteger
languagequeryno
viewquerynostring
libraryquerynostring
search_idquerynostring
Responses
StatusDescriptionSchema
200OKSFX
400Bad Request
401Unauthorized
403Forbidden
test2
GET/v2/testEcho text
Parameters
NameInRequiredType
textquerynostring
Responses
StatusDescriptionSchema
200OKTestEcho
400Bad Request
401Unauthorized
403Forbidden
GET/v2/test/validateValidate input
Parameters
NameInRequiredType
idqueryyesinteger
tagquerynoarray
user-agentheadernostring
Responses
StatusDescriptionSchema
200OKTestValidate
400Bad Request
401Unauthorized
403Forbidden
users3
GET/v2/userGet user details
Responses
StatusDescriptionSchema
200OKUserDetails
400Bad Request
401Unauthorized
403Forbidden
GET/v2/user/access_tokenGet access token details
Responses
StatusDescriptionSchema
200OKAccessTokenDetails
400Bad Request
401Unauthorized
403Forbidden
GET/v2/user/subscriptionsList user subscriptions
Responses
StatusDescriptionSchema
200OKSubscriptionDataList
400Bad Request
401Unauthorized
403Forbidden
videos21
GET/v2/videosList videos
Parameters
NameInRequiredType
idqueryyesarray
viewquerynostring
search_idquerynostring
Responses
StatusDescriptionSchema
200OKVideoDataList
400Bad Request
401Unauthorized
403Forbidden
GET/v2/videos/categoriesList video categories
Parameters
NameInRequiredType
languagequeryno
Responses
StatusDescriptionSchema
200OKCategoryDataList
400Bad Request
401Unauthorized
403Forbidden
GET/v2/videos/collectionsList video collections
Parameters
NameInRequiredType
pagequerynointeger
per_pagequerynointeger
embedquerynoarray
Responses
StatusDescriptionSchema
200OKCollectionDataList
400Bad Request
401Unauthorized
403Forbidden
POST/v2/videos/collectionsCreate video collections
Request body

application/jsonCollectionCreateRequest (required)

Responses
StatusDescriptionSchema
201Successfully created video collectionCollectionCreateResponse
400Bad Request
401Unauthorized
403Forbidden
GET/v2/videos/collections/featuredList featured video collections
Parameters
NameInRequiredType
embedquerynostring
Responses
StatusDescriptionSchema
200OKFeaturedCollectionDataList
400Bad Request
401Unauthorized
403Forbidden
GET/v2/videos/collections/featured/{id}Get the details of featured video collections
Parameters
NameInRequiredType
idpathyesstring
embedquerynostring
Responses
StatusDescriptionSchema
200OKFeaturedCollection
400Bad Request
401Unauthorized
403Forbidden
404Featured collection not found
GET/v2/videos/collections/featured/{id}/itemsGet the contents of featured video collections
Parameters
NameInRequiredType
idpathyesstring
pagequerynointeger
per_pagequerynointeger
Responses
StatusDescriptionSchema
200OKVideoCollectionItemDataList
400Bad Request
401Unauthorized
403Forbidden
404Featured collection not found
GET/v2/videos/collections/{id}Get the details of video collections
Parameters
NameInRequiredType
idpathyesstring
embedquerynoarray
share_codequerynostring
Responses
StatusDescriptionSchema
200OKCollection
400Bad Request
401Unauthorized
403Forbidden
404Collection not found
POST/v2/videos/collections/{id}Rename video collections
Parameters
NameInRequiredType
idpathyesstring
Request body

application/jsonCollectionUpdateRequest (required)

Responses
StatusDescriptionSchema
204Successfully updated collection
400Bad Request
401Unauthorized
403Forbidden
404Collection not found
DELETE/v2/videos/collections/{id}Delete video collections
Parameters
NameInRequiredType
idpathyesstring
Responses
StatusDescriptionSchema
204Successfully deleted collection
400Bad Request
401Unauthorized
403Forbidden
404Collection not found
GET/v2/videos/collections/{id}/itemsGet the contents of video collections
Parameters
NameInRequiredType
idpathyesstring
pagequerynointeger
per_pagequerynointeger
share_codequerynostring
sortquerynostring
Responses
StatusDescriptionSchema
200OKCollectionItemDataList
400Bad Request
401Unauthorized
403Forbidden
404Collection not found
POST/v2/videos/collections/{id}/itemsAdd videos to collections
Parameters
NameInRequiredType
idpathyesstring
Request body

application/jsonCollectionItemRequest (required)

Responses
StatusDescriptionSchema
204Successfully added collection items
400Bad Request
401Unauthorized
403Forbidden
404Collection not found
DELETE/v2/videos/collections/{id}/itemsRemove videos from collections
Parameters
NameInRequiredType
idpathyesstring
item_idquerynoarray
Responses
StatusDescriptionSchema
204Successfully removed collection items
400Bad Request
401Unauthorized
403Forbidden
404Collection not found
GET/v2/videos/licensesList video licenses
Parameters
NameInRequiredType
video_idquerynostring
licensequerynostring
pagequerynointeger
per_pagequerynointeger
sortquerynostring
usernamequerynostring
start_datequerynostring
end_datequerynostring
download_availabilityquerynostring
team_historyquerynoboolean
Responses
StatusDescriptionSchema
200OKDownloadHistoryDataList
400Bad Request
401Unauthorized
403Forbidden
POST/v2/videos/licensesLicense videos
Parameters
NameInRequiredType
subscription_idquerynostring
sizequerynostring
search_idquerynostring
Request body

application/jsonLicenseVideoRequest (required)

Responses
StatusDescriptionSchema
200OKLicenseVideoResultDataList
400Bad Request
401Unauthorized
403Forbidden
POST/v2/videos/licenses/{id}/downloadsDownload videos
Parameters
NameInRequiredType
idpathyesstring
Request body

application/jsonRedownloadVideo (required)

Responses
StatusDescriptionSchema
200OKUrl
400Bad Request
401Unauthorized
403Forbidden
GET/v2/videos/searchSearch for videos
Parameters
NameInRequiredType
added_datequerynostring
added_date_startquerynostring
added_date_endquerynostring
aspect_ratioquerynostring
categoryquerynostring
contributorquerynoarray
contributor_countryquerynoarray
durationquerynointeger
duration_fromquerynointeger
duration_toquerynointeger
fpsquerynonumber
fps_fromquerynonumber
fps_toquerynonumber
keyword_safe_searchquerynoboolean
languagequeryno
licensequerynoarray
modelquerynoarray
pagequerynointeger
per_pagequerynointeger
people_agequerynostring
people_ethnicityquerynoarray
people_genderquerynostring
people_numberquerynointeger
people_model_releasedquerynoboolean
queryquerynostring
resolutionquerynostring
safequerynoboolean
sortquerynostring
viewquerynostring
Responses
StatusDescriptionSchema
200OKVideoSearchResults
400Bad Request
401Unauthorized
403Forbidden
404Not found
GET/v2/videos/search/suggestionsGet suggestions for a search term
Parameters
NameInRequiredType
queryqueryyesstring
limitquerynointeger
Responses
StatusDescriptionSchema
200OKSuggestions
400Bad Request
401Unauthorized
403Forbidden
GET/v2/videos/updatedList updated videos
Parameters
NameInRequiredType
start_datequerynostring
end_datequerynostring
intervalquerynostring
pagequerynointeger
per_pagequerynointeger
sortquerynostring
Responses
StatusDescriptionSchema
200OKUpdatedMediaDataList
GET/v2/videos/{id}Get details about videos
Parameters
NameInRequiredType
idpathyesstring
languagequeryno
viewquerynostring
search_idquerynostring
Responses
StatusDescriptionSchema
200OKVideo
400Bad Request
401Unauthorized
403Forbidden
404Not found
GET/v2/videos/{id}/similarList similar videos
Parameters
NameInRequiredType
idpathyesstring
languagequeryno
pagequerynointeger
per_pagequerynointeger
viewquerynostring
Responses
StatusDescriptionSchema
200OKVideoSearchResults
400Bad Request
401Unauthorized
403Forbidden

Try it

Developer reference

Base URLhttps://api.shutterstock.com
Rate limit

Per-application, per-minute quotas rather than one published number: Free and Standard API subscriptions get a "limited" requests-per-minute allowance, Enterprise subscriptions get a custom negotiated cap. Every response carries RateLimit-Limit, RateLimit-Remaining, and RateLimit-Reset (UTC ms) headers so an app can track its live quota; exceeding it returns HTTP 429 with the same limit/remaining/reset fields in the JSON body. Higher limits are available by contacting Shutterstock's developer support directly.

Key endpoints
  • GET/v2/images/search
  • GET/v2/images/{id}
  • GET/v2/videos/search
  • POST/v2/images/licenses
  • POST/v2/images/licenses/{id}/downloads