Photography — entry 021 of 25
shutterstock
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.
GreatAPIs Score
Auth quickstart
- Register an app / run the OAuth flow to obtain a bearer token.
- Send it as an Authorization header
Authorization: Bearer <token>
Your key is stored only in this browser (localStorage) and sent directly to the API — never to greatapis.
Endpoints
audio17
GET/v2/audioList audio tracks
| Name | In | Required | Type |
|---|---|---|---|
id | query | yes | array |
view | query | no | string |
search_id | query | no | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | AudioDataList |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
GET/v2/audio/collectionsList audio collections
| Name | In | Required | Type |
|---|---|---|---|
page | query | no | integer |
per_page | query | no | integer |
embed | query | no | array |
| Status | Description | Schema |
|---|---|---|
200 | OK | CollectionDataList |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
POST/v2/audio/collectionsCreate audio collections
application/json — CollectionCreateRequest (required)
| Status | Description | Schema |
|---|---|---|
201 | Successfully created audio collection | CollectionCreateResponse |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
GET/v2/audio/collections/{id}Get the details of audio collections
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | string |
embed | query | no | array |
share_code | query | no | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | Collection |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
404 | Collection not found | — |
POST/v2/audio/collections/{id}Rename audio collections
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | string |
application/json — CollectionUpdateRequest (required)
| Status | Description | Schema |
|---|---|---|
204 | Successfully updated collection | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
404 | Collection not found | — |
DELETE/v2/audio/collections/{id}Delete audio collections
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | string |
| Status | Description | Schema |
|---|---|---|
204 | Successfully deleted collection | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
404 | Collection not found | — |
GET/v2/audio/collections/{id}/itemsGet the contents of audio collections
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | string |
page | query | no | integer |
per_page | query | no | integer |
share_code | query | no | string |
sort | query | no | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | CollectionItemDataList |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
404 | Collection not found | — |
POST/v2/audio/collections/{id}/itemsAdd audio tracks to collections
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | string |
application/json — CollectionItemRequest (required)
| Status | Description | Schema |
|---|---|---|
204 | Successfully added collection items | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
404 | Collection not found | — |
DELETE/v2/audio/collections/{id}/itemsRemove audio tracks from collections
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | string |
item_id | query | no | array |
| Status | Description | Schema |
|---|---|---|
204 | Successfully removed collection items | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
404 | Collection not found | — |
GET/v2/audio/genresList audio genres
| Name | In | Required | Type |
|---|---|---|---|
language | query | no | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | GenreList |
GET/v2/audio/instrumentsList audio instruments
| Name | In | Required | Type |
|---|---|---|---|
language | query | no | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | InstrumentList |
GET/v2/audio/licensesList audio licenses
| Name | In | Required | Type |
|---|---|---|---|
audio_id | query | no | string |
license | query | no | string |
page | query | no | integer |
per_page | query | no | integer |
sort | query | no | string |
username | query | no | string |
start_date | query | no | string |
end_date | query | no | string |
download_availability | query | no | string |
team_history | query | no | boolean |
| Status | Description | Schema |
|---|---|---|
200 | OK | DownloadHistoryDataList |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
POST/v2/audio/licensesLicense audio tracks
| Name | In | Required | Type |
|---|---|---|---|
license | query | no | string |
search_id | query | no | string |
application/json — LicenseAudioRequest (required)
| Status | Description | Schema |
|---|---|---|
200 | OK | LicenseAudioResultDataList |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
POST/v2/audio/licenses/{id}/downloadsDownload audio tracks
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | AudioUrl |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
GET/v2/audio/moodsList audio moods
| Name | In | Required | Type |
|---|---|---|---|
language | query | no | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | MoodList |
GET/v2/audio/searchSearch for tracks
| Name | In | Required | Type |
|---|---|---|---|
artists | query | no | array |
bpm | query | no | integer |
bpm_from | query | no | integer |
bpm_to | query | no | integer |
duration | query | no | integer |
duration_from | query | no | integer |
duration_to | query | no | integer |
genre | query | no | array |
is_instrumental | query | no | boolean |
instruments | query | no | array |
moods | query | no | array |
page | query | no | integer |
per_page | query | no | integer |
query | query | no | string |
sort | query | no | string |
sort_order | query | no | string |
vocal_description | query | no | string |
view | query | no | string |
fields | query | no | string |
library | query | no | string |
language | query | no | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | AudioSearchResults |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
GET/v2/audio/{id}Get details about audio tracks
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | integer |
view | query | no | string |
search_id | query | no | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | Audio |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
catalog7
GET/v2/catalog/collectionsList catalog collections
| Name | In | Required | Type |
|---|---|---|---|
page | query | no | integer |
per_page | query | no | integer |
sort | query | no | string |
shared | query | no | boolean |
| Status | Description | Schema |
|---|---|---|
200 | OK | CatalogCollectionDataList |
400 | Invalid status value | — |
POST/v2/catalog/collectionsCreate catalog collections
application/json — CreateCatalogCollection (required)
| Status | Description | Schema |
|---|---|---|
201 | OK | CatalogCollection |
PATCH/v2/catalog/collections/{collection_id}Update collection metadata
| Name | In | Required | Type |
|---|---|---|---|
collection_id | path | yes | string |
application/json — UpdateCatalogCollection (required)
| Status | Description | Schema |
|---|---|---|
200 | OK | CatalogCollection |
DELETE/v2/catalog/collections/{collection_id}Delete catalog collections
| Name | In | Required | Type |
|---|---|---|---|
collection_id | path | yes | string |
| Status | Description | Schema |
|---|---|---|
204 | OK | — |
404 | Collection not found | — |
POST/v2/catalog/collections/{collection_id}/itemsAdd items to catalog collections
| Name | In | Required | Type |
|---|---|---|---|
collection_id | path | yes | string |
application/json — CreateCatalogCollectionItems (required)
| Status | Description | Schema |
|---|---|---|
200 | OK | CatalogCollection |
DELETE/v2/catalog/collections/{collection_id}/itemsRemove items from catalog collection
| Name | In | Required | Type |
|---|---|---|---|
collection_id | path | yes | string |
application/json — RemoveCatalogCollectionItems (required)
| Status | Description | Schema |
|---|---|---|
200 | OK | CatalogCollection |
GET/v2/catalog/searchSearch catalogs for assets
| Name | In | Required | Type |
|---|---|---|---|
sort | query | no | string |
page | query | no | integer |
per_page | query | no | integer |
query | query | no | string |
collection_id | query | no | array |
asset_type | query | no | array |
| Status | Description | Schema |
|---|---|---|
200 | OK | CatalogCollectionItemDataList |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
computer_vision5
POST/v2/cv/imagesUpload images
application/json — ImageCreateRequest (required)
| Status | Description | Schema |
|---|---|---|
201 | Created | ComputerVisionImageCreateResponse |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
413 | Payload Too Large | — |
415 | Unsupported Media Type | — |
GET/v2/cv/keywordsList suggested keywords
| Name | In | Required | Type |
|---|---|---|---|
asset_id | query | yes | — |
| Status | Description | Schema |
|---|---|---|
200 | OK | KeywordDataList |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
415 | Unsupported Media Type | — |
GET/v2/cv/similar/imagesList similar images
| Name | In | Required | Type |
|---|---|---|---|
asset_id | query | yes | string |
license | query | no | array |
safe | query | no | boolean |
language | query | no | — |
page | query | no | integer |
per_page | query | no | integer |
view | query | no | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | ImageSearchResults |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
GET/v2/cv/similar/videosList similar videos
| Name | In | Required | Type |
|---|---|---|---|
asset_id | query | yes | string |
license | query | no | array |
safe | query | no | boolean |
language | query | no | — |
page | query | no | integer |
per_page | query | no | integer |
view | query | no | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | VideoSearchResults |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
POST/v2/imagesUpload ephemeral images
application/json — ImageCreateRequest (required)
| Status | Description | Schema |
|---|---|---|
201 | Created | ImageCreateResponse |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
413 | Payload Too Large | — |
contributors5
GET/v2/contributorsGet details about multiple contributors
| Name | In | Required | Type |
|---|---|---|---|
id | query | yes | array |
| Status | Description | Schema |
|---|---|---|
200 | OK | ContributorProfileDataList |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
GET/v2/contributors/{contributor_id}Get details about a single contributor
| Name | In | Required | Type |
|---|---|---|---|
contributor_id | path | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | ContributorProfile |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
GET/v2/contributors/{contributor_id}/collectionsList contributors' collections
| Name | In | Required | Type |
|---|---|---|---|
contributor_id | path | yes | string |
sort | query | no | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | CollectionDataList |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
404 | Contributor not found | — |
GET/v2/contributors/{contributor_id}/collections/{id}Get details about contributors' collections
| Name | In | Required | Type |
|---|---|---|---|
contributor_id | path | yes | string |
id | path | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | Collection |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
404 | Set not found | — |
GET/v2/contributors/{contributor_id}/collections/{id}/itemsGet the items in contributors' collections
| Name | In | Required | Type |
|---|---|---|---|
contributor_id | path | yes | string |
id | path | yes | string |
page | query | no | integer |
per_page | query | no | integer |
sort | query | no | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | CollectionItemDataList |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
404 | Set not found | — |
custom_music4
GET/v2/ai/audio/descriptorsList computer audio descriptors
| Name | In | Required | Type |
|---|---|---|---|
render_speed_over | query | no | number |
band_id | query | no | string |
band_name | query | no | string |
page | query | no | integer |
per_page | query | no | integer |
id | query | no | array |
instrument_name | query | no | string |
instrument_id | query | no | string |
tempo | query | no | number |
tempo_to | query | no | number |
tempo_from | query | no | number |
name | query | no | string |
tag | query | no | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | DescriptorsListResult |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
404 | Not Found | — |
GET/v2/ai/audio/instrumentsList computer audio instruments
| Name | In | Required | Type |
|---|---|---|---|
id | query | no | array |
per_page | query | no | integer |
page | query | no | integer |
name | query | no | string |
tag | query | no | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | InstrumentsListResult |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
GET/v2/ai/audio/rendersGet details about audio renders
| Name | In | Required | Type |
|---|---|---|---|
id | query | yes | array |
| Status | Description | Schema |
|---|---|---|
200 | OK | AudioRendersListResults |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
404 | Not Found | — |
POST/v2/ai/audio/rendersCreate rendered audio
application/json — CreateAudioRendersRequest (required)
| Status | Description | Schema |
|---|---|---|
200 | OK | AudioRendersListResults |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
editorial_images17
GET/v2/editorial/categories(Deprecated) List editorial categories
| Status | Description | Schema |
|---|---|---|
200 | OK | EditorialCategoryResults |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
GET/v2/editorial/images/categoriesList editorial categories
| Status | Description | Schema |
|---|---|---|
200 | OK | EditorialImageCategoryResults |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
GET/v2/editorial/images/licensesList editorial image licenses
| Name | In | Required | Type |
|---|---|---|---|
image_id | query | no | string |
license | query | no | string |
page | query | no | integer |
per_page | query | no | integer |
sort | query | no | string |
username | query | no | string |
start_date | query | no | string |
end_date | query | no | string |
download_availability | query | no | string |
team_history | query | no | boolean |
| Status | Description | Schema |
|---|---|---|
200 | OK | DownloadHistoryDataList |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
POST/v2/editorial/images/licensesLicense editorial content
application/json — LicenseEditorialContentRequest (required)
| Status | Description | Schema |
|---|---|---|
200 | OK | LicenseEditorialContentResults |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
406 | Not Acceptable | — |
GET/v2/editorial/images/livefeedsGet editorial livefeed list
| Name | In | Required | Type |
|---|---|---|---|
country | query | yes | string |
page | query | no | integer |
per_page | query | no | integer |
| Status | Description | Schema |
|---|---|---|
200 | OK | EditorialImageLivefeedList |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
404 | Not Found | — |
GET/v2/editorial/images/livefeeds/{id}Get editorial livefeed
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | string |
country | query | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | EditorialImageLivefeed |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
404 | Not Found | — |
GET/v2/editorial/images/livefeeds/{id}/itemsGet editorial livefeed items
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | string |
country | query | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | EditorialImageContentDataList |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
404 | Not Found | — |
GET/v2/editorial/images/searchSearch editorial images
| Name | In | Required | Type |
|---|---|---|---|
query | query | no | string |
sort | query | no | string |
category | query | no | string |
country | query | yes | string |
supplier_code | query | no | array |
date_start | query | no | string |
date_end | query | no | string |
per_page | query | no | integer |
cursor | query | no | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | EditorialSearchResults |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
406 | Not Acceptable | — |
GET/v2/editorial/images/updatedList updated content
| Name | In | Required | Type |
|---|---|---|---|
type | query | yes | string |
date_updated_start | query | yes | string |
date_updated_end | query | yes | string |
date_taken_start | query | no | string |
date_taken_end | query | no | string |
cursor | query | no | string |
sort | query | no | string |
supplier_code | query | no | array |
country | query | yes | string |
per_page | query | no | integer |
| Status | Description | Schema |
|---|---|---|
200 | OK | EditorialUpdatedResults |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
406 | Not Acceptable | — |
GET/v2/editorial/images/{id}Get editorial content details
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | string |
country | query | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | EditorialContent |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
404 | Not Found | — |
POST/v2/editorial/licenses(Deprecated) License editorial content
application/json — LicenseEditorialContentRequest (required)
| Status | Description | Schema |
|---|---|---|
200 | OK | LicenseEditorialContentResults |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
406 | Not Acceptable | — |
GET/v2/editorial/livefeeds(Deprecated) Get editorial livefeed list
| Name | In | Required | Type |
|---|---|---|---|
country | query | yes | string |
page | query | no | integer |
per_page | query | no | integer |
| Status | Description | Schema |
|---|---|---|
200 | OK | EditorialLivefeedList |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
406 | Not Acceptable | — |
GET/v2/editorial/livefeeds/{id}(Deprecated) Get editorial livefeed
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | string |
country | query | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | EditorialLivefeed |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
406 | Not Acceptable | — |
GET/v2/editorial/livefeeds/{id}/items(Deprecated) Get editorial livefeed items
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | string |
country | query | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | EditorialContentDataList |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
406 | Not Acceptable | — |
GET/v2/editorial/search(Deprecated) Search editorial content
| Name | In | Required | Type |
|---|---|---|---|
query | query | no | string |
sort | query | no | string |
category | query | no | string |
country | query | yes | string |
supplier_code | query | no | array |
date_start | query | no | string |
date_end | query | no | string |
per_page | query | no | integer |
cursor | query | no | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | EditorialSearchResults |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
406 | Not Acceptable | — |
GET/v2/editorial/updated(Deprecated) List updated content
| Name | In | Required | Type |
|---|---|---|---|
type | query | yes | string |
date_updated_start | query | yes | string |
date_updated_end | query | yes | string |
date_taken_start | query | no | string |
date_taken_end | query | no | string |
cursor | query | no | string |
sort | query | no | string |
supplier_code | query | no | array |
country | query | yes | string |
per_page | query | no | integer |
| Status | Description | Schema |
|---|---|---|
200 | OK | EditorialUpdatedResults |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
406 | Not Acceptable | — |
GET/v2/editorial/{id}(Deprecated) Get editorial content details
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | string |
country | query | yes | string |
search_id | query | no | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | EditorialContent |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
404 | Not Found | — |
editorial_video5
GET/v2/editorial/videos/categoriesList editorial video categories
| Status | Description | Schema |
|---|---|---|
200 | OK | EditorialVideoCategoryResults |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
GET/v2/editorial/videos/licensesList editorial video licenses
| Name | In | Required | Type |
|---|---|---|---|
video_id | query | no | string |
license | query | no | string |
page | query | no | integer |
per_page | query | no | integer |
sort | query | no | string |
username | query | no | string |
start_date | query | no | string |
end_date | query | no | string |
download_availability | query | no | string |
team_history | query | no | boolean |
| Status | Description | Schema |
|---|---|---|
200 | OK | DownloadHistoryDataList |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
POST/v2/editorial/videos/licensesLicense editorial video content
application/json — LicenseEditorialVideoContentRequest (required)
| Status | Description | Schema |
|---|---|---|
200 | OK | LicenseEditorialContentResults |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
GET/v2/editorial/videos/searchSearch editorial video content
| Name | In | Required | Type |
|---|---|---|---|
query | query | no | string |
sort | query | no | string |
category | query | no | string |
country | query | yes | string |
supplier_code | query | no | array |
date_start | query | no | string |
date_end | query | no | string |
resolution | query | no | string |
fps | query | no | number |
per_page | query | no | integer |
cursor | query | no | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | EditorialVideoSearchResults |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
406 | Not Acceptable | — |
GET/v2/editorial/videos/{id}Get editorial video content details
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | string |
country | query | yes | string |
search_id | query | no | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | EditorialVideoContent |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
406 | Not Acceptable | — |
images24
POST/v2/bulk_search/imagesRun multiple image searches
| Name | In | Required | Type |
|---|---|---|---|
added_date | query | no | string |
added_date_start | query | no | string |
aspect_ratio_min | query | no | number |
aspect_ratio_max | query | no | number |
aspect_ratio | query | no | number |
added_date_end | query | no | string |
category | query | no | string |
color | query | no | string |
contributor | query | no | array |
contributor_country | query | no | — |
fields | query | no | string |
height | query | no | integer |
height_from | query | no | integer |
height_to | query | no | integer |
image_type | query | no | array |
keyword_safe_search | query | no | boolean |
language | query | no | — |
license | query | no | array |
model | query | no | array |
orientation | query | no | string |
page | query | no | integer |
per_page | query | no | integer |
people_model_released | query | no | boolean |
people_age | query | no | string |
people_ethnicity | query | no | array |
people_gender | query | no | string |
people_number | query | no | integer |
region | query | no | — |
safe | query | no | boolean |
sort | query | no | string |
spellcheck_query | query | no | boolean |
view | query | no | string |
width | query | no | integer |
width_from | query | no | integer |
width_to | query | no | integer |
application/json — BulkImageSearchRequest (required)
| Status | Description | Schema |
|---|---|---|
200 | OK | BulkImageSearchResults |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
GET/v2/imagesList images
| Name | In | Required | Type |
|---|---|---|---|
id | query | yes | array |
view | query | no | string |
search_id | query | no | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | ImageDataList |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
GET/v2/images/categoriesList image categories
| Name | In | Required | Type |
|---|---|---|---|
language | query | no | — |
| Status | Description | Schema |
|---|---|---|
200 | OK | CategoryDataList |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
GET/v2/images/collectionsList image collections
| Name | In | Required | Type |
|---|---|---|---|
embed | query | no | array |
page | query | no | integer |
per_page | query | no | integer |
| Status | Description | Schema |
|---|---|---|
200 | OK | CollectionDataList |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
POST/v2/images/collectionsCreate image collections
application/json — CollectionCreateRequest (required)
| Status | Description | Schema |
|---|---|---|
201 | Successfully created image collection | CollectionCreateResponse |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
GET/v2/images/collections/featuredList featured image collections
| Name | In | Required | Type |
|---|---|---|---|
embed | query | no | string |
type | query | no | array |
asset_hint | query | no | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | FeaturedCollectionDataList |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
GET/v2/images/collections/featured/{id}Get the details of featured image collections
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | string |
embed | query | no | string |
asset_hint | query | no | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | FeaturedCollection |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
404 | Featured collection not found | — |
GET/v2/images/collections/featured/{id}/itemsGet the contents of featured image collections
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | string |
page | query | no | integer |
per_page | query | no | integer |
| Status | Description | Schema |
|---|---|---|
200 | OK | CollectionItemDataList |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
404 | Featured collection not found | — |
GET/v2/images/collections/{id}Get the details of image collections
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | string |
embed | query | no | array |
share_code | query | no | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | Collection |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
404 | Collection not found | — |
POST/v2/images/collections/{id}Rename image collections
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | string |
application/json — CollectionUpdateRequest (required)
| Status | Description | Schema |
|---|---|---|
204 | Successfully updated collection | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
404 | Collection not found | — |
DELETE/v2/images/collections/{id}Delete image collections
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | string |
| Status | Description | Schema |
|---|---|---|
204 | Successfully deleted collection | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
404 | Collection not found | — |
GET/v2/images/collections/{id}/itemsGet the contents of image collections
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | string |
page | query | no | integer |
per_page | query | no | integer |
share_code | query | no | string |
sort | query | no | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | CollectionItemDataList |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
404 | Collection not found | — |
POST/v2/images/collections/{id}/itemsAdd images to collections
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | string |
application/json — CollectionItemRequest (required)
| Status | Description | Schema |
|---|---|---|
204 | Successfully added collection items | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
404 | Collection not found | — |
DELETE/v2/images/collections/{id}/itemsRemove images from collections
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | string |
item_id | query | no | array |
| Status | Description | Schema |
|---|---|---|
204 | Successfully removed collection items | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
404 | Collection not found | — |
GET/v2/images/licensesList image licenses
| Name | In | Required | Type |
|---|---|---|---|
image_id | query | no | string |
license | query | no | string |
page | query | no | integer |
per_page | query | no | integer |
sort | query | no | string |
username | query | no | string |
start_date | query | no | string |
end_date | query | no | string |
download_availability | query | no | string |
team_history | query | no | boolean |
| Status | Description | Schema |
|---|---|---|
200 | OK | DownloadHistoryDataList |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
POST/v2/images/licensesLicense images
| Name | In | Required | Type |
|---|---|---|---|
subscription_id | query | no | string |
format | query | no | string |
size | query | no | string |
search_id | query | no | string |
application/json — LicenseImageRequest (required)
| Status | Description | Schema |
|---|---|---|
200 | OK | LicenseImageResultDataList |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
POST/v2/images/licenses/{id}/downloadsDownload images
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | string |
application/json — RedownloadImage (required)
| Status | Description | Schema |
|---|---|---|
200 | OK | Url |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
GET/v2/images/recommendationsList recommended images
| Name | In | Required | Type |
|---|---|---|---|
id | query | yes | array |
max_items | query | no | integer |
safe | query | no | boolean |
| Status | Description | Schema |
|---|---|---|
200 | OK | RecommendationDataList |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
GET/v2/images/searchSearch for images
| Name | In | Required | Type |
|---|---|---|---|
added_date | query | no | string |
added_date_start | query | no | string |
aspect_ratio_min | query | no | number |
aspect_ratio_max | query | no | number |
aspect_ratio | query | no | number |
ai_search | query | no | boolean |
ai_labels_limit | query | no | integer |
ai_industry | query | no | string |
ai_objective | query | no | string |
added_date_end | query | no | string |
category | query | no | string |
color | query | no | string |
contributor | query | no | array |
contributor_country | query | no | — |
fields | query | no | string |
height | query | no | integer |
height_from | query | no | integer |
height_to | query | no | integer |
image_type | query | no | array |
keyword_safe_search | query | no | boolean |
language | query | no | — |
license | query | no | array |
model | query | no | array |
orientation | query | no | string |
page | query | no | integer |
per_page | query | no | integer |
people_model_released | query | no | boolean |
people_age | query | no | string |
people_ethnicity | query | no | array |
people_gender | query | no | string |
people_number | query | no | integer |
query | query | no | string |
region | query | no | — |
safe | query | no | boolean |
sort | query | no | string |
spellcheck_query | query | no | boolean |
view | query | no | string |
width | query | no | integer |
width_from | query | no | integer |
width_to | query | no | integer |
| Status | Description | Schema |
|---|---|---|
200 | OK | ImageSearchResults |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
GET/v2/images/search/suggestionsGet suggestions for a search term
| Name | In | Required | Type |
|---|---|---|---|
query | query | yes | string |
limit | query | no | integer |
| Status | Description | Schema |
|---|---|---|
200 | OK | Suggestions |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
POST/v2/images/search/suggestionsGet keywords from text
application/json — SearchEntitiesRequest (required)
| Status | Description | Schema |
|---|---|---|
200 | OK | SearchEntitiesResponse |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
GET/v2/images/updatedList updated images
| Name | In | Required | Type |
|---|---|---|---|
type | query | no | array |
start_date | query | no | string |
end_date | query | no | string |
interval | query | no | string |
page | query | no | integer |
per_page | query | no | integer |
sort | query | no | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | UpdatedMediaDataList |
GET/v2/images/{id}Get details about images
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | string |
language | query | no | — |
view | query | no | string |
search_id | query | no | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | Image |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
GET/v2/images/{id}/similarList similar images
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | string |
language | query | no | — |
page | query | no | integer |
per_page | query | no | integer |
view | query | no | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | ImageSearchResults |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
oauth2
POST/v2/oauth/access_tokenGet access tokens
application/json
| Status | Description | Schema |
|---|---|---|
200 | OK | OauthAccessTokenResponse |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
GET/v2/oauth/authorizeAuthorize applications
| Name | In | Required | Type |
|---|---|---|---|
client_id | query | yes | string |
realm | query | no | string |
redirect_uri | query | yes | string |
response_type | query | yes | string |
scope | query | no | string |
state | query | yes | string |
| Status | Description | Schema |
|---|---|---|
302 | Redirect user to authenticate with Shutterstock | AuthorizeResponse |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
sound_effects6
GET/v2/sfxList details about sound effects
| Name | In | Required | Type |
|---|---|---|---|
id | query | yes | array |
view | query | no | string |
language | query | no | — |
library | query | no | string |
search_id | query | no | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | SFXDataList |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
GET/v2/sfx/licensesList sound effects licenses
| Name | In | Required | Type |
|---|---|---|---|
sfx_id | query | no | string |
license | query | no | string |
page | query | no | integer |
per_page | query | no | integer |
sort | query | no | string |
username | query | no | string |
start_date | query | no | string |
end_date | query | no | string |
license_id | query | no | string |
download_availability | query | no | string |
team_history | query | no | boolean |
| Status | Description | Schema |
|---|---|---|
200 | OK | DownloadHistoryDataList |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
POST/v2/sfx/licensesLicense sound effects
application/json — LicenseSFXRequest (required)
| Status | Description | Schema |
|---|---|---|
200 | OK | LicenseSFXResultDataList |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
POST/v2/sfx/licenses/{id}/downloadsDownload sound effects
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | SfxUrl |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
GET/v2/sfx/searchSearch for sound effects
| Name | In | Required | Type |
|---|---|---|---|
added_date | query | no | string |
added_date_start | query | no | string |
added_date_end | query | no | string |
duration | query | no | integer |
duration_from | query | no | integer |
duration_to | query | no | integer |
page | query | no | integer |
per_page | query | no | integer |
query | query | no | string |
safe | query | no | boolean |
sort | query | no | string |
view | query | no | string |
language | query | no | — |
| Status | Description | Schema |
|---|---|---|
200 | OK | SFXSearchResults |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
GET/v2/sfx/{id}Get details about sound effects
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | integer |
language | query | no | — |
view | query | no | string |
library | query | no | string |
search_id | query | no | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | SFX |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
test2
GET/v2/testEcho text
| Name | In | Required | Type |
|---|---|---|---|
text | query | no | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | TestEcho |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
GET/v2/test/validateValidate input
| Name | In | Required | Type |
|---|---|---|---|
id | query | yes | integer |
tag | query | no | array |
user-agent | header | no | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | TestValidate |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
users3
GET/v2/userGet user details
| Status | Description | Schema |
|---|---|---|
200 | OK | UserDetails |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
GET/v2/user/access_tokenGet access token details
| Status | Description | Schema |
|---|---|---|
200 | OK | AccessTokenDetails |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
GET/v2/user/subscriptionsList user subscriptions
| Status | Description | Schema |
|---|---|---|
200 | OK | SubscriptionDataList |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
videos21
GET/v2/videosList videos
| Name | In | Required | Type |
|---|---|---|---|
id | query | yes | array |
view | query | no | string |
search_id | query | no | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | VideoDataList |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
GET/v2/videos/categoriesList video categories
| Name | In | Required | Type |
|---|---|---|---|
language | query | no | — |
| Status | Description | Schema |
|---|---|---|
200 | OK | CategoryDataList |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
GET/v2/videos/collectionsList video collections
| Name | In | Required | Type |
|---|---|---|---|
page | query | no | integer |
per_page | query | no | integer |
embed | query | no | array |
| Status | Description | Schema |
|---|---|---|
200 | OK | CollectionDataList |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
POST/v2/videos/collectionsCreate video collections
application/json — CollectionCreateRequest (required)
| Status | Description | Schema |
|---|---|---|
201 | Successfully created video collection | CollectionCreateResponse |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
GET/v2/videos/collections/featuredList featured video collections
| Name | In | Required | Type |
|---|---|---|---|
embed | query | no | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | FeaturedCollectionDataList |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
GET/v2/videos/collections/featured/{id}Get the details of featured video collections
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | string |
embed | query | no | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | FeaturedCollection |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
404 | Featured collection not found | — |
GET/v2/videos/collections/featured/{id}/itemsGet the contents of featured video collections
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | string |
page | query | no | integer |
per_page | query | no | integer |
| Status | Description | Schema |
|---|---|---|
200 | OK | VideoCollectionItemDataList |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
404 | Featured collection not found | — |
GET/v2/videos/collections/{id}Get the details of video collections
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | string |
embed | query | no | array |
share_code | query | no | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | Collection |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
404 | Collection not found | — |
POST/v2/videos/collections/{id}Rename video collections
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | string |
application/json — CollectionUpdateRequest (required)
| Status | Description | Schema |
|---|---|---|
204 | Successfully updated collection | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
404 | Collection not found | — |
DELETE/v2/videos/collections/{id}Delete video collections
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | string |
| Status | Description | Schema |
|---|---|---|
204 | Successfully deleted collection | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
404 | Collection not found | — |
GET/v2/videos/collections/{id}/itemsGet the contents of video collections
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | string |
page | query | no | integer |
per_page | query | no | integer |
share_code | query | no | string |
sort | query | no | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | CollectionItemDataList |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
404 | Collection not found | — |
POST/v2/videos/collections/{id}/itemsAdd videos to collections
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | string |
application/json — CollectionItemRequest (required)
| Status | Description | Schema |
|---|---|---|
204 | Successfully added collection items | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
404 | Collection not found | — |
DELETE/v2/videos/collections/{id}/itemsRemove videos from collections
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | string |
item_id | query | no | array |
| Status | Description | Schema |
|---|---|---|
204 | Successfully removed collection items | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
404 | Collection not found | — |
GET/v2/videos/licensesList video licenses
| Name | In | Required | Type |
|---|---|---|---|
video_id | query | no | string |
license | query | no | string |
page | query | no | integer |
per_page | query | no | integer |
sort | query | no | string |
username | query | no | string |
start_date | query | no | string |
end_date | query | no | string |
download_availability | query | no | string |
team_history | query | no | boolean |
| Status | Description | Schema |
|---|---|---|
200 | OK | DownloadHistoryDataList |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
POST/v2/videos/licensesLicense videos
| Name | In | Required | Type |
|---|---|---|---|
subscription_id | query | no | string |
size | query | no | string |
search_id | query | no | string |
application/json — LicenseVideoRequest (required)
| Status | Description | Schema |
|---|---|---|
200 | OK | LicenseVideoResultDataList |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
POST/v2/videos/licenses/{id}/downloadsDownload videos
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | string |
application/json — RedownloadVideo (required)
| Status | Description | Schema |
|---|---|---|
200 | OK | Url |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
GET/v2/videos/searchSearch for videos
| Name | In | Required | Type |
|---|---|---|---|
added_date | query | no | string |
added_date_start | query | no | string |
added_date_end | query | no | string |
aspect_ratio | query | no | string |
category | query | no | string |
contributor | query | no | array |
contributor_country | query | no | array |
duration | query | no | integer |
duration_from | query | no | integer |
duration_to | query | no | integer |
fps | query | no | number |
fps_from | query | no | number |
fps_to | query | no | number |
keyword_safe_search | query | no | boolean |
language | query | no | — |
license | query | no | array |
model | query | no | array |
page | query | no | integer |
per_page | query | no | integer |
people_age | query | no | string |
people_ethnicity | query | no | array |
people_gender | query | no | string |
people_number | query | no | integer |
people_model_released | query | no | boolean |
query | query | no | string |
resolution | query | no | string |
safe | query | no | boolean |
sort | query | no | string |
view | query | no | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | VideoSearchResults |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
404 | Not found | — |
GET/v2/videos/search/suggestionsGet suggestions for a search term
| Name | In | Required | Type |
|---|---|---|---|
query | query | yes | string |
limit | query | no | integer |
| Status | Description | Schema |
|---|---|---|
200 | OK | Suggestions |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
GET/v2/videos/updatedList updated videos
| Name | In | Required | Type |
|---|---|---|---|
start_date | query | no | string |
end_date | query | no | string |
interval | query | no | string |
page | query | no | integer |
per_page | query | no | integer |
sort | query | no | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | UpdatedMediaDataList |
GET/v2/videos/{id}Get details about videos
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | string |
language | query | no | — |
view | query | no | string |
search_id | query | no | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | Video |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
404 | Not found | — |
GET/v2/videos/{id}/similarList similar videos
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | string |
language | query | no | — |
page | query | no | integer |
per_page | query | no | integer |
view | query | no | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | VideoSearchResults |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
Try it
Developer reference
https://api.shutterstock.comPer-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.
- GET/v2/images/search
- GET/v2/images/{id}
- GET/v2/videos/search
- POST/v2/images/licenses
- POST/v2/images/licenses/{id}/downloads