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: '#/components/schemas/Model' type: array url: description: Link to video information page; included only for certain accounts type: string required: - id - media_type - contributor type: object Contributor: description: Information about a contributor properties: id: description: ID of the contributor type: string required: - id type: object ImageSizeDetails: description: Image size information properties: display_name: description: Display name of this image size type: string dpi: type: integer file_size: description: File size (in bytes) of this image size type: integer format: description: Format of this image size type: string height: description: Height of this image size type: integer is_licensable: description: Whether or not this image can be licensed in this image size type: boolean width: description: Width of this image size type: integer type: object Url: description: URL object properties: url: description: URL that can be used to download the unwatermarked, licensed asset type: string required: - url type: object ImageCreateRequest: description: Request to upload an image properties: base64_image: 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 type: string required: - base64_image type: object KeywordDataList: description: List of keywords properties: data: description: Keywords items: type: string type: array errors: description: Error list; appears only if there was an error items: $ref: '#/components/schemas/Error' type: array message: description: Server-generated message, if any type: string Thumbnail: description: Image thumbnail information properties: height: description: Height in pixels of the image thumbnail type: integer url: description: Direct URL to the image type: string width: description: Width in pixels of the image thumbnail type: integer required: - url - height - width type: object ComputerVisionImageCreateResponse: description: Asset upload information properties: upload_id: type: string required: - upload_id type: object Category: description: Category information properties: id: description: Category ID type: string name: description: Category name type: string type: object Language: description: Language code title: language enum: - cs - da - de - en - es - fi - fr - hu - it - ja - ko - nb - nl - pl - pt - ru - sv - th - tr - zh - zh-Hant type: string Model: description: Information about a human model or property that appears in media; used to search for assets that this model is in properties: id: description: ID of the model type: string required: - id type: object ModelRelease: description: Model and property release metadata properties: id: description: ID of the model or property release type: string type: object ImageSearchResults: description: Image search results properties: data: description: List of images items: $ref: '#/components/schemas/Image' 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 search_id: description: Unique identifier for the search request type: string spellcheck_info: description: Returns information if search phrase has potentially been mistyped or another query would lead to better search results type: object total_count: description: Total count of all results across all pages type: integer required: - data - total_count - search_id type: object VideoAssets: description: Video asset information properties: 4k: $ref: '#/components/schemas/VideoSizeDetails' hd: $ref: '#/components/schemas/VideoSizeDetails' preview_jpg: $ref: '#/components/schemas/Url' preview_mp4: $ref: '#/components/schemas/Url' preview_webm: $ref: '#/components/schemas/Url' sd: $ref: '#/components/schemas/VideoSizeDetails' thumb_jpg: $ref: '#/components/schemas/Url' thumb_jpgs: $ref: '#/components/schemas/Urls' thumb_mp4: $ref: '#/components/schemas/Url' thumb_webm: $ref: '#/components/schemas/Url' web: $ref: '#/components/schemas/VideoSizeDetails' type: object ImageAssets: description: Information about the assets that are part of an image properties: huge_jpg: $ref: '#/components/schemas/ImageSizeDetails' huge_thumb: $ref: '#/components/schemas/Thumbnail' large_thumb: $ref: '#/components/schemas/Thumbnail' medium_jpg: $ref: '#/components/schemas/ImageSizeDetails' preview: $ref: '#/components/schemas/Thumbnail' preview_1000: $ref: '#/components/schemas/Thumbnail' preview_1500: $ref: '#/components/schemas/Thumbnail' small_jpg: $ref: '#/components/schemas/ImageSizeDetails' small_thumb: $ref: '#/components/schemas/Thumbnail' supersize_jpg: $ref: '#/components/schemas/ImageSizeDetails' vector_eps: $ref: '#/components/schemas/ImageSizeDetails' type: object securitySchemes: basic: type: http scheme: basic customer_accessCode: type: oauth2 x-shutterstock-realm: customer flows: authorizationCode: authorizationUrl: https://accounts.shutterstock.com/oauth/authorize tokenUrl: https://api.shutterstock.com/v2/oauth/access_token scopes: licenses.create: Grant the ability to download and license media on behalf of the user. purchases.view: Grant read-only access to a user's purchase history. licenses.view: Grant read-only access to a user's licenses. collections.edit: Grant the ability to create new collections, edit a collection, and modify the contents of a collection collections.view: Grant read-only access to a collection and its contents.