openapi: 3.0.0
info:
title: Shutterstock API Reference audio computer_vision API
description: The Shutterstock API provides access to Shutterstock's library of media, as well as information about customers' accounts and the contributors that provide the media. The API enables searching, browsing, licensing, and downloading images, videos, audio tracks, and sound effects. It also supports editorial content, computer vision features, collection management, and OAuth 2.0 authentication.
version: 1.0.30
contact:
name: Shutterstock Developer Support
url: https://www.shutterstock.com/developers/contact-us
license:
name: Shutterstock API Terms
url: https://www.shutterstock.com/api/terms
servers:
- url: https://api.shutterstock.com
description: Shutterstock API
tags:
- name: computer_vision
paths:
/v2/cv/images:
post:
responses:
'201':
description: Created
content:
application/json:
schema:
$ref: '#/components/schemas/ComputerVisionImageCreateResponse'
examples:
response:
value:
upload_id: Udb14e1c3540bdbf82b4b3fe12d3a44f2
'400':
description: Bad Request
'401':
description: Unauthorized
'403':
description: Forbidden
'413':
description: Payload Too Large
'415':
description: Unsupported Media Type
security:
- basic: []
- customer_accessCode: []
tags:
- computer_vision
x-code-samples:
- lang: shell
source: 'curl -X POST ''https://api.shutterstock.com/v2/cv/images'' \
-H "Authorization: Bearer $SHUTTERSTOCK_API_TOKEN" \
-H ''Content-Type: application/json'' \
-d "{\"base64_image\":\"`base64 myImage.jpg`\"}"
'
- lang: javascript--nodejs
source: "const sstk = require(\"shutterstock-api\");\n\nsstk.setAccessToken(process.env.SHUTTERSTOCK_API_TOKEN);\n\nconst computerVisionApi = new sstk.ComputerVisionApi();\n\nconst imageFile = fs.readFileSync(\"./myImage.jpg\");\nconst base64File = Buffer.from(imageFile).toString(\"base64\");\n\nconst body = new sstk.ImageCreateRequest(base64File);\n\ncomputerVisionApi.uploadImage(body)\n .then((data) => {\n console.log(data.upload_id);\n });\n"
- lang: php
source: "$imageData = file_get_contents(\"myImage.jpg\");\n$encodedImageData = base64_encode($imageData);\n\n$uploadBody = [\n \"base64_image\" => $encodedImageData\n];\n$uploadEncodedBody = json_encode($uploadBody);\n\n$uploadOptions = [\n CURLOPT_URL => \"https://api.shutterstock.com/v2/cv/images\",\n CURLOPT_CUSTOMREQUEST => \"POST\",\n CURLOPT_POSTFIELDS => $uploadEncodedBody,\n CURLOPT_USERAGENT => \"php/curl\",\n CURLOPT_HTTPHEADER => [\n \"Authorization: Bearer $SHUTTERSTOCK_API_TOKEN\",\n \"Content-Type: application/json\"\n ],\n CURLOPT_RETURNTRANSFER => 1\n];\n\n$handle = curl_init();\ncurl_setopt_array($handle, $uploadOptions);\n$uploadResponse = curl_exec($handle);\ncurl_close($handle);\n\n$uploadDecodedResponse = json_decode($uploadResponse);\nprint_r($uploadDecodedResponse->upload_id);\n"
operationId: uploadImage
summary: Upload images
description: This endpoint uploads an image for reverse image or video search. Images must be in JPEG or PNG format. To get the search results, pass the upload ID that this endpoint returns to the GET /v2/cv/similar/images or GET /v2/cv/similar/videos endpoints. Contact us for access to this endpoint.
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/ImageCreateRequest'
examples:
default:
value:
base64_image: R0lGODlhgACAAPcAAEwiBLyaLOzNUNmWFNjOrNSuN7x6PPzqeOTMgfKSDMyuTPzwsdi2dHwuBPzbVu
description: A Base 64 encoded jpeg or png; images can be no larger than 10mb and can be no larger than 10,000 pixels in width or height
required: true
/v2/cv/similar/images:
get:
parameters:
- description: The asset ID or upload ID to find similar images for
in: query
name: asset_id
required: true
example: U6ba16262e3bc2db470b8e3cfa8aaab25
schema:
type: string
- description: Show only images with the specified license
in: query
name: license
schema:
type: array
items:
enum:
- commercial
- editorial
type: string
default: commercial
- description: Enable or disable safe search
in: query
name: safe
schema:
type: boolean
default: true
- description: Language for the keywords and categories in the response
in: query
name: language
example: es
schema:
$ref: '#/components/schemas/Language'
- description: Page number
in: query
name: page
schema:
type: integer
minimum: 1
default: 1
- description: Number of results per page
in: query
name: per_page
schema:
type: integer
minimum: 1
maximum: 500
default: 20
- description: Amount of detail to render in the response
in: query
name: view
schema:
type: string
enum:
- minimal
- full
default: minimal
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/ImageSearchResults'
examples:
response:
value:
page: 1
per_page: 1
total_count: 200
search_id: ''
data:
- id: '224429596'
aspect: 1
assets:
preview:
height: 450
url: https://image.shutterstock.com/display_pic_with_logo/302287/224429596/stock-vector-happy-halloween-vector-224429596.jpg
width: 450
small_thumb:
height: 100
url: https://thumb1.shutterstock.com/thumb_small/302287/224429596/stock-vector-happy-halloween-vector-224429596.jpg
width: 100
large_thumb:
height: 150
url: https://thumb1.shutterstock.com/thumb_large/302287/224429596/stock-vector-happy-halloween-vector-224429596.jpg
width: 150
huge_thumb:
height: 260
url: https://image.shutterstock.com/image-vector/happy-halloween-vector-260nw-224429596.jpg
width: 260
preview_1000:
url: https://ak.picdn.net/shutterstock/photos/224429596/watermark_1000/9b5c88b67f10298f7b5340f21dffc953/preview_1000-224429596.jpg
width: 1000
height: 1000
preview_1500:
url: https://image.shutterstock.com/z/stock-vector-happy-halloween-vector-224429596.jpg
width: 1500
height: 1500
contributor:
id: '302287'
description: Happy Halloween - vector
image_type: vector
media_type: image
'400':
description: Bad Request
'401':
description: Unauthorized
'403':
description: Forbidden
security:
- basic: []
- customer_accessCode: []
tags:
- computer_vision
x-code-samples:
- lang: shell
source: 'RESPONSE=$(curl -X POST ''https://api.shutterstock.com/v2/cv/images'' \
-H "Authorization: Bearer $SHUTTERSTOCK_API_TOKEN" \
-H ''Content-Type: application/json'' \
-d "{\"base64_image\":\"`base64 myImage.jpg`\"}")
echo "The next step requires the jq program."
UPLOAD_ID=$(jq -r .upload_id <<< $RESPONSE)
curl -X GET https://api.shutterstock.com/v2/cv/similar/images \
-H "Accept: application/json" \
-H "Authorization: Bearer $SHUTTERSTOCK_API_TOKEN" \
-G \
--data-urlencode "asset_id=$UPLOAD_ID"
'
- lang: javascript--nodejs
source: "const sstk = require(\"shutterstock-api\");\n\nsstk.setAccessToken(process.env.SHUTTERSTOCK_API_TOKEN);\n\nconst computerVisionApi = new sstk.ComputerVisionApi();\n\nconst imageFile = fs.readFileSync(\"./myImage.jpg\");\nconst base64File = Buffer.from(imageFile).toString(\"base64\");\n\nconst body = new sstk.ImageCreateRequest(base64File);\n\ncomputerVisionApi.uploadImage(body)\n .then((data) => {\n console.log(data.upload_id);\n return computerVisionApi.getSimilarImages(data.upload_id);\n })\n .then((data) => {\n console.log(data);\n })\n .catch((error) => {\n console.error(error);\n });\n"
- lang: php
source: "$imageData = file_get_contents(\"myImage.jpg\");\n$encodedImageData = base64_encode($imageData);\n\n$uploadBody = [\n \"base64_image\" => $encodedImageData\n];\n$uploadEncodedBody = json_encode($uploadBody);\n\n$uploadOptions = [\n CURLOPT_URL => \"https://api.shutterstock.com/v2/cv/images\",\n CURLOPT_CUSTOMREQUEST => \"POST\",\n CURLOPT_POSTFIELDS => $uploadEncodedBody,\n CURLOPT_USERAGENT => \"php/curl\",\n CURLOPT_HTTPHEADER => [\n \"Authorization: Bearer $SHUTTERSTOCK_API_TOKEN\",\n \"Content-Type: application/json\"\n ],\n CURLOPT_RETURNTRANSFER => 1\n];\n\n$handle = curl_init();\ncurl_setopt_array($handle, $uploadOptions);\n$uploadResponse = curl_exec($handle);\ncurl_close($handle);\n\n$uploadDecodedResponse = json_decode($uploadResponse);\nprint_r($uploadDecodedResponse->upload_id);\n\n$similarQuery = [\n \"asset_type\" => \"images\",\n \"asset_id\" => $uploadDecodedResponse->upload_id,\n];\n\n$similarOptions = [\n CURLOPT_URL => \"https://api.shutterstock.com/v2/cv/similar/images?\" . http_build_query($similarQuery),\n CURLOPT_USERAGENT => \"php/curl\",\n CURLOPT_HTTPHEADER => [\n \"Authorization: Bearer $SHUTTERSTOCK_API_TOKEN\"\n ],\n CURLOPT_RETURNTRANSFER => 1\n];\n\n$handle = curl_init();\ncurl_setopt_array($handle, $similarOptions);\n$similarResponse = curl_exec($handle);\ncurl_close($handle);\n\nprint_r($similarResponse);\n"
operationId: getSimilarImages
summary: List similar images
description: This endpoint returns images that are visually similar to an image that you specify or upload.
/v2/cv/similar/videos:
get:
parameters:
- description: The asset ID or upload ID to find similar videos for
in: query
name: asset_id
required: true
example: U6ba16262e3bc2db470b8e3cfa8aaab25
schema:
type: string
- description: Show only videos with the specified license
in: query
name: license
schema:
type: array
items:
enum:
- commercial
- editorial
type: string
default: commercial
- description: Enable or disable safe search
in: query
name: safe
schema:
type: boolean
default: true
- description: Language for the keywords and categories in the response
in: query
name: language
example: es
schema:
$ref: '#/components/schemas/Language'
- description: Page number
in: query
name: page
schema:
type: integer
minimum: 1
default: 1
- description: Number of results per page
in: query
name: per_page
schema:
type: integer
minimum: 1
maximum: 500
default: 20
- description: Amount of detail to render in the response
in: query
name: view
schema:
type: string
enum:
- minimal
- full
default: minimal
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/VideoSearchResults'
examples:
response:
value:
page: 1
per_page: 1
total_count: 200
search_id: ''
data:
- media_type: video
id: '33248488'
description: 'The Concept of: Digitalization of Information Flow Moving Through Rack Servers in Data Center. Shot on RED EPIC-W 8K Helium Cinema Camera.'
aspect: 1.778
duration: 19
contributor:
id: '178456'
aspect_ratio: '16:9'
assets:
thumb_webm:
url: https://ak8.picdn.net/shutterstock/videos/33248488/thumb/stock-footage-the-concept-of-digitalization-of-information-flow-moving-through-rack-servers-in-data-center-shot.webm
thumb_mp4:
url: https://ak8.picdn.net/shutterstock/videos/33248488/thumb/stock-footage-the-concept-of-digitalization-of-information-flow-moving-through-rack-servers-in-data-center-shot.mp4
preview_webm:
url: https://ak8.picdn.net/shutterstock/videos/33248488/preview/stock-footage-the-concept-of-digitalization-of-information-flow-moving-through-rack-servers-in-data-center-shot.webm
preview_mp4:
url: https://ak8.picdn.net/shutterstock/videos/33248488/preview/stock-footage-the-concept-of-digitalization-of-information-flow-moving-through-rack-servers-in-data-center-shot.mp4
thumb_jpg:
url: https://ak8.picdn.net/shutterstock/videos/33248488/thumb/12.jpg
preview_jpg:
url: https://ak8.picdn.net/shutterstock/videos/33248488/thumb/12.jpg
url: https://www.shutterstock.com/video/clip-33248488
'400':
description: Bad Request
'401':
description: Unauthorized
'403':
description: Forbidden
security:
- basic: []
- customer_accessCode: []
tags:
- computer_vision
x-code-samples:
- lang: shell
source: 'RESPONSE=$(curl -X POST ''https://api.shutterstock.com/v2/cv/images'' \
-H "Authorization: Bearer $SHUTTERSTOCK_API_TOKEN" \
-H ''Content-Type: application/json'' \
-d "{\"base64_image\":\"`base64 myImage.jpg`\"}")
echo "The next step requires the jq program."
UPLOAD_ID=$(jq -r .upload_id <<< $RESPONSE)
curl -X GET https://api.shutterstock.com/v2/cv/similar/videos \
-H "Accept: application/json" \
-H "Authorization: Bearer $SHUTTERSTOCK_API_TOKEN" \
-G \
--data-urlencode "asset_id=$UPLOAD_ID"
'
- lang: javascript--nodejs
source: "const sstk = require(\"shutterstock-api\");\n\nsstk.setAccessToken(process.env.SHUTTERSTOCK_API_TOKEN);\n\nconst computerVisionApi = new sstk.ComputerVisionApi();\n\nconst imageFile = fs.readFileSync(\"./myImage.jpg\");\nconst base64File = Buffer.from(imageFile).toString(\"base64\");\n\nconst body = new sstk.ImageCreateRequest(base64File);\n\ncomputerVisionApi.uploadImage(body)\n .then((data) => {\n console.log(data.upload_id);\n return computerVisionApi.getSimilarVideos(data.upload_id);\n })\n .then((data) => {\n console.log(data);\n })\n .catch((error) => {\n console.error(error);\n });\n"
- lang: php
source: "$imageData = file_get_contents(\"myImage.jpg\");\n$encodedImageData = base64_encode($imageData);\n\n$uploadBody = [\n \"base64_image\" => $encodedImageData\n];\n$uploadEncodedBody = json_encode($uploadBody);\n\n$uploadOptions = [\n CURLOPT_URL => \"https://api.shutterstock.com/v2/cv/images\",\n CURLOPT_CUSTOMREQUEST => \"POST\",\n CURLOPT_POSTFIELDS => $uploadEncodedBody,\n CURLOPT_USERAGENT => \"php/curl\",\n CURLOPT_HTTPHEADER => [\n \"Authorization: Bearer $SHUTTERSTOCK_API_TOKEN\",\n \"Content-Type: application/json\"\n ],\n CURLOPT_RETURNTRANSFER => 1\n];\n\n$handle = curl_init();\ncurl_setopt_array($handle, $uploadOptions);\n$uploadResponse = curl_exec($handle);\ncurl_close($handle);\n\n$uploadDecodedResponse = json_decode($uploadResponse);\nprint_r($uploadDecodedResponse->upload_id);\n\n$similarQuery = [\n \"asset_type\" => \"images\",\n \"asset_id\" => $uploadDecodedResponse->upload_id,\n];\n\n$similarOptions = [\n CURLOPT_URL => \"https://api.shutterstock.com/v2/cv/similar/videos?\" . http_build_query($similarQuery),\n CURLOPT_USERAGENT => \"php/curl\",\n CURLOPT_HTTPHEADER => [\n \"Authorization: Bearer $SHUTTERSTOCK_API_TOKEN\"\n ],\n CURLOPT_RETURNTRANSFER => 1\n];\n\n$handle = curl_init();\ncurl_setopt_array($handle, $similarOptions);\n$similarResponse = curl_exec($handle);\ncurl_close($handle);\n\nprint_r($similarResponse);\n"
operationId: getSimilarVideos
summary: List similar videos
description: This endpoint returns videos that are visually similar to an image that you specify or upload.
/v2/cv/keywords:
get:
parameters:
- description: The asset ID or upload ID to suggest keywords for
in: query
name: asset_id
required: true
example: U6ba16262e3bc2db470b8e3cfa8aaab25
schema:
oneOf:
- $ref: '#/components/schemas/AssetUploadId'
- $ref: '#/components/schemas/AssetId'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/KeywordDataList'
examples:
response:
value:
data:
- nature
- wildlife
- animal
- cute
- bamboo
- panda
- china
- wild
- endangered
- black
- bear
'400':
description: Bad Request
'401':
description: Unauthorized
'403':
description: Forbidden
'415':
description: Unsupported Media Type
security:
- basic: []
- customer_accessCode: []
tags:
- computer_vision
x-code-samples:
- lang: shell
source: 'RESPONSE=$(curl -X POST ''https://api.shutterstock.com/v2/cv/images'' \
-H "Authorization: Bearer $SHUTTERSTOCK_API_TOKEN" \
-H ''Content-Type: application/json'' \
-d "{\"base64_image\":\"`base64 myImage.jpg`\"}")
echo "The next step requires the jq program."
UPLOAD_ID=$(jq -r .upload_id <<< $RESPONSE)
curl -X GET https://api.shutterstock.com/v2/cv/keywords \
-H "Accept: application/json" \
-H "Authorization: Bearer $SHUTTERSTOCK_API_TOKEN" \
-G \
--data-urlencode "asset_id=$UPLOAD_ID"'
- lang: javascript--nodejs
source: "const sstk = require(\"shutterstock-api\");\nconst fs = require(\"fs\");\n\nsstk.setAccessToken(process.env.SHUTTERSTOCK_API_TOKEN);\n\nconst computerVisionApi = new sstk.ComputerVisionApi();\n\nconst imageFile = fs.readFileSync(\"./myImage.jpg\");\nconst base64File = Buffer.from(imageFile).toString(\"base64\");\n\nconst body = new sstk.ImageCreateRequest(base64File);\n\ncomputerVisionApi.uploadImage(body)\n .then((data) => {\n console.log(data.upload_id);\n return computerVisionApi.getKeywords(data.upload_id);\n })\n .then((data) => {\n console.log(data);\n })\n .catch((error) => {\n console.error(error);\n });\n"
- lang: php
source: "$imageData = file_get_contents(\"myImage.jpg\");\n$encodedImageData = base64_encode($imageData);\n\n$uploadBody = [\n \"base64_image\" => $encodedImageData\n];\n$uploadEncodedBody = json_encode($uploadBody);\n\n$uploadOptions = [\n CURLOPT_URL => \"https://api.shutterstock.com/v2/cv/images\",\n CURLOPT_CUSTOMREQUEST => \"POST\",\n CURLOPT_POSTFIELDS => $uploadEncodedBody,\n CURLOPT_USERAGENT => \"php/curl\",\n CURLOPT_HTTPHEADER => [\n \"Authorization: Bearer $SHUTTERSTOCK_API_TOKEN\",\n \"Content-Type: application/json\"\n ],\n CURLOPT_RETURNTRANSFER => 1\n];\n\n$handle = curl_init();\ncurl_setopt_array($handle, $uploadOptions);\n$uploadResponse = curl_exec($handle);\ncurl_close($handle);\n\n$uploadDecodedResponse = json_decode($uploadResponse);\nprint_r($uploadDecodedResponse->upload_id);\n\n$keywordsQuery = [\n \"asset_id\" => $uploadDecodedResponse->upload_id,\n];\n\n$keywordsOptions = [\n CURLOPT_URL => \"https://api.shutterstock.com/v2/cv/keywords?\" . http_build_query($keywordsQuery),\n CURLOPT_USERAGENT => \"php/curl\",\n CURLOPT_HTTPHEADER => [\n \"Authorization: Bearer $SHUTTERSTOCK_API_TOKEN\"\n ],\n CURLOPT_RETURNTRANSFER => 1\n];\n\n$handle = curl_init();\ncurl_setopt_array($handle, $keywordsOptions);\n$keywordsResponse = curl_exec($handle);\ncurl_close($handle);\n\nprint_r($keywordsResponse);"
operationId: getKeywords
summary: List suggested keywords
description: This endpoint returns a list of suggested keywords for a media item that you specify or upload.
/v2/images:
post:
responses:
'201':
description: Created
content:
application/json:
schema:
$ref: '#/components/schemas/ImageCreateResponse'
examples:
response:
value:
id: Udb14e1c3540bdbf82b4b3fe12d3a44f2
'400':
description: Bad Request
'401':
description: Unauthorized
'403':
description: Forbidden
'413':
description: Payload Too Large
security:
- basic: []
- customer_accessCode: []
tags:
- computer_vision
x-code-samples:
- lang: shell
source: 'curl -X POST ''https://api.shutterstock.com/v2/images'' \
-H "Authorization: Bearer $SHUTTERSTOCK_API_TOKEN" \
-H ''Content-Type: application/json'' \
-d "{\"base64_image\":\"`base64 myImage.jpg`\"}"
'
- lang: javascript--nodejs
source: "const sstk = require(\"shutterstock-api\");\n\nsstk.setAccessToken(process.env.SHUTTERSTOCK_API_TOKEN);\n\nconst imagesApi = new sstk.ImagesApi();\n\nconst imageFile = fs.readFileSync(\"./myImage.jpg\");\nconst base64File = Buffer.from(imageFile).toString(\"base64\");\n\nconst body = new sstk.ImageCreateRequest(base64File);\n\nconst queryParams = {\n \"page\": 1,\n \"per_page\": 20,\n \"view\": \"minimal\"\n};\n\nimagesApi.uploadEphemeralImage(body)\n .then((data) => {\n console.log(data.id);\n return imagesApi.getSimilarImages(data.id, queryParams);\n })\n .then((similarImageData) => {\n console.log(similarImageData);\n })\n .catch((error) => {\n console.error(error);\n });\n"
- lang: php
source: "$imageData = file_get_contents(\"myImage.jpg\");\n$encodedImageData = base64_encode($imageData);\n\n$body = [\n \"base64_image\" => $encodedImageData\n];\n$encodedBody = json_encode($body);\n\n$options = [\n CURLOPT_URL => \"https://api.shutterstock.com/v2/images\",\n CURLOPT_CUSTOMREQUEST => \"POST\",\n CURLOPT_POSTFIELDS => $encodedBody,\n CURLOPT_USERAGENT => \"php/curl\",\n CURLOPT_HTTPHEADER => [\n \"Authorization: Bearer $SHUTTERSTOCK_API_TOKEN\",\n \"Content-Type: application/json\"\n ],\n CURLOPT_RETURNTRANSFER => 1\n];\n\n$handle = curl_init();\ncurl_setopt_array($handle, $options);\n$response = curl_exec($handle);\ncurl_close($handle);\n\n$decodedResponse = json_decode($response);\nprint_r($decodedResponse);\n"
operationId: uploadEphemeralImage
summary: Upload ephemeral images
description: Deprecated; use `POST /v2/cv/images` instead. This endpoint uploads an image for reverse image search. The image must be in JPEG or PNG format. To get the search results, pass the ID that this endpoint returns to the `GET /v2/images/{id}/similar` endpoint.
deprecated: true
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/ImageCreateRequest'
examples:
default:
value:
base64_image: R0lGODlhgACAAPcAAEwiBLyaLOzNUNmWFNjOrNSuN7x6PPzqeOTMgfKSDMyuTPzwsdi2dHwuBPzbVu
description: The image data in JPEG or PNG format
required: true
components:
schemas:
ImageCreateResponse:
description: Image upload information
properties:
id:
type: string
required:
- id
type: object
VideoSizeDetails:
description: Video asset information
properties:
display_name:
description: Display name of this video size
type: string
file_size:
description: File size (in bytes) of this video size
type: integer
format:
description: Format of this video size
type: string
fps:
description: Frames per second of this video size
type: number
height:
description: Height of this video size
type: integer
is_licensable:
description: Whether or not videos can be licensed in this video size
type: boolean
width:
description: Width of this video size
type: integer
type: object
Image:
description: Information about an image
properties:
added_date:
description: Date that the image was added by the contributor
format: date
type: string
affiliate_url:
description: Affiliate referral link; appears only for registered affiliate partners
type: string
format: uri
aspect:
description: Aspect ratio of the image
type: number
assets:
$ref: '#/components/schemas/ImageAssets'
description: Image asset information
categories:
description: Categories that this image is a part of
items:
$ref: '#/components/schemas/Category'
type: array
contributor:
$ref: '#/components/schemas/Contributor'
description:
description: Detailed description of the image
type: string
has_model_release:
description: Indicates whether there are model releases for the image
type: boolean
has_property_release:
description: Indicates whether there are property releases for the image
type: boolean
id:
description: Image ID
type: string
image_type:
description: Type of image
type: string
is_adult:
description: Whether or not this image contains adult content
type: boolean
is_editorial:
description: Whether or not this image is editorial content
type: boolean
is_illustration:
description: Whether or not this image is an illustration
type: boolean
keywords:
description: Keywords associated with the content of this image
items:
type: string
type: array
media_type:
description: Media type of this image, should always be "image"
type: string
model_releases:
description: List of model releases
items:
$ref: '#/components/schemas/ModelRelease'
type: array
models:
description: List of models
items:
$ref: '#/components/schemas/Model'
type: array
releases:
description: List of all releases of this image
items:
type: string
type: array
url:
description: Link to image information page; included only for certain accounts
type: string
required:
- id
- media_type
- contributor
type: object
Error:
description: Error object
properties:
code:
description: The error code of this error
type: string
data:
description: Debugging information about the error
type: string
items:
description: A list of items that produced the error
items:
type: object
type: array
message:
description: Specific details about this error
type: string
path:
description: Internal code reference to the source of the error
type: string
required:
- message
type: object
VideoSearchResults:
description: Video search results
properties:
data:
description: List of videos
items:
$ref: '#/components/schemas/Video'
type: array
message:
description: Server-generated message, if any
type: string
page:
description: Current page that is returned
type: integer
per_page:
description: Number of results per page
type: integer
total_count:
description: Total count of all results across all pages
type: integer
search_id:
description: Unique identifier for the search request
type: string
required:
- data
- total_count
- search_id
type: object
Urls:
description: List of URLs
properties:
urls:
description: URLs
items:
type: string
type: array
required:
- urls
type: object
Video:
description: Information about a video
properties:
added_date:
description: Date this video was added to the Shutterstock library
format: date
type: string
affiliate_url:
description: Affiliate referral link; appears only for registered affiliate partners
type: string
format: uri
aspect:
description: Aspect ratio of this video in decimal format
type: number
aspect_ratio:
description: Aspect ratio of the video
type: string
assets:
$ref: '#/components/schemas/VideoAssets'
categories:
description: List of categories
items:
$ref: '#/components/schemas/Category'
type: array
contributor:
$ref: '#/components/schemas/Contributor'
description:
description: Description of this video
type: string
duration:
description: Duration of this video, in seconds
type: number
has_model_release:
description: Whether or not this video has been released for use by the model appearing in it
type: boolean
has_property_release:
description: Whether or not this video has received a release to show the landmark or property appearing in it
type: boolean
id:
description: ID of the video
type: string
is_adult:
description: Whether or not this video contains adult content
type: boolean
is_editorial:
description: Whether or not this video is editorial content
type: boolean
keywords:
description: Keywords associated with the content of this video
items:
type: string
type: array
media_type:
description: Media type of this video, should always be "video"
type: string
models:
description: List of models in this video
items:
$ref: '#/compon
# --- truncated at 32 KB (39 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/shutterstock/refs/heads/main/openapi/shutterstock-computer-vision-api-openapi.yml