Query structured spec data via REST or MCP. Get exactly what your agent needs.
https://api.shutterstock.com
https://api-sandbox.shutterstock.com
/v2/audio
This endpoint lists information about one or more audio tracks, including the description and publication date.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| id | query | required | array | One or more audio IDs |
| view | query | optional | string | Amount of detail to render in the response |
| search_id | query | optional | string | The ID of the search that is related to this request |
OK
Bad Request
Unauthorized
Forbidden
GET /v2/audio
/v2/audio/collections
This endpoint lists your collections of audio tracks and their basic attributes.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| page | query | optional | integer | Page number |
| per_page | query | optional | integer | Number of results per page |
| embed | query | optional | array | Which sharing information to include in the response, such as a URL to the collection |
OK
Bad Request
Unauthorized
Forbidden
GET /v2/audio/collections
/v2/audio/collections/{id}
This endpoint gets more detailed information about a collection, including the number of items in it and when it was last updated. To get the tracks in collections, use GET /v2/audio/collections/{id}/items.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| id | path | required | string | Collection ID |
| embed | query | optional | array | Which sharing information to include in the response, such as a URL to the collection |
| share_code | query | optional | string | Code to retrieve a shared collection |
OK
Bad Request
Unauthorized
Forbidden
Collection not found
GET /v2/audio/collections/{id}
/v2/audio/collections/{id}/items
This endpoint lists the IDs of tracks in a collection and the date that each was added.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| id | path | required | string | Collection ID |
| page | query | optional | integer | Page number |
| per_page | query | optional | integer | Number of results per page |
| share_code | query | optional | string | Code to retrieve the contents of a shared collection |
| sort | query | optional | string | Sort order |
OK
Bad Request
Unauthorized
Forbidden
Collection not found
GET /v2/audio/collections/{id}/items
/v2/audio/genres
This endpoint returns a list of all audio genres.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| language | query | optional | string | Which language the genres will be returned |
OK
GET /v2/audio/genres
/v2/audio/instruments
This endpoint returns a list of all audio instruments.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| language | query | optional | string | Which language the instruments will be returned in |
OK
GET /v2/audio/instruments
/v2/audio/licenses
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.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| audio_id | query | optional | string | Show licenses for the specified track ID |
| license | query | optional | string | Restrict results by license. Prepending a |
| page | query | optional | integer | Page number |
| per_page | query | optional | integer | Number of results per page |
| sort | query | optional | string | Sort order |
| username | query | optional | string | Filter licenses by username of licensee |
| start_date | query | optional | string | Show licenses created on or after the specified date |
| end_date | query | optional | string | Show licenses created before the specified date |
| download_availability | query | optional | string | Filter licenses by download availability |
| team_history | query | optional | boolean | Set to true to see license history for all members of your team. |
OK
Bad Request
Unauthorized
Forbidden
GET /v2/audio/licenses
/v2/audio/moods
This endpoint returns a list of all audio moods.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| language | query | optional | string | Which language the moods will be returned in |
OK
GET /v2/audio/moods
/v2/audio/search
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.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| artists | query | optional | array | Show tracks with one of the specified artist names or IDs |
| bpm | query | optional | integer | (Deprecated; use bpm_from and bpm_to instead) Show tracks with the specified beats per minute |
| bpm_from | query | optional | integer | Show tracks with the specified beats per minute or faster |
| bpm_to | query | optional | integer | Show tracks with the specified beats per minute or slower |
| duration | query | optional | integer | Show tracks with the specified duration in seconds |
| duration_from | query | optional | integer | Show tracks with the specified duration or longer in seconds |
| duration_to | query | optional | integer | Show tracks with the specified duration or shorter in seconds |
| genre | query | optional | array | Show tracks with each of the specified genres; to get the list of genres, use |
| is_instrumental | query | optional | boolean | Show instrumental music only |
| instruments | query | optional | array | Show tracks with each of the specified instruments; to get the list of instruments, use |
| moods | query | optional | array | Show tracks with each of the specified moods; to get the list of moods, use |
| page | query | optional | integer | Page number |
| per_page | query | optional | integer | Number of results per page |
| query | query | optional | string | One or more search terms separated by spaces |
| sort | query | optional | string | Sort by |
| sort_order | query | optional | string | Sort order |
| vocal_description | query | optional | string | Show tracks with the specified vocal description (male, female) |
| view | query | optional | string | Amount of detail to render in the response |
| fields | query | optional | string | Fields to display in the response; see the documentation for the fields parameter in the overview section |
| library | query | optional | string | Which library to search |
| language | query | optional | string | Which language to search in |
OK
Bad Request
Unauthorized
Forbidden
GET /v2/audio/search
/v2/audio/{id}
This endpoint shows information about a track, including its genres, instruments, and other attributes.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| id | path | required | integer | Audio track ID |
| view | query | optional | string | Amount of detail to render in the response |
| search_id | query | optional | string | The ID of the search that is related to this request |
OK
Bad Request
Unauthorized
Forbidden
GET /v2/audio/{id}
/v2/catalog/collections
This endpoint returns a list of catalog collections.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| page | query | optional | integer | Page number |
| per_page | query | optional | integer | Number of results per page |
| sort | query | optional | string | Sort by |
| shared | query | optional | boolean | Set to true to omit collections that you own and return only collections that are shared with you |
OK
Invalid status value
GET /v2/catalog/collections
/v2/catalog/search
This endpoint searches for assets in the account’s catalog. 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. You can also filter search terms out in the query parameter by prefixing the term with NOT.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| sort | query | optional | string | Sort by |
| page | query | optional | integer | Page number |
| per_page | query | optional | integer | Number of results per page |
| query | query | optional | string | One or more search terms separated by spaces |
| collection_id | query | optional | array | Filter by collection id |
| asset_type | query | optional | array | Filter by asset type |
OK
Bad Request
Unauthorized
Forbidden
GET /v2/catalog/search
/v2/cv/keywords
This endpoint returns a list of suggested keywords for a media item that you specify or upload.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| asset_id | query | required | The asset ID or upload ID to suggest keywords for |
OK
Bad Request
Unauthorized
Forbidden
Unsupported Media Type
GET /v2/cv/keywords
/v2/cv/similar/images
This endpoint returns images that are visually similar to an image that you specify or upload.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| asset_id | query | required | string | The asset ID or upload ID to find similar images for |
| license | query | optional | array | Show only images with the specified license |
| safe | query | optional | boolean | Enable or disable safe search |
| language | query | optional | Language for the keywords and categories in the response |
|
| page | query | optional | integer | Page number |
| per_page | query | optional | integer | Number of results per page |
| view | query | optional | string | Amount of detail to render in the response |
OK
Bad Request
Unauthorized
Forbidden
GET /v2/cv/similar/images
/v2/cv/similar/videos
This endpoint returns videos that are visually similar to an image that you specify or upload.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| asset_id | query | required | string | The asset ID or upload ID to find similar videos for |
| license | query | optional | array | Show only videos with the specified license |
| safe | query | optional | boolean | Enable or disable safe search |
| language | query | optional | Language for the keywords and categories in the response |
|
| page | query | optional | integer | Page number |
| per_page | query | optional | integer | Number of results per page |
| view | query | optional | string | Amount of detail to render in the response |
OK
Bad Request
Unauthorized
Forbidden
GET /v2/cv/similar/videos
/v2/contributors
This endpoint lists information about one or more contributors, including contributor type, equipment they use and other attributes.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| id | query | required | array | One or more contributor IDs |
OK
Bad Request
Unauthorized
Forbidden
GET /v2/contributors
/v2/contributors/{contributor_id}
This endpoint shows information about a single contributor, including contributor type, equipment they use, and other attributes.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| contributor_id | path | required | string | Contributor ID |
OK
Bad Request
Unauthorized
Forbidden
GET /v2/contributors/{contributor_id}
/v2/contributors/{contributor_id}/collections
This endpoint lists collections based on contributor ID.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| contributor_id | path | required | string | Contributor ID |
| sort | query | optional | string | Sort order |
OK
Bad Request
Unauthorized
Forbidden
Contributor not found
GET /v2/contributors/{contributor_id}/collections
/v2/contributors/{contributor_id}/collections/{id}
This endpoint gets more detailed information about a contributor’s collection, including its cover image, timestamps for its creation, and most recent update. To get the items in collections, use GET /v2/contributors/{contributor_id}/collections/{id}/items.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| contributor_id | path | required | string | Contributor ID |
| id | path | required | string | Collection ID that belongs to the contributor |
OK
Bad Request
Unauthorized
Forbidden
Set not found
GET /v2/contributors/{contributor_id}/collections/{id}
/v2/contributors/{contributor_id}/collections/{id}/items
This endpoint lists the IDs of items in a contributor’s collection and the date that each was added.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| contributor_id | path | required | string | Contributor ID |
| id | path | required | string | Collection ID that belongs to the contributor |
| page | query | optional | integer | Page number |
| per_page | query | optional | integer | Number of results per page |
| sort | query | optional | string | Sort order |
OK
Bad Request
Unauthorized
Forbidden
Set not found
GET /v2/contributors/{contributor_id}/collections/{id}/items
/v2/ai/audio/descriptors
This endpoint lists the descriptors that you can use in the audio regions in an audio render.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| render_speed_over | query | optional | number | Show descriptors with an average render speed that is greater than or equal to the specified value |
| band_id | query | optional | string | Show descriptors that contain the specified band (case-sentsitive) |
| band_name | query | optional | string | Show descriptors with the specified band name (case-sensitive) |
| page | query | optional | integer | Page number |
| per_page | query | optional | integer | Number of results per page |
| id | query | optional | array | Show descriptors with the specified IDs (case-sensitive) |
| instrument_name | query | optional | string | Show descriptors with the specified instrument name (case-sensitive) |
| instrument_id | query | optional | string | Show descriptors with the specified instrument ID (case-sensitive) |
| tempo | query | optional | number | Show descriptors whose tempo range includes the specified tempo in beats per minute |
| tempo_to | query | optional | number | Show descriptors with a tempo that is less than or equal to the specified number |
| tempo_from | query | optional | number | Show descriptors that have a tempo range that includes the specified tempo in beats per minute |
| name | query | optional | string | Show descriptors with the specified name (case-sensitive) |
| tag | query | optional | string | Show descriptors with the specified tag, such as Cinematic or Roomy (case-sensitive) |
OK
Bad Request
Unauthorized
Forbidden
Not Found
GET /v2/ai/audio/descriptors
/v2/ai/audio/instruments
This endpoint lists the instruments that you can include in computer audio. If you specify more than one search parameter, the API uses an AND condition.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| id | query | optional | array | Show instruments with the specified ID |
| per_page | query | optional | integer | Number of results per page |
| page | query | optional | integer | Page number |
| name | query | optional | string | Show instruments with the specified name (case-sensitive) |
| tag | query | optional | string | Show instruments with the specified tag, such as Percussion or Strings (case-sensitive) |
OK
Bad Request
Unauthorized
Forbidden
GET /v2/ai/audio/instruments
/v2/ai/audio/renders
This endpoint shows the status of one or more audio renders, including download links for completed audio.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| id | query | required | array | One or more render IDs |
OK
Bad Request
Unauthorized
Forbidden
Not Found
GET /v2/ai/audio/renders
/v2/editorial/images/categories
This endpoint lists the categories that editorial images can belong to, which are separate from the categories that other types of assets can belong to.
OK
Bad Request
Unauthorized
Forbidden
GET /v2/editorial/images/categories
/v2/editorial/images/licenses
This endpoint lists existing editorial image licenses.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| image_id | query | optional | string | Show licenses for the specified editorial image ID |
| license | query | optional | string | Show editorial images that are available with the specified license name |
| page | query | optional | integer | Page number |
| per_page | query | optional | integer | Number of results per page |
| sort | query | optional | string | Sort order |
| username | query | optional | string | Filter licenses by username of licensee |
| start_date | query | optional | string | Show licenses created on or after the specified date |
| end_date | query | optional | string | Show licenses created before the specified date |
| download_availability | query | optional | string | Filter licenses by download availability |
| team_history | query | optional | boolean | Set to true to see license history for all members of your team. |
OK
Bad Request
Unauthorized
Forbidden
GET /v2/editorial/images/licenses
/v2/editorial/images/livefeeds
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| country | query | required | string | Returns only livefeeds that are available for distribution in a certain country |
| page | query | optional | integer | Page number |
| per_page | query | optional | integer | Number of results per page |
OK
Bad Request
Unauthorized
Forbidden
Not Found
GET /v2/editorial/images/livefeeds
/v2/editorial/images/livefeeds/{id}
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| id | path | required | string | Editorial livefeed ID; must be an URI encoded string |
| country | query | required | string | Returns only if the livefeed is available for distribution in a certain country |
OK
Bad Request
Unauthorized
Forbidden
Not Found
GET /v2/editorial/images/livefeeds/{id}
/v2/editorial/images/livefeeds/{id}/items
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| id | path | required | string | Editorial livefeed ID; must be an URI encoded string |
| country | query | required | string | Returns only if the livefeed items are available for distribution in a certain country |
OK
Bad Request
Unauthorized
Forbidden
Not Found
GET /v2/editorial/images/livefeeds/{id}/items
/v2/editorial/images/search
This endpoint searches for editorial images. If you specify more than one search parameter, the API uses an AND condition. For example, if you set the category parameter to “Alone,Performing” and also specify a query parameter, the results include only images that match the query and are in both the Alone and Performing categories. You can also filter search terms out in the query parameter by prefixing the term with NOT.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| query | query | optional | string | One or more search terms separated by spaces |
| sort | query | optional | string | Sort by |
| category | query | optional | string | Show editorial content with each of the specified editorial categories; specify category names in a comma-separated list |
| country | query | required | string | Show only editorial content that is available for distribution in a certain country |
| supplier_code | query | optional | array | Show only editorial content from certain suppliers |
| date_start | query | optional | string | Show only editorial content generated on or after a specific date |
| date_end | query | optional | string | Show only editorial content generated on or before a specific date |
| per_page | query | optional | integer | Number of results per page |
| cursor | query | optional | string | The cursor of the page with which to start fetching results; this cursor is returned from previous requests |
OK
Bad Request
Unauthorized
Forbidden
Not Acceptable
GET /v2/editorial/images/search
/v2/editorial/images/updated
This endpoint lists editorial images that have been updated in the specified time period to update content management systems (CMS) or digital asset management (DAM) systems. In most cases, use the date_updated_start and date_updated_end parameters to specify a range updates based on when the updates happened. You can also use the date_taken_start and date_taken_end parameters to specify a range of updates based on when the image was taken.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| type | query | required | string | Specify |
| date_updated_start | query | required | string | Show images images added, edited, or deleted after the specified date. Acceptable range is 1970-01-01T00:00:01 to 2038-01-19T00:00:00. |
| date_updated_end | query | required | string | Show images images added, edited, or deleted before the specified date. Acceptable range is 1970-01-01T00:00:01 to 2038-01-19T00:00:00. |
| date_taken_start | query | optional | string | Show images that were taken on or after the specified date; use this parameter if you want recently created images from the collection instead of updated older assets |
| date_taken_end | query | optional | string | Show images that were taken before the specified date |
| cursor | query | optional | string | The cursor of the page with which to start fetching results; this cursor is returned from previous requests |
| sort | query | optional | string | Sort by |
| supplier_code | query | optional | array | Show only editorial content from certain suppliers |
| country | query | required | string | Show only editorial content that is available for distribution in a certain country |
| per_page | query | optional | integer | Number of results per page |
OK
Bad Request
Unauthorized
Forbidden
Not Acceptable
GET /v2/editorial/images/updated
/v2/editorial/images/{id}
This endpoint shows information about an editorial image, including a URL to a preview image and the sizes that it is available in.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| id | path | required | string | Editorial ID |
| country | query | required | string | Returns only if the content is available for distribution in a certain country |
OK
Bad Request
Unauthorized
Forbidden
Not Found
GET /v2/editorial/images/{id}
/v2/editorial/videos/categories
This endpoint lists the categories that editorial videos can belong to, which are separate from the categories that other types of assets can belong to.
OK
Bad Request
Unauthorized
Forbidden
GET /v2/editorial/videos/categories
/v2/editorial/videos/licenses
This endpoint lists existing editorial video licenses.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| video_id | query | optional | string | Show licenses for the specified editorial video ID |
| license | query | optional | string | Show editorial videos that are available with the specified license name |
| page | query | optional | integer | Page number |
| per_page | query | optional | integer | Number of results per page |
| sort | query | optional | string | Sort order |
| username | query | optional | string | Filter licenses by username of licensee |
| start_date | query | optional | string | Show licenses created on or after the specified date |
| end_date | query | optional | string | Show licenses created before the specified date |
| download_availability | query | optional | string | Filter licenses by download availability |
| team_history | query | optional | boolean | Set to true to see license history for all members of your team. |
OK
Bad Request
Unauthorized
Forbidden
GET /v2/editorial/videos/licenses
/v2/editorial/videos/search
This endpoint searches for editorial videos. If you specify more than one search parameter, the API uses an AND condition. For example, if you set the category parameter to “Alone,Performing” and also specify a query parameter, the results include only videos that match the query and are in both the Alone and Performing categories. You can also filter search terms out in the query parameter by prefixing the term with NOT.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| query | query | optional | string | One or more search terms separated by spaces |
| sort | query | optional | string | Sort by |
| category | query | optional | string | Show editorial content with each of the specified editorial categories; specify category names in a comma-separated list |
| country | query | required | string | Show only editorial video content that is available for distribution in a certain country |
| supplier_code | query | optional | array | Show only editorial video content from certain suppliers |
| date_start | query | optional | string | Show only editorial video content generated on or after a specific date |
| date_end | query | optional | string | Show only editorial video content generated on or before a specific date |
| resolution | query | optional | string | Show only editorial video content with specific resolution |
| fps | query | optional | number | Show only editorial video content generated with specific frames per second |
| per_page | query | optional | integer | Number of results per page |
| cursor | query | optional | string | The cursor of the page with which to start fetching results; this cursor is returned from previous requests |
OK
Bad Request
Unauthorized
Forbidden
Not Acceptable
GET /v2/editorial/videos/search
/v2/editorial/videos/{id}
This endpoint shows information about an editorial image, including a URL to a preview image and the sizes that it is available in.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| id | path | required | string | Editorial ID |
| country | query | required | string | Returns only if the content is available for distribution in a certain country |
| search_id | query | optional | string | The ID of the search that is related to this request |
OK
Bad Request
Unauthorized
Forbidden
Not Acceptable
GET /v2/editorial/videos/{id}
/v2/images
This endpoint lists information about one or more images, including the available sizes.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| id | query | required | array | One or more image IDs |
| view | query | optional | string | Amount of detail to render in the response |
| search_id | query | optional | string | The ID of the search that is related to this request |
OK
Bad Request
Unauthorized
Forbidden
GET /v2/images
/v2/images/categories
This endpoint lists the categories (Shutterstock-assigned genres) that images can belong to.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| language | query | optional | Language for the keywords and categories in the response |
OK
Bad Request
Unauthorized
Forbidden
GET /v2/images/categories
/v2/images/collections
This endpoint lists your collections of images and their basic attributes.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| embed | query | optional | array | Which sharing information to include in the response, such as a URL to the collection |
| page | query | optional | integer | Page number |
| per_page | query | optional | integer | Number of results per page |
OK
Bad Request
Unauthorized
Forbidden
GET /v2/images/collections
/v2/images/collections/featured
This endpoint lists featured collections of specific types and a name and cover image for each collection.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| embed | query | optional | string | Which sharing information to include in the response, such as a URL to the collection |
| type | query | optional | array | The types of collections to return |
| asset_hint | query | optional | string | Cover image size |
OK
Bad Request
Unauthorized
Forbidden
GET /v2/images/collections/featured
/v2/images/collections/featured/{id}
This endpoint gets more detailed information about a featured collection, including its cover image and timestamps for its creation and most recent update. To get the images, use GET /v2/images/collections/featured/{id}/items.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| id | path | required | string | Collection ID |
| embed | query | optional | string | Which sharing information to include in the response, such as a URL to the collection |
| asset_hint | query | optional | string | Cover image size |
OK
Bad Request
Unauthorized
Forbidden
Featured collection not found
GET /v2/images/collections/featured/{id}
/v2/images/collections/featured/{id}/items
This endpoint lists the IDs of images in a featured collection and the date that each was added.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| id | path | required | string | Collection ID |
| page | query | optional | integer | Page number |
| per_page | query | optional | integer | Number of results per page |
OK
Bad Request
Unauthorized
Forbidden
Featured collection not found
GET /v2/images/collections/featured/{id}/items
/v2/images/collections/{id}
This endpoint gets more detailed information about a collection, including its cover image and timestamps for its creation and most recent update. To get the images in collections, use GET /v2/images/collections/{id}/items.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| id | path | required | string | Collection ID |
| embed | query | optional | array | Which sharing information to include in the response, such as a URL to the collection |
| share_code | query | optional | string | Code to retrieve a shared collection |
OK
Bad Request
Unauthorized
Forbidden
Collection not found
GET /v2/images/collections/{id}
/v2/images/collections/{id}/items
This endpoint lists the IDs of images in a collection and the date that each was added.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| id | path | required | string | Collection ID |
| page | query | optional | integer | Page number |
| per_page | query | optional | integer | Number of results per page |
| share_code | query | optional | string | Code to retrieve the contents of a shared collection |
| sort | query | optional | string | Sort order |
OK
Bad Request
Unauthorized
Forbidden
Collection not found
GET /v2/images/collections/{id}/items
/v2/images/licenses
This endpoint lists existing licenses.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| image_id | query | optional | string | Show licenses for the specified image ID |
| license | query | optional | string | Show images that are available with the specified license, such as |
| page | query | optional | integer | Page number |
| per_page | query | optional | integer | Number of results per page |
| sort | query | optional | string | Sort order |
| username | query | optional | string | Filter licenses by username of licensee |
| start_date | query | optional | string | Show licenses created on or after the specified date |
| end_date | query | optional | string | Show licenses created before the specified date |
| download_availability | query | optional | string | Filter licenses by download availability |
| team_history | query | optional | boolean | Set to true to see license history for all members of your team. |
OK
Bad Request
Unauthorized
Forbidden
GET /v2/images/licenses
/v2/images/recommendations
This endpoint returns images that customers put in the same collection as the specified image IDs.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| id | query | required | array | Image IDs |
| max_items | query | optional | integer | Maximum number of results returned in the response |
| safe | query | optional | boolean | Restrict results to safe images |
OK
Bad Request
Unauthorized
Forbidden
GET /v2/images/recommendations
/v2/images/search
This endpoint searches for images. 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. You can also filter search terms out in the query parameter by prefixing the term with NOT. Free API accounts show results only from a limited library of media, not the full Shutterstock media library. Also, the number of search fields they can use in a request is limited.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| added_date | query | optional | string | Show images added on the specified date |
| added_date_start | query | optional | string | Show images added on or after the specified date |
| aspect_ratio_min | query | optional | number | Show images with the specified aspect ratio or higher, using a positive decimal of the width divided by the height, such as 1.7778 for a 16:9 image |
| aspect_ratio_max | query | optional | number | Show images with the specified aspect ratio or lower, using a positive decimal of the width divided by the height, such as 1.7778 for a 16:9 image |
| aspect_ratio | query | optional | number | Show images with the specified aspect ratio, using a positive decimal of the width divided by the height, such as 1.7778 for a 16:9 image |
| ai_search | query | optional | boolean | Set to true and specify the |
| ai_labels_limit | query | optional | integer | For AI-powered search, specify the maximum number of labels to return |
| ai_industry | query | optional | string | For AI-powered search, specify the industry to target; requires that the |
| ai_objective | query | optional | string | For AI-powered search, specify the goal of the media; requires that the |
| added_date_end | query | optional | string | Show images added before the specified date |
| category | query | optional | string | Show images with the specified Shutterstock-defined category; specify a category name or ID |
| color | query | optional | string | Specify either a hexadecimal color in the format ‘4F21EA’ or ‘grayscale’; the API returns images that use similar colors |
| contributor | query | optional | array | Show images with the specified contributor names or IDs, allows multiple |
| contributor_country | query | optional | Show images from contributors in one or more specified countries, or start with NOT to exclude a country from the search |
|
| fields | query | optional | string | Fields to display in the response; see the documentation for the fields parameter in the overview section |
| height | query | optional | integer | (Deprecated; use height_from and height_to instead) Show images with the specified height |
| height_from | query | optional | integer | Show images with the specified height or larger, in pixels |
| height_to | query | optional | integer | Show images with the specified height or smaller, in pixels |
| image_type | query | optional | array | Show images of the specified type |
| keyword_safe_search | query | optional | boolean | Hide results with potentially unsafe keywords |
| language | query | optional | Set query and result language (uses Accept-Language header if not set) |
|
| license | query | optional | array | Show only images with the specified license |
| model | query | optional | array | Show image results with the specified model IDs |
| orientation | query | optional | string | Show image results with horizontal or vertical orientation |
| page | query | optional | integer | Page number |
| per_page | query | optional | integer | Number of results per page |
| people_model_released | query | optional | boolean | Show images of people with a signed model release |
| people_age | query | optional | string | Show images that feature people of the specified age category |
| people_ethnicity | query | optional | array | Show images with people of the specified ethnicities, or start with NOT to show images without those ethnicities |
| people_gender | query | optional | string | Show images with people of the specified gender |
| people_number | query | optional | integer | Show images with the specified number of people |
| query | query | optional | string | One or more search terms separated by spaces; you can use NOT to filter out images that match a term |
| region | query | optional | Raise or lower search result rankings based on the result’s relevance to a specified region; you can provide a country code or an IP address from which the API infers a country |
|
| safe | query | optional | boolean | Enable or disable safe search |
| sort | query | optional | string | Sort by |
| spellcheck_query | query | optional | boolean | Spellcheck the search query and return results on suggested spellings |
| view | query | optional | string | Amount of detail to render in the response |
| width | query | optional | integer | (Deprecated; use width_from and width_to instead) Show images with the specified width |
| width_from | query | optional | integer | Show images with the specified width or larger, in pixels |
| width_to | query | optional | integer | Show images with the specified width or smaller, in pixels |
OK
Bad Request
Unauthorized
Forbidden
GET /v2/images/search
/v2/images/search/suggestions
This endpoint provides autocomplete suggestions for partial search terms.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| query | query | required | string | Search term for which you want keyword suggestions |
| limit | query | optional | integer | Limit the number of suggestions |
OK
Bad Request
Unauthorized
Forbidden
GET /v2/images/search/suggestions
/v2/images/updated
This endpoint lists images that have been updated in the specified time period to update content management systems (CMS) or digital asset management (DAM) systems. In most cases, use the interval parameter to show images that were updated recently, but you can also use the start_date and end_date parameters to specify a range of no more than three days. Do not use the interval parameter with either start_date or end_date.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| type | query | optional | array | Show images that were added, deleted, or edited; by default, the endpoint returns images that were updated in any of these ways |
| start_date | query | optional | string | Show images updated on or after the specified date |
| end_date | query | optional | string | Show images updated before the specified date |
| interval | query | optional | string | Show images updated in the specified time period, where the time period is an interval (like SQL INTERVAL) such as 1 DAY, 6 HOUR, or 30 MINUTE; the default is 1 HOUR, which shows images that were updated in the hour preceding the request |
| page | query | optional | integer | Page number |
| per_page | query | optional | integer | Number of results per page |
| sort | query | optional | string | Sort order |
OK
GET /v2/images/updated
/v2/images/{id}
This endpoint shows information about an image, including a URL to a preview image and the sizes that it is available in.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| id | path | required | string | Image ID |
| language | query | optional | Language for the keywords and categories in the response |
|
| view | query | optional | string | Amount of detail to render in the response |
| search_id | query | optional | string | The ID of the search that is related to this request |
OK
Bad Request
Unauthorized
Forbidden
GET /v2/images/{id}
/v2/images/{id}/similar
This endpoint returns images that are visually similar to an image that you specify.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| id | path | required | string | Image ID |
| language | query | optional | Language for the keywords and categories in the response |
|
| page | query | optional | integer | Page number |
| per_page | query | optional | integer | Number of results per page |
| view | query | optional | string | Amount of detail to render in the response |
OK
Bad Request
Unauthorized
Forbidden
GET /v2/images/{id}/similar
/v2/oauth/authorize
This endpoint returns a redirect URI (in the ‘Location’ header) that the customer uses to authorize your application and, together with POST /v2/oauth/access_token, generate an access token that represents that authorization.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| client_id | query | required | string | Client ID (Consumer Key) of your application |
| realm | query | optional | string | User type to be authorized (usually ‘customer’) |
| redirect_uri | query | required | string | The callback URI to send the request to after authorization; must use a host name that is registered with your application |
| response_type | query | required | string | Type of temporary authorization code that will be used to generate an access code; the only valid value is ‘code’ |
| scope | query | optional | string | Space-separated list of scopes to be authorized |
| state | query | required | string | Unique value used by the calling app to verify the request |
OK
Redirect user to authenticate with Shutterstock
Bad Request
Unauthorized
Forbidden
GET /v2/oauth/authorize
/v2/sfx
This endpoint shows information about sound effects.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| id | query | required | array | One or more sound effect IDs |
| view | query | optional | string | Amount of detail to render in the response |
| language | query | optional | Language for the keywords and categories in the response |
|
| library | query | optional | string | Which library to fetch from |
| search_id | query | optional | string | The ID of the search that is related to this request |
OK
Bad Request
Unauthorized
Forbidden
GET /v2/sfx
/v2/sfx/licenses
This endpoint lists existing licenses.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| sfx_id | query | optional | string | Show licenses for the specified sound effects ID |
| license | query | optional | string | Show sound effects that are available with the specified license, such as |
| page | query | optional | integer | Page number |
| per_page | query | optional | integer | Number of results per page |
| sort | query | optional | string | Sort order |
| username | query | optional | string | Filter licenses by username of licensee |
| start_date | query | optional | string | Show licenses created on or after the specified date |
| end_date | query | optional | string | Show licenses created before the specified date |
| license_id | query | optional | string | Filter by the license ID |
| download_availability | query | optional | string | Filter licenses by download availability |
| team_history | query | optional | boolean | Set to true to see license history for all members of your team. |
OK
Bad Request
Unauthorized
Forbidden
GET /v2/sfx/licenses
/v2/sfx/search
This endpoint searches for sound effects. If you specify more than one search parameter, the API uses an AND condition.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| added_date | query | optional | string | Show sound effects added on the specified date |
| added_date_start | query | optional | string | Show sound effects added on or after the specified date |
| added_date_end | query | optional | string | Show sound effects added before the specified date |
| duration | query | optional | integer | Show sound effects with the specified duration in seconds |
| duration_from | query | optional | integer | Show sound effects with the specified duration or longer in seconds |
| duration_to | query | optional | integer | Show sound effects with the specified duration or shorter in seconds |
| page | query | optional | integer | Page number |
| per_page | query | optional | integer | Number of results per page |
| query | query | optional | string | One or more search terms separated by spaces |
| safe | query | optional | boolean | Enable or disable safe search |
| sort | query | optional | string | Sort by |
| view | query | optional | string | Amount of detail to render in the response |
| language | query | optional | Set query and result language (uses Accept-Language header if not set) |
OK
Bad Request
Unauthorized
Forbidden
Service Unavailable
GET /v2/sfx/search
/v2/sfx/{id}
This endpoint shows information about a sound effect.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| id | path | required | integer | Audio track ID |
| language | query | optional | Language for the keywords and categories in the response |
|
| view | query | optional | string | Amount of detail to render in the response |
| library | query | optional | string | Which library to fetch from |
| search_id | query | optional | string | The ID of the search that is related to this request |
OK
Bad Request
Unauthorized
Forbidden
Service Unavailable
GET /v2/sfx/{id}
/v2/test
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| text | query | optional | string | Text to echo |
OK
Bad Request
Unauthorized
Forbidden
GET /v2/test
/v2/test/validate
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| id | query | required | integer | Integer ID |
| tag | query | optional | array | List of tags |
| user-agent | header | optional | string | User agent |
OK
Bad Request
Unauthorized
Forbidden
GET /v2/test/validate
/v2/user
OK
Bad Request
Unauthorized
Forbidden
GET /v2/user
/v2/user/access_token
OK
Bad Request
Unauthorized
Forbidden
GET /v2/user/access_token
/v2/user/subscriptions
OK
Bad Request
Unauthorized
Forbidden
GET /v2/user/subscriptions
/v2/videos
This endpoint lists information about one or more videos, including the aspect ratio and URLs to previews.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| id | query | required | array | One or more video IDs |
| view | query | optional | string | Amount of detail to render in the response |
| search_id | query | optional | string | The ID of the search that is related to this request |
OK
Bad Request
Unauthorized
Forbidden
GET /v2/videos
/v2/videos/categories
This endpoint lists the categories (Shutterstock-assigned genres) that videos can belong to.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| language | query | optional | Language for the keywords and categories in the response |
OK
Bad Request
Unauthorized
Forbidden
GET /v2/videos/categories
/v2/videos/collections
This endpoint lists your collections of videos and their basic attributes.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| page | query | optional | integer | Page number |
| per_page | query | optional | integer | Number of results per page |
| embed | query | optional | array | Which sharing information to include in the response, such as a URL to the collection |
OK
Bad Request
Unauthorized
Forbidden
GET /v2/videos/collections
/v2/videos/collections/featured
This endpoint lists featured video collections and a name and cover video for each collection.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| embed | query | optional | string | What information to include in the response, such as a URL to the collection |
OK
Bad Request
Unauthorized
Forbidden
GET /v2/videos/collections/featured
/v2/videos/collections/featured/{id}
This endpoint gets more detailed information about a featured video collection, including its cover video and timestamps for its creation and most recent update. To get the videos, use GET /v2/videos/collections/featured/{id}/items.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| id | path | required | string | Collection ID |
| embed | query | optional | string | What information to include in the response, such as a URL to the collection |
OK
Bad Request
Unauthorized
Forbidden
Featured collection not found
GET /v2/videos/collections/featured/{id}
/v2/videos/collections/featured/{id}/items
This endpoint lists the IDs of videos in a featured collection and the date that each was added.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| id | path | required | string | Collection ID |
| page | query | optional | integer | Page number |
| per_page | query | optional | integer | Number of results per page |
OK
Bad Request
Unauthorized
Forbidden
Featured collection not found
GET /v2/videos/collections/featured/{id}/items
/v2/videos/collections/{id}
This endpoint gets more detailed information about a collection, including the timestamp for its creation and the number of videos in it. To get the videos in collections, use GET /v2/videos/collections/{id}/items.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| id | path | required | string | The ID of the collection to return |
| embed | query | optional | array | Which sharing information to include in the response, such as a URL to the collection |
| share_code | query | optional | string | Code to retrieve a shared collection |
OK
Bad Request
Unauthorized
Forbidden
Collection not found
GET /v2/videos/collections/{id}
/v2/videos/collections/{id}/items
This endpoint lists the IDs of videos in a collection and the date that each was added.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| id | path | required | string | Collection ID |
| page | query | optional | integer | Page number |
| per_page | query | optional | integer | Number of results per page |
| share_code | query | optional | string | Code to retrieve the contents of a shared collection |
| sort | query | optional | string | Sort order |
OK
Bad Request
Unauthorized
Forbidden
Collection not found
GET /v2/videos/collections/{id}/items
/v2/videos/licenses
This endpoint lists existing licenses.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| video_id | query | optional | string | Show licenses for the specified video ID |
| license | query | optional | string | Show videos that are available with the specified license, such as |
| page | query | optional | integer | Page number |
| per_page | query | optional | integer | Number of results per page |
| sort | query | optional | string | Sort by oldest or newest videos first |
| username | query | optional | string | Filter licenses by username of licensee |
| start_date | query | optional | string | Show licenses created on or after the specified date |
| end_date | query | optional | string | Show licenses created before the specified date |
| download_availability | query | optional | string | Filter licenses by download availability |
| team_history | query | optional | boolean | Set to true to see license history for all members of your team. |
OK
Bad Request
Unauthorized
Forbidden
GET /v2/videos/licenses
/v2/videos/search
This endpoint searches for videos. 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. You can also filter search terms out in the query parameter by prefixing the term with NOT.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| added_date | query | optional | string | Show videos added on the specified date |
| added_date_start | query | optional | string | Show videos added on or after the specified date |
| added_date_end | query | optional | string | Show videos added before the specified date |
| aspect_ratio | query | optional | string | Show videos with the specified aspect ratio |
| category | query | optional | string | Show videos with the specified Shutterstock-defined category; specify a category name or ID |
| contributor | query | optional | array | Show videos with the specified artist names or IDs |
| contributor_country | query | optional | array | Show videos from contributors in one or more specified countries |
| duration | query | optional | integer | (Deprecated; use duration_from and duration_to instead) Show videos with the specified duration in seconds |
| duration_from | query | optional | integer | Show videos with the specified duration or longer in seconds |
| duration_to | query | optional | integer | Show videos with the specified duration or shorter in seconds |
| fps | query | optional | number | (Deprecated; use fps_from and fps_to instead) Show videos with the specified frames per second |
| fps_from | query | optional | number | Show videos with the specified frames per second or more |
| fps_to | query | optional | number | Show videos with the specified frames per second or fewer |
| keyword_safe_search | query | optional | boolean | Hide results with potentially unsafe keywords |
| language | query | optional | Set query and result language (uses Accept-Language header if not set) |
|
| license | query | optional | array | Show only videos with the specified license or licenses |
| model | query | optional | array | Show videos with each of the specified models |
| page | query | optional | integer | Page number |
| per_page | query | optional | integer | Number of results per page |
| people_age | query | optional | string | Show videos that feature people of the specified age range |
| people_ethnicity | query | optional | array | Show videos with people of the specified ethnicities |
| people_gender | query | optional | string | Show videos with people with the specified gender |
| people_number | query | optional | integer | Show videos with the specified number of people |
| people_model_released | query | optional | boolean | Show only videos of people with a signed model release |
| query | query | optional | string | One or more search terms separated by spaces; you can use NOT to filter out videos that match a term |
| resolution | query | optional | string | Show videos with the specified resolution |
| safe | query | optional | boolean | Enable or disable safe search |
| sort | query | optional | string | Sort by one of these categories |
| view | query | optional | string | Amount of detail to render in the response |
OK
Bad Request
Unauthorized
Forbidden
Not found
GET /v2/videos/search
/v2/videos/search/suggestions
This endpoint provides autocomplete suggestions for partial search terms.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| query | query | required | string | Search term for which you want keyword suggestions |
| limit | query | optional | integer | Limit the number of the suggestions |
OK
Bad Request
Unauthorized
Forbidden
GET /v2/videos/search/suggestions
/v2/videos/updated
This endpoint lists videos that have been updated in the specified time period to update content management systems (CMS) or digital asset management (DAM) systems. In most cases, use the interval parameter to show videos that were updated recently, but you can also use the start_date and end_date parameters to specify a range of no more than three days. Do not use the interval parameter with either start_date or end_date.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| start_date | query | optional | string | Show videos updated on or after the specified date |
| end_date | query | optional | string | Show videos updated before the specified date |
| interval | query | optional | string | Show videos updated in the specified time period, where the time period is an interval (like SQL INTERVAL) such as 1 DAY, 6 HOUR, or 30 MINUTE; the default is 1 HOUR, which shows videos that were updated in the hour preceding the request |
| page | query | optional | integer | Page number |
| per_page | query | optional | integer | Number of results per page |
| sort | query | optional | string | Sort by oldest or newest videos first |
OK
GET /v2/videos/updated
/v2/videos/{id}
This endpoint shows information about a video, including URLs to previews and the sizes that it is available in.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| id | path | required | string | Video ID |
| language | query | optional | Language for the keywords and categories in the response |
|
| view | query | optional | string | Amount of detail to render in the response |
| search_id | query | optional | string | The ID of the search that is related to this request |
OK
Bad Request
Unauthorized
Forbidden
Not found
GET /v2/videos/{id}
/v2/videos/{id}/similar
This endpoint searches for videos that are similar to a video that you specify.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| id | path | required | string | The ID of a video for which similar videos should be returned |
| language | query | optional | Language for the keywords and categories in the response |
|
| page | query | optional | integer | Page number |
| per_page | query | optional | integer | Number of results per page |
| view | query | optional | string | Amount of detail to render in the response |
OK
Bad Request
Unauthorized
Forbidden
GET /v2/videos/{id}/similar
AccessTokenDetails
{
"type": "object",
"example": {
"realm": "customer",
"scopes": [
"collections.edit",
"collections.view",
"licenses.create",
"licenses.view",
"purchases.view",
"user.view"
],
"user_id": "123456789",
"username": "jdoe",
"client_id": "c456b-26230-fa8ed-d19ab-05ce2-bf0aa",
"expires_in": 3600,
"customer_id": "123456789"
},
"properties": {
"realm": {
"enum": [
"customer",
"contributor"
],
"type": "string",
"description": "Type of access token"
},
"scopes": {
"type": "array",
"items": {
"type": "string"
},
"description": "Scopes that this access token provides when used as authentication"
},
"user_id": {
"type": "string",
"description": "User ID that is associated with the user"
},
"username": {
"type": "string",
"description": "User name that is associated with the user"
},
"client_id": {
"type": "string",
"description": "Client ID that is associated with the user"
},
"expires_in": {
"type": "integer",
"description": "Number of seconds until the access token expires; no expiration if this value is null"
},
"customer_id": {
"type": "string",
"description": "Customer ID that is associated with the user"
},
"contributor_id": {
"type": "string",
"description": "Contributor ID that is associated with the user"
},
"organization_id": {
"type": "string",
"description": "Organization ID that is associated with the user"
}
},
"description": "Access token details that are currently associated with this user"
}
Album
{
"type": "object",
"example": {
"id": "1234567",
"title": "Happy Music"
},
"required": [
"id",
"title"
],
"properties": {
"id": {
"type": "string",
"description": "The album ID"
},
"title": {
"type": "string",
"description": "The album title"
}
},
"description": "Album metadata"
}
Allotment
{
"type": "object",
"example": {
"end_time": "2020-05-29T17:10:22.000Z",
"start_time": "2020-05-29T17:10:22.000Z",
"downloads_left": 5,
"downloads_limit": 10
},
"properties": {
"end_time": {
"type": "string",
"format": "date-time",
"description": "Date the subscription ends"
},
"start_time": {
"type": "string",
"format": "date-time",
"description": "Date the subscription started"
},
"downloads_left": {
"type": "integer",
"description": "Number of credits remaining in the subscription"
},
"downloads_limit": {
"type": "integer",
"description": "Total number of credits available to this subscription"
}
},
"description": "An allotment of credits as part of a subscription"
}
Artist
{
"type": "object",
"example": {
"name": "The Happy Tunes Band"
},
"required": [
"name"
],
"properties": {
"name": {
"type": "string",
"description": "The artist's name"
}
},
"description": "Metadata about the artist that created the media"
}
Audio
{
"type": "object",
"example": {
"id": "442583X",
"bpm": 110,
"url": "",
"isrc": "",
"moods": [
"Bright",
"Confident",
"Fun",
"Happy",
"Inspiring",
"Optimistic",
"Playful",
"Sophisticated",
"Stylish",
"Uplifting"
],
"title": "Another Tomorrow",
"assets": {
"waveform": {
"url": "https://ak.picdn.net/shutterstock/audio/442583/waveform/waveform.png",
"file_size": 18778
},
"clean_audio": {
"file_size": 35188408
},
"preview_mp3": {
"url": "https://ak.picdn.net/shutterstock/audio/442583/preview/preview.mp3",
"file_size": 4400203
},
"preview_ogg": {
"url": "https://ak.picdn.net/shutterstock/audio/442583/preview/preview.ogg",
"file_size": 4453197
}
},
"genres": [
"Dance/Electronic",
"Electro Pop",
"Pop/Rock"
],
"lyrics": "",
"artists": [
{
"name": "Klimenko Music"
}
],
"duration": 183,
"is_adult": false,
"keywords": [
"celebratory",
"chic",
"euphoric",
"good times",
"hip",
"optimistic",
"party",
"soaring",
"upbeat"
],
"language": "en",
"releases": [],
"added_date": "2016-08-16T00:00:00.000Z",
"media_type": "audio",
"contributor": {
"id": "2847971"
},
"description": "Pulsing and feel-good, featuring soaring synthesizer, groovy synth bass drums and synth drums that create a euphoric, upbeat mood.",
"instruments": [
"Piano",
"Synth bass",
"Synth drums",
"Synthesizer"
],
"updated_time": "2016-08-18T21:59:33.000Z",
"published_time": "2016-08-16T18:30:03.000Z",
"is_instrumental": true,
"similar_artists": [],
"recording_version": "",
"vocal_description": ""
},
"required": [
"id",
"media_type",
"contributor"
],
"properties": {
"id": {
"type": "string",
"description": "Shutterstock ID of this track"
},
"bpm": {
"type": "integer",
"description": "BPM (beats per minute) of this track"
},
"url": {
"type": "string",
"description": ""
},
"isrc": {
"type": "string",
"description": ""
},
"album": {
"$ref": "#/components/schemas/Album"
},
"moods": {
"type": "array",
"items": {
"type": "string",
"description": "Mood of this track"
},
"description": "List of all moods of this track"
},
"title": {
"type": "string",
"description": "Title of this track"
},
"assets": {
"$ref": "#/components/schemas/AudioAssets"
},
"genres": {
"type": "array",
"items": {
"type": "string",
"description": "Genre that is associated with this track"
},
"description": "List of all genres for this track"
},
"lyrics": {
"type": "string",
"description": "Lyrics of this track"
},
"artists": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Artist"
},
"description": "List of artists"
},
"duration": {
"type": "number",
"description": "Duration of this track in seconds"
},
"is_adult": {
"type": "boolean",
"description": "Whether or not this track contains adult content"
},
"keywords": {
"type": "array",
"items": {
"type": "string",
"description": "Keyword for this track"
},
"description": "List of all keywords for this track"
},
"language": {
"type": "string",
"description": "Language of this track's lyrics"
},
"releases": {
"type": "array",
"items": {
"type": "string",
"description": "Release of this track"
},
"description": "List of all releases of this track"
},
"added_date": {
"type": "string",
"format": "date",
"description": "Date this track was added to the Shutterstock library"
},
"media_type": {
"type": "string",
"description": "Media type of this track; should always be \"audio\""
},
"contributor": {
"$ref": "#/components/schemas/Contributor"
},
"description": {
"type": "string",
"description": "Description of this track"
},
"instruments": {
"type": "array",
"items": {
"type": "string",
"description": "Instrument that appears in this track"
},
"description": "List of all instruments that appear in this track"
},
"deleted_time": {
"type": "string",
"format": "date-time"
},
"updated_time": {
"type": "string",
"format": "date-time",
"description": "Time this track was last updated"
},
"affiliate_url": {
"type": "string",
"description": "Affiliate referral link; appears only for registered affiliate partners"
},
"model_releases": {
"type": "array",
"items": {
"$ref": "#/components/schemas/ModelRelease"
},
"description": "List of all model releases for this track"
},
"published_time": {
"type": "string",
"format": "date-time",
"description": "Time this track was published"
},
"submitted_time": {
"type": "string",
"format": "date-time",
"description": "Time this track was submitted"
},
"is_instrumental": {
"type": "boolean",
"description": "Whether or not this track is purely instrumental (lacking lyrics)"
},
"similar_artists": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Artist"
},
"description": "List of all similar artists of this track"
},
"recording_version": {
"type": "string",
"description": "Recording version of this track"
},
"vocal_description": {
"type": "string",
"description": "Vocal description of this track"
}
},
"description": "Audio metadata"
}
AudioAssetDetails
{
"type": "object",
"example": {
"url": "https://ak.picdn.net/shutterstock/audio/442583/preview/preview.mp3",
"file_size": 4453197
},
"properties": {
"url": {
"type": "string",
"description": "URL the track is available at"
},
"file_size": {
"type": "integer",
"description": "File size of the track"
}
},
"description": "Information about a file that is part of an audio asset"
}
AudioAssets
{
"type": "object",
"example": {
"waveform": {
"url": "https://ak.picdn.net/shutterstock/audio/442583/waveform/waveform.png",
"file_size": 18778
},
"clean_audio": {
"file_size": 35188408
},
"preview_mp3": {
"url": "https://ak.picdn.net/shutterstock/audio/442583/preview/preview.mp3",
"file_size": 4400203
},
"preview_ogg": {
"url": "https://ak.picdn.net/shutterstock/audio/442583/preview/preview.ogg",
"file_size": 4453197
}
},
"properties": {
"waveform": {
"$ref": "#/components/schemas/AudioAssetDetails"
},
"album_art": {
"$ref": "#/components/schemas/AudioAssetDetails"
},
"clean_audio": {
"$ref": "#/components/schemas/AudioAssetDetails"
},
"preview_mp3": {
"$ref": "#/components/schemas/AudioAssetDetails"
},
"preview_ogg": {
"$ref": "#/components/schemas/AudioAssetDetails"
},
"original_audio": {
"$ref": "#/components/schemas/AudioAssetDetails"
},
"shorts_loops_stems": {
"$ref": "#/components/schemas/ShortsLoopsStems"
}
},
"description": "Files that are available as part of an audio asset"
}
AudioDataList
{
"example": {
"data": [
{
"id": "434750",
"bpm": 100,
"isrc": "",
"moods": [
"Bright",
"Confident",
"Fun",
"Happy",
"Inspiring",
"Optimistic",
"Playful",
"Sophisticated",
"Stylish",
"Uplifting"
],
"title": "Fresh Love",
"assets": {
"waveform": {
"url": "https://ak.picdn.net/shutterstock/audio/434750/waveform/waveform.png",
"file_size": 19822
},
"clean_audio": {
"file_size": 30760372
},
"preview_mp3": {
"url": "https://ak.picdn.net/shutterstock/audio/434750/preview/preview.mp3",
"file_size": 3846606
},
"preview_ogg": {
"url": "https://ak.picdn.net/shutterstock/audio/434750/preview/preview.ogg",
"file_size": 4402608
}
},
"genres": [
"Dance/Electronic",
"Electro Pop",
"Pop/Rock"
],
"lyrics": "",
"artists": [
{
"name": "Fin Productions"
}
],
"duration": 160,
"is_adult": false,
"keywords": [
"breezy",
"celebration",
"festive",
"good times",
"hopeful",
"optimistic",
"party",
"positive",
"reflective"
],
"language": "en",
"releases": [],
"added_date": "2016-04-12T00:00:00.000Z",
"media_type": "audio",
"contributor": {
"id": "2847971X"
},
"description": "Pulsing and feel-good, featuring slick electric guitar, synthesizer, bass, electronic drum pads and drums that create a positive, celebratory mood.",
"instruments": [
"Bass",
"Drums",
"Electric guitar",
"Pads",
"Percussion",
"Synthesizer"
],
"updated_time": "2016-08-18T22:03:11.000Z",
"published_time": "2016-04-12T21:45:29.000Z",
"is_instrumental": true,
"similar_artists": [],
"recording_version": "",
"vocal_description": ""
}
]
},
"properties": {
"data": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Audio"
},
"description": "Tracks"
},
"page": {
"type": "integer",
"description": "Current page that is returned"
},
"errors": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Error"
},
"description": "Error list; appears only if there was an error"
},
"message": {
"type": "string",
"description": "Server-generated message, if any"
},
"per_page": {
"type": "integer",
"description": "Number of results per page"
},
"total_count": {
"type": "integer",
"description": "Total count of all results across all pages"
}
},
"description": "List of tracks"
}
AudioRenderResult
{
"type": "object",
"example": {
"id": "2yZp13IhLqnjfh2KquDTOHUHzTiP",
"files": [],
"preset": "MASTER_MP3",
"status": "WAITING_COMPOSE",
"timeline": {},
"created_date": "2021-07-13T20:19:30.000Z",
"updated_date": "2021-07-13T20:19:30.000Z",
"progress_percent": 0
},
"required": [
"id",
"timeline",
"status"
],
"properties": {
"id": {
"type": "string",
"description": "The alphanumeric ID of the simple render"
},
"files": {
"type": "array",
"items": {
"$ref": "#/components/schemas/AudioRendersFilesList"
},
"description": "The files associated with the render"
},
"preset": {
"enum": [
"MASTER_MP3",
"MASTER_WAV",
"STEMS_WAV"
],
"type": "string",
"description": "The file format preset"
},
"status": {
"enum": [
"WAITING_COMPOSE",
"RUNNING_COMPOSE",
"WAITING_RENDER",
"RUNNING_RENDER",
"CREATED",
"FAILED_CREATE"
],
"type": "string",
"description": "A coarse progress indicator"
},
"timeline": {
"$ref": "#/components/schemas/AudioRenderTimeline"
},
"created_date": {
"type": "string",
"format": "date-time",
"description": "The time the render was submitted to the API"
},
"updated_date": {
"type": "string",
"format": "date-time",
"description": "The time that the audio output was uploaded"
},
"progress_percent": {
"type": "integer",
"description": "The current progress of the render as a percentage"
}
},
"description": "The output of an audio render in WAV or MP3 format"
}
AudioRenderTimeline
{
"type": "object",
"example": {
"spans": [
{
"id": 123456,
"time": 5,
"tempo": 12345,
"regions": [
{
"id": 123456,
"key": {
"tonic_note": "c",
"tonic_quality": "major",
"tonic_accidental": "double flat"
},
"beat": 12,
"region": "music",
"end_type": {
"beat": 12,
"type": "ringout",
"event": "ending"
},
"descriptor": "The descriptor ID needed to compose the music"
}
],
"span_type": "metered",
"tempo_changes": [
{
"time": 5,
"tempo": 12345
}
],
"instrument_groups": [
{
"statuses": [
{
"beat": 12,
"status": "active"
}
],
"instrument_group": "The instrument ID"
}
]
}
]
},
"properties": {
"spans": {
"type": "array",
"items": {
"$ref": "#/components/schemas/AudioRenderTimelineSpan"
},
"description": "A span object that represents the beginning of a period of absolute time"
}
},
"description": "A timeline object that represents either a request for music to be created or an entire music composition"
}
AudioRenderTimelineSpan
{
"type": "object",
"example": {
"id": 111,
"time": 0,
"tempo": 76,
"regions": [
{
"id": 222,
"key": {
"tonic_note": "c",
"tonic_quality": "major"
},
"beat": 12,
"region": "music",
"end_type": {
"beat": 24,
"type": "ringout",
"event": "ending"
},
"descriptor": "cinematic_minimal_tense"
}
],
"span_type": "metered"
},
"required": [
"span_type",
"time"
],
"properties": {
"id": {
"type": "number",
"description": "An identifier which must be unique within the parent span"
},
"time": {
"type": "integer",
"description": "The absolute time, in seconds, at which the span starts"
},
"tempo": {
"type": "integer",
"description": "The tempo, in beats per minute, at the start of the span; if not provided, the API selects a random tempo"
},
"regions": {
"type": "array",
"items": {
"$ref": "#/components/schemas/AudioRenderTimelineSpanRegion"
},
"description": "An array of region objects within the span"
},
"span_type": {
"enum": [
"metered",
"unmetered"
],
"type": "string",
"description": "Type of span; metered spans represent a pariod of time with music, and unmetered spans denote the end of the prior metered span"
},
"tempo_changes": {
"type": "array",
"items": {
"$ref": "#/components/schemas/AudioRenderTimelineSpanTempoChanges"
},
"description": "Two or more inflection points in a tempo curve; the API creates a smoothly changing tempo by using a linear interpolation of the time between each tempo change"
},
"instrument_groups": {
"type": "array",
"items": {
"$ref": "#/components/schemas/AudioRenderTimelineSpanInstrumentGroup"
},
"description": "An array of instrument_group objects that are used in this span"
}
},
"description": "The beginning of a non-overlapping period of absolute time"
}
AudioRenderTimelineSpanInstrumentGroup
{
"type": "object",
"example": {
"statuses": [
{
"beat": 12,
"status": "active"
}
],
"instrument_group": "bright_roomy_kit"
},
"required": [
"instrument_group"
],
"properties": {
"statuses": {
"type": "array",
"items": {
"$ref": "#/components/schemas/AudioRenderTimelineSpanInstrumentGroupStatus"
},
"description": "An array of status objects"
},
"instrument_group": {
"type": "string",
"description": "The instrument ID"
}
},
"description": "An instrument and the status objects that specify when that instrument plays"
}
AudioRenderTimelineSpanInstrumentGroupStatus
{
"type": "object",
"example": {
"beat": 12,
"status": "active"
},
"required": [
"beat",
"status"
],
"properties": {
"beat": {
"type": "number",
"description": "The beat, relative to the span, at which the status begins"
},
"status": {
"enum": [
"active",
"inactive"
],
"type": "string",
"description": "Whether the instrument is playing or not"
}
},
"description": "The status of an instrument at a specific beat"
}
AudioRenderTimelineSpanRegion
{
"type": "object",
"example": {
"id": 222,
"key": {
"tonic_note": "c",
"tonic_quality": "major"
},
"beat": 12,
"region": "music",
"end_type": {
"beat": 24,
"type": "ringout",
"event": "ending"
},
"descriptor": "cinematic_minimal_tense"
},
"required": [
"id",
"region",
"descriptor",
"beat"
],
"properties": {
"id": {
"type": "number",
"description": "An identifier which must be unique within the parent span"
},
"key": {
"type": "object",
"properties": {
"tonic_note": {
"enum": [
"c",
"d",
"e",
"f",
"g",
"a",
"b"
],
"type": "string",
"description": "A text representation of the musical note; if this field is specified, the tonic_accidental field should also be specified"
},
"tonic_quality": {
"enum": [
"major",
"natural_minor",
"harmonic_minor",
"melodic_minor",
"ionian",
"dorian",
"phrygian",
"lydian",
"mixolydian",
"aeolian",
"locrian"
],
"type": "string",
"example": "major",
"description": "The scale quality; if this field is not specified, the API selects the quality automatically"
},
"tonic_accidental": {
"enum": [
"double flat",
"flat",
"natural",
"sharp",
"double sharp"
],
"type": "string",
"description": "A text representation of the accidental; if this field is specified, the tonic_note field should also be specified"
}
},
"description": "The key signature active at the beginning of the region"
},
"beat": {
"type": "integer",
"description": "The beat, relative to the span, at which the region object's music begins"
},
"region": {
"enum": [
"music",
"silence"
],
"type": "string",
"description": "The type of region"
},
"end_type": {
"type": "object",
"required": [
"beat",
"event",
"type"
],
"properties": {
"beat": {
"type": "number",
"description": "The beat, relative to the start of the active region, at which the end_type begins; in other words, the ending starts on this beat of the region"
},
"type": {
"enum": [
"ringout",
"cut"
],
"type": "string",
"description": "The specific action to perform; if the event type is \"ending\" then this must be \"ringout\" and if event type is \"transition\" this must be \"cut\""
},
"event": {
"enum": [
"ending",
"transition"
],
"type": "string",
"description": "The type of event"
}
},
"description": "A high-level description of how a region ends"
},
"descriptor": {
"type": "string",
"description": "The descriptor ID needed to compose the music"
}
},
"description": "A period of music or silence, measured in beats"
}
AudioRenderTimelineSpanTempoChanges
{
"type": "object",
"example": {
"time": 5,
"tempo": 86
},
"required": [
"time",
"tempo"
],
"properties": {
"time": {
"type": "number",
"description": "The time, in seconds, at which the tempo exists"
},
"tempo": {
"type": "number",
"description": "The tempo, in beats per minute, active at this time"
}
},
"description": "An inflection point in a tempo curve; the API creates the overall tempo by using a linear interpolation of the time between each tempo change"
}
AudioRendersFilesList
{
"type": "object",
"example": {
"tracks": [
"master"
],
"filename": "My_audio_ai.mp3",
"size_bytes": 481556,
"bits_sample": 16,
"content_type": "audio/mp3",
"download_url": "https://s3.amazonaws.com/prod-amper-inferno-ephemeral/renders/2021/07/13/amper-api-QwAgKqXQAzr622KuXYZ25C9WRH3a/0.mp3",
"frequency_hz": 44100,
"kbits_second": 192
},
"required": [
"filename",
"bits_sample",
"content_type",
"download_url",
"frequency_hz",
"kbits_second",
"size_bytes",
"tracks"
],
"properties": {
"tracks": {
"type": "array",
"items": {
"type": "string"
},
"description": "An array of track names included in the file"
},
"filename": {
"type": "string",
"description": "The user-specified file name suggestion from the render request; this file name becomes the filename property of the Content-Disposition header when the user downloads the rendered audio file"
},
"size_bytes": {
"type": "number",
"description": "Size of the file in bytes"
},
"bits_sample": {
"type": "number",
"description": "The bit depth of the audio files in bits/sample"
},
"content_type": {
"type": "string",
"description": "The content-type of the file"
},
"download_url": {
"type": "string",
"description": "The internet-accessible URL from which the file can be downloaded. Any redirects encountered when using this URL must be followed"
},
"frequency_hz": {
"type": "number",
"description": "The Sample rate of the audio files in Hertz (Hz)"
},
"kbits_second": {
"type": "number",
"description": "The data rate of the audio files in kilobits/second"
}
},
"description": "Files associated with the render"
}
AudioRendersListResults
{
"example": {
"audio_renders": [
{
"id": "2yZp13IhLqnjfh2KquDTOHUHzTiPX",
"files": [],
"preset": "MASTER_MP3",
"status": "WAITING_COMPOSE",
"timeline": {},
"created_date": "2021-07-13T20:19:30.000Z",
"updated_date": "2021-07-13T20:19:30.000Z",
"progress_percent": 20
},
{
"id": "QwAgKqXQAzr622KuXYZ25C9WRH3a",
"files": [
{
"tracks": [
"master"
],
"filename": "My_audio_ai.mp3",
"size_bytes": 481556,
"bits_sample": 16,
"content_type": "audio/mp3",
"download_url": "https://s3.amazonaws.com/prod-amper-inferno-ephemeral/renders/2021/07/13/amper-api-QwAgKqXQAzr622KuXYZ25C9WRH3a/0.mp3",
"frequency_hz": 44100,
"kbits_second": 192
},
{
"tracks": [
"master"
],
"filename": "render.json",
"size_bytes": 4420,
"bits_sample": 0,
"content_type": "application/vnd.amper.waveform+json",
"download_url": "https://s3.amazonaws.com/prod-amper-inferno-ephemeral/renders/2021/07/13/amper-api-QwAgKqXQAzr622KuXYZ25C9WRH3a/1.json",
"frequency_hz": 42,
"kbits_second": 0
}
],
"preset": "MASTER_MP3",
"status": "CREATED",
"timeline": {},
"created_date": "2021-07-12T20:39:59.000Z",
"updated_date": "2021-07-12T20:46:26.000Z",
"progress_percent": 100
}
]
},
"required": [
"audio_renders"
],
"properties": {
"audio_renders": {
"type": "array",
"items": {
"$ref": "#/components/schemas/AudioRenderResult"
},
"description": "Audio render results"
}
},
"description": "Audio render data"
}
AudioSearchResults
{
"type": "object",
"example": {
"data": [
{
"id": "442583X",
"bpm": 110,
"url": "",
"isrc": "",
"moods": [
"Bright",
"Confident",
"Fun",
"Happy",
"Inspiring",
"Optimistic",
"Playful",
"Sophisticated",
"Stylish",
"Uplifting"
],
"title": "Another Tomorrow",
"assets": {
"waveform": {
"url": "https://ak.picdn.net/shutterstock/audio/442583/waveform/waveform.png",
"file_size": 18778
},
"clean_audio": {
"file_size": 35188408
},
"preview_mp3": {
"url": "https://ak.picdn.net/shutterstock/audio/442583/preview/preview.mp3",
"file_size": 4400203
},
"preview_ogg": {
"url": "https://ak.picdn.net/shutterstock/audio/442583/preview/preview.ogg",
"file_size": 4453197
}
},
"genres": [
"Dance/Electronic",
"Electro Pop",
"Pop/Rock"
],
"lyrics": "",
"artists": [
{
"name": "Klimenko Music"
}
],
"duration": 183,
"is_adult": false,
"keywords": [
"celebratory",
"chic",
"euphoric",
"good times",
"hip",
"optimistic",
"party",
"soaring",
"upbeat"
],
"language": "en",
"releases": [],
"added_date": "2016-08-16T00:00:00.000Z",
"media_type": "audio",
"contributor": {
"id": "2847971X"
},
"description": "Pulsing and feel-good, featuring soaring synthesizer, groovy synth bass drums and synth drums that create a euphoric, upbeat mood.",
"instruments": [
"Piano",
"Synth bass",
"Synth drums",
"Synthesizer"
],
"updated_time": "2016-08-18T21:59:33.000Z",
"published_time": "2016-08-16T18:30:03.000Z",
"is_instrumental": true,
"similar_artists": [],
"recording_version": "",
"vocal_description": ""
}
],
"page": 1,
"per_page": 5,
"search_id": "749090bb-2967-4a20-b22e-c800dc845e10",
"total_count": 123455
},
"required": [
"data",
"total_count",
"search_id"
],
"properties": {
"data": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Audio"
},
"description": "List of tracks"
},
"page": {
"type": "integer",
"description": "Current page that is returned"
},
"message": {
"type": "string",
"description": "Server-generated message, if any"
},
"per_page": {
"type": "integer",
"description": "Number of results per page"
},
"search_id": {
"type": "string",
"description": "ID of the search"
},
"total_count": {
"type": "integer",
"description": "Total count of all results across all pages"
}
},
"description": "Audio search results"
}
AudioUrl
{
"type": "object",
"example": {
"$ref": "#/components/schemas/Url/example"
},
"required": [
"url"
],
"properties": {
"url": {
"type": "string",
"description": "URL that can be used to download the unwatermarked, licensed asset"
},
"shorts_loops_stems": {
"type": "string",
"description": "URL that can be used to download the .zip file containing shorts, loops, and stems"
}
},
"description": "Audio License URL object"
}
AuthorizeResponse
{
"type": "string",
"example": "Moved temporarily. Redirecting to https://accounts.shutterstock.com/login?next=%2Foauth%2Fauthorize%3Fresponse_type%3Dcode%26state%3D1539619928633%26scope%3Dlicenses.create%20licenses.view%20purchases.view%26client_id%3D6d097450b209c6dcd859%26redirect_uri%3Dhttp%3A%2F%2Flocalhost%3A3000%2Fmyapp%2Fauth%2Fcallback%26realm%3Dcustomer",
"description": "HTML redirect URL that contains the application authorization 'code'"
}
Bands
{
"type": "object",
"example": {
"id": "1234567X",
"name": "The Happy Tunes Band"
},
"properties": {
"id": {
"type": "string",
"description": "The ID of the band"
},
"name": {
"type": "string",
"description": "The name of the band"
}
},
"description": "A band that can be used to generate music"
}
BulkImageSearchRequest
{
"type": "array",
"items": {
"$ref": "#/components/schemas/SearchImage"
},
"example": [
{
"sort": "popular",
"query": "cat",
"license": [
"editorial"
]
},
{
"query": "dog",
"orientation": "horizontal"
}
],
"maxItems": 5,
"description": "List of searches"
}
BulkImageSearchResults
{
"type": "object",
"example": {
"results": [
{
"data": [
{
"id": "1572478477",
"aspect": 1.5,
"assets": {
"preview": {
"url": "https://image.shutterstock.com/display_pic_with_logo/250738318/1572478477/stock-photo-cropped-image-of-woman-gardening-1572478477.jpg",
"width": 450,
"height": 300
},
"huge_thumb": {
"url": "https://image.shutterstock.com/image-photo/cropped-image-woman-gardening-260nw-1572478477.jpg",
"width": 390,
"height": 260
},
"large_thumb": {
"url": "https://thumb7.shutterstock.com/thumb_large/250738318/1572478477/stock-photo-cropped-image-of-woman-gardening-1572478477.jpg",
"width": 150,
"height": 100
},
"small_thumb": {
"url": "https://thumb7.shutterstock.com/thumb_small/250738318/1572478477/stock-photo-cropped-image-of-woman-gardening-1572478477.jpg",
"width": 100,
"height": 67
},
"preview_1000": {
"url": "https://ak.picdn.net/shutterstock/photos/1572478477/watermark_1000/1706028c641ea2f443057287c67d9b91/preview_1000-1572478477.jpg",
"width": 1000,
"height": 667
},
"preview_1500": {
"url": "https://image.shutterstock.com/z/stock-photo-cropped-image-of-woman-gardening-1572478477.jpg",
"width": 1500,
"height": 1000
}
},
"image_type": "photo",
"media_type": "image",
"contributor": {
"id": "250738318"
},
"description": "cropped image of woman gardening",
"has_model_release": true
}
],
"page": 1,
"per_page": 5,
"search_id": "749090bb-2967-4a20-b22e-c800dc845e10",
"total_count": 45,
"spellcheck_info": {}
},
{
"data": [],
"page": 1,
"per_page": 5,
"search_id": "749090bb-2967-4a20-b22e-c800dc845e11",
"total_count": 0,
"spellcheck_info": {}
}
]
},
"properties": {
"results": {
"type": "array",
"items": {
"$ref": "#/components/schemas/ImageSearchResults"
},
"description": "List of image search results"
},
"bulk_search_id": {
"type": "string",
"description": "Unique identifier for the search request"
}
},
"description": "List of search results for each given query"
}
CatalogCollection
{
"type": "object",
"example": {
"id": "126351028",
"name": "My collection",
"visibility": "public",
"cover_asset": {
"id": "123",
"asset": {
"id": "1690105108",
"name": "Young couple playing tennis at the court",
"type": "image"
},
"created_time": "2021-06-10T17:26:09.000Z"
},
"created_time": "2021-05-20T20:15:22.000Z",
"updated_time": "2021-06-10T17:26:09.000Z",
"role_assignments": {
"roles": {
"owners": [
{
"id": "321",
"type": "USER",
"email": "userOne@org.com"
}
],
"editors": [
{
"id": "987",
"type": "USER",
"email": "userTwo@org.com"
}
],
"viewers": []
},
"collection_id": "126351028"
},
"total_item_count": 2
},
"required": [
"id",
"name",
"total_item_count",
"created_time",
"updated_time",
"visibility",
"role_assignments"
],
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"visibility": {
"enum": [
"private",
"public"
],
"type": "string"
},
"cover_asset": {
"$ref": "#/components/schemas/CatalogCollectionItem"
},
"created_time": {
"type": "string",
"format": "date-time"
},
"updated_time": {
"type": "string",
"format": "date-time"
},
"role_assignments": {
"$ref": "#/components/schemas/CatalogCollectionRoleAssignments"
},
"total_item_count": {
"type": "number"
}
},
"description": "Catalog collection"
}
CatalogCollectionDataList
{
"type": "object",
"example": {
"data": [
{
"id": "126351028X",
"name": "My collection",
"visibility": "public",
"cover_asset": {
"id": "123X",
"asset": {
"id": "1690105108X",
"name": "Young couple playing tennis at the court",
"type": "image"
},
"created_time": "2021-06-10T17:26:09.000Z"
},
"created_time": "2021-05-20T20:15:22.000Z",
"updated_time": "2021-06-10T17:26:09.000Z",
"role_assignments": {
"roles": {
"owners": [
{
"id": "321X",
"type": "USER",
"email": "userOne@org.com"
}
],
"editors": [
{
"id": "987X",
"type": "USER",
"email": "userTwo@org.com"
}
],
"viewers": []
},
"collection_id": "126351028"
},
"total_item_count": 2
}
],
"page": 1,
"per_page": 20,
"total_count": 1
},
"required": [
"page",
"per_page",
"total_count",
"data"
],
"properties": {
"data": {
"type": "array",
"items": {
"$ref": "#/components/schemas/CatalogCollection"
},
"description": "List of catalog collections"
},
"page": {
"type": "number"
},
"per_page": {
"type": "number"
},
"total_count": {
"type": "number"
}
},
"description": "List of catalog collections"
}
CatalogCollectionItem
{
"type": "object",
"example": {
"id": "123X",
"asset": {
"id": "1690105108X",
"name": "Young couple playing tennis at the court",
"type": "image"
},
"created_time": "2021-06-10T17:26:09.000Z",
"collection_ids": [
"126351028"
]
},
"required": [
"id",
"asset",
"created_time"
],
"properties": {
"id": {
"type": "string"
},
"asset": {
"type": "object",
"required": [
"type"
],
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"type": {
"enum": [
"image",
"video",
"audio",
"editorial-image",
"editorial-video"
],
"type": "string"
}
}
},
"created_time": {
"type": "string",
"format": "date-time"
},
"collection_ids": {
"type": "array",
"items": {
"type": "string"
},
"description": "The collection IDs that this asset belongs to"
}
},
"description": "Metadata about an item that is part of a collection"
}
CatalogCollectionItemDataList
{
"type": "object",
"example": {
"data": [
{
"id": "123X",
"asset": {
"id": "1690105108X",
"name": "Young couple playing tennis at the court",
"type": "image"
},
"created_time": "2021-06-10T17:26:09.000Z",
"collection_ids": [
"126351028"
]
}
],
"page": 1,
"per_page": 1,
"total_count": 82
},
"required": [
"page",
"per_page",
"total_count",
"data"
],
"properties": {
"data": {
"type": "array",
"items": {
"$ref": "#/components/schemas/CatalogCollectionItem"
},
"description": "List of catalog collection items"
},
"page": {
"type": "number"
},
"per_page": {
"type": "number"
},
"total_count": {
"type": "number"
}
},
"description": "List of catalog collection items"
}
CatalogCollectionRole
{
"type": "object",
"example": {
"id": "123X",
"type": "USER",
"email": "user123@org.com"
},
"required": [
"id",
"type",
"email"
],
"properties": {
"id": {
"type": "string"
},
"type": {
"enum": [
"USER"
],
"type": "string"
},
"email": {
"type": "string"
}
},
"description": "A user that has access to a catalog collection"
}
CatalogCollectionRoleAssignments
{
"type": "object",
"example": {
"roles": {
"owners": [
{
"id": "321X",
"type": "USER",
"email": "userOne@org.com"
}
],
"editors": [
{
"id": "987X",
"type": "USER",
"email": "userTwo@org.com"
}
],
"viewers": []
},
"collection_id": "126351028"
},
"required": [
"collection_id",
"roles"
],
"properties": {
"roles": {
"type": "object",
"properties": {
"owners": {
"type": "array",
"items": {
"$ref": "#/components/schemas/CatalogCollectionRole"
}
},
"editors": {
"type": "array",
"items": {
"$ref": "#/components/schemas/CatalogCollectionRole"
}
},
"viewers": {
"type": "array",
"items": {
"$ref": "#/components/schemas/CatalogCollectionRole"
}
}
}
},
"collection_id": {
"type": "string"
}
},
"description": "List of role assignments for a catalog collection"
}
Category
{
"type": "object",
"example": {
"id": "1",
"name": "Animals/Wildlife"
},
"properties": {
"id": {
"type": "string",
"description": "Category ID"
},
"name": {
"type": "string",
"description": "Category name"
}
},
"description": "Category information"
}
CategoryDataList
{
"example": {
"data": [
{
"id": "1X",
"name": "Animals/Wildlife"
},
{
"id": "11",
"name": "The Arts"
}
],
"page": 1,
"per_page": 2,
"total_count": 13
},
"properties": {
"data": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Category"
},
"description": "Categories"
},
"page": {
"type": "integer",
"description": "The current page of results"
},
"errors": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Error"
},
"description": "Error list; appears only if there was an error"
},
"message": {
"type": "string",
"description": "Server-generated message, if any"
},
"per_page": {
"type": "integer",
"description": "The number of results per page"
},
"total_count": {
"type": "integer",
"description": "The total number of results across all pages"
}
},
"description": "List of categories that images can belong to"
}
Collection
{
"type": "object",
"example": {
"id": "293542904",
"name": "My collection",
"cover_item": {
"id": "297886754"
},
"total_item_count": 85,
"items_updated_time": "2021-05-20T20:15:22.000Z"
},
"required": [
"id",
"name",
"total_item_count"
],
"properties": {
"id": {
"type": "string",
"description": "The collection ID"
},
"name": {
"type": "string",
"description": "The name of the collection"
},
"share_url": {
"type": "string",
"description": "The browser URL that can be used to share the collection (optional)"
},
"cover_item": {
"$ref": "#/components/schemas/CollectionItem"
},
"share_code": {
"type": "string",
"description": "A code that can be used to share the collection (optional)"
},
"created_time": {
"type": "string",
"format": "date-time",
"description": "When the collection was created"
},
"updated_time": {
"type": "string",
"format": "date-time",
"description": "The last time the collection was update (other than changes to the items in it)"
},
"total_item_count": {
"type": "integer",
"description": "The number of items in the collection"
},
"items_updated_time": {
"type": "string",
"format": "date-time",
"description": "The last time this collection's items were updated"
}
},
"description": "Metadata about a collection of assets"
}
CollectionCreateRequest
{
"type": "object",
"example": {
"name": "Test Collection 19cf"
},
"required": [
"name"
],
"properties": {
"name": {
"type": "string",
"description": "The name of the collection"
}
},
"description": "Collection creation request"
}
CollectionCreateResponse
{
"type": "object",
"example": {
"id": "48433105"
},
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"description": "ID of the new collection"
}
},
"description": "Collection creation response"
}
CollectionDataList
{
"example": {
"data": [
{
"id": "293542904X",
"name": "My collection",
"cover_item": {
"id": "297886754X"
},
"total_item_count": 85,
"items_updated_time": "2021-05-20T20:15:22.000Z"
}
],
"page": 1,
"per_page": 100,
"total_count": 1
},
"properties": {
"data": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Collection"
},
"description": "Collections"
},
"page": {
"type": "integer",
"description": "The current page of results"
},
"errors": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Error"
},
"description": "Error list; appears only if there was an error"
},
"message": {
"type": "string",
"description": "Server-generated message, if any"
},
"per_page": {
"type": "integer",
"description": "The number of results per page"
},
"total_count": {
"type": "integer",
"description": "The total number of results across all pages"
}
},
"description": "List of collections"
}
CollectionItem
{
"type": "object",
"example": {
"id": "1690105108X",
"added_time": "2020-05-29T17:10:22.000Z",
"media_type": "image"
},
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"description": "ID of the item"
},
"added_time": {
"type": "string",
"format": "date-time",
"description": "The date the item was added to the collection"
},
"media_type": {
"type": "string",
"description": "The media type of the item, such as image, video, or audio"
}
},
"description": "Metadata about an item that is part of a collection"
}
CollectionItemDataList
{
"example": {
"data": [
{
"id": "1690105108X",
"added_time": "2021-07-08T12:33:37.000Z",
"media_type": "image"
},
{
"id": "1468703072",
"added_time": "2021-07-08T12:31:43.000Z",
"media_type": "image"
}
],
"page": 1,
"per_page": 2,
"total_count": 82
},
"properties": {
"data": {
"type": "array",
"items": {
"$ref": "#/components/schemas/CollectionItem"
},
"description": "Assets in the collection"
},
"page": {
"type": "integer",
"description": "The current page of results"
},
"errors": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Error"
},
"description": "Error list; appears only if there was an error"
},
"message": {
"type": "string",
"description": "Server-generated message, if any"
},
"per_page": {
"type": "integer",
"description": "The number of results per page"
},
"total_count": {
"type": "integer",
"description": "The total number of results across all pages"
}
},
"description": "List of items in a collection"
}
CollectionItemRequest
{
"type": "object",
"example": {
"items": [
{
"id": "1690105108X",
"added_time": "2020-05-29T17:10:22.000Z",
"media_type": "image"
}
]
},
"required": [
"items"
],
"properties": {
"items": {
"type": "array",
"items": {
"$ref": "#/components/schemas/CollectionItem"
},
"description": "List of items"
}
},
"description": "Request to get a list of items in a collection"
}
CollectionUpdateRequest
{
"type": "object",
"example": {
"name": "My collection with a new name"
},
"required": [
"name"
],
"properties": {
"name": {
"type": "string",
"description": "The new name of the collection"
}
},
"description": "Collection update request"
}
ComputerVisionImageCreateResponse
{
"type": "object",
"example": {
"upload_id": "Udb14e1c3540bdbf82b4b3fe12d3a44f2"
},
"required": [
"upload_id"
],
"properties": {
"upload_id": {
"type": "string"
}
},
"description": "Asset upload information"
}
Contributor
{
"type": "object",
"example": {
"id": "12345678"
},
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"description": "ID of the contributor"
}
},
"description": "Information about a contributor"
}
ContributorProfile
{
"type": "object",
"example": {
"id": "12345678X",
"about": "John Doe's photographs",
"styles": [
"landscape",
"nature",
"footage_travel"
],
"website": "http://example.com/profiles/jdoe",
"location": "US",
"subjects": [
"animals",
"landmarks",
"nature",
"objects",
"recreation"
],
"equipment": [
"Nikon",
"Fuji"
],
"display_name": "John Doe",
"social_media": {
"tumblr": "http://example.com/jdoe",
"twitter": "http://example.com/jdoe",
"facebook": "http://example.com/jdoe",
"linkedin": "http://example.com/jdoe",
"pinterest": "http://example.com/jdoe",
"google_plus": "http://example.com/jdoe"
},
"portfolio_url": "https://www.shutterstock.com/g/jdoe",
"contributor_type": [
"photographer"
]
},
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"description": "Contributor ID"
},
"about": {
"type": "string",
"description": "Short description of the contributors' library"
},
"styles": {
"type": "array",
"items": {
"type": "string"
},
"description": "List of styles that the contributor specializes in (lifestyle, mixed media, etc)"
},
"website": {
"type": "string",
"description": "Personal website for the contributor"
},
"location": {
"type": "string",
"description": "Country code representing the contributor's locale"
},
"subjects": {
"type": "array",
"items": {
"type": "string"
},
"description": "Generic list of subjects for contributors' work (food_and_drink, holiday, people, etc)"
},
"equipment": {
"type": "array",
"items": {
"type": "string"
},
"description": "List of equipment used by the contributor (Canon EOS 5D Mark II, etc)"
},
"display_name": {
"type": "string",
"description": "Preferred name to be displayed for the contributor"
},
"social_media": {
"$ref": "#/components/schemas/ContributorProfileSocialMedia"
},
"portfolio_url": {
"type": "string",
"description": "Web URL for the contributors' profile"
},
"contributor_type": {
"type": "array",
"items": {
"type": "string"
},
"description": "Type of content that the contributor specializes in (photographer, illustrator, etc)"
}
},
"description": "Contributor profile data"
}
ContributorProfileDataList
{
"example": {
"data": [
{
"id": "12345678X",
"about": "John Doe's photographs",
"styles": [
"landscape",
"nature",
"footage_travel"
],
"website": "http://example.com/profiles/jdoe",
"location": "US",
"subjects": [
"animals",
"landmarks",
"nature",
"objects",
"recreation"
],
"equipment": [
"Nikon",
"Fuji"
],
"display_name": "John Doe",
"social_media": {
"tumblr": "http://example.com/jdoe",
"twitter": "http://example.com/jdoe",
"facebook": "http://example.com/jdoe",
"linkedin": "http://example.com/jdoe",
"pinterest": "http://example.com/jdoe",
"google_plus": "http://example.com/jdoe"
},
"portfolio_url": "https://www.shutterstock.com/g/jdoe",
"contributor_type": [
"photographer"
]
}
],
"page": 1,
"per_page": 5,
"total_count": 15
},
"properties": {
"data": {
"type": "array",
"items": {
"$ref": "#/components/schemas/ContributorProfile"
},
"description": "Conributor profiles"
},
"page": {
"type": "integer",
"description": "Page of response"
},
"errors": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Error"
},
"description": "Error list; appears only if there was an error"
},
"message": {
"type": "string",
"description": "Error message"
},
"per_page": {
"type": "integer",
"description": "Number of contributors per page"
},
"total_count": {
"type": "integer",
"description": "Total count of contributors for this request"
}
},
"description": "List of contributor profiles"
}
ContributorProfileSocialMedia
{
"type": "object",
"example": {
"tumblr": "http://example.com/jdoe",
"twitter": "http://example.com/jdoe",
"facebook": "http://example.com/jdoe",
"linkedin": "http://example.com/jdoe",
"pinterest": "http://example.com/jdoe",
"google_plus": "http://example.com/jdoe"
},
"properties": {
"tumblr": {
"type": "string",
"description": "Tumblr link for contributor"
},
"twitter": {
"type": "string",
"description": "Twitter link for contributor"
},
"facebook": {
"type": "string",
"description": "Facebook link for contributor"
},
"linkedin": {
"type": "string",
"description": "LinkedIn link for contributor"
},
"pinterest": {
"type": "string",
"description": "Pinterest page for contributor"
},
"google_plus": {
"type": "string",
"description": "Google+ link for contributor"
}
},
"description": "Contributor profile social media links"
}
Cookie
{
"type": "object",
"example": {
"name": "The name of the cookie",
"value": "The value of the cookie"
},
"required": [
"name",
"value"
],
"properties": {
"name": {
"type": "string",
"description": "The name of the cookie"
},
"value": {
"type": "string",
"description": "The value of the cookie"
}
},
"description": "Cookie object"
}
CreateAudioRender
{
"type": "object",
"example": {
"preset": "MASTER_MP3",
"filename": "My Project.mp3",
"timeline": {
"spans": [
{
"id": 111,
"time": 5,
"tempo": 76,
"regions": [
{
"id": 222,
"key": {
"tonic_note": "c",
"tonic_quality": "major"
},
"beat": 12,
"region": "music",
"end_type": {
"beat": 24,
"type": "ringout",
"event": "ending"
},
"descriptor": "cinematic_minimal_tense"
}
],
"span_type": "metered",
"tempo_changes": [
{
"time": 5,
"tempo": 86
}
],
"instrument_groups": [
{
"statuses": [
{
"beat": 12,
"status": "active"
}
],
"instrument_group": "roomy_kit"
}
]
},
{
"time": 20,
"span_type": "unmetered"
}
]
}
},
"required": [
"preset",
"timeline",
"filename"
],
"properties": {
"preset": {
"enum": [
"MASTER_MP3",
"MASTER_WAV",
"STEMS_WAV"
],
"type": "string",
"example": "MASTER_MP3",
"description": "File format, such as MP3 file, combined WAV file, or individual track WAV files"
},
"filename": {
"type": "string",
"example": "My Project.mp3",
"description": "A user-specified file name suggestion; this file name becomes the filename property of the Content-Disposition header when the user downloads the rendered audio file"
},
"timeline": {
"$ref": "#/components/schemas/AudioRenderTimeline",
"description": "The timeline data with which to generate the render"
}
},
"description": "Data required to create an audio render"
}
CreateAudioRendersRequest
{
"type": "object",
"example": {
"audio_renders": [
{
"preset": "MASTER_MP3",
"filename": "My Project.mp3",
"timeline": {
"spans": [
{
"id": 111,
"time": 5,
"tempo": 76,
"regions": [
{
"id": 222,
"key": {
"tonic_note": "c",
"tonic_quality": "major"
},
"beat": 12,
"region": "music",
"end_type": {
"beat": 24,
"type": "ringout",
"event": "ending"
},
"descriptor": "cinematic_minimal_tense"
}
],
"span_type": "metered",
"tempo_changes": [
{
"time": 5,
"tempo": 86
}
],
"instrument_groups": [
{
"statuses": [
{
"beat": 12,
"status": "active"
}
],
"instrument_group": "roomy_kit"
}
]
},
{
"time": 20,
"span_type": "unmetered"
}
]
}
}
]
},
"required": [
"audio_renders"
],
"properties": {
"audio_renders": {
"type": "array",
"items": {
"$ref": "#/components/schemas/CreateAudioRender"
},
"description": "Parameters to create computer audio renders"
}
},
"description": "Render request data"
}
CreateCatalogCollection
{
"type": "object",
"example": {
"name": "New Collection",
"items": [
{
"asset": {
"id": "1690105108X",
"type": "image"
}
}
],
"visibility": "public"
},
"required": [
"name"
],
"properties": {
"name": {
"type": "string",
"maxLength": 100000,
"minLength": 1
},
"items": {
"type": "array",
"items": {
"$ref": "#/components/schemas/CreateCatalogCollectionItem"
},
"maxItems": 50
},
"visibility": {
"enum": [
"private",
"public"
],
"type": "string",
"default": "private"
}
}
}
CreateCatalogCollectionItem
{
"type": "object",
"example": {
"asset": {
"id": "1690105108X",
"type": "image"
}
},
"required": [
"asset"
],
"properties": {
"asset": {
"type": "object",
"required": [
"type"
],
"properties": {
"id": {
"type": "string"
},
"type": {
"type": "string"
}
}
}
}
}
CreateCatalogCollectionItems
{
"type": "object",
"example": {
"items": [
{
"asset": {
"id": "1690105108X",
"type": "image"
}
}
]
},
"required": [
"items"
],
"properties": {
"items": {
"type": "array",
"items": {
"$ref": "#/components/schemas/CreateCatalogCollectionItem"
},
"maxItems": 50,
"minItems": 1
}
}
}