openapi: 3.0.0 info: title: Shutterstock API Reference 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 paths: /v2/images/search: get: parameters: - description: Show images added on the specified date in: query name: added_date schema: type: string format: date - description: Show images added on or after the specified date in: query name: added_date_start schema: type: string format: date - description: 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 in: query name: aspect_ratio_min schema: type: number minimum: 0 exclusiveMinimum: true - description: 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 in: query name: aspect_ratio_max schema: type: number minimum: 0 exclusiveMinimum: true - description: 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 in: query name: aspect_ratio schema: type: number minimum: 0 exclusiveMinimum: true - description: Show images added before the specified date in: query name: added_date_end schema: type: string format: date - description: Show images with the specified Shutterstock-defined category; specify a category name or ID in: query name: category schema: type: string - description: Specify either a hexadecimal color in the format '4F21EA' or 'grayscale'; the API groups it into one of 15 color categories and returns images that primarily use that color category in: query name: color schema: type: string - description: Show images with the specified contributor names or IDs, allows multiple in: query name: contributor schema: type: array items: type: string - description: Show images from contributors in one or more specified countries in: query name: contributor_country schema: type: array items: type: string format: country-code-2 - description: Fields to display in the response; see the documentation for the fields parameter in the overview section in: query name: fields schema: type: string uniqueItems: true - description: (Deprecated; use height_from and height_to instead) Show images with the specified height in: query name: height deprecated: true schema: type: integer - description: Show images with the specified height or larger, in pixels in: query name: height_from schema: type: integer - description: Show images with the specified height or smaller, in pixels in: query name: height_to schema: type: integer - description: Show images of the specified type in: query name: image_type schema: type: array items: enum: - photo - illustration - vector type: string - description: Hide results with potentially unsafe keywords in: query name: keyword_safe_search schema: type: boolean default: true - description: Set query and result language (uses Accept-Language header if not set) in: query name: language schema: $ref: '#/components/schemas/Language' - description: Show only images with the specified license in: query name: license schema: type: array items: default: commercial enum: - commercial - editorial - enhanced type: string - description: Show image results with the specified model IDs in: query name: model schema: type: array items: type: string - description: Show image results with horizontal or vertical orientation in: query name: orientation schema: type: string enum: - horizontal - vertical - 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: 0 maximum: 500 default: 20 - description: Show images of people with a signed model release in: query name: people_model_released schema: type: boolean - description: Show images that feature people of the specified age category in: query name: people_age schema: type: string enum: - infants - children - teenagers - 20s - 30s - 40s - 50s - 60s - older - description: Show images with people of the specified ethnicities in: query name: people_ethnicity schema: type: array items: enum: - african - african_american - black - brazilian - chinese - caucasian - east_asian - hispanic - japanese - middle_eastern - native_american - pacific_islander - south_asian - southeast_asian - other type: string - description: Show images with people of the specified gender in: query name: people_gender schema: type: string enum: - male - female - both - description: Show images with the specified number of people in: query name: people_number schema: type: integer minimum: 0 maximum: 4 - description: One or more search terms separated by spaces; you can use NOT to filter out images that match a term in: query name: query schema: type: string - description: 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 in: query name: region schema: anyOf: - type: string format: country-code-2 - type: string format: ipv4 - description: Enable or disable safe search in: query name: safe schema: type: boolean default: true - description: Sort by in: query name: sort schema: type: string enum: - newest - popular - relevance - random default: popular - description: Spellcheck the search query and return results on suggested spellings in: query name: spellcheck_query schema: type: boolean default: true - description: Amount of detail to render in the response in: query name: view schema: type: string enum: - minimal - full default: minimal - description: (Deprecated; use width_from and width_to instead) Show images with the specified width in: query name: width deprecated: true schema: type: integer - description: Show images with the specified width or larger, in pixels in: query name: width_from schema: type: integer - description: Show images with the specified width or smaller, in pixels in: query name: width_to schema: type: integer responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/ImageSearchResults' examples: response: value: page: 1 per_page: 1 total_count: 193097419 search_id: p5S6QwRikdFJTHXwsoiqTg data: - id: '1120280123' aspect: 1.6667 assets: preview: height: 269 url: https://image.shutterstock.com/display_pic_with_logo/3673637/1120280123/stock-vector-minimal-geometric-background-dynamic-shapes-composition-eps-vector-1120280123.jpg width: 450 small_thumb: height: 60 url: https://thumb10.shutterstock.com/thumb_small/3673637/1120280123/stock-vector-minimal-geometric-background-dynamic-shapes-composition-eps-vector-1120280123.jpg width: 100 large_thumb: height: 90 url: https://thumb10.shutterstock.com/thumb_large/3673637/1120280123/stock-vector-minimal-geometric-background-dynamic-shapes-composition-eps-vector-1120280123.jpg width: 150 huge_thumb: height: 260 url: https://image.shutterstock.com/image-vector/minimal-geometric-background-dynamic-shapes-260nw-1120280123.jpg width: 435 preview_1000: url: https://ak.picdn.net/shutterstock/photos/1120280123/watermark_1000/f4954f705e782cc12cd13910137e3555/preview_1000-1120280123.jpg width: 1000 height: 600 preview_1500: url: https://image.shutterstock.com/z/stock-vector-minimal-geometric-background-dynamic-shapes-composition-eps-vector-1120280123.jpg width: 1500 height: 900 contributor: id: '3673637' description: Minimal geometric background. Dynamic shapes composition. Eps10 vector. image_type: vector has_model_release: false media_type: image url: https://www.shutterstock.com/image-photo/1120280123 '400': description: Bad Request '401': description: Unauthorized '403': description: Forbidden security: - basic: [] - customer_accessCode: [] tags: - images x-code-samples: - lang: shell source: 'curl -X GET https://api.shutterstock.com/v2/images/search \ -H "Accept: application/json" \ -H "Authorization: Bearer $SHUTTERSTOCK_API_TOKEN" \ -G \ --data-urlencode "query=Vienna" \ --data-urlencode "orientation=horizontal" \ --data-urlencode "sort=popular" ' - 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 queryParams = {\n \"query\": \"New York\",\n \"sort\": \"popular\"\ ,\n \"orientation\": \"horizontal\"\n};\n\nimagesApi.searchImages(queryParams)\n .then((data) => {\n console.log(data);\n\ \ })\n .catch((error) => {\n console.error(error);\n });\n" - lang: php source: "$queryFields = [\n \"query\" => \"New York\",\n \"sort\" => \"popular\",\n \"orientation\" => \"horizontal\"\ \n];\n\n$options = [\n CURLOPT_URL => \"https://api.shutterstock.com/v2/images/search?\" . http_build_query($queryFields),\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, $options);\n$response\ \ = curl_exec($handle);\ncurl_close($handle);\n\n$decodedResponse = json_decode($response);\nprint_r($decodedResponse);\n" operationId: searchImages summary: Search for images description: 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. /v2/images/search/suggestions: get: parameters: - description: Search term for which you want keyword suggestions in: query name: query required: true example: cats schema: type: string - description: Limit the number of suggestions in: query name: limit schema: type: integer default: 10 minimum: 1 maximum: 25 responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/Suggestions' '400': description: Bad Request '401': description: Unauthorized '403': description: Forbidden security: - basic: [] - customer_accessCode: [] tags: - images operationId: getImageSuggestions summary: Get suggestions for a search term description: This endpoint provides autocomplete suggestions for partial search terms. post: requestBody: content: application/json: schema: $ref: '#/components/schemas/SearchEntitiesRequest' description: Plain text to extract keywords from required: true responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/SearchEntitiesResponse' '400': description: Bad Request '401': description: Unauthorized '403': description: Forbidden security: - basic: [] - customer_accessCode: [] x-code-samples: - lang: shell source: 'DATA=''{"text": "The beach is a wonderful place to visit. It has beautiful sand and ocean waves."}'' curl -X POST https://api.shutterstock.com/v2/images/search/suggestions \ -d "$DATA" \ -H "Content-Type: application/json" \ -H "Accept: application/json" \ -H "Authorization: Bearer $SHUTTERSTOCK_API_TOKEN" ' - 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 body = {\n \"text\": \"The beach is a wonderful place to visit.\ \ It has beautiful sand and ocean waves.\"\n};\n\nimagesApi.postImageEntities(body)\n .then((data) => {\n console.log(data);\n\ \ })\n .catch((error) => {\n console.error(error);\n });\n" - lang: php source: "$body = [\n \"text\" => \"The beach is a wonderful place to visit. It has beautiful sand and ocean waves.\"\ \n];\n$encodedBody = json_encode($body);\n\n$options = [\n CURLOPT_URL => \"https://api.shutterstock.com/v2/images/search/suggestions\"\ ,\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" tags: - images operationId: postImageEntities summary: Get keywords from text description: This endpoint returns up to 10 important keywords from a block of plain text. /v2/images/{id}: get: parameters: - description: Image ID in: path name: id required: true example: '465011609' schema: type: string - description: Language for the keywords and categories in the response in: query name: language example: es schema: $ref: '#/components/schemas/Language' - description: Amount of detail to render in the response in: query name: view schema: type: string enum: - minimal - full default: full responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/Image' examples: response: value: id: '465011609' added_date: '2016-08-07' aspect: 0.8501 assets: huge_jpg: display_name: Huge dpi: 300 file_size: 6980608 format: jpg height: 4902 is_licensable: true width: 4167 vector_eps: display_name: Vector format: eps is_licensable: true preview: height: 450 url: https://image.shutterstock.com/display_pic_with_logo/1384888/465011609/stock-vector-happy-mid-autumn-festival-background-with-golden-glitter-moon-and-hand-drawn-moon-rabbits-vector-465011609.jpg width: 382 small_thumb: height: 100 url: https://thumb7.shutterstock.com/thumb_small/1384888/465011609/stock-vector-happy-mid-autumn-festival-background-with-golden-glitter-moon-and-hand-drawn-moon-rabbits-vector-465011609.jpg width: 85 large_thumb: height: 150 url: https://thumb7.shutterstock.com/thumb_large/1384888/465011609/stock-vector-happy-mid-autumn-festival-background-with-golden-glitter-moon-and-hand-drawn-moon-rabbits-vector-465011609.jpg width: 128 huge_thumb: height: 260 url: https://image.shutterstock.com/image-vector/happy-mid-autumn-festival-background-260nw-465011609.jpg width: 221 preview_1000: url: https://ak.picdn.net/shutterstock/photos/465011609/watermark_1000/e80e64e55f14aeb951feaf93ea337dc0/preview_1000-465011609.jpg width: 850 height: 1000 preview_1500: url: https://image.shutterstock.com/z/stock-vector-happy-mid-autumn-festival-background-with-golden-glitter-moon-and-hand-drawn-moon-rabbits-vector-465011609.jpg width: 1275 height: 1500 categories: - id: '8' name: Holidays - id: '11' name: The Arts contributor: id: '1384888' description: Happy Mid Autumn Festival background with golden glitter Moon and hand drawn Moon Rabbits. Vector illustration image_type: vector is_adult: false is_editorial: false is_illustration: true has_model_release: false has_property_release: true keywords: - abstract - art - artistic - asian - autumn - background - bunny - calligraphy - celebration - china media_type: image url: https://www.shutterstock.com/image-photo/465011609 '400': description: Bad Request '401': description: Unauthorized '403': description: Forbidden security: - basic: [] - customer_accessCode: [] tags: - images operationId: getImage summary: Get details about images description: This endpoint shows information about an image, including a URL to a preview image and the sizes that it is available in. /v2/images/categories: get: parameters: - description: Language for the keywords and categories in the response in: query name: language example: es schema: $ref: '#/components/schemas/Language' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/CategoryDataList' examples: response: value: data: - id: '15' name: Science - id: '17' name: Signs/Symbols - id: '18' name: Sports/Recreation - id: '16' name: Technology - id: '0' name: Transportation '400': description: Bad Request '401': description: Unauthorized '403': description: Forbidden security: - basic: [] - customer_accessCode: [] tags: - images operationId: getImageCategories summary: List image categories description: This endpoint lists the categories (Shutterstock-assigned genres) that images can belong to. /v2/images/{id}/similar: get: parameters: - description: Image ID in: path name: id required: true example: '465011609' schema: type: string - 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: - images operationId: getSimilarImages summary: List similar images description: This endpoint returns images that are visually similar to an image that you specify. /v2/images/licenses: post: parameters: - description: Subscription ID to use to license the image in: query name: subscription_id schema: type: string - description: Image format in: query name: format schema: type: string enum: - eps - jpg default: jpg - description: Image size in: query name: size schema: type: string enum: - small - medium - huge - vector - custom default: huge - description: Search ID that was provided in the results of an image search in: query name: search_id schema: type: string responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/LicenseImageResultDataList' examples: response: value: data: - image_id: '547233985' download: url: https://download.shutterstock.com/gatekeeper/[random-characters]/shutterstock_547233985.jpg allotment_charge: 1 '400': description: Bad Request '401': description: Unauthorized '403': description: Forbidden security: - customer_accessCode: - licenses.create - purchases.view ldap_accessCode: - user.view x-code-samples: - lang: shell source: "DATA='{\n \"images\": [\n {\n \"image_id\": \"59656357\",\n \"price\": 12.50,\n \"metadata\"\ : {\n \"customer_id\": \"12345\"\n }\n }\n ]\n}'\n\ncurl -X POST \"https://api.shutterstock.com/v2/images/licenses?subscription_id=$SUBSCRIPTION_ID\"\ \ \\\n-H \"Authorization: Bearer $SHUTTERSTOCK_API_TOKEN\" \\\n-H 'Content-Type: application/json' \\\n-d \"$DATA\"\ \n" - 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 body = {\n \"images\": [\n {\n \"image_id\": \"419235589\"\ ,\n \"price\": 12.50,\n \"metadata\": {\n \"customer_id\": \"12345\"\n }\n }\n ]\n};\n\ \nconst queryParams = {\n \"format\": \"jpg\",\n \"size\": \"huge\",\n \"subscription_id\": process.env.SUBSCRIPTION_ID\n\ };\n\nimagesApi.licenseImages(body, queryParams)\n .then(({ data }) => {\n console.log(data);\n })\n .catch((error)\ \ => {\n console.error(error);\n });\n" - lang: php source: "$body = [\n \"images\" => [\n [\n \"image_id\" => \"539753938\",\n \"price\" => 12.50,\n \ \ \"metadata\" => [\n \"customer_id\" => \"12345\"\n ]\n ]\n ]\n];\n$encodedBody = json_encode($body);\n\ \n$options = [\n CURLOPT_URL => \"https://api.shutterstock.com/v2/images/licenses?subscription_id=$SUBSCRIPTION_ID\"\ ,\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" tags: - images operationId: licenseImages summary: License images description: This endpoint gets licenses for one or more images. You must specify the image IDs in the body parameter and other details like the format, size, and subscription ID either in the query parameter or with each image ID in the body parameter. Values in the body parameter override values in the query parameters. requestBody: content: application/json: schema: $ref: '#/components/schemas/LicenseImageRequest' examples: default: value: images: - image_id: '59656357' format: jpg metadata: customer_id: '12345' geo_location: US number_viewed: '15' search_term: dog - image_id: '75359656' editorial_acknowledgement: true format: jpg metadata: customer_id: '12345' geo_location: US number_viewed: '15' search_term: dog description: List of images to request licenses for and information about each license transaction; these values override the defaults in the query parameters required: true get: parameters: - description: Show licenses for the specified image ID in: query name: image_id schema: type: string - description: Show images that are available with the specified license, such as `standard` or `enhanced`; prepending a `-` sign excludes results from that license in: query name: license schema: type: string - 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: 0 maximum: 200 default: 20 - description: Sort order in: query name: sort schema: type: string enum: - newest - oldest default: newest - description: Filter licenses by username of licensee in: query name: username schema: type: string - name: start_date in: query description: Show licenses created on or after the specified date schema: type: string format: date-time example: 2020-02-02T13:00-05:00 - name: end_date in: query description: Show licenses created before the specified date schema: type: string format: date-time example: 2020-02-02T13:00-05:00 responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/DownloadHistoryDataList' examples: response: value: data: - id: e121 user: username: userone license: standard subscription_id: s18382630 download_time: '2016-10-03T15:58:18-04:00' metadata: client: Company A other: Important media purchase_order: '457234' job: Important project image: id: '114350371' format: size: huge - id: e122 user: username: userone license: standard subscription_id: s18382630 download_time: '2016-10-03T16:01:12-04:00' metadata: client: Company A other: Important media purchase_order: '457234' job: Important project image: id: '135658703' format: size: medium - id: e123 user: username: userone license: standard subscription_id: s18382630 download_time: '2016-10-03T16:01:18-04:00' metadata: client: Company A other: Important media purchase_order: '457234' job: Important project image: id: '107771801' format: size: vector page: 1 per_page: 3 '400': description: Bad Request '401': description: Unauthorized '403': description: Forbidden security: - customer_accessCode: - licenses.view tags: - images operationId: getImageLicenseList summary: List image licenses description: This endpoint lists existing licenses. /v2/images/licenses/{id}/downloads: post: parameters: - description: License ID in: path name: id required: true example: e123 schema: type: string x-code-samples: - lang: shell source: "DATA='{\n \"size\": \"huge\"\n}'\n\ncurl -X POST https://api.shutterstock.com/v2/images/licenses/e123/downloads\ \ \\\n-d \"$DATA\" \\\n-H \"Content-Type: application/json\" \\\n-H \"Accept: application/json\" \\\n-H \"Authorization:\ \ Bearer $SHUTTERSTOCK_API_TOKEN\"\n" - 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 licenseId = \"e123\"; // license ID, not image ID\n\nconst body\ \ = {\n \"size\": \"huge\"\n};\n\nimagesApi.downloadImage(licenseId, body)\n .then((data) => {\n console.log(data);\n\ \ })\n .catch((error) => {\n console.error(error);\n });\n" - lang: php source: "$body = [\n \"size\" => \"huge\"\n];\n$encodedBody = json_encode($body);\n\n$options = [\n CURLOPT_URL\ \ => \"https://api.shutterstock.com/v2/images/licenses/e123/downloads\",\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" responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/Url' examples: response: value: url: https://download.qa.shutterstock.com/gatekeeper/LzEyMy9odWdlLmpwZyIsIm0iOjEsvdjNsbFNWbVNEQ2FhcHV1VlhhSU9VeUpVIl0/shutterstock_60447496.jpg' '400': description: Bad Request '401': description: Unauthorized '403': description: Forbidden security: - customer_accessCode: - licenses.view tags: - images operationId: downloadImage summary: Download images description: This endpoint redownloads images that you have already received a license for. requestBody: content: application/json: schema: $ref: '#/components/schemas/RedownloadImage' examples: default: value: size: huge description: Information about the images to redownload required: true /v2/images/recommendations: get: parameters: - description: Image IDs in: query name: id required: true example: - 465011609 schema: type: array items: type: string - description: Maximum number of results returned in the response in: query name: max_items schema: type: integer minimum: 1 maximum: 500 default: 20 - description: Restrict results to safe images in: query name: safe schema: type: boolean default: true responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/RecommendationDataList' examples: response: value: data: - id: '106363526' - id: '113284498' - id: '107390756' - id: '99379946' - id: '133918412' '400': description: Bad Request '401': description: Unauthorized '403': description: Forbidden security: - basic: [] - customer_accessCode: [] tags: - images operationId: getImageRecommendations summary: List recommended images description: This endpoint returns images that customers put in the same collection as the specified image IDs. /v2/images/collections: post: responses: '200': description: No response was specified '201': description: Creation successful content: application/json: schema: $ref: '#/components/schemas/CollectionCreateResponse' examples: response: value: id: '101202664' '400': description: Bad Request '401': description: Unauthorized '403': description: Forbidden security: - customer_accessCode: - collections.edit x-code-samples: - lang: shell source: "DATA='{\n \"name\": \"My collection\"\n}'\n\ncurl -X POST https://api.shutterstock.com/v2/images/collections\ \ \\\n-d \"$DATA\" \\\n-H \"Content-Type: application/json\" \\\n-H \"Accept: application/json\" \\\n-H \"Authorization:\ \ Bearer $SHUTTERSTOCK_API_TOKEN\"" - 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 body = {\n \"name\": \"My collection\"\n};\n\nimagesApi.createLightbox(body)\n\ \ .catch((error) => {\n console.error(error);\n });\n" - lang: php source: "$body = [\n \"name\" => \"My collection\"\n];\n$encodedBody = json_encode($body);\n\n$options = [\n CURLOPT_URL\ \ => \"https://api.shutterstock.com/v2/images/collections\",\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);" tags: - images operationId: createLightbox summary: Create image collections description: This endpoint creates one or more image collections (lightboxes). To add images to the collections, use `POST /v2/images/collections/{id}/items`. requestBody: content: application/json: schema: $ref: '#/components/schemas/CollectionCreateRequest' examples: default: value: name: My collection description: The names of the new collections required: true get: parameters: - description: Which sharing information to include in the response, such as a URL to the collection in: query name: embed example: share_code schema: type: array items: enum: - share_code - share_url type: string - description: Page number in: query name: page example: 1 schema: type: integer minimum: 1 default: 1 - description: Number of results per page in: query name: per_page example: 2 schema: type: integer minimum: 1 maximum: 150 default: 100 responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/CollectionDataList' examples: response: value: data: - id: '21663574' name: Kittens and puppies total_item_count: 0 items_updated_time: '2018-08-02T07:33:24-04:00' - id: '21663571' name: young couples total_item_count: 0 items_updated_time: '2018-08-02T07:33:22-04:00' '400': description: Bad Request '401': description: Unauthorized '403': description: Forbidden security: - customer_accessCode: - collections.view tags: - images operationId: getLightboxList summary: List image collections description: This endpoint lists your collections of images and their basic attributes. /v2/images/collections/{id}: get: parameters: - description: Collection ID in: path name: id required: true example: '126351027' schema: type: string - description: Which sharing information to include in the response, such as a URL to the collection in: query name: embed schema: type: array items: enum: - share_code - share_url type: string - description: Code to retrieve a shared collection in: query name: share_code schema: type: string responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/Collection' examples: response: value: id: '336351027' name: My collection total_item_count: 1 items_updated_time: '2017-05-17T16:28:39-04:00' cover_item: id: '954500' '400': description: Bad Request '401': description: Unauthorized '403': description: Forbidden security: - customer_accessCode: - collections.view tags: - images operationId: getLightbox summary: Get the details of image collections description: 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`. post: parameters: - description: Collection ID in: path name: id required: true example: '126351027' schema: type: string responses: '200': description: No response was specified '204': description: Successfully updated collection '400': description: Bad Request '401': description: Unauthorized '403': description: Forbidden security: - customer_accessCode: - collections.edit x-code-samples: - lang: shell source: "DATA='{\n \"name\": \"My new collection name\"\n}'\n\ncurl -X POST https://api.shutterstock.com/v2/images/collections/126351027\ \ \\\n-d \"$DATA\" \\\n-H \"Content-Type: application/json\" \\\n-H \"Accept: application/json\" \\\n-H \"Authorization:\ \ Bearer $SHUTTERSTOCK_API_TOKEN\"" - 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 collectionId = \"126351027\"; // Collection ID\n\nconst body\ \ = {\n \"name\": \"My new collection name\"\n};\n\nimagesApi.renameLightbox(collectionId, body)\n .catch((error)\ \ => {\n console.error(error);\n });\n" - lang: php source: "$body = [\n \"name\" => \"My new collection name\"\n];\n$encodedBody = json_encode($body);\n\n$options =\ \ [\n CURLOPT_URL => \"https://api.shutterstock.com/v2/images/collections/126351027\",\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);" tags: - images operationId: renameLightbox summary: Rename image collections description: This endpoint sets a new name for an image collection. requestBody: content: application/json: schema: $ref: '#/components/schemas/CollectionUpdateRequest' examples: default: value: name: My new collection name description: The new name for the collection required: true delete: parameters: - description: Collection ID in: path name: id required: true example: '136351027' schema: type: string responses: '200': description: No response was specified '204': description: Successfully deleted collection '400': description: Bad Request '401': description: Unauthorized '403': description: Forbidden security: - customer_accessCode: - collections.edit x-code-samples: - lang: shell source: 'curl -X DELETE https://api.shutterstock.com/v2/images/collections/136351027 \ -H "Accept: application/json" \ -H "Authorization: Bearer $SHUTTERSTOCK_API_TOKEN"' - 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 collectionId = \"136351027\"; // Collection ID\n\nimagesApi.deleteLightbox(collectionId)\n\ \ .catch((error) => {\n console.error(error);\n });\n" - lang: php source: "$options = [\n CURLOPT_URL => \"https://api.shutterstock.com/v2/images/collections/136351027\",\n CURLOPT_USERAGENT\ \ => \"php/curl\",\n CURLOPT_CUSTOMREQUEST => \"DELETE\",\n CURLOPT_HTTPHEADER => [\n \"Authorization: Bearer\ \ $SHUTTERSTOCK_API_TOKEN\"\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);\n\ print_r($decodedResponse);" tags: - images operationId: deleteLightbox summary: Delete image collections description: This endpoint deletes an image collection. /v2/images/collections/{id}/items: post: parameters: - description: Collection ID in: path name: id required: true example: '126351027' schema: type: string responses: '200': description: No response was specified '204': description: Successfully added collection items '400': description: Bad Request '401': description: Unauthorized '403': description: Forbidden security: - customer_accessCode: - collections.edit x-code-samples: - lang: shell source: "DATA='{\n \"items\": [\n {\n \"id\": \"49572945\",\n \"media_type\": \"image\"\n }\n ]\n\ }'\n\ncurl -X POST https://api.shutterstock.com/v2/images/collections/126351027/items \\\n-d \"$DATA\" \\\n-H \"\ Content-Type: application/json\" \\\n-H \"Accept: application/json\" \\\n-H \"Authorization: Bearer $SHUTTERSTOCK_API_TOKEN\"" - 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 collectionId = \"126351027\"; // Collection ID\n\nconst body\ \ = {\n \"items\": [\n {\n \"id\": \"495863218\",\n \"media_type\": \"image\"\n }\n ]\n};\n\n\ imagesApi.addLightboxItems(collectionId, body)\n .catch((error) => {\n console.error(error);\n });\n" - lang: php source: "$body = [\n \"items\" => [\n [\n \"id\" => \"49572945\",\n \"media_type\" => \"image\"\n \ \ ]\n ]\n];\n$encodedBody = json_encode($body);\n\n$options = [\n CURLOPT_URL => \"https://api.shutterstock.com/v2/images/collections/126351027/items\"\ ,\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);" tags: - images operationId: addLightboxItems summary: Add images to collections description: This endpoint adds one or more images to a collection by image IDs. requestBody: content: application/json: schema: $ref: '#/components/schemas/CollectionItemRequest' examples: default: value: items: - id: '49572945' media_type: image description: Array of image IDs to add to the collection required: true get: parameters: - description: Collection ID in: path name: id required: true example: '126351027' schema: type: string - description: Code to retrieve the contents of a shared collection in: query name: share_code schema: type: string - 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: 150 default: 100 responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/CollectionItemDataList' examples: response: value: data: - id: '38162050' added_time: '2016-11-25T16:44:25-05:00' - id: '38139676' added_time: '2016-11-25T16:44:22-05:00' - id: '787905' added_time: '2016-11-25T16:44:19-05:00' - id: '826197' added_time: '2016-11-25T16:44:16-05:00' - id: '38124508' added_time: '2016-11-25T16:44:14-05:00' - id: '126445388' added_time: '2016-11-25T16:44:02-05:00' '400': description: Bad Request '401': description: Unauthorized '403': description: Forbidden security: - customer_accessCode: - collections.view tags: - images operationId: getLightboxItems summary: Get the contents of image collections description: This endpoint lists the IDs of images in a collection and the date that each was added. delete: parameters: - description: Collection ID in: path name: id required: true example: '126351027' schema: type: string - description: One or more image IDs to remove from the collection in: query name: item_id schema: type: array items: type: string responses: '200': description: No response was specified '204': description: Successfully removed collection items '400': description: Bad Request '401': description: Unauthorized '403': description: Forbidden security: - customer_accessCode: - collections.edit x-code-samples: - lang: shell source: 'curl -X DELETE https://api.shutterstock.com/v2/images/collections/186726599/items?item_id=495863218 \ -H "Accept: application/json" \ -H "Authorization: Bearer $SHUTTERSTOCK_API_TOKEN"' - 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 collectionId = \"126351027\"; // Collection ID\n\n// Array of\ \ images to remove\nconst imagesToRemove = {\n \"item_id\": [\n \"495863218\"\n ]\n};\n\nimagesApi.deleteLightboxItems(collectionId,\ \ imagesToRemove)\n .catch((error) => {\n console.error(error);\n });\n" - lang: php source: "$options = [\n CURLOPT_URL => \"https://api.shutterstock.com/v2/images/collections/126351027/items?item_id=495863218\"\ ,\n CURLOPT_USERAGENT => \"php/curl\",\n CURLOPT_CUSTOMREQUEST => \"DELETE\",\n CURLOPT_HTTPHEADER => [\n \ \ \"Authorization: Bearer $SHUTTERSTOCK_API_TOKEN\"\n ],\n CURLOPT_RETURNTRANSFER => 1\n];\n\n$handle = curl_init();\n\ curl_setopt_array($handle, $options);\n$response = curl_exec($handle);\ncurl_close($handle);\n\n$decodedResponse\ \ = json_decode($response);\nprint_r($decodedResponse);" tags: - images operationId: deleteLightboxItems summary: Remove images from collections description: This endpoint removes one or more images from a collection. /v2/images/collections/featured: get: parameters: - description: Which sharing information to include in the response, such as a URL to the collection in: query name: embed example: share_url schema: type: string enum: - share_url - description: The types of collections to return in: query name: type example: photo schema: type: array items: enum: - photo - editorial - vector type: string - description: Cover image size in: query name: asset_hint example: share_url schema: type: string enum: - 1x - 2x default: 1x responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/FeaturedCollectionDataList' examples: response: value: data: - total_item_count: 50 items_updated_time: '2018-01-30T09:49:22-05:00' name: Flower Still Lifes id: '73497710' created_time: '2018-03-06T19:19:02.000Z' updated_time: '2018-03-06T21:28:06.000Z' cover_item: url: https://ak.picdn.net/assets/cms/ecedf10e57824db9516560f7523f084b445c1672-shutterstock_104947832.jpg share_url: http://www.shutterstock.com/collections/73497710-flower-still-lifes.html - total_item_count: 100 items_updated_time: '2016-05-18T10:49:02-04:00' name: Feeling Down id: '45566855' created_time: '2018-03-06T18:54:19.000Z' updated_time: '2018-03-07T13:58:21.000Z' cover_item: url: https://ak.picdn.net/assets/cms/3aa67c2b92c7cead79da08b955f409269553fade-shutterstock_343681901.jpg share_url: http://www.shutterstock.com/collections/45566855-feeling-down.html '400': description: Bad Request '401': description: Unauthorized '403': description: Forbidden security: - basic: [] - customer_accessCode: [] tags: - images operationId: getFeaturedLightboxList summary: List featured image collections description: This endpoint lists featured collections of specific types and a name and cover image for each collection. /v2/images/collections/featured/{id}: get: parameters: - description: Collection ID in: path name: id required: true example: '136351027' schema: type: string - description: Which sharing information to include in the response, such as a URL to the collection in: query name: embed schema: type: string enum: - share_url - description: Cover image size in: query name: asset_hint schema: type: string enum: - 1x - 2x default: 1x responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/FeaturedCollection' examples: response: value: total_item_count: 100 items_updated_time: '2016-05-18T10:49:02-04:00' name: Feeling Down id: '136351027' created_time: '2018-03-06T18:54:19.000Z' updated_time: '2018-03-07T13:58:21.000Z' cover_item: url: https://ak.picdn.net/assets/cms/3aa67c2b92c7ceadd79da08b95d5f409269553fade-shutterstock_343681901.jpg '400': description: Bad Request '401': description: Unauthorized '403': description: Forbidden '404': description: Featured collection not found security: - basic: [] - customer_accessCode: [] tags: - images operationId: getFeaturedLightbox summary: Get the details of featured image collections description: 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`. /v2/images/collections/featured/{id}/items: get: parameters: - description: Collection ID in: path name: id required: true example: '136351027' schema: type: string - 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: 150 default: 100 responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/CollectionItemDataList' examples: response: value: data: - id: '2931777093' added_time: '2016-05-18T10:49:02-04:00' - id: '4101383321' added_time: '2016-05-18T10:39:06-04:00' - id: '1821077001' added_time: '2016-05-18T10:31:04-04:00' - id: '3451984902' added_time: '2016-05-18T10:21:54-04:00' '400': description: Bad Request '401': description: Unauthorized '403': description: Forbidden '404': description: Featured collection not found security: - basic: [] - customer_accessCode: [] tags: - images operationId: getFeaturedLightboxItems summary: Get the contents of featured image collections description: This endpoint lists the IDs of images in a featured collection and the date that each was added. /v2/images/updated: get: parameters: - in: query name: type description: Show images that were added, deleted, or edited; by default, the endpoint returns images that were updated in any of these ways schema: type: array items: type: string enum: - addition - deletion - edit - in: query name: start_date description: Show images updated on or after the specified date schema: type: string format: date - in: query name: end_date description: Show images updated before the specified date schema: type: string format: date - in: query name: interval description: 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 schema: type: string default: 1 HOUR - in: query name: page description: Page number schema: type: integer default: 1 minimum: 1 - in: query name: per_page description: Number of results per page schema: type: integer default: 100 maximum: 2000 minimum: 1 - in: query name: sort description: Sort order schema: type: string default: newest enum: - newest - oldest responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/UpdatedMediaDataList' examples: response: value: data: - id: '1398917399' updated_time: '2019-06-04T15:56:44-04:00' updates: - edit - id: '1398978491' updated_time: '2019-06-04T15:56:44-04:00' updates: - edit - id: '1414537214' updated_time: '2019-06-04T15:56:44-04:00' updates: - edit x-code-samples: - lang: shell source: 'curl -X GET https://api.shutterstock.com/v2/images/updated \ -H "Accept: application/json" \ -H "Authorization: Bearer $SHUTTERSTOCK_API_TOKEN" \ -G \ --data-urlencode "interval=30 MINUTE" ' - 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 queryParams = {\n \"interval\": \"30 MINUTE\"\n};\n\nimagesApi.getUpdatedImages(queryParams)\n\ \ .then(({ data }) => {\n console.log(data);\n })\n .catch((error) => {\n console.error(error);\n });\n" - lang: php source: "$queryFields = [\n \"interval\" => \"30 MINUTE\"\n];\n\n$options = [\n CURLOPT_URL => \"https://api.shutterstock.com/v2/images/updated?\"\ \ . http_build_query($queryFields),\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,\ \ $options);\n$response = curl_exec($handle);\ncurl_close($handle);\n\n$decodedResponse = json_decode($response);\n\ print_r($decodedResponse);\n" security: - basic: [] - customer_accessCode: [] tags: - images operationId: getUpdatedImages summary: List updated images description: 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`. /v2/videos/search: get: parameters: - description: Show videos added on the specified date in: query name: added_date schema: type: string format: date - description: Show videos added on or after the specified date in: query name: added_date_start schema: type: string format: date - description: Show videos added before the specified date in: query name: added_date_end schema: type: string format: date - description: Show videos with the specified aspect ratio in: query name: aspect_ratio schema: type: string enum: - '4_3' - '16_9' - nonstandard - description: Show videos with the specified Shutterstock-defined category; specify a category name or ID in: query name: category schema: type: string - description: Show videos with the specified artist names or IDs in: query name: contributor schema: type: array items: type: string - description: Show videos from contributors in one or more specified countries in: query name: contributor_country example: US schema: type: array items: type: string format: country-code-2 - description: (Deprecated; use duration_from and duration_to instead) Show videos with the specified duration in seconds in: query name: duration deprecated: true schema: type: integer - description: Show videos with the specified duration or longer in seconds in: query name: duration_from schema: type: integer - description: Show videos with the specified duration or shorter in seconds in: query name: duration_to schema: type: integer - description: (Deprecated; use fps_from and fps_to instead) Show videos with the specified frames per second in: query name: fps deprecated: true schema: type: number - description: Show videos with the specified frames per second or more in: query name: fps_from schema: type: number - description: Show videos with the specified frames per second or fewer in: query name: fps_to schema: type: number - description: Hide results with potentially unsafe keywords in: query name: keyword_safe_search schema: type: boolean default: true - description: Set query and result language (uses Accept-Language header if not set) in: query name: language schema: $ref: '#/components/schemas/Language' - description: Show only videos with the specified license or licenses in: query name: license explode: true example: - commercial - editorial schema: type: array items: default: commercial enum: - commercial - editorial type: string - description: Show videos with each of the specified models in: query name: model example: - '442583' - '434750' explode: true schema: type: array items: type: string - 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: 0 maximum: 500 default: 20 - description: Show videos that feature people of the specified age range in: query name: people_age schema: type: string enum: - infants - children - teenagers - 20s - 30s - 40s - 50s - 60s - older - description: Show videos with people of the specified ethnicities in: query name: people_ethnicity schema: type: array items: enum: - african - african_american - black - brazilian - chinese - caucasian - east_asian - hispanic - japanese - middle_eastern - native_american - pacific_islander - south_asian - southeast_asian - other type: string - description: Show videos with people with the specified gender in: query name: people_gender schema: type: string enum: - male - female - both - description: Show videos with the specified number of people in: query name: people_number schema: type: integer minimum: 0 maximum: 4 - description: Show only videos of people with a signed model release in: query name: people_model_released schema: type: boolean - description: One or more search terms separated by spaces; you can use NOT to filter out videos that match a term in: query name: query schema: type: string - description: Show videos with the specified resolution in: query name: resolution schema: type: string enum: - 4k - standard_definition - high_definition - description: Enable or disable safe search in: query name: safe schema: type: boolean default: true - description: Sort by one of these categories in: query name: sort schema: type: string enum: - newest - popular - relevance - random default: popular - 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: 9488747 search_id: 4LseqIiX-nIW7_vx8-jhWQ 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 has_model_release: false 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 '404': description: Not found security: - basic: [] - customer_accessCode: [] tags: - videos x-code-samples: - lang: shell source: 'curl -X GET "https://api.shutterstock.com/v2/videos/search" \ --header "Authorization: Bearer $SHUTTERSTOCK_API_TOKEN" \ -G \ --data-urlencode "query=hot air balloon" \ --data-urlencode "duration_from=30" \ --data-urlencode "sort=popular" ' - lang: javascript--nodejs source: "const sstk = require(\"shutterstock-api\");\n\nsstk.setAccessToken(process.env.SHUTTERSTOCK_API_TOKEN);\n\ \nconst videosApi = new sstk.VideosApi();\n\nconst queryParams = {\n \"query\": \"hot air balloon\",\n \"duration_from\"\ : 30,\n \"sort\": \"popular\"\n};\n\nvideosApi.searchVideos(queryParams)\n .then((data) => {\n console.log(data);\n\ \ })\n .catch((error) => {\n console.error(error);\n });\n" - lang: php source: "$queryFields = [\n \"query\" => \"hot air balloon\",\n \"duration_from\" => 30,\n \"sort\" => \"popular\"\ \n];\n\n$options = [\n CURLOPT_URL => \"https://api.shutterstock.com/v2/videos/search?\" . http_build_query($queryFields),\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, $options);\n$response\ \ = curl_exec($handle);\ncurl_close($handle);\n\n$decodedResponse = json_decode($response);\nprint_r($decodedResponse);\n" operationId: searchVideos summary: Search for videos description: 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. /v2/videos/search/suggestions: get: parameters: - description: Search term for which you want keyword suggestions in: query name: query required: true example: cats schema: type: string - description: Limit the number of the suggestions in: query name: limit schema: type: integer default: 10 minimum: 1 maximum: 25 responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/Suggestions' '400': description: Bad Request '401': description: Unauthorized '403': description: Forbidden security: - basic: [] - customer_accessCode: [] tags: - videos operationId: getVideoSuggestions summary: Get suggestions for a search term description: This endpoint provides autocomplete suggestions for partial search terms. /v2/videos: get: parameters: - description: One or more video IDs in: query name: id required: true example: - '639703' - '993721' schema: type: array items: type: string - 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/VideoDataList' examples: response: value: data: - media_type: video id: '639703' description: A family of African Forest Elephants play in the mud in the jungle of the Congo River basin. aspect: 1.481 duration: 11 has_model_release: false contributor: id: '335419' aspect_ratio: '3:2' assets: thumb_webm: url: https://ak3.picdn.net/shutterstock/videos/639703/thumb/stock-footage-a-family-of-african-forest-elephants-play-in-the-mud-in-the-jungle-of-the-congo-river-basin.webm thumb_mp4: url: https://ak3.picdn.net/shutterstock/videos/639703/thumb/stock-footage-a-family-of-african-forest-elephants-play-in-the-mud-in-the-jungle-of-the-congo-river-basin.mp4 preview_webm: url: https://ak3.picdn.net/shutterstock/videos/639703/preview/stock-footage-a-family-of-african-forest-elephants-play-in-the-mud-in-the-jungle-of-the-congo-river-basin.webm preview_mp4: url: https://ak3.picdn.net/shutterstock/videos/639703/preview/stock-footage-a-family-of-african-forest-elephants-play-in-the-mud-in-the-jungle-of-the-congo-river-basin.mp4 thumb_jpg: url: https://ak3.picdn.net/shutterstock/videos/639703/thumb/1.jpg preview_jpg: url: https://ak3.picdn.net/shutterstock/videos/639703/thumb/1.jpg url: https://www.shutterstock.com/video/clip-639703 '400': description: Bad Request '401': description: Unauthorized '403': description: Forbidden security: - basic: [] - customer_accessCode: [] tags: - videos operationId: getVideoList summary: List videos description: This endpoint lists information about one or more videos, including the aspect ratio and URLs to previews. /v2/videos/{id}: get: parameters: - description: Video ID in: path name: id required: true example: '30867073' schema: type: string - description: Language for the keywords and categories in the response in: query name: language example: es schema: $ref: '#/components/schemas/Language' - description: Amount of detail to render in the response in: query name: view schema: type: string enum: - minimal - full default: full responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/Video' examples: response: value: media_type: video id: '30867073' description: Fans cheering for sports team on the bleachers of a professional stadium aspect: 1.896 duration: 19 categories: - name: People id: '13' - name: Sports/Recreation id: '18' keywords: - 4k resolution - adult - adults only - american football - sport - applauding - arms raised has_model_release: true has_property_release: true models: - id: '22793203' contributor: id: '907171' is_adult: false aspect_ratio: 1.90:1 added_date: '2017-09-18' assets: thumb_webm: url: https://ak3.picdn.net/shutterstock/videos/30867073/thumb/stock-footage-fans-cheering-for-sports-team-on-the-bleachers-of-a-professional-stadium.webm thumb_mp4: url: https://ak3.picdn.net/shutterstock/videos/30867073/thumb/stock-footage-fans-cheering-for-sports-team-on-the-bleachers-of-a-professional-stadium.mp4 preview_webm: url: https://ak3.picdn.net/shutterstock/videos/30867073/preview/stock-footage-fans-cheering-for-sports-team-on-the-bleachers-of-a-professional-stadium.webm preview_mp4: url: https://ak3.picdn.net/shutterstock/videos/30867073/preview/stock-footage-fans-cheering-for-sports-team-on-the-bleachers-of-a-professional-stadium.mp4 thumb_jpgs: urls: - https://ak3.picdn.net/shutterstock/videos/30867073/thumb/1.jpg - https://ak3.picdn.net/shutterstock/videos/30867073/thumb/2.jpg - https://ak3.picdn.net/shutterstock/videos/30867073/thumb/3.jpg - https://ak3.picdn.net/shutterstock/videos/30867073/thumb/12.jpg thumb_jpg: url: https://ak3.picdn.net/shutterstock/videos/30867073/thumb/1.jpg preview_jpg: url: https://ak3.picdn.net/shutterstock/videos/30867073/thumb/1.jpg sd: height: 480 width: 910 fps: 25 format: mov file_size: 18221056 display_name: Standard Definition MPEG is_licensable: true hd: height: 1080 width: 2046 fps: 25 format: mov file_size: 92101632 display_name: HD MPEG is_licensable: true web: height: 240 width: 454 fps: 25 format: mov file_size: 6441984 display_name: Low Resolution MPEG is_licensable: true 4k: height: 2160 width: 4096 fps: 25 format: apch file_size: 1859655680 display_name: Original UltraHD 4K is_licensable: true url: https://www.shutterstock.com/video/clip-30867073 '400': description: Bad Request '401': description: Unauthorized '403': description: Forbidden '404': description: Not found security: - basic: [] - customer_accessCode: [] tags: - videos operationId: getVideo summary: Get details about videos description: This endpoint shows information about a video, including URLs to previews and the sizes that it is available in. /v2/videos/licenses: post: parameters: - description: The subscription ID to use for licensing in: query name: subscription_id schema: type: string - description: The size of the video to license in: query name: size schema: type: string enum: - web - sd - hd - 4k default: web - description: The Search ID that led to this licensing event in: query name: search_id schema: type: string responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/LicenseVideoResultDataList' examples: response: value: data: - video_id: '2140697' download: url: https://download.shutterstock.com/gatekeeper/W3siZSI6MTQ5NzAyNjU1MiwiayI6InZpZGVvLzIxNDA2OTcvc2QubW92IiwibSI6IjEiLCJkIjoic2h1dHRlcnN0b2NrLW1lZGlhIn0sInVsOFY1dElzb3lWZHNxb3JyWlJjS1dyb016TSJd/shutterstock_v2140697.mov allotment_charge: 1 '400': description: Bad Request '401': description: Unauthorized '403': description: Forbidden security: - customer_accessCode: - licenses.create - purchases.view tags: - videos x-code-samples: - lang: shell source: "DATA='{\n \"videos\": [\n {\n \"video_id\": \"2140697\",\n \"size\": \"hd\"\n },\n {\n\ \ \"video_id\": \"5613314\",\n \"size\": \"4k\"\n }\n ]\n}'\n\ncurl -X POST 'https://api.shutterstock.com/v2/videos/licenses?subscription_id='$SUBSCRIPTION_ID\ \ \\\n-d \"$DATA\" \\\n-H \"Content-Type: application/json\" \\\n-H \"Accept: application/json\" \\\n-H \"Authorization:\ \ Bearer $SHUTTERSTOCK_API_TOKEN\"\n" - lang: javascript--nodejs source: "const sstk = require(\"shutterstock-api\");\n\nsstk.setAccessToken(process.env.SHUTTERSTOCK_API_TOKEN);\n\ \nconst videosApi = new sstk.VideosApi();\n\nconst body = {\n \"videos\": [\n {\n \"video_id\": \"419235589\"\ \n },\n {\n \"video_id\": \"1079756147\"\n }\n ]\n};\n\nconst queryParams = {\n \"subscription_id\"\ : SHUTTERSTOCK_SUBSCRIPTION_ID,\n \"size\": \"web\"\n};\n\nvideosApi.searchVideos(body, queryParams)\n .then(({\ \ data }) => {\n console.log(data);\n })\n .catch((error) => {\n console.error(error);\n });\n" - lang: php source: "$body = [\n \"videos\" => [\n [\n \"video_id\" => \"2140697\",\n \"size\" => \"hd\"\n ],\n\ \ [\n \"video_id\" => \"5613314\",\n \"size\" => \"4k\"\n ]\n ]\n];\n$encodedBody = json_encode($body);\n\ \n$options = [\n CURLOPT_URL => \"https://api.shutterstock.com/v2/videos/licenses?subscription_id=$SUBSCRIPTION_ID\"\ ,\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: licenseVideos summary: License videos description: This endpoint gets licenses for one or more videos. You must specify the video IDs in the body parameter and the size and subscription ID either in the query parameter or with each video ID in the body parameter. Values in the body parameter override values in the query parameters. requestBody: content: application/json: schema: $ref: '#/components/schemas/LicenseVideoRequest' examples: default: value: videos: - video_id: '2140697' size: hd subscription_id: s8906043 - video_id: '5613314' size: 4k subscription_id: s8241443 description: List of videos to request licenses for and information about each license transaction; these values override the defaults in the query parameters required: true get: parameters: - description: Show licenses for the specified video ID in: query name: video_id schema: type: string - description: Show videos that are available with the specified license, such as `standard` or `enhanced`; prepending a `-` sign excludes results from that license in: query name: license schema: type: string - 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: 200 default: 20 - description: Sort by oldest or newest videos first in: query name: sort schema: type: string enum: - newest - oldest default: newest - description: Filter licenses by username of licensee in: query name: username schema: type: string - name: start_date in: query description: Show licenses created on or after the specified date schema: type: string format: date-time example: 2020-02-02T13:00-05:00 - name: end_date in: query description: Show licenses created before the specified date schema: type: string format: date-time example: 2020-02-02T13:00-05:00 responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/DownloadHistoryDataList' examples: response: value: data: - id: e121 user: username: myusername license: footage_premier subscription_id: s8907043 download_time: '2018-05-24T14:26:25-04:00' metadata: customer_id: '12345' geo_location: US number_viewed: '15' search_term: dog video: id: '2140697' format: size: sd - id: e122 user: username: myusername license: footage_premier subscription_id: s8907043 download_time: '2018-05-23T10:10:24-04:00' metadata: customer_id: '12345' geo_location: US number_viewed: '15' search_term: dog video: id: '2140697' format: size: sd - id: e123 user: username: myusername license: footage_premier subscription_id: s8907043 download_time: '2018-05-22T07:51:17-04:00' metadata: customer_id: '12345' geo_location: US number_viewed: '15' search_term: dog video: id: '2140697' format: size: sd - id: e124 user: username: myusername license: footage_premier subscription_id: s8907043 download_time: '2018-05-21T12:01:07-04:00' metadata: customer_id: '12345' geo_location: US number_viewed: '15' search_term: dog video: id: '2140697' format: size: sd - id: e125 user: username: myusername license: footage_premier subscription_id: s8907043 download_time: '2018-05-21T11:59:43-04:00' metadata: customer_id: '12345' geo_location: US number_viewed: '15' search_term: dog video: id: '2140697' format: size: sd - id: e126 user: username: myusername license: footage_premier subscription_id: s8907043 download_time: '2018-05-15T10:53:10-04:00' metadata: customer_id: '12345' geo_location: US number_viewed: '15' search_term: dog video: id: '2140697' format: size: sd - id: e127 user: username: myusername license: footage_premier subscription_id: s8907043 download_time: '2018-05-14T23:31:59-04:00' metadata: customer_id: '12345' geo_location: US number_viewed: '15' search_term: dog video: id: '2140697' format: size: sd - id: e128 user: username: myusername license: footage_premier subscription_id: s8907043 download_time: '2018-05-14T12:52:40-04:00' metadata: customer_id: '12345' geo_location: US number_viewed: '15' search_term: dog video: id: '2140697' format: size: sd - id: e129 user: username: myusername license: footage_premier subscription_id: s8907043 download_time: '2018-05-10T15:38:20-04:00' metadata: customer_id: '12345' geo_location: US number_viewed: '15' search_term: dog video: id: '2140697' format: size: sd - id: e130 user: username: myusername license: footage_premier subscription_id: s8907043 download_time: '2018-05-10T15:24:28-04:00' metadata: customer_id: '12345' geo_location: US number_viewed: '15' search_term: dog video: id: '2140697' format: size: sd page: 1 per_page: 20 '400': description: Bad Request '401': description: Unauthorized '403': description: Forbidden security: - customer_accessCode: - licenses.view tags: - videos operationId: getVideoLicenseList summary: List video licenses description: This endpoint lists existing licenses. /v2/videos/licenses/{id}/downloads: post: parameters: - description: The license ID of the item to (re)download in: path name: id required: true example: e123 schema: type: string responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/Url' examples: response: value: url: https://download1.shutterstock.com/gatekeeper/W3siZSI6MTUzMzMzMzUzMCwiayI6InZpZGVvLzM5NjU4ODEvaGQubW92IiwibSI6MSwiZCI6InNodXR0ZXJzdG9jay1tZWRpYSJ9LCJjZ2lvRU14T09hNWZGTHZsN21iTWVPRVQ3MFEiXQ/shutterstock_v3965881.mov '400': description: Bad Request '401': description: Unauthorized '403': description: Forbidden security: - customer_accessCode: - licenses.view x-code-samples: - lang: shell source: 'DATA=''{}'' curl -X POST https://api.shutterstock.com/v2/videos/licenses/e123/downloads \ -d "$DATA" \ -H "Content-Type: application/json" \ -H "Accept: application/json" \ -H "Authorization: Bearer $SHUTTERSTOCK_API_TOKEN" ' - lang: javascript--nodejs source: "const sstk = require(\"shutterstock-api\");\n\nsstk.setAccessToken(process.env.SHUTTERSTOCK_API_TOKEN);\n\ \nconst videosApi = new sstk.VideosApi();\n\nconst licenseId = \"e123\";\n\nconst body = {};\n\nvideosApi.downloadVideos(licenseId,\ \ body)\n .then((data) => {\n console.log(data);\n })\n .catch((error) => {\n console.error(error);\n \ \ });\n" - lang: php source: "$body = [];\n$encodedBody = json_encode($body);\n\n$options = [\n CURLOPT_URL => \"https://api.shutterstock.com/v2/videos/licenses/e123/downloads\"\ ,\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" tags: - videos operationId: downloadVideos summary: Download videos description: This endpoint redownloads videos that you have already received a license for. requestBody: content: application/json: schema: $ref: '#/components/schemas/RedownloadVideo' examples: default: value: {} description: Information about the videos to redownload required: true /v2/videos/collections: post: responses: '200': description: No response was specified content: application/json: schema: $ref: '#/components/schemas/CollectionCreateResponse' '201': description: Successfully created collection content: application/json: schema: $ref: '#/components/schemas/CollectionCreateResponse' examples: response: value: id: '10120264' '400': description: Bad Request '401': description: Unauthorized '403': description: Forbidden security: - customer_accessCode: - collections.edit x-code-samples: - lang: shell source: "DATA='{\n \"name\": \"New collection name\"\n}'\n\ncurl -X POST https://api.shutterstock.com/v2/videos/collections\ \ \\\n-d \"$DATA\" \\\n-H \"Content-Type: application/json\" \\\n-H \"Accept: application/json\" \\\n-H \"Authorization:\ \ Bearer $SHUTTERSTOCK_API_TOKEN\"" - lang: javascript--nodejs source: "const sstk = require(\"shutterstock-api\");\n\nsstk.setAccessToken(process.env.SHUTTERSTOCK_API_TOKEN);\n\ \nconst videosApi = new sstk.VideosApi();\n\nconst body = {\n \"name\": \"New collection name\"\n};\n\nvideosApi.createClipbox(body)\n\ \ .catch((error) => {\n console.error(error);\n });\n" - lang: php source: "$body = [\n \"name\" => \"New collection name\"\n];\n$encodedBody = json_encode($body);\n\n$options = [\n\ \ CURLOPT_URL => \"https://api.shutterstock.com/v2/videos/collections\",\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);" tags: - videos operationId: createClipbox summary: Create video collections description: This endpoint creates one or more collections (clipboxes). To add videos to collections, use `POST /v2/videos/collections/{id}/items`. requestBody: content: application/json: schema: $ref: '#/components/schemas/CollectionCreateRequest' examples: default: value: name: New collection name description: Collection metadata required: true get: parameters: - 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: 150 default: 100 responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/CollectionDataList' examples: response: value: data: - name: kittens and puppies updated_time: '2017-07-05T08:51:00-04:00' id: '17553374' total_item_count: 0 created_time: '2017-07-05T08:51:00-04:00' - name: wild life updated_time: '2017-07-05T08:51:00-04:00' id: '17553375' total_item_count: 0 created_time: '2017-07-05T08:51:00-04:00' - name: young couples updated_time: '2017-07-06T08:50:57-04:00' id: '17555175' total_item_count: 2 created_time: '2017-07-06T08:50:57-04:00' - name: sky timelapses updated_time: '2017-07-06T08:50:58-04:00' id: '17555176' total_item_count: 2 created_time: '2017-07-06T08:50:58-04:00' '400': description: Bad Request '401': description: Unauthorized '403': description: Forbidden security: - customer_accessCode: - collections.view tags: - videos operationId: getClipboxList summary: List video collections description: This endpoint lists your collections of videos and their basic attributes. /v2/videos/collections/{id}: get: parameters: - description: The ID of the collection to return in: path name: id required: true example: '17555176' schema: type: string responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/Collection' examples: response: value: name: cats and dogs updated_time: '2017-07-05T08:51:00-04:00' id: '17555176' total_item_count: '0' '400': description: Bad Request '401': description: Unauthorized '403': description: Forbidden security: - customer_accessCode: - collections.view tags: - videos operationId: getClipbox summary: Get the details of video collections description: 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. post: parameters: - description: The ID of the collection to rename in: path name: id required: true example: '17555176' schema: type: string responses: '200': description: No response was specified '204': description: Successfully updated collection '400': description: Bad Request '401': description: Unauthorized '403': description: Forbidden security: - customer_accessCode: - collections.edit x-code-samples: - lang: shell source: "DATA='{\n \"name\": \"Updated collection name\"\n}'\n\ncurl -X POST https://api.shutterstock.com/v2/videos/collections/17555176\ \ \\\n-d \"$DATA\" \\\n-H \"Content-Type: application/json\" \\\n-H \"Accept: application/json\" \\\n-H \"Authorization:\ \ Bearer $SHUTTERSTOCK_API_TOKEN\"" - lang: javascript--nodejs source: "const sstk = require(\"shutterstock-api\");\n\nsstk.setAccessToken(process.env.SHUTTERSTOCK_API_TOKEN);\n\ \nconst videosApi = new sstk.VideosApi();\n\nconst collectionId = \"186765119\";\n\nconst body = {\n \"name\":\ \ \"My new collection name\"\n};\n\nvideosApi.renameClipbox(collectionId, body)\n .catch((error) => {\n console.error(error);\n\ \ });\n" - lang: php source: "$body = [\n \"name\" => \"Updated collection name\"\n];\n$encodedBody = json_encode($body);\n\n$options\ \ = [\n CURLOPT_URL => \"https://api.shutterstock.com/v2/videos/collections/17555176\",\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);" tags: - videos operationId: renameClipbox summary: Rename video collections description: This endpoint sets a new name for a collection. requestBody: content: application/json: schema: $ref: '#/components/schemas/CollectionUpdateRequest' examples: default: value: name: Updated collection name description: The new name for the collection required: true delete: parameters: - description: The ID of the collection to delete in: path name: id required: true example: '17555176' schema: type: string responses: '200': description: No response was specified '204': description: Successfully deleted collection '400': description: Bad Request '401': description: Unauthorized '403': description: Forbidden security: - customer_accessCode: - collections.edit x-code-samples: - lang: shell source: 'curl -X DELETE https://api.shutterstock.com/v2/videos/collections/17555176 \ -H "Accept: application/json" \ -H "Authorization: Bearer $SHUTTERSTOCK_API_TOKEN"' - lang: javascript--nodejs source: "const sstk = require(\"shutterstock-api\");\n\nsstk.setAccessToken(process.env.SHUTTERSTOCK_API_TOKEN);\n\ \nconst videosApi = new sstk.VideosApi();\n\nconst collectionId = \"17555176\";\n\nvideosApi.deleteClipbox(collectionId)\n\ \ .catch((error) => {\n console.error(error);\n });\n" - lang: php source: "$options = [\n CURLOPT_URL => \"https://api.shutterstock.com/v2/videos/collections/17555176\",\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, $options);\n$response = curl_exec($handle);\ncurl_close($handle);\n\ \n$decodedResponse = json_decode($response);\nprint_r($decodedResponse);" tags: - videos operationId: deleteClipbox summary: Delete video collections description: This endpoint deletes a collection. /v2/videos/categories: get: parameters: - description: Language for the keywords and categories in the response in: query name: language example: es schema: $ref: '#/components/schemas/Language' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/CategoryDataList' examples: response: value: data: - id: '1' name: Animals/Wildlife - id: '2' name: Buildings/Landmarks - id: '3' name: Backgrounds/Textures - id: '4' name: Business/Finance - id: '5' name: Education '400': description: Bad Request '401': description: Unauthorized '403': description: Forbidden security: - basic: [] - customer_accessCode: [] tags: - videos operationId: getVideoCategories summary: List video categories description: This endpoint lists the categories (Shutterstock-assigned genres) that videos can belong to. /v2/videos/collections/{id}/items: post: parameters: - description: The ID of the collection to which items should be added in: path name: id required: true example: '17555176' schema: type: string responses: '200': description: No response was specified '204': description: Successfully added collection items '400': description: Bad Request '401': description: Unauthorized '403': description: Forbidden security: - customer_accessCode: - collections.edit x-code-samples: - lang: shell source: "DATA='{\n \"items\": [\n {\n \"id\": \"10120264\"\n },\n {\n \"id\": \"24419024\"\n \ \ }\n ]\n}'\n\ncurl -X POST https://api.shutterstock.com/v2/videos/collections/17555176/items \\\n-d \"$DATA\"\ \ \\\n-H \"Content-Type: application/json\" \\\n-H \"Accept: application/json\" \\\n-H \"Authorization: Bearer $SHUTTERSTOCK_API_TOKEN\"" - lang: javascript--nodejs source: "const sstk = require(\"shutterstock-api\");\n\nsstk.setAccessToken(process.env.SHUTTERSTOCK_API_TOKEN);\n\ \nconst videosApi = new sstk.VideosApi();\n\nconst collectionId = \"17555176\"; // Collection ID\n\n// Array of\ \ videos to add\nconst body = {\n \"items\": [\n {\n \"id\": \"10120264\",\n \"media_type\": \"video\"\ \n }\n ]\n};\n\nvideosApi.addLightboxItems(collectionId, body)\n .catch((error) => {\n console.error(error);\n\ \ });\n" - lang: php source: "$body = [\n \"items\" => [\n [\n \"id\" => \"10120264\"\n ],\n [\n \"id\" => \"24419024\"\ \n ]\n ]\n];\n$encodedBody = json_encode($body);\n\n$options = [\n CURLOPT_URL => \"https://api.shutterstock.com/v2/videos/collections/17555176/items\"\ ,\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);" tags: - videos operationId: addClipboxItems summary: Add videos to collections description: This endpoint adds one or more videos to a collection by video IDs. requestBody: content: application/json: schema: $ref: '#/components/schemas/CollectionItemRequest' examples: default: value: items: - id: '10120264' - id: '24419024' description: Array of video IDs to add to the collection required: true get: parameters: - description: The ID of the Collection whose items are to be returned in: path name: id required: true example: '17555176' schema: type: string - 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: 150 default: 100 - description: Sort order in: query name: sort schema: type: string enum: - newest - oldest default: oldest responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/CollectionItemDataList' examples: response: value: data: - added_time: '2017-07-06T14:33:42-04:00' id: '123123' media_type: video - added_time: '2017-07-06T14:33:42-04:00' id: '654654' media_type: video page: 1 per_page: 100 '400': description: Bad Request '401': description: Unauthorized '403': description: Forbidden security: - customer_accessCode: - collections.view tags: - videos operationId: getClipboxItems summary: Get the contents of video collections description: This endpoint lists the IDs of videos in a collection and the date that each was added. delete: parameters: - description: The ID of the Collection from which items will be deleted in: path name: id required: true example: '17555176' schema: type: string - description: One or more video IDs to remove from the collection in: query name: item_id schema: type: array items: type: string responses: '200': description: No response was specified '204': description: Successfully removed collection items '400': description: Bad Request '401': description: Unauthorized '403': description: Forbidden security: - customer_accessCode: - collections.edit x-code-samples: - lang: shell source: 'curl -X DELETE https://api.shutterstock.com/v2/videos/collections/17555176/items \ -H "Accept: application/json" \ -H "Authorization: Bearer $SHUTTERSTOCK_API_TOKEN"' - lang: javascript--nodejs source: "const sstk = require(\"shutterstock-api\");\n\nsstk.setAccessToken(process.env.SHUTTERSTOCK_API_TOKEN);\n\ \nconst videosApi = new sstk.VideosApi();\n\nconst collectionId = \"17555176\";\n\n// Array of videos to remove\n\ const videosToRemove = {\n \"item_id\": [\n \"10120264\"\n ]\n};\n\nvideosApi.deleteClipboxItems(collectionId,\ \ videosToRemove)\n .catch((error) => {\n console.error(error);\n });\n" - lang: php source: "$options = [\n CURLOPT_URL => \"https://api.shutterstock.com/v2/videos/collections/17555176/items\",\n \ \ CURLOPT_USERAGENT => \"php/curl\",\n CURLOPT_CUSTOMREQUEST => \"DELETE\",\n CURLOPT_HTTPHEADER => [\n \"\ Authorization: Bearer $SHUTTERSTOCK_API_TOKEN\"\n ],\n CURLOPT_RETURNTRANSFER => 1\n];\n\n$handle = curl_init();\n\ curl_setopt_array($handle, $options);\n$response = curl_exec($handle);\ncurl_close($handle);\n\n$decodedResponse\ \ = json_decode($response);\nprint_r($decodedResponse);" tags: - videos operationId: deleteClipboxItems summary: Remove videos from collections description: This endpoint removes one or more videos from a collection. /v2/videos/{id}/similar: get: parameters: - description: The ID of a video for which similar videos should be returned in: path name: id required: true example: '2140697' schema: type: string - 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: '6658088' description: Caucasian parents wearing casual clothes standing watching ocean waves summer daughters carrying bodyboards surfboards slow motion aspect: 1.778 duration: 23 contributor: id: '87721' aspect_ratio: '16:9' assets: thumb_webm: url: https://ak8.picdn.net/shutterstock/videos/6658088/thumb/stock-footage-caucasian-parents-wearing-casual-clothes-standing-watching-ocean-waves-summer-daughters-carrying.webm thumb_mp4: url: https://ak8.picdn.net/shutterstock/videos/6658088/thumb/stock-footage-caucasian-parents-wearing-casual-clothes-standing-watching-ocean-waves-summer-daughters-carrying.mp4 preview_webm: url: https://ak8.picdn.net/shutterstock/videos/6658088/preview/stock-footage-caucasian-parents-wearing-casual-clothes-standing-watching-ocean-waves-summer-daughters-carrying.webm preview_mp4: url: https://ak8.picdn.net/shutterstock/videos/6658088/preview/stock-footage-caucasian-parents-wearing-casual-clothes-standing-watching-ocean-waves-summer-daughters-carrying.mp4 thumb_jpg: url: https://ak8.picdn.net/shutterstock/videos/6658088/thumb/1.jpg preview_jpg: url: https://ak8.picdn.net/shutterstock/videos/6658088/thumb/1.jpg '400': description: Bad Request '401': description: Unauthorized '403': description: Forbidden security: - basic: [] - customer_accessCode: [] tags: - videos operationId: getSimilarVideos summary: List similar videos description: This endpoint searches for videos that are similar to a video that you specify. /v2/videos/updated: get: parameters: - in: query name: start_date description: Show videos updated on or after the specified date schema: type: string format: date - in: query name: end_date description: Show videos updated before the specified date schema: type: string format: date - in: query name: interval description: 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 schema: type: string default: 1 HOUR - in: query name: page description: Page number schema: type: integer default: 1 minimum: 1 - in: query name: per_page description: Number of results per page schema: type: integer default: 100 maximum: 2000 minimum: 1 - in: query name: sort description: Sort by oldest or newest videos first schema: default: newest type: string enum: - newest - oldest responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/UpdatedMediaDataList' examples: response: value: data: - id: '1030611710' updated_time: '2019-06-04T15:57:31-04:00' updates: - addition - edit - id: '1030611713' updated_time: '2019-06-04T15:57:31-04:00' updates: - addition - edit - id: '1030611719' updated_time: '2019-06-04T15:57:31-04:00' updates: - addition - edit x-code-samples: - lang: shell source: 'curl -X GET https://api.shutterstock.com/v2/videos/updated \ -H "Accept: application/json" \ -H "Authorization: Bearer $SHUTTERSTOCK_API_TOKEN" \ -G \ --data-urlencode "interval=30 MINUTE" ' - lang: javascript--nodejs source: "const sstk = require(\"shutterstock-api\");\n\nsstk.setAccessToken(process.env.SHUTTERSTOCK_API_TOKEN);\n\ \nconst videosApi = new sstk.VideosApi();\n\nconst queryParams = {\n \"interval\": \"30 MINUTE\"\n};\n\nvideosApi.getUpdatedVideos(queryParams)\n\ \ .then(({ data }) => {\n console.log(data);\n })\n .catch((error) => {\n console.error(error);\n });\n" - lang: php source: "$queryFields = [\n \"interval\" => \"30 MINUTE\"\n];\n\n$options = [\n CURLOPT_URL => \"https://api.shutterstock.com/v2/videos/updated?\"\ \ . http_build_query($queryFields),\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,\ \ $options);\n$response = curl_exec($handle);\ncurl_close($handle);\n\n$decodedResponse = json_decode($response);\n\ print_r($decodedResponse);\n" security: - basic: [] - customer_accessCode: [] tags: - videos operationId: getUpdatedVideos summary: List updated videos description: 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`. /v2/audio/search: get: parameters: - description: Show tracks with one of the specified artist names or IDs in: query name: artists schema: type: array items: type: string uniqueItems: false - description: (Deprecated; use bpm_from and bpm_to instead) Show tracks with the specified beats per minute in: query name: bpm deprecated: true schema: type: integer uniqueItems: true - description: Show tracks with the specified beats per minute or faster in: query name: bpm_from schema: type: integer uniqueItems: true - description: Show tracks with the specified beats per minute or slower in: query name: bpm_to schema: type: integer uniqueItems: true - description: Show tracks with the specified duration in seconds in: query name: duration schema: type: integer uniqueItems: true - description: Show tracks with the specified duration or longer in seconds in: query name: duration_from schema: type: integer uniqueItems: true - description: Show tracks with the specified duration or shorter in seconds in: query name: duration_to schema: type: integer uniqueItems: true - description: Show tracks with each of the specified genres; to get the list of genres, use `GET /v2/audio/genres` in: query name: genre explode: true example: - Classical - Holiday schema: type: array items: type: string uniqueItems: false - description: Show instrumental music only in: query name: is_instrumental schema: type: boolean uniqueItems: true - description: Show tracks with each of the specified instruments; to get the list of instruments, use `GET /v2/audio/instruments` in: query name: instruments explode: true example: - Trumpet - Percussion schema: type: array items: type: string uniqueItems: false - description: Show tracks with each of the specified moods; to get the list of moods, use `GET /v2/audio/moods` in: query name: moods explode: true example: - Confident - Playful schema: type: array items: type: string uniqueItems: false - description: Page number in: query name: page schema: type: integer minimum: 1 default: 1 uniqueItems: true - description: Number of results per page in: query name: per_page example: 1 schema: type: integer minimum: 0 maximum: 500 default: 20 uniqueItems: true - description: One or more search terms separated by spaces in: query name: query example: drum schema: type: string uniqueItems: true - description: Sort by in: query name: sort schema: type: string enum: - score - ranking_all - artist - title - bpm - freshness - duration uniqueItems: true - description: Sort order in: query name: sort_order schema: type: string default: desc enum: - asc - desc uniqueItems: true - description: Show tracks with the specified vocal description (male, female) in: query name: vocal_description schema: type: string uniqueItems: true - description: Amount of detail to render in the response in: query name: view example: full schema: type: string enum: - minimal - full default: minimal uniqueItems: true - description: Fields to display in the response; see the documentation for the fields parameter in the overview section in: query name: fields schema: type: string uniqueItems: true - description: Which library to search in: query name: library schema: type: string enum: - shutterstock - premier default: premier uniqueItems: true - description: Which language to search in in: query name: language schema: type: string uniqueItems: true responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AudioSearchResults' examples: response: value: page: 1 per_page: 5 total_count: 25 search_id: c298887c-6f3e-45df-b6cd-41b246e4a104 data: - vocal_description: '' keywords: - celebratory - chic - euphoric - good times - hip - optimistic - party - soaring - upbeat artists: - name: Klimenko Music genres: - Dance/Electronic - Electro Pop - Pop/Rock instruments: - Piano - Synth bass - Synth drums - Synthesizer id: '442583' isrc: '' description: Pulsing and feel-good, featuring soaring synthesizer, groovy synth bass drums and synth drums that create a euphoric, upbeat mood. similar_artists: [] releases: [] is_instrumental: true title: Another Tomorrow is_adult: false lyrics: '' media_type: audio recording_version: '' moods: - Bright - Confident - Fun - Happy - Inspiring - Optimistic - Playful - Sophisticated - Stylish - Uplifting language: en assets: clean_audio: file_size: 35188408 preview_mp3: file_size: 4400203 url: https://ak.picdn.net/shutterstock/audio/442583/preview/preview.mp3 preview_ogg: file_size: 4453197 url: https://ak.picdn.net/shutterstock/audio/442583/preview/preview.ogg waveform: file_size: 18778 url: https://ak.picdn.net/shutterstock/audio/442583/waveform/waveform.png contributor: id: '2847971' duration: 183 album: id: '' title: '' published_time: '2016-08-16T14:30:03-04:00' updated_time: '2016-08-18T17:59:33-04:00' bpm: 110 added_date: '2016-08-16' url: '' '400': description: Bad Request '401': description: Unauthorized '403': description: Forbidden security: - basic: [] - customer_accessCode: [] tags: - audio x-code-samples: - lang: shell source: 'curl -X GET "https://api.shutterstock.com/v2/audio/search" \ --header "Authorization: Bearer $SHUTTERSTOCK_API_TOKEN" \ -G \ --data-urlencode "query=bluegrass" \ --data-urlencode "duration_from=60" \ --data-urlencode "moods=uplifting" ' - lang: javascript--nodejs source: "const sstk = require(\"shutterstock-api\");\n\nsstk.setAccessToken(process.env.SHUTTERSTOCK_API_TOKEN);\n\ \nconst audioApi = new sstk.AudioApi();\n\nconst queryParams = {\n \"query\": \"bluegrass\",\n \"duration_from\"\ : 60,\n \"moods\": [\"uplifting\"]\n};\n\naudioApi.searchAudio(queryParams)\n .then((data) => {\n console.log(data);\n\ \ })\n .catch((error) => {\n console.error(error);\n });\n" - lang: php source: "$queryFields = [\n \"query\" => \"bluegrass\",\n \"duration_from\" => 60,\n \"moods\" => \"uplifting\"\ \n];\n\n$options = [\n CURLOPT_URL => \"https://api.shutterstock.com/v2/audio/search?\" . http_build_query($queryFields),\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, $options);\n$response\ \ = curl_exec($handle);\ncurl_close($handle);\n\n$decodedResponse = json_decode($response);\nprint_r($decodedResponse);\n" operationId: searchAudio summary: Search for tracks description: 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. /v2/audio/genres: get: security: - basic: [] - customer_accessCode: [] tags: - audio responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/GenreList' examples: response: value: data: - Rock operationId: getGenres summary: List audio genres description: This endpoint returns a list of all audio genres. /v2/audio/instruments: get: security: - basic: [] - customer_accessCode: [] tags: - audio responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/InstrumentList' examples: response: value: data: - Electric Guitar operationId: getInstruments summary: List audio instruments description: This endpoint returns a list of all audio instruments. /v2/audio/moods: get: security: - basic: [] - customer_accessCode: [] tags: - audio responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/MoodList' examples: response: value: data: - Aggressive operationId: getMoods summary: List audio moods description: This endpoint returns a list of all audio moods. /v2/audio: get: parameters: - description: One or more audio IDs in: query name: id required: true example: - '442583' - '434750' schema: type: array items: type: string minItems: 1 - description: Amount of detail to render in the response in: query name: view example: full schema: type: string enum: - minimal - full default: minimal responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AudioDataList' examples: response: value: data: - vocal_description: '' keywords: - breezy - celebration - festive - good times - hopeful - optimistic - party - positive - reflective artists: - name: Fin Productions genres: - Dance/Electronic - Electro Pop - Pop/Rock instruments: - Bass - Drums - Electric guitar - Pads - Percussion - Synthesizer id: '434750' isrc: '' description: Pulsing and feel-good, featuring slick electric guitar, synthesizer, bass, electronic drum pads and drums that create a positive, celebratory mood. similar_artists: [] releases: [] is_instrumental: true title: Fresh Love is_adult: false lyrics: '' media_type: audio recording_version: '' moods: - Bright - Confident - Fun - Happy - Inspiring - Optimistic - Playful - Sophisticated - Stylish - Uplifting language: en assets: clean_audio: file_size: 30760372 preview_mp3: file_size: 3846606 url: https://ak.picdn.net/shutterstock/audio/434750/preview/preview.mp3 preview_ogg: file_size: 4402608 url: https://ak.picdn.net/shutterstock/audio/434750/preview/preview.ogg waveform: file_size: 19822 url: https://ak.picdn.net/shutterstock/audio/434750/waveform/waveform.png contributor: id: '2847971' duration: 160 album: id: '' title: '' published_time: '2016-04-12T17:45:29-04:00' updated_time: '2016-08-18T18:03:11-04:00' bpm: 100 added_date: '2016-04-12' url: '' '400': description: Bad Request '401': description: Unauthorized '403': description: Forbidden security: - basic: [] - customer_accessCode: [] tags: - audio operationId: getTrackList summary: List audio tracks description: This endpoint lists information about one or more audio tracks, including the description and publication date. /v2/audio/{id}: get: parameters: - description: Audio track ID in: path name: id required: true example: '442583' schema: type: integer - description: Amount of detail to render in the response in: query name: view example: full schema: type: string enum: - minimal - full default: full responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/Audio' examples: response: value: vocal_description: '' keywords: - celebratory - chic - euphoric - good times - hip - optimistic - party - soaring - upbeat artists: - name: Klimenko Music genres: - Dance/Electronic - Electro Pop - Pop/Rock instruments: - Piano - Synth bass - Synth drums - Synthesizer id: '442583' isrc: '' description: Pulsing and feel-good, featuring soaring synthesizer, groovy synth bass drums and synth drums that create a euphoric, upbeat mood. similar_artists: [] releases: [] is_instrumental: true title: Another Tomorrow is_adult: false lyrics: '' media_type: audio recording_version: '' moods: - Bright - Confident - Fun - Happy - Inspiring - Optimistic - Playful - Sophisticated - Stylish - Uplifting language: en assets: clean_audio: file_size: 35188408 preview_mp3: file_size: 4400203 url: https://ak.picdn.net/shutterstock/audio/442583/preview/preview.mp3 preview_ogg: file_size: 4453197 url: https://ak.picdn.net/shutterstock/audio/442583/preview/preview.ogg waveform: file_size: 18778 url: https://ak.picdn.net/shutterstock/audio/442583/waveform/waveform.png contributor: id: '2847971' duration: 183 album: id: '' title: '' published_time: '2016-08-16T14:30:03-04:00' updated_time: '2016-08-18T17:59:33-04:00' bpm: 110 added_date: '2016-08-16' url: '' '400': description: Bad Request '401': description: Unauthorized '403': description: Forbidden security: - basic: [] - customer_accessCode: [] tags: - audio operationId: getTrack summary: Get details about audio tracks description: This endpoint shows information about a track, including its genres, instruments, and other attributes. /v2/audio/licenses: post: parameters: - description: License type in: query name: license schema: type: string enum: - audio_platform - premier_music_basic - premier_music_extended - premier_music_pro - premier_music_comp - description: The ID of the search that led to licensing this track in: query name: search_id schema: type: string responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/LicenseAudioResultDataList' examples: response: value: data: - audio_id: '1' download: url: http://download2.dev.shutterstock.com/gatekeeper/abc/original.wav '400': description: Bad Request '401': description: Unauthorized '403': description: Forbidden security: - customer_accessCode: - licenses.create x-code-samples: - lang: shell source: "DATA='{\n \"audio\": [\n {\n \"audio_id\": \"591623\",\n \"license\": \"audio_platform\",\n\ \ \"metadata\": {\n \"customer_id\": \"12345\"\n }\n }\n ]\n}'\n\ncurl -X POST https://api.shutterstock.com/v2/audio/licenses\ \ \\\n-d \"$DATA\" \\\n-H \"Content-Type: application/json\" \\\n-H \"Accept: application/json\" \\\n-H \"Authorization:\ \ Bearer $SHUTTERSTOCK_API_TOKEN\"\n" - lang: javascript--nodejs source: "const sstk = require(\"shutterstock-api\");\n\nsstk.setAccessToken(process.env.SHUTTERSTOCK_API_TOKEN);\n\ \nconst audioApi = new sstk.AudioApi();\n\nconst body = {\n \"audio\": [\n {\n \"audio_id\": \"446348\"\ ,\n \"license\": \"audio_platform\",\n \"metadata\": {\n \"customer_id\": \"12345\"\n }\n\ \ }\n ]\n};\n\naudioApi.licenseTrack(body)\n .then(({ data }) => {\n console.log(data);\n })\n .catch((error)\ \ => {\n console.error(error);\n });\n" - lang: php source: "$body = [\n \"audio\" => [\n [\n \"audio_id\" => \"591623\",\n \"license\" => \"audio_platform\"\ ,\n \"metadata\" => [\n \"customer_id\" => \"12345\"\n ]\n ]\n ]\n];\n$encodedBody = json_encode($body);\n\ \n$options = [\n CURLOPT_URL => \"https://api.shutterstock.com/v2/audio/licenses\",\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" tags: - audio operationId: licenseTrack summary: License audio tracks description: This endpoint gets licenses for one or more tracks. requestBody: content: application/json: schema: $ref: '#/components/schemas/LicenseAudioRequest' examples: default: description: Overwrite content of soundbox with new items value: audio: - audio_id: '591623' license: audio_platform metadata: customer_id: '12345' description: Tracks to license required: true get: parameters: - description: Show licenses for the specified track ID in: query name: audio_id example: '1' schema: type: string responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/DownloadHistoryDataList' '400': description: Bad Request '401': description: Unauthorized '403': description: Forbidden security: - customer_accessCode: - licenses.view tags: - audio operationId: getAudioLicenseList summary: List audio licenses description: 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. /v2/audio/licenses/{id}/downloads: post: parameters: - description: License ID in: path name: id required: true example: e123 schema: type: string responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/Url' '400': description: Bad Request '401': description: Unauthorized '403': description: Forbidden security: - customer_accessCode: - licenses.view x-code-samples: - lang: shell source: 'curl -X POST https://api.shutterstock.com/v2/audio/licenses/e123/downloads \ -H "Accept: application/json" \ -H "Authorization: Bearer $SHUTTERSTOCK_API_TOKEN" ' - lang: javascript--nodejs source: "const sstk = require(\"shutterstock-api\");\n\nsstk.setAccessToken(process.env.SHUTTERSTOCK_API_TOKEN);\n\ \nconst audioApi = new sstk.AudioApi();\n\nconst licenseId = \"e123\"; // license ID, not track ID\n\naudioApi.downloadTracks(licenseId)\n\ \ .then((data) => {\n console.log(data);\n })\n .catch((error) => {\n console.error(error);\n });\n" - lang: php source: "$options = [\n CURLOPT_URL => \"https://api.shutterstock.com/v2/audio/licenses/e123/downloads\",\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, $options);\n$response = curl_exec($handle);\ncurl_close($handle);\n\ \n$decodedResponse = json_decode($response);\nprint_r($decodedResponse);\n" tags: - audio operationId: downloadTracks summary: Download audio tracks description: This endpoint redownloads tracks that you have already received a license for. /v2/audio/collections: post: responses: '200': description: No response was specified content: application/json: schema: $ref: '#/components/schemas/CollectionCreateResponse' '201': description: Successfully created collection content: application/json: examples: response: value: id: '48433105' '400': description: Bad Request '401': description: Unauthorized '403': description: Forbidden security: - customer_accessCode: - collections.edit x-code-samples: - lang: shell source: "DATA='{\n \"name\": \"Best rock music\"\n}'\n\ncurl -X POST https://api.shutterstock.com/v2/audio/collections\ \ \\\n-d \"$DATA\" \\\n-H \"Content-Type: application/json\" \\\n-H \"Accept: application/json\" \\\n-H \"Authorization:\ \ Bearer $SHUTTERSTOCK_API_TOKEN\"" - lang: javascript--nodejs source: "const sstk = require(\"shutterstock-api\");\n\nsstk.setAccessToken(process.env.SHUTTERSTOCK_API_TOKEN);\n\ \nconst audioApi = new sstk.AudioApi();\n\nconst body = {\n \"name\": \"Best rock music\"\n};\n\naudioApi.createSoundbox(body)\n\ \ .catch((error) => {\n console.error(error);\n });\n" - lang: php source: "$body = [\n \"name\" => \"Best rock music\"\n];\n$encodedBody = json_encode($body);\n\n$options = [\n CURLOPT_URL\ \ => \"https://api.shutterstock.com/v2/audio/collections\",\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);" tags: - audio operationId: createSoundbox summary: Create audio collections description: This endpoint creates one or more collections (soundboxes). To add tracks, use `POST /v2/audio/collections/{id}/items`. requestBody: content: application/json: schema: $ref: '#/components/schemas/CollectionCreateRequest' examples: default: description: Create a soundbox value: name: Best rock music description: Collection metadata required: true get: parameters: - description: Page number in: query name: page example: '1' schema: type: integer minimum: 1 default: 1 - description: Number of results per page in: query name: per_page example: '100' schema: type: integer minimum: 1 maximum: 150 default: 100 responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/CollectionDataList' examples: response: value: data: - name: Test Collection cdad updated_time: '2014-11-05T19:29:56-05:00' id: '5747953' total_item_count: 0 created_time: '2014-11-05T19:29:56-05:00' - name: Test Collection ff5f updated_time: '2014-11-05T19:29:56-05:00' id: '5747955' total_item_count: 0 created_time: '2014-11-05T19:29:56-05:00' - name: Updated Collection ebc4 updated_time: '2014-11-05T19:29:58-05:00' id: '5747957' total_item_count: 0 created_time: '2014-11-05T19:29:58-05:00' - name: Test Collection 0072 updated_time: '2014-11-05T19:32:13-05:00' id: '5747971' total_item_count: 0 created_time: '2014-11-05T19:32:13-05:00' - name: Test Collection d332 updated_time: '2014-11-05T19:32:13-05:00' id: '5747973' total_item_count: 0 created_time: '2014-11-05T19:32:13-05:00' '400': description: Bad Request '401': description: Unauthorized '403': description: Forbidden security: - customer_accessCode: - collections.view tags: - audio operationId: getSoundboxList summary: List audio collections description: This endpoint lists your collections of audio tracks and their basic attributes. /v2/audio/collections/{id}: get: parameters: - description: Collection ID in: path name: id required: true example: '48433107' schema: type: string responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/Collection' examples: response: value: name: Test Collection c28c updated_time: '2016-08-18T18:52:56-04:00' id: '48433107' total_item_count: 0 '400': description: Bad Request '401': description: Unauthorized '403': description: Forbidden '404': description: Collection not found security: - customer_accessCode: - collections.view tags: - audio operationId: getSoundbox summary: Get the details of audio collections description: 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`. post: parameters: - description: Collection ID in: path name: id required: true example: '48433107' schema: type: string responses: '200': description: No response was specified '204': description: Successfully updated collection '400': description: Bad Request '401': description: Unauthorized '403': description: Forbidden security: - customer_accessCode: - collections.edit x-code-samples: - lang: shell source: "DATA='{\n \"name\": \"Best rock music\"\n}'\n\ncurl -X POST https://api.shutterstock.com/v2/audio/collections/48433107\ \ \\\n-d \"$DATA\" \\\n-H \"Content-Type: application/json\" \\\n-H \"Accept: application/json\" \\\n-H \"Authorization:\ \ Bearer $SHUTTERSTOCK_API_TOKEN\"" - lang: javascript--nodejs source: "const sstk = require(\"shutterstock-api\");\n\nsstk.setAccessToken(process.env.SHUTTERSTOCK_API_TOKEN);\n\ \nconst audioApi = new sstk.AudioApi();\n\nconst collectionId = \"48433107\";\n\nconst body = {\n \"name\": \"\ Best rock music\"\n};\n\naudioApi.renameSoundbox(collectionId, body)\n .catch((error) => {\n console.error(error);\n\ \ });\n" - lang: php source: "$body = [\n \"name\" => \"Best rock music\"\n];\n$encodedBody = json_encode($body);\n\n$options = [\n CURLOPT_URL\ \ => \"https://api.shutterstock.com/v2/audio/collections/48433107\",\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);" tags: - audio operationId: renameSoundbox summary: Rename audio collections description: This endpoint sets a new name for a collection. requestBody: content: application/json: schema: $ref: '#/components/schemas/CollectionUpdateRequest' examples: default: description: Renaming a soundbox value: name: Best rock music description: Collection changes required: true delete: parameters: - description: Collection ID in: path name: id required: true example: '48433111' schema: type: string responses: '200': description: No response was specified '204': description: Successfully deleted collection '400': description: Bad Request '401': description: Unauthorized '403': description: Forbidden security: - customer_accessCode: - collections.edit x-code-samples: - lang: shell source: 'curl -X DELETE https://api.shutterstock.com/v2/audio/collections/48433111 \ -H "Accept: application/json" \ -H "Authorization: Bearer $SHUTTERSTOCK_API_TOKEN"' - lang: javascript--nodejs source: "const sstk = require(\"shutterstock-api\");\n\nsstk.setAccessToken(process.env.SHUTTERSTOCK_API_TOKEN);\n\ \nconst audioApi = new sstk.AudioApi();\n\nconst collectionId = \"48433107\";\n\naudioApi.deleteSoundbox(collectionId)\n\ \ .catch((error) => {\n console.error(error);\n });\n" - lang: php source: "$options = [\n CURLOPT_URL => \"https://api.shutterstock.com/v2/audio/collections/48433111\",\n CURLOPT_USERAGENT\ \ => \"php/curl\",\n CURLOPT_CUSTOMREQUEST => \"DELETE\",\n CURLOPT_HTTPHEADER => [\n \"Authorization: Bearer\ \ $SHUTTERSTOCK_API_TOKEN\"\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);\n\ print_r($decodedResponse);" tags: - audio operationId: deleteSoundbox summary: Delete audio collections description: This endpoint deletes a collection. /v2/audio/collections/{id}/items: post: parameters: - description: Collection ID in: path name: id required: true example: '48433115' schema: type: string responses: '200': description: No response was specified '204': description: Successfully added collection items '400': description: Bad Request '401': description: Unauthorized '403': description: Forbidden security: - customer_accessCode: - collections.edit x-code-samples: - lang: shell source: "DATA='{\n \"items\": [\n {\n \"id\": \"442583\"\n },\n {\n \"id\": \"7491192\"\n }\n\ \ ]\n}'\n\ncurl -X POST https://api.shutterstock.com/v2/audio/collections/48433115/items \\\n-d \"$DATA\" \\\n\ -H \"Content-Type: application/json\" \\\n-H \"Accept: application/json\" \\\n-H \"Authorization: Bearer $SHUTTERSTOCK_API_TOKEN\"" - lang: javascript--nodejs source: "const sstk = require(\"shutterstock-api\");\n\nsstk.setAccessToken(process.env.SHUTTERSTOCK_API_TOKEN);\n\ \nconst audioApi = new sstk.AudioApi();\n\nconst collectionId = \"48433115\";\n\nconst body = {\n \"items\": [\n\ \ {\n \"id\": \"442583\"\n },\n {\n \"id\": \"7491192\"\n }\n ]\n};\n\naudioApi.addSoundboxItems(collectionId,\ \ body)\n .catch((error) => {\n console.error(error);\n });\n" - lang: php source: "$body = [\n \"items\" => [\n [\n \"id\" => \"442583\"\n ],\n [\n \"id\" => \"7491192\"\ \n ]\n ]\n];\n$encodedBody = json_encode($body);\n\n$options = [\n CURLOPT_URL => \"https://api.shutterstock.com/v2/audio/collections/48433115/items\"\ ,\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);" tags: - audio operationId: addSoundboxItems summary: Add audio tracks to collections description: This endpoint adds one or more tracks to a collection by track IDs. requestBody: content: application/json: schema: $ref: '#/components/schemas/CollectionItemRequest' examples: default: description: Adds tracks to a soundbox value: items: - id: '442583' - id: '7491192' description: List of items to add to collection required: true get: parameters: - description: Collection ID in: path name: id required: true example: '48433113' schema: type: string - 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: 150 default: 100 - description: Sort order in: query name: sort schema: type: string enum: - newest - oldest default: oldest responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/CollectionItemDataList' examples: response: value: data: - added_time: '2016-08-18T18:52:59-04:00' id: '76688182' media_type: audio - added_time: '2016-08-18T18:52:59-04:00' id: '40005859' media_type: audio page: 1 per_page: 100 '400': description: Bad Request '401': description: Unauthorized '403': description: Forbidden security: - customer_accessCode: - collections.view tags: - audio operationId: getSoundboxItems summary: Get the contents of audio collections description: This endpoint lists the IDs of tracks in a collection and the date that each was added. delete: parameters: - description: Collection ID in: path name: id required: true example: '48433119' schema: type: string - description: One or more item IDs to remove from the collection in: query name: item_id example: - '76688182' - '40005859' schema: type: array items: type: string responses: '200': description: No response was specified '204': description: Successfully removed collection items '400': description: Bad Request '401': description: Unauthorized '403': description: Forbidden security: - customer_accessCode: - collections.edit x-code-samples: - lang: shell source: 'curl -X DELETE https://api.shutterstock.com/v2/audio/collections/48433119/items?item_id=36345523 \ -H "Accept: application/json" \ -H "Authorization: Bearer $SHUTTERSTOCK_API_TOKEN"' - lang: javascript--nodejs source: "const sstk = require(\"shutterstock-api\");\n\nsstk.setAccessToken(process.env.SHUTTERSTOCK_API_TOKEN);\n\ \nconst audioApi = new sstk.AudioApi();\n\nconst collectionId = \"48433119\";\n\n// Array of tracks to remove\n\ const tracksToRemove = {\n \"item_id\": [\n \"76688182\",\n \"40005859\"\n ]\n};\n\naudioApi.deleteSoundboxItems(collectionId,\ \ tracksToRemove)\n .catch((error) => {\n console.error(error);\n });\n" - lang: php source: "$options = [\n CURLOPT_URL => \"https://api.shutterstock.com/v2/audio/collections/48433119/items?item_id=495863218\"\ ,\n CURLOPT_USERAGENT => \"php/curl\",\n CURLOPT_CUSTOMREQUEST => \"DELETE\",\n CURLOPT_HTTPHEADER => [\n \ \ \"Authorization: Bearer $SHUTTERSTOCK_API_TOKEN\"\n ],\n CURLOPT_RETURNTRANSFER => 1\n];\n\n$handle = curl_init();\n\ curl_setopt_array($handle, $options);\n$response = curl_exec($handle);\ncurl_close($handle);\n\n$decodedResponse\ \ = json_decode($response);\nprint_r($decodedResponse);" tags: - audio operationId: deleteSoundboxItems summary: Remove audio tracks from collections description: This endpoint removes one or more tracks from a collection. /v2/editorial/images/search: get: parameters: - description: One or more search terms separated by spaces in: query name: query schema: type: string - description: Sort by in: query name: sort schema: type: string enum: - relevant - newest - oldest default: relevant - description: Show editorial content within a certain editorial category; specify by category name in: query name: category schema: type: string - description: Show only editorial content that is available for distribution in a certain country in: query name: country required: true example: USA schema: type: string format: country-code-3 - description: Show only editorial content from certain suppliers in: query name: supplier_code schema: type: array items: type: string - description: Show only editorial content generated on or after a specific date in: query name: date_start schema: type: string format: date - description: Show only editorial content generated on or before a specific date in: query name: date_end schema: type: string format: date - description: Number of results per page in: query name: per_page schema: type: integer minimum: 1 maximum: 50 default: 20 - description: The cursor of the page with which to start fetching results; this cursor is returned from previous requests in: query name: cursor schema: type: string responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/EditorialSearchResults' examples: response: value: per_page: 1 total_count: 1556949 search_id: q8igACM5gqQY75owjLoVvw next: eyJ2IjoxLCJzIjoxfQ== prev: '' data: - id: 9804979n title: Hong Kong kicks off international e-Sports competition, China - 24 Aug 2018 caption: '' description: Members of the TyLoo e-Sports team from China prepare to face off against the Kinguin e-Sports team from Poland at the ICBC (Asia) e-Sports and Music Festival Hong Kong 2018, Hong Kong, China, 24 August 2018. The festival runs from 24 to 26 August with professional gamers from around the world competing in international e-sports tournaments. byline: ALEX HOFFORD/EPA-EFE/Shutterstock keywords: [] date_taken: '2018-08-24' categories: [] aspect: 1.481 assets: thumb_170: height: 115 width: 170 url: https://editorial01.shutterstock.com/thumb/9804979n/c4377a53/Shutterstock_9804979n.jpg thumb_220: height: 149 width: 220 url: https://editorial01.shutterstock.com/thumb-220/9804979n/c57a68c7/Shutterstock_9804979n.jpg watermark_450: height: 304 width: 450 url: https://editorial01.shutterstock.com/wm-preview-450/9804979n/37d19dce/Shutterstock_9804979n.jpg watermark_1500: height: 1500 width: 1040 url: https://editorial01.shutterstock.com/wm-preview-1500/9933285a/ab82fea4/Shutterstock_9933285a.jpg original: display_name: Original height: 3263 width: 4831 is_licensable: true small_jpg: display_name: Small height: 337 width: 500 is_licensable: true medium_jpg: display_name: Med height: 675 width: 1000 is_licensable: true '400': description: Bad Request '401': description: Unauthorized '403': description: Forbidden '406': description: Not Acceptable security: - basic: [] - customer_accessCode: [] tags: - editorial_images x-code-samples: - lang: shell source: 'curl -X GET https://api.shutterstock.com/v2/editorial/images/search \ -H "Accept: application/json" \ -G \ -H "Authorization: Bearer $SHUTTERSTOCK_API_TOKEN" \ --data-urlencode "query=football" \ --data-urlencode "country=USA" \ --data-urlencode "sort=newest" \ --data-urlencode "date_start=2018-10-23" ' - lang: javascript--nodejs source: "const sstk = require(\"shutterstock-api\");\n\nsstk.setAccessToken(process.env.SHUTTERSTOCK_API_TOKEN);\n\ \nconst editorialApi = new sstk.EditorialApi();\n\nconst queryParams = {\n \"query\": \"football\",\n \"country\"\ : \"USA\",\n \"sort\": \"newest\",\n \"date_start\": \"2018-10-23\"\n};\n\nconst country = \"USA\";\n\neditorialApi.editorialImagesSearch(country,\ \ queryParams)\n .then((data) => {\n console.log(data);\n })\n .catch((error) => {\n console.error(error);\n\ \ });\n" - lang: php source: "$queryFields = [\n \"query\" => \"football\",\n \"country\" => \"USA\",\n \"date_start\" => \"2018-10-23\"\ ,\n \"sort\" => \"newest\"\n];\n\n$options = [\n CURLOPT_URL => \"https://api.shutterstock.com/v2/editorial/images/search?\"\ \ . http_build_query($queryFields),\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,\ \ $options);\n$response = curl_exec($handle);\ncurl_close($handle);\n\n$decodedResponse = json_decode($response);\n\ print_r($decodedResponse);\n" operationId: searchEditorialImages summary: Search editorial images description: This endpoint searches for editorial 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. /v2/editorial/images/categories: get: responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/EditorialImageCategoryResults' examples: response: value: data: - name: Animal - name: Awards - name: Art - name: Film Stills '400': description: Bad Request '401': description: Unauthorized '403': description: Forbidden security: - basic: [] - customer_accessCode: [] tags: - editorial_images operationId: getEditorialImageCategories summary: List editorial categories description: 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. /v2/editorial/images/{id}: get: parameters: - description: Editorial ID in: path name: id required: true example: 9926131a schema: type: string - description: Returns only if the content is available for distribution in a certain country in: query name: country required: true example: USA schema: type: string format: country-code-3 responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/EditorialContent' examples: response: value: id: 9767412v title: Tokyo 2020 Olympics mascot Miraitowa and Paralympics mascot Someity debut, Japan - 22 Jul 2018 caption: '' description: Tokyo 2020 Olympics mascot Miraitowa greets with former Japanese prime minister Yoshiko Mori, President of Tokyo 2020 Olympics Committee, as mascots of Tokyo 2020 Olympics and Paralympics debut in Tokyo, Japan, 22 July 2018. Tokyo 2020 Olympics will start on 24 July 2020 and run until 09 August 2020. byline: KIMIMASA MAYAMA/EPA-EFE/Shutterstock keywords: [] date_taken: '2018-07-22' categories: [] aspect: 1.33 assets: thumb_170: height: 128 width: 170 url: https://editorial01.shutterstock.com/thumb/9767412v/36aeb953/Shutterstock_9767412v.jpg thumb_220: height: 165 width: 220 url: https://editorial01.shutterstock.com/thumb-220/9767412v/b786b189/Shutterstock_9767412v.jpg watermark_450: height: 338 width: 450 url: https://editorial01.shutterstock.com/wm-preview-450/9767412v/f75b6680/Shutterstock_9767412v.jpg watermark_1500: height: 1500 width: 1040 url: https://editorial01.shutterstock.com/wm-preview-1500/9933285a/ab82fea4/Shutterstock_9933285a.jpg original: display_name: Original height: 3447 width: 4586 is_licensable: true small_jpg: display_name: Small height: 375 width: 500 is_licensable: true medium_jpg: display_name: Med height: 751 width: 1000 is_licensable: true '400': description: Bad Request '401': description: Unauthorized '403': description: Forbidden '404': description: Not Found security: - basic: [] - customer_accessCode: [] tags: - editorial_images operationId: getEditorialImageDetails summary: Get editorial content details description: This endpoint shows information about an editorial image, including a URL to a preview image and the sizes that it is available in. /v2/editorial/images/licenses: get: parameters: - description: Show licenses for the specified editorial image ID in: query name: image_id schema: type: string - description: Show editorial images that are available with the specified license name in: query name: license schema: type: string - 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: 0 maximum: 200 default: 20 - description: Sort order in: query name: sort schema: type: string enum: - newest - oldest default: newest - description: Filter licenses by username of licensee in: query name: username schema: type: string - name: start_date in: query description: Show licenses created on or after the specified date schema: type: string format: date-time example: 2020-02-02T13:00-05:00 - name: end_date in: query description: Show licenses created before the specified date schema: type: string format: date-time example: 2020-02-02T13:00-05:00 responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/DownloadHistoryDataList' examples: response: value: data: - id: e1dbb15d5384725d292cf64f793ac45062 user: username: username1 license: premier_editorial_all_digital download_time: '2020-12-18T02:22:56.000Z' is_downloadable: false image: id: 11231389im format: size: original subscription_id: 1221a491741j1k41yd91dh37al324 metadata: client: Company A other: Important media purchase_order: '457234' job: Important project - id: e1dbb15d5384725d292cf64f793ac45114 user: username: username2 license: premier_editorial_all_digital download_time: '2020-12-11T01:24:22.000Z' is_downloadable: false image: id: 11231442aa format: size: original subscription_id: 1221a491741j1k41yd91dh37al324 metadata: client: Company B other: Important image purchase_order: '5583831' job: Important project page: 1 per_page: 2 '400': description: Bad Request '401': description: Unauthorized '403': description: Forbidden security: - customer_accessCode: - licenses.view tags: - editorial_images operationId: getEditorialImageLicenseList summary: List editorial image licenses description: This endpoint lists existing editorial image licenses. post: responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/LicenseEditorialContentResults' examples: response: value: data: - editorial_id: '69656358' download: url: https://s3-eu-west-1.amazonaws.com/api-downloads.rexfeatures.com/[random-characters].jpg?Expires=1524717323 '400': description: Bad Request '401': description: Unauthorized '403': description: Forbidden '406': description: Not Acceptable security: - customer_accessCode: - licenses.create - purchases.view x-code-samples: - lang: shell source: "DATA='{\n \"editorial\": [\n {\n \"editorial_id\": \"8594090h\",\n \"license\": \"premier_editorial_comp\"\ \n }\n ],\n \"country\": \"USA\"\n}'\n\ncurl -X POST https://api.shutterstock.com/v2/editorial/images/licenses\ \ \\\n-d \"$DATA\" \\\n-H \"Content-Type: application/json\" \\\n-H \"Accept: application/json\" \\\n-H \"Authorization:\ \ Bearer $SHUTTERSTOCK_API_TOKEN\"\n" - lang: javascript--nodejs source: "const sstk = require(\"shutterstock-api\");\n\nsstk.setAccessToken(process.env.SHUTTERSTOCK_API_TOKEN);\n\ \nconst editorialApi = new sstk.EditorialApi();\n\nconst body = {\n \"editorial\": [\n {\n \"editorial_id\"\ : \"8594090h\",\n \"license\": \"premier_editorial_comp\"\n }\n ],\n \"country\": \"USA\"\n};\n\neditorialApi.licenseEditorialImage(body)\n\ \ .then(({ data }) => {\n console.log(data);\n })\n .catch((error) => {\n console.error(error);\n });\n" - lang: php source: "$body = [\n \"editorial\" => [\n [\n \"editorial_id\" => \"8594090h\",\n \"license\" => \"\ premier_editorial_comp\"\n ]\n ],\n \"country\" => \"USA\"\n];\n$encodedBody = json_encode($body);\n\n$options\ \ = [\n CURLOPT_URL => \"https://api.shutterstock.com/v2/editorial/images/licenses\",\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" tags: - editorial_images operationId: licenseEditorialImages summary: License editorial content description: This endpoint gets licenses for one or more editorial images. You must specify the country and one or more editorial images to license. requestBody: content: application/json: schema: $ref: '#/components/schemas/LicenseEditorialContentRequest' examples: default: value: editorial: - editorial_id: 8594090h license: premier_editorial_comp country: USA description: License editorial content required: true /v2/editorial/images/livefeeds: get: parameters: - description: Returns only livefeeds that are available for distribution in a certain country in: query name: country required: true example: USA schema: type: string format: country-code-3 - 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: 50 default: 20 responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/EditorialImageLivefeedList' examples: response: value: page: 1 per_page: 1 total_count: 6011 data: - id: 2018%2F10%2F19%2F'Butterfly'%20photocall%2C%20Rome%20Film%20Festival name: '''Butterfly'' photocall, Rome Film Festival' total_item_count: 24 created_time: '2018-10-19T20:27:26+00:00' cover_item: height: 170 width: 113 url: https://editorial01.shutterstock.com/thumb/9938080a/532b2be1/Shutterstock_9938080a.jpg id: 9938080a '400': description: Bad Request '401': description: Unauthorized '403': description: Forbidden '404': description: Not Found security: - basic: [] - customer_accessCode: [] tags: - editorial_images operationId: getEditorialLivefeedImagesList summary: Get editorial livefeed list /v2/editorial/images/livefeeds/{id}: get: parameters: - description: Editorial livefeed ID; must be an URI encoded string in: path name: id required: true example: 2018%2F10%2F15%2FWomen%20of%20the%20Year%20Lunch%20%26%20Awards%2C%20London schema: type: string - description: Returns only if the livefeed is available for distribution in a certain country in: query name: country required: true example: USA schema: type: string format: country-code-3 responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/EditorialImageLivefeed' examples: response: value: id: 2018%2F10%2F19%2F'The%20House%20with%20a%20Clock%20in%20Its%20Walls'%20premiere%2C%20Rome%20Film%20Festival name: '''The House with a Clock in Its Walls'' premiere, Rome Film Festival' total_item_count: 100 cover_item: height: 170 width: 114 url: https://editorial01.shutterstock.com/thumb/9938511p/7d1f17d9/Shutterstock_9938511p.jpg id: 9938511p '400': description: Bad Request '401': description: Unauthorized '403': description: Forbidden '404': description: Not Found security: - basic: [] - customer_accessCode: [] tags: - editorial_images operationId: getEditorialImageLivefeed summary: Get editorial livefeed /v2/editorial/images/livefeeds/{id}/items: get: parameters: - description: Editorial livefeed ID; must be an URI encoded string in: path name: id required: true example: 2018%2F10%2F15%2FWomen%20of%20the%20Year%20Lunch%20%26%20Awards%2C%20London schema: type: string - description: Returns only if the livefeed items are available for distribution in a certain country in: query name: country required: true example: USA schema: type: string format: country-code-3 responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/EditorialImageContentDataList' examples: response: value: data: - id: 9938573m title: '''The House with a Clock in Its Walls'' premiere, Rome Film Festival, Italy - 19 Oct 2018' caption: '' description: Christian Marazziti and Ariadna Romero byline: Maurizio D'Avanzo/IPA/Shutterstock keywords: [] date_taken: '2018-10-19' categories: - name: Actor - name: Female - name: Personality aspect: 0.666 assets: thumb_170: height: 170 width: 113 url: https://editorial01.shutterstock.com/thumb/9938573m/4d5708ce/Shutterstock_9938573m.jpg thumb_220: height: 220 width: 146 url: https://editorial01.shutterstock.com/thumb-220/9938573m/b78aabde/Shutterstock_9938573m.jpg watermark_450: height: 450 width: 300 url: https://editorial01.shutterstock.com/wm-preview-450/9938573m/4a9a4add/Shutterstock_9938573m.jpg watermark_1500: height: 1500 width: 1040 url: https://editorial01.shutterstock.com/wm-preview-1500/9933285a/ab82fea4/Shutterstock_9933285a.jpg original: display_name: Original height: 4928 width: 3280 is_licensable: true small_jpg: display_name: Small height: 500 width: 332 is_licensable: true medium_jpg: display_name: Med height: 1000 width: 660 is_licensable: true '400': description: Bad Request '401': description: Unauthorized '403': description: Forbidden '404': description: Not Found security: - basic: [] - customer_accessCode: [] tags: - editorial_images operationId: getEditorialLivefeedImageItems summary: Get editorial livefeed items /v2/editorial/videos/search: get: parameters: - description: One or more search terms separated by spaces in: query name: query schema: type: string - description: Sort by in: query name: sort schema: type: string enum: - relevant - newest - oldest default: relevant - description: Show editorial video content within a certain editorial category; specify by category name in: query name: category schema: type: string - description: Show only editorial video content that is available for distribution in a certain country in: query name: country required: true example: USA schema: type: string format: country-code-3 - description: Show only editorial video content from certain suppliers in: query name: supplier_code schema: type: array items: type: string - description: Show only editorial video content generated on or after a specific date in: query name: date_start schema: type: string format: date - description: Show only editorial video content generated on or before a specific date in: query name: date_end schema: type: string format: date - description: Show only editorial video content with specific resolution in: query name: resolution schema: type: string enum: - 4k - high_definition - standard_definition - description: Show only editorial video content generated with specific frames per second in: query name: fps schema: type: number - description: Number of results per page in: query name: per_page schema: type: integer minimum: 1 maximum: 50 default: 20 - description: The cursor of the page with which to start fetching results; this cursor is returned from previous requests in: query name: cursor schema: type: string responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/EditorialVideoSearchResults' examples: response: value: per_page: 1 total_count: 1556949 search_id: q8igACM5gqQY75owjLoVvw next: eyJ2IjoxLCJzIjoxfQ== prev: '' data: - id: 10679336a title: Proud Papa Playing with His Puppies, New Oxford, Pennsylvania, USA - 28 Oct 2020 caption: '' description: 'Info from Licensor: "In June, we rescued this 2 year old male boxer from spending most of his days in a crate. Our 2 adult female boxers helped him adjust to living a good boxer life with our family. He "thanked" us with this surprise litter of 8 puppies! He has really done amazingly well with playing with all the puppies, and I think he will miss them when they go to their "fur-ever" homes. It was a perfect day of playing in the backyard at the end of October 2020."' byline: ViralHog/Shutterstock keywords: - adorable - cute - doggo - doggy - dogs - domesticated animals - entertainment - feel good - grass - new oxford - pennsylvania - pets - played - playing - plays - pup - puppies - puppy - sweet - usa - viralhog - virals - yard date_taken: '2020-10-28' categories: [] aspect: 1.778 assets: preview_mp4: url: https://qa.editorial-cdn.shuttercorp.net/wm-preview-mp4/10679336a/M8TbAb3aNaj2g5w4ODgwMzg=/Shutterstock_10679336a.mp4 preview_webm: url: https://qa.editorial-cdn.shuttercorp.net/wm-preview-webm/10679336a/M5T3Ab36N4jbgcwbODgwMzg=/Shutterstock_10679336a.webm thumb_jpg: url: https://qa.editorial-cdn.shuttercorp.net/thumb-1/10679336a/M5T6Ad37Ncj5g3w1ODgwMzg=/Shutterstock_10679336a.jpg original: height: 1080 width: 1920 fps: 29.937 format: avc1 file_size: 124452018 display_name: HD is_licensable: true '400': description: Bad Request '401': description: Unauthorized '403': description: Forbidden '406': description: Not Acceptable security: - basic: [] - customer_accessCode: [] tags: - editorial_video x-code-samples: - lang: shell source: 'curl -X GET https://api.shutterstock.com/v2/editorial/videos/search \ -H "Accept: application/json" \ -G \ -H "Authorization: Bearer $SHUTTERSTOCK_API_TOKEN" \ --data-urlencode "query=football" \ --data-urlencode "country=USA" \ --data-urlencode "sort=newest" \ --data-urlencode "date_start=2018-10-23" ' - lang: javascript--nodejs source: "const sstk = require(\"shutterstock-api\");\n\nsstk.setAccessToken(process.env.SHUTTERSTOCK_API_TOKEN);\n\ \nconst editorialApi = new sstk.EditorialVideoApi();\n\nconst queryParams = {\n \"query\": \"football\",\n \"\ country\": \"USA\",\n \"sort\": \"newest\",\n \"date_start\": \"2018-10-23\"\n};\n\nconst country = \"USA\";\n\ \neditorialApi.editorialVideosSearch(country, queryParams)\n .then((data) => {\n console.log(data);\n })\n\ \ .catch((error) => {\n console.error(error);\n });\n" - lang: php source: "$queryFields = [\n \"query\" => \"football\",\n \"country\" => \"USA\",\n \"date_start\" => \"2018-10-23\"\ ,\n \"sort\" => \"newest\"\n];\n\n$options = [\n CURLOPT_URL => \"https://api.shutterstock.com/v2/editorial/videos/search?\"\ \ . http_build_query($queryFields),\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,\ \ $options);\n$response = curl_exec($handle);\ncurl_close($handle);\n\n$decodedResponse = json_decode($response);\n\ print_r($decodedResponse);\n" operationId: editorialVideosSearch summary: Search editorial video content description: This endpoint searches for editorial 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. /v2/editorial/videos/categories: get: responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/EditorialVideoCategoryResults' examples: response: value: data: - name: Animal - name: Awards - name: Art - name: Film Stills '400': description: Bad Request '401': description: Unauthorized '403': description: Forbidden security: - basic: [] - customer_accessCode: [] tags: - editorial_video operationId: getEditorialCategories summary: List editorial video categories description: 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. /v2/editorial/videos/{id}: get: parameters: - description: Editorial ID in: path name: id required: true example: 9926131a schema: type: string - description: Returns only if the content is available for distribution in a certain country in: query name: country required: true example: USA schema: type: string format: country-code-3 responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/EditorialVideoContent' examples: response: value: id: 10679336a title: Proud Papa Playing with His Puppies, New Oxford, Pennsylvania, USA - 28 Oct 2020 caption: '' description: 'Info from Licensor: "In June, we rescued this 2 year old male boxer from spending most of his days in a crate. Our 2 adult female boxers helped him adjust to living a good boxer life with our family. He "thanked" us with this surprise litter of 8 puppies! He has really done amazingly well with playing with all the puppies, and I think he will miss them when they go to their "fur-ever" homes. It was a perfect day of playing in the backyard at the end of October 2020."' byline: ViralHog/Shutterstock keywords: - adorable - cute - doggo - doggy - dogs - domesticated animals - entertainment - feel good - grass - new oxford - pennsylvania - pets - played - playing - plays - pup - puppies - puppy - sweet - usa - viralhog - virals - yard date_taken: '2020-10-28' categories: [] aspect: 1.778 assets: preview_mp4: url: https://qa.editorial-cdn.shuttercorp.net/wm-preview-mp4/10679336a/M8TbAb3aNaj2g5w4ODgwMzg=/Shutterstock_10679336a.mp4 preview_webm: url: https://qa.editorial-cdn.shuttercorp.net/wm-preview-webm/10679336a/M5T3Ab36N4jbgcwbODgwMzg=/Shutterstock_10679336a.webm thumb_jpg: url: https://qa.editorial-cdn.shuttercorp.net/thumb-1/10679336a/M5T6Ad37Ncj5g3w1ODgwMzg=/Shutterstock_10679336a.jpg original: height: 1080 width: 1920 fps: 29.937 format: avc1 file_size: 124452018 display_name: HD is_licensable: true '400': description: Bad Request '401': description: Unauthorized '403': description: Forbidden '406': description: Not Acceptable security: - basic: [] - customer_accessCode: [] tags: - editorial_video operationId: editorialVideosDetails summary: Get editorial video content details description: This endpoint shows information about an editorial image, including a URL to a preview image and the sizes that it is available in. /v2/editorial/videos/licenses: post: responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/LicenseEditorialContentResults' examples: response: value: data: - editorial_id: '69656358' download: url: https://s3-eu-west-1.amazonaws.com/api-downloads.rexfeatures.com/[random-characters].mov?Expires=1524717323 '400': description: Bad Request '401': description: Unauthorized '403': description: Forbidden security: - customer_accessCode: - licenses.create - purchases.view x-code-samples: - lang: shell source: "DATA='{\n \"editorial\": [\n {\n \"editorial_id\": \"8594090h\",\n \"license\": \"premier_editorial_video_comp\"\ \n }\n ],\n \"country\": \"USA\"\n}'\n\ncurl -X POST https://api.shutterstock.com/v2/editorial/videos/licenses\ \ \\\n-d \"$DATA\" \\\n-H \"Content-Type: application/json\" \\\n-H \"Accept: application/json\" \\\n-H \"Authorization:\ \ Bearer $SHUTTERSTOCK_API_TOKEN\"" - lang: javascript--nodejs source: "const sstk = require(\"shutterstock-api\");\n\nsstk.setAccessToken(process.env.SHUTTERSTOCK_API_TOKEN);\n\ \nconst editorialApi = new sstk.EditorialApi();\n\nconst body = {\n \"editorial\": [\n {\n \"editorial_id\"\ : \"10687492a\",\n \"license\": \"premier_editorial_video_comp\"\n }\n ],\n \"country\": \"USA\"\n};\n\ \neditorialApi.licenseEditorialVideo(body)\n .then(({ data }) => {\n console.log(data);\n })\n .catch((error)\ \ => {\n console.error(error);\n });\n" - lang: php source: "$body = [\n \"editorial\" => [\n [\n \"editorial_id\" => \"10687492a\",\n \"license\" => \"\ premier_editorial_video_comp\"\n ]\n ],\n \"country\" => \"USA\"\n];\n$encodedBody = json_encode($body);\n\n\ $options = [\n CURLOPT_URL => \"https://api.shutterstock.com/v2/editorial/videos/licenses\",\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);" tags: - editorial_video operationId: licenseEditorialVideo summary: License editorial video content description: This endpoint gets licenses for one or more editorial videos. You must specify the country and one or more editorial videos to license. requestBody: content: application/json: schema: $ref: '#/components/schemas/LicenseEditorialVideoContentRequest' examples: default: value: editorial: - editorial_id: 8594090h license: premier_editorial_video_comp country: USA description: License editorial video content required: true /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);\n\ curl_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);\n\ curl_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);\n\ curl_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);\n\ curl_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);\n\ curl_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: get: parameters: - description: One or more image IDs in: query name: id required: true example: - '1110335168' - '465011609' schema: type: array items: type: string - description: Amount of detail to render in the response in: query name: view example: minimal schema: type: string enum: - minimal - full default: minimal responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/ImageDataList' examples: response: value: data: - id: '465011609' aspect: 0.8501 assets: preview: height: 450 url: https://image.shutterstock.com/display_pic_with_logo/1384888/465011609/stock-vector-happy-mid-autumn-festival-background-with-golden-glitter-moon-and-hand-drawn-moon-rabbits-vector-465011609.jpg width: 382 small_thumb: height: 100 url: https://thumb7.shutterstock.com/thumb_small/1384888/465011609/stock-vector-happy-mid-autumn-festival-background-with-golden-glitter-moon-and-hand-drawn-moon-rabbits-vector-465011609.jpg width: 85 large_thumb: height: 150 url: https://thumb7.shutterstock.com/thumb_large/1384888/465011609/stock-vector-happy-mid-autumn-festival-background-with-golden-glitter-moon-and-hand-drawn-moon-rabbits-vector-465011609.jpg width: 128 huge_thumb: height: 260 url: https://image.shutterstock.com/image-vector/happy-mid-autumn-festival-background-260nw-465011609.jpg width: 221 preview_1000: url: https://ak.picdn.net/shutterstock/photos/465011609/watermark_1000/e80e64e55f14aeb951feaf93ea337dc0/preview_1000-465011609.jpg width: 850 height: 1000 preview_1500: url: https://image.shutterstock.com/z/stock-vector-happy-mid-autumn-festival-background-with-golden-glitter-moon-and-hand-drawn-moon-rabbits-vector-465011609.jpg width: 1275 height: 1500 contributor: id: '1384888' description: Happy Mid Autumn Festival background with golden glitter Moon and hand drawn Moon Rabbits. Vector illustration image_type: vector media_type: image is_adult: false is_editorial: false is_illustration: true has_model_release: false has_property_release: true url: https://www.shutterstock.com/image-photo/465011609 '400': description: Bad Request '401': description: Unauthorized '403': description: Forbidden security: - basic: [] - customer_accessCode: [] tags: - images operationId: getImageList summary: List images description: This endpoint lists information about one or more images, including the available sizes. 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);\n\ print_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 /v2/contributors: get: parameters: - description: One or more contributor IDs in: query name: id required: true example: - 800506 - 1653538 schema: type: array items: type: string responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/ContributorProfileDataList' examples: response: value: data: - id: '800506' display_name: Dave Pusey about: Dave is a self confessed emotional photographer, capturing, keeping and sharing images for the stories of the wild that they convey. equipment: - Both Canon & Nikon contributor_type: - illustrator - videographer styles: - black_and_white - landscape - nature subjects: - animals - holiday - nature - travel - wildlife website: leovantage.com location: za portfolio_url: http://www.shutterstock.com/g/davep social_media: facebook: pages/Dave-Pusey-Photography/131399733564475 '400': description: Bad Request '401': description: Unauthorized '403': description: Forbidden security: - customer_accessCode: [] - basic: [] tags: - contributors operationId: getContributorList summary: Get details about multiple contributors description: This endpoint lists information about one or more contributors, including contributor type, equipment they use and other attributes. /v2/contributors/{contributor_id}: get: parameters: - description: Contributor ID in: path name: contributor_id required: true example: 1653538 schema: type: string responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/ContributorProfile' examples: response: value: id: '1653538' display_name: Mees Kuiper about: A 18 year old photographer living in Amsterdam. equipment: - Nikon D7000 - Nikkor 70-300mm - Nikkor 24-70mm contributor_type: - photographer - illustrator - videographer styles: [] subjects: - animals - buildings - nature - people - wildlife location: nl portfolio_url: http://www.shutterstock.com/g/Mees Kuiper social_media: {} '400': description: Bad Request '401': description: Unauthorized '403': description: Forbidden security: - customer_accessCode: [] - basic: [] tags: - contributors operationId: getContributor summary: Get details about a single contributor description: This endpoint shows information about a single contributor, including contributor type, equipment they use, and other attributes. /v2/contributors/{contributor_id}/collections: get: parameters: - description: Contributor ID in: path name: contributor_id required: true example: 800506 schema: type: string - description: Sort order in: query name: sort schema: type: string enum: - newest - last_updated - item_count responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/CollectionDataList' examples: response: value: data: - name: Lion Cubs cover_item: id: '87672997' media_type: image updated_time: '2014-05-01T05:22:07-04:00' id: '135931' total_item_count: 10 created_time: '2012-04-07T02:07:28-04:00' - name: African Landscapes cover_item: id: '79489261' media_type: image updated_time: '2014-05-01T05:38:34-04:00' id: '1991564' total_item_count: 5 created_time: '2014-05-01T05:23:20-04:00' '400': description: Bad Request '401': description: Unauthorized '403': description: Forbidden '404': description: Contributor not found security: - customer_accessCode: [] - basic: [] tags: - contributors operationId: getContributorCollectionsList summary: List contributors' collections description: This endpoint lists collections based on contributor ID. /v2/contributors/{contributor_id}/collections/{id}: get: parameters: - description: Contributor ID in: path name: contributor_id required: true example: 800506 schema: type: string - description: Collection ID that belongs to the contributor in: path name: id required: true example: 1991678 schema: type: string responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/Collection' examples: response: value: name: Baby Elephants cover_item: id: '168592952' media_type: image updated_time: '2014-05-01T05:50:21-04:00' id: '1991678' total_item_count: 3 '400': description: Bad Request '401': description: Unauthorized '403': description: Forbidden '404': description: Set not found security: - customer_accessCode: [] - basic: [] tags: - contributors operationId: getContributorCollections summary: Get details about contributors' collections description: 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. /v2/contributors/{contributor_id}/collections/{id}/items: get: parameters: - description: Contributor ID in: path name: contributor_id required: true example: 800506 schema: type: string - description: Collection ID that belongs to the contributor in: path name: id required: true example: 1991678 schema: type: string - 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: 50 default: 20 - description: Sort order in: query name: sort schema: type: string enum: - newest - oldest responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/CollectionItemDataList' examples: response: value: data: - added_time: '2014-05-01T05:49:46-04:00' id: '168592952' media_type: image - added_time: '2014-05-01T05:49:59-04:00' id: '88269310' media_type: image - added_time: '2014-05-01T05:50:21-04:00' id: '94373977' media_type: image '400': description: Bad Request '401': description: Unauthorized '403': description: Forbidden '404': description: Set not found security: - customer_accessCode: [] - basic: [] tags: - contributors operationId: getContributorCollectionItems summary: Get the items in contributors' collections description: This endpoint lists the IDs of items in a contributor's collection and the date that each was added. /v2/user: get: responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/UserDetails' examples: response: value: id: '101782699' username: yourusername full_name: your name first_name: firstname last_name: lastname language: es contributor_id: '212' '400': description: Bad Request '401': description: Unauthorized '403': description: Forbidden security: - contributor_accessCode: - user.view customer_accessCode: - user.view tags: - users operationId: getUser summary: Get user details /v2/user/access_token: get: responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AccessTokenDetails' examples: response: value: client_id: bf6e5dabd4rc1d770dc8 realm: customer scopes: - user.view - user.edit username: testuser user_id: '120229367' customer_id: '148363' expires_in: 361354404 '400': description: Bad Request '401': description: Unauthorized '403': description: Forbidden security: - customer_accessCode: [] tags: - users operationId: getAccessToken summary: Get access token details /v2/user/subscriptions: get: responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/SubscriptionDataList' examples: response: value: data: - id: s1729 expiration_time: '2016-11-17T16:46:36-05:00' license: standard description: 25-A-Day Subscription asset_type: images formats: - size: huge format: jpg media_type: image min_resolution: 4000000 description: Huge - size: medium format: jpg media_type: image min_resolution: 1000 description: Med - size: supersize format: jpg media_type: image min_resolution: 16000000 description: Super - size: small format: jpg media_type: image min_resolution: 500 description: Small - size: vector format: eps media_type: image description: Vector '400': description: Bad Request '401': description: Unauthorized '403': description: Forbidden security: - customer_accessCode: - purchases.view tags: - users operationId: getUserSubsciptionList summary: List user subscriptions /v2/test: get: parameters: - description: Text to echo in: query name: text schema: type: string default: ok responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/TestEcho' examples: response: value: text: ok '400': description: Bad Request '401': description: Unauthorized '403': description: Forbidden tags: - test operationId: echo summary: Echo text /v2/test/validate: get: parameters: - description: Integer ID in: query name: id required: true example: 123 schema: type: integer - description: List of tags in: query name: tag schema: type: array items: type: string - description: User agent in: header name: user-agent schema: type: string responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/TestValidate' examples: response: value: header: user-agent: PostmanRuntime/7.1.1 query: id: 12 '400': description: Bad Request '401': description: Unauthorized '403': description: Forbidden tags: - test operationId: validate summary: Validate input /v2/oauth/authorize: get: parameters: - description: Client ID (Consumer Key) of your application in: query name: client_id example: 6d097450b209c6dcd859 required: true schema: type: string - description: User type to be authorized (usually 'customer') in: query name: realm example: customer schema: type: string enum: - customer - contributor default: customer - description: The callback URI to send the request to after authorization; must use a host name that is registered with your application in: query name: redirect_uri example: localhost required: true schema: type: string - description: Type of temporary authorization code that will be used to generate an access code; the only valid value is 'code' in: query name: response_type example: code required: true schema: type: string enum: - code - description: Space-separated list of scopes to be authorized in: query name: scope example: user.view schema: type: string default: user.view - description: Unique value used by the calling app to verify the request in: query name: state example: '1540290465000' required: true schema: type: string responses: '200': description: No response was specified '302': description: Redirect user to authenticate with Shutterstock content: text/html: schema: $ref: '#/components/schemas/AuthorizeResponse' examples: default: description: Redirect user to authenticate with Shutterstock value: 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 '400': description: Bad Request '401': description: Unauthorized '403': description: Forbidden x-code-samples: - lang: shell source: curl "https://api.shutterstock.com/v2/oauth/authorize" \ -X GET \ -G \ --data-urlencode "scope=licenses.create licenses.view purchases.view" \ --data-urlencode "state=demo_`date +%s`" \ --data-urlencode "response_type=code" \ --data-urlencode "redirect_uri=http://localhost:3000/callback" \ --data-urlencode "client_id=$CLIENT_ID" - lang: javascript--nodejs source: "const axios = require(\"axios\");\n\naxios.get(\"https://api.shutterstock.com/v2/oauth/authorize\", {\n \ \ \"params\": {\n \"scope\": \"licenses.create licenses.view purchases.view\",\n \"state\": \"demo_\" + Math.round(new\ \ Date() / 1000),\n \"response_type\": \"code\",\n \"redirect_uri\": \"http://localhost:3000/callback\",\n\ \ \"client_id\": clientId\n },\n // Don't follow the redirect because this program is not running in a browser\n\ \ \"maxRedirects\": 0,\n})\n .catch(({ response }) => {\n // HTTP 302: Redirect\n console.log(response.data);\n\ \ });\n" - lang: php source: '$queryFields = [ "client_id" => $clientId, "redirect_uri" => "http://localhost:3000/callback", "response_type" => "code", "scope" => "licenses.create licenses.view purchases.view", "state" => time() ]; $options = [ CURLOPT_URL => "https://api.shutterstock.com/v2/oauth/authorize?" . http_build_query($queryFields), CURLOPT_USERAGENT => "php/curl", CURLOPT_RETURNTRANSFER => 1 ]; $handle = curl_init(); curl_setopt_array($handle, $options); $response = curl_exec($handle); curl_close($handle); $decodedResponse = json_decode($response); print_r($decodedResponse);' tags: - oauth operationId: authorize summary: Authorize applications description: 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. /v2/oauth/access_token: post: responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/OauthAccessTokenResponse' examples: response: value: access_token: v2/NmQwOTc0NTBiMjA5YzZkY2Q4NTkvMTA4OTg1MDk5L2N1c3RvbWVyLzIvZjB2a0RseGo4Rkt6ZjRmVWJNMm10V2VzcHh1NTBlZWJ6andUQU1NeTVYYnNFTDVWOFRJakItS2RnZTlmbEY1Y3haNWdXLUtYc2JhaXo5djk0V0p2QzZUUWZ4c2FNWm41NkdLYUgyVWlCaVUtQTNVMV9YQWpzd3lpblI3SlZEem8wSG1qQ2NzSkJlX3VQTnNXenBIdkd4SXViVi1rRGJTVENCV0g1U3U0RXRJSV9rSm5lQkl5QXlvbm5JN241UUhv token_type: Bearer '400': description: Bad Request '401': description: Unauthorized '403': description: Forbidden x-code-samples: - lang: shell source: curl "https://api.shutterstock.com/v2/oauth/access_token" \ -X POST \ --data-urlencode "client_id=$CLIENT_ID" \ --data-urlencode "client_secret=$CLIENT_SECRET" \ --data-urlencode "grant_type=authorization_code" \ --data-urlencode "code=$CODE" - lang: javascript--nodejs source: "const axios = require(\"axios\");\n\nconst body = {\n \"client_id\": clientId,\n \"client_secret\": clientSecret,\n\ \ \"grant_type\": \"authorization_code\",\n \"code\": code,\n};\n\naxios.post(\"https://api.shutterstock.com/v2/oauth/access_token\"\ , body)\n .then((res) => {\n console.log(res);\n });\n" - lang: php source: "$body = [\n \"client_id\" => $clientId,\n \"client_secret\" => $clientSecret,\n \"grant_type\" => \"authorization_code\"\ ,\n \"code\" => $code\n];\n$encodedBody = json_encode($body);\n\n$options = [\n CURLOPT_URL => \"https://api.shutterstock.com/v2/oauth/access_token\"\ ,\n CURLOPT_CUSTOMREQUEST => \"POST\",\n CURLOPT_POSTFIELDS => $encodedBody,\n CURLOPT_USERAGENT => \"php/curl\"\ ,\n CURLOPT_HTTPHEADER => [\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" tags: - oauth operationId: createAccessToken summary: Get access tokens description: This endpoint returns an access token for the specified user and with the specified scopes. The token does not expire until the user changes their password. The body parameters must be encoded as form data. requestBody: content: application/x-www-form-urlencoded: schema: type: object properties: client_id: description: Client ID (Consumer Key) of your application type: string client_secret: description: Client Secret (Consumer Secret) of your application type: string code: description: Response code from the /oauth/authorize flow; required if grant_type=authorization_code type: string grant_type: description: 'Grant type: authorization_code generates user tokens, client_credentials generates short-lived client grants' type: string enum: - authorization_code - client_credentials - refresh_token realm: description: User type to be authorized (usually 'customer') type: string enum: - customer - contributor default: customer expires: description: Whether or not the token expires, expiring tokens come with a refresh_token to renew the access_token type: string enum: - 'true' - 'false' default: 'false' required: - client_id - grant_type examples: default: value: client_id: 141024g14g28104gff1h application/json: schema: type: object properties: client_id: description: Client ID (Consumer Key) of your application type: string client_secret: description: Client Secret (Consumer Secret) of your application type: string code: description: Response code from the /oauth/authorize flow; required if grant_type=authorization_code type: string grant_type: description: 'Grant type: authorization_code generates user tokens, client_credentials generates short-lived client grants' type: string enum: - authorization_code - client_credentials - refresh_token realm: description: User type to be authorized (usually 'customer') type: string enum: - customer - contributor default: customer expires: description: Whether or not the token expires, expiring tokens come with a refresh_token to renew the access_token type: boolean default: false required: - client_id - grant_type examples: default: value: client_id: 141024g14g28104gff1h /v2/editorial/{id}: get: parameters: - description: Editorial ID in: path name: id required: true example: 9926131a schema: type: string - description: Returns only if the content is available for distribution in a certain country in: query name: country required: true example: USA schema: type: string format: country-code-3 responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/EditorialContent' examples: response: value: id: 9767412v title: Tokyo 2020 Olympics mascot Miraitowa and Paralympics mascot Someity debut, Japan - 22 Jul 2018 caption: '' description: Tokyo 2020 Olympics mascot Miraitowa greets with former Japanese prime minister Yoshiko Mori, President of Tokyo 2020 Olympics Committee, as mascots of Tokyo 2020 Olympics and Paralympics debut in Tokyo, Japan, 22 July 2018. Tokyo 2020 Olympics will start on 24 July 2020 and run until 09 August 2020. byline: KIMIMASA MAYAMA/EPA-EFE/Shutterstock keywords: [] date_taken: '2018-07-22' categories: [] aspect: 1.33 assets: thumb_170: height: 128 width: 170 url: https://editorial01.shutterstock.com/thumb/9767412v/36aeb953/Shutterstock_9767412v.jpg thumb_220: height: 165 width: 220 url: https://editorial01.shutterstock.com/thumb-220/9767412v/b786b189/Shutterstock_9767412v.jpg watermark_450: height: 338 width: 450 url: https://editorial01.shutterstock.com/wm-preview-450/9767412v/f75b6680/Shutterstock_9767412v.jpg watermark_1500: height: 1500 width: 1040 url: https://editorial01.shutterstock.com/wm-preview-1500/9933285a/ab82fea4/Shutterstock_9933285a.jpg original: display_name: Original height: 3447 width: 4586 is_licensable: true small_jpg: display_name: Small height: 375 width: 500 is_licensable: true medium_jpg: display_name: Med height: 751 width: 1000 is_licensable: true '400': description: Bad Request '401': description: Unauthorized '403': description: Forbidden '404': description: Not Found security: - basic: [] - customer_accessCode: [] tags: - editorial_images operationId: getEditorialImage summary: (Deprecated) Get editorial content details description: Deprecated; use `GET /v2/editorial/images/{id}` instead to show information about an editorial image, including a URL to a preview image and the sizes that it is available in. deprecated: true /v2/editorial/licenses: post: responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/LicenseEditorialContentResults' examples: response: value: data: - editorial_id: '69656358' download: url: https://s3-eu-west-1.amazonaws.com/api-downloads.rexfeatures.com/[random-characters].jpg?Expires=1524717323 '400': description: Bad Request '401': description: Unauthorized '403': description: Forbidden '406': description: Not Acceptable security: - customer_accessCode: - licenses.create x-code-samples: - lang: shell source: "DATA='{\n \"editorial\": [\n {\n \"editorial_id\": \"8594090h\",\n \"license\": \"premier_editorial_comp\"\ \n }\n ],\n \"country\": \"USA\"\n}'\n\ncurl -X POST https://api.shutterstock.com/v2/editorial/licenses \\\n\ -d \"$DATA\" \\\n-H \"Content-Type: application/json\" \\\n-H \"Accept: application/json\" \\\n-H \"Authorization:\ \ Bearer $SHUTTERSTOCK_API_TOKEN\"" - lang: javascript--nodejs source: "const sstk = require(\"shutterstock-api\");\n\nsstk.setAccessToken(process.env.SHUTTERSTOCK_API_TOKEN);\n\ \nconst editorialApi = new sstk.EditorialApi();\n\nconst body = {\n \"editorial\": [\n {\n \"editorial_id\"\ : \"8594090h\",\n \"license\": \"premier_editorial_comp\"\n }\n ],\n \"country\": \"USA\"\n};\n\neditorialApi.licenseEditorialImage(body)\n\ \ .then(({ data }) => {\n console.log(data);\n })\n .catch((error) => {\n console.error(error);\n });\n" - lang: php source: "$body = [\n \"editorial\" => [\n [\n \"editorial_id\" => \"8594090h\",\n \"license\" => \"\ premier_editorial_comp\"\n ]\n ],\n \"country\" => \"USA\"\n];\n$encodedBody = json_encode($body);\n\n$options\ \ = [\n CURLOPT_URL => \"https://api.shutterstock.com/v2/editorial/licenses\",\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);" tags: - editorial_images operationId: licenseEditorialImage summary: (Deprecated) License editorial content description: Deprecated; use `POST /v2/editorial/images/licenses` instead to get licenses for one or more editorial images. You must specify the country and one or more editorial images to license. deprecated: true requestBody: content: application/json: schema: $ref: '#/components/schemas/LicenseEditorialContentRequest' examples: default: value: editorial: - editorial_id: 8594090h license: premier_editorial_comp country: USA description: License editorial content required: true /v2/editorial/livefeeds: get: parameters: - description: Returns only livefeeds that are available for distribution in a certain country in: query name: country required: true example: USA schema: type: string format: country-code-3 - 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: 50 default: 20 responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/EditorialLivefeedList' examples: response: value: page: 1 per_page: 1 total_count: 6011 data: - id: 2018%2F10%2F19%2F'Butterfly'%20photocall%2C%20Rome%20Film%20Festival name: '''Butterfly'' photocall, Rome Film Festival' total_item_count: 24 created_time: '2018-10-19T20:27:26+00:00' cover_item: height: 170 width: 113 url: https://editorial01.shutterstock.com/thumb/9938080a/532b2be1/Shutterstock_9938080a.jpg id: 9938080a '400': description: Bad Request '401': description: Unauthorized '403': description: Forbidden '406': description: Not Acceptable security: - basic: [] - customer_accessCode: [] tags: - editorial_images operationId: getEditorialLivefeedList summary: (Deprecated) Get editorial livefeed list description: Deprecated; use `GET /v2/editorial/images/livefeeds` instead to get a list of editorial livefeeds. deprecated: true /v2/editorial/livefeeds/{id}: get: parameters: - description: Editorial livefeed ID; must be an URI encoded string in: path name: id required: true example: 2018%2F10%2F15%2FWomen%20of%20the%20Year%20Lunch%20%26%20Awards%2C%20London schema: type: string - description: Returns only if the livefeed is available for distribution in a certain country in: query name: country required: true example: USA schema: type: string format: country-code-3 responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/EditorialLivefeed' examples: response: value: id: 2018%2F10%2F19%2F'The%20House%20with%20a%20Clock%20in%20Its%20Walls'%20premiere%2C%20Rome%20Film%20Festival name: '''The House with a Clock in Its Walls'' premiere, Rome Film Festival' total_item_count: 100 cover_item: height: 170 width: 114 url: https://editorial01.shutterstock.com/thumb/9938511p/7d1f17d9/Shutterstock_9938511p.jpg id: 9938511p '400': description: Bad Request '401': description: Unauthorized '403': description: Forbidden '406': description: Not Acceptable security: - basic: [] - customer_accessCode: [] tags: - editorial_images operationId: getEditorialLivefeed summary: (Deprecated) Get editorial livefeed description: 'Deprecated: use `GET /v2/editorial/images/livefeeds/{id}` instead to get an editorial livefeed.' deprecated: true /v2/editorial/livefeeds/{id}/items: get: parameters: - description: Editorial livefeed ID; must be an URI encoded string in: path name: id required: true example: 2018%2F10%2F15%2FWomen%20of%20the%20Year%20Lunch%20%26%20Awards%2C%20London schema: type: string - description: Returns only if the livefeed items are available for distribution in a certain country in: query name: country required: true example: USA schema: type: string format: country-code-3 responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/EditorialContentDataList' examples: response: value: data: - id: 9938573m title: '''The House with a Clock in Its Walls'' premiere, Rome Film Festival, Italy - 19 Oct 2018' caption: '' description: Christian Marazziti and Ariadna Romero byline: Maurizio D'Avanzo/IPA/Shutterstock keywords: [] date_taken: '2018-10-19' categories: - name: Actor - name: Female - name: Personality aspect: 0.666 assets: thumb_170: height: 170 width: 113 url: https://editorial01.shutterstock.com/thumb/9938573m/4d5708ce/Shutterstock_9938573m.jpg thumb_220: height: 220 width: 146 url: https://editorial01.shutterstock.com/thumb-220/9938573m/b78aabde/Shutterstock_9938573m.jpg watermark_450: height: 450 width: 300 url: https://editorial01.shutterstock.com/wm-preview-450/9938573m/4a9a4add/Shutterstock_9938573m.jpg watermark_1500: height: 1500 width: 1040 url: https://editorial01.shutterstock.com/wm-preview-1500/9933285a/ab82fea4/Shutterstock_9933285a.jpg original: display_name: Original height: 4928 width: 3280 is_licensable: true small_jpg: display_name: Small height: 500 width: 332 is_licensable: true medium_jpg: display_name: Med height: 1000 width: 660 is_licensable: true '400': description: Bad Request '401': description: Unauthorized '403': description: Forbidden '406': description: Not Acceptable security: - basic: [] - customer_accessCode: [] tags: - editorial_images operationId: getEditorialLivefeedItems summary: (Deprecated) Get editorial livefeed items description: Deprecated; use `GET /v2/editorial/images/livefeeds/{id}/items` instead to get editorial livefeed items. deprecated: true /v2/editorial/search: get: parameters: - description: One or more search terms separated by spaces in: query name: query schema: type: string - description: Sort by in: query name: sort schema: type: string enum: - relevant - newest - oldest default: relevant - description: Show editorial content within a certain editorial category; specify by category name in: query name: category schema: type: string - description: Show only editorial content that is available for distribution in a certain country in: query name: country required: true example: USA schema: type: string format: country-code-3 - description: Show only editorial content from certain suppliers in: query name: supplier_code schema: type: array items: type: string - description: Show only editorial content generated on or after a specific date in: query name: date_start schema: type: string format: date - description: Show only editorial content generated on or before a specific date in: query name: date_end schema: type: string format: date - description: Number of results per page in: query name: per_page schema: type: integer minimum: 1 maximum: 50 default: 20 - description: The cursor of the page with which to start fetching results; this cursor is returned from previous requests in: query name: cursor schema: type: string responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/EditorialSearchResults' examples: response: value: per_page: 1 total_count: 1556949 search_id: q8igACM5gqQY75owjLoVvw next: eyJ2IjoxLCJzIjoxfQ== prev: '' data: - id: 9804979n title: Hong Kong kicks off international e-Sports competition, China - 24 Aug 2018 caption: '' description: Members of the TyLoo e-Sports team from China prepare to face off against the Kinguin e-Sports team from Poland at the ICBC (Asia) e-Sports and Music Festival Hong Kong 2018, Hong Kong, China, 24 August 2018. The festival runs from 24 to 26 August with professional gamers from around the world competing in international e-sports tournaments. byline: ALEX HOFFORD/EPA-EFE/Shutterstock keywords: [] date_taken: '2018-08-24' categories: [] aspect: 1.481 assets: thumb_170: height: 115 width: 170 url: https://editorial01.shutterstock.com/thumb/9804979n/c4377a53/Shutterstock_9804979n.jpg thumb_220: height: 149 width: 220 url: https://editorial01.shutterstock.com/thumb-220/9804979n/c57a68c7/Shutterstock_9804979n.jpg watermark_450: height: 304 width: 450 url: https://editorial01.shutterstock.com/wm-preview-450/9804979n/37d19dce/Shutterstock_9804979n.jpg watermark_1500: height: 1500 width: 1040 url: https://editorial01.shutterstock.com/wm-preview-1500/9933285a/ab82fea4/Shutterstock_9933285a.jpg original: display_name: Original height: 3263 width: 4831 is_licensable: true small_jpg: display_name: Small height: 337 width: 500 is_licensable: true medium_jpg: display_name: Med height: 675 width: 1000 is_licensable: true '400': description: Bad Request '401': description: Unauthorized '403': description: Forbidden '406': description: Not Acceptable security: - basic: [] - customer_accessCode: [] tags: - editorial_images x-code-samples: - lang: shell source: 'curl -X GET https://api.shutterstock.com/v2/editorial/search \ -H "Accept: application/json" \ -G \ -H "Authorization: Bearer $SHUTTERSTOCK_API_TOKEN" \ --data-urlencode "query=football" \ --data-urlencode "country=USA" \ --data-urlencode "sort=newest" \ --data-urlencode "date_start=2018-10-23" ' - lang: javascript--nodejs source: "const sstk = require(\"shutterstock-api\");\n\nsstk.setAccessToken(process.env.SHUTTERSTOCK_API_TOKEN);\n\ \nconst editorialApi = new sstk.EditorialApi();\n\nconst queryParams = {\n \"query\": \"football\",\n \"country\"\ : \"USA\",\n \"sort\": \"newest\",\n \"date_start\": \"2018-10-23\"\n};\n\nconst country = \"USA\";\n\neditorialApi.searchEditorial(country,\ \ queryParams)\n .then((data) => {\n console.log(data);\n })\n .catch((error) => {\n console.error(error);\n\ \ });\n" - lang: php source: "$queryFields = [\n \"query\" => \"football\",\n \"country\" => \"USA\",\n \"date_start\" => \"2018-10-23\"\ ,\n \"sort\" => \"newest\"\n];\n\n$options = [\n CURLOPT_URL => \"https://api.shutterstock.com/v2/editorial/search?\"\ \ . http_build_query($queryFields),\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,\ \ $options);\n$response = curl_exec($handle);\ncurl_close($handle);\n\n$decodedResponse = json_decode($response);\n\ print_r($decodedResponse);\n" operationId: searchEditorial summary: (Deprecated) Search editorial content description: Deprecated; use `GET /v2/editorial/images/search` instead to search for editorial images. deprecated: true /v2/editorial/categories: get: responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/EditorialCategoryResults' examples: response: value: data: - name: Animal - name: Awards - name: Art - name: Film Stills '400': description: Bad Request '401': description: Unauthorized '403': description: Forbidden security: - basic: [] - customer_accessCode: [] tags: - editorial_images operationId: getEditorialCategories summary: (Deprecated) List editorial categories description: Deprecated; use `GET /v2/editorial/images/categories` instead. 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. deprecated: true /v2/editorial/updated: get: parameters: - name: type in: query description: Specify `addition` to return only images that were added or `edit` to return only images that were edited or deleted schema: type: string enum: - edit - addition example: edit required: true - name: date_updated_start description: 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. in: query schema: type: string format: date-time example: 2020-02-02T13:00-05:00 required: true - name: date_updated_end description: 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. in: query schema: type: string format: date-time example: 2020-02-04T14:00-05:00 required: true - name: date_taken_start description: 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 in: query schema: type: string pattern: ^[0-9]{4}-[0-1][0-9]-[0-3][0-9]$ example: '2020-02-04' - name: date_taken_end description: Show images that were taken before the specified date in: query schema: type: string pattern: ^[0-9]{4}-[0-1][0-9]-[0-3][0-9]$ example: '2020-02-05' - name: cursor description: The cursor of the page with which to start fetching results; this cursor is returned from previous requests in: query schema: type: string example: eyJ2IjoxLCJzIjoyfQ== - description: Sort by in: query name: sort schema: type: string enum: - newest - oldest default: newest example: newest - name: supplier_code description: Show only editorial content from certain suppliers in: query schema: type: array items: type: string maxLength: 5 example: ABC - description: Show only editorial content that is available for distribution in a certain country in: query name: country required: true schema: type: string format: country-code-3 example: USA - description: Number of results per page in: query name: per_page schema: type: integer minimum: 100 maximum: 500 default: 500 example: 200 responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/EditorialUpdatedResults' examples: response: value: per_page: 1 next: eyJ2IjoxLCJzIjoxfQ== prev: '' data: - id: 9804979n title: Hong Kong kicks off international e-Sports competition, China - 24 Aug 2018 caption: '' description: Members of the TyLoo e-Sports team from China prepare to face off against the Kinguin e-Sports team from Poland at the ICBC (Asia) e-Sports and Music Festival Hong Kong 2018, Hong Kong, China, 24 August 2018. The festival runs from 24 to 26 August with professional gamers from around the world competing in international e-sports tournaments. byline: ALEX HOFFORD/EPA-EFE/Shutterstock supplier_code: EPA keywords: [] date_taken: '2018-08-24' categories: [] aspect: 1.481 assets: thumb_170: height: 115 width: 170 url: https://editorial01.shutterstock.com/thumb/9804979n/c4377a53/Shutterstock_9804979n.jpg thumb_220: height: 149 width: 220 url: https://editorial01.shutterstock.com/thumb-220/9804979n/c57a68c7/Shutterstock_9804979n.jpg watermark_450: height: 304 width: 450 url: https://editorial01.shutterstock.com/wm-preview-450/9804979n/37d19dce/Shutterstock_9804979n.jpg watermark_1500: height: 1500 width: 1040 url: https://editorial01.shutterstock.com/wm-preview-1500/9933285a/ab82fea4/Shutterstock_9933285a.jpg original: display_name: Original height: 3263 width: 4831 is_licensable: true small_jpg: display_name: Small height: 337 width: 500 is_licensable: true medium_jpg: display_name: Med height: 675 width: 1000 is_licensable: true updated_time: '2019-07-15T20:04:44-04:00' updates: - addition commercial_status: status: available rights: countries: CAN,+DEU,+GBR,+USA,-* '400': description: Bad Request '401': description: Unauthorized '403': description: Forbidden '406': description: Not Acceptable security: - basic: [] - customer_accessCode: [] x-code-samples: - lang: shell source: 'curl -X GET https://api.shutterstock.com/v2/editorial/updated \ -H "Accept: application/json" \ -G \ -H "Authorization: Bearer $SHUTTERSTOCK_API_TOKEN" \ --data-urlencode "type=edit" \ --data-urlencode "country=USA" \ --data-urlencode "date_updated_start=2020-02-02T13:00:00Z" \ --data-urlencode "date_updated_end=2020-02-02T15:00:00Z"' - lang: javascript--nodejs source: "const sstk = require(\"shutterstock-api\");\n\nsstk.setAccessToken(process.env.SHUTTERSTOCK_API_TOKEN);\n\ \nconst editorialApi = new sstk.EditorialApi();\n\nconst type = \"edit\";\nconst dateUpdatedStart = \"2020-02-02T13:00:00Z\"\ ;\nconst dateUpdatedEnd = \"2020-02-02T15:00:00Z\";\nconst country = \"USA\";\n\neditorialApi.getUpdatedImages(type,\ \ dateUpdatedStart, dateUpdatedEnd, country)\n .then((data) => {\n console.log(data);\n })\n .catch((error)\ \ => {\n console.error(error);\n });\n" - lang: php source: "$queryFields = [\n \"type\" => \"edit\",\n \"country\" => \"USA\",\n \"date_updated_start\" => \"2020-02-02T13:00:00Z\"\ ,\n \"date_updated_end\" => \"2020-02-02T15:00:00Z\",\n];\n\n$options = [\n CURLOPT_URL => \"https://api.shutterstock.com/v2/editorial/updated?\"\ \ . http_build_query($queryFields),\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,\ \ $options);\n$response = curl_exec($handle);\ncurl_close($handle);\n\n$decodedResponse = json_decode($response);\n\ print_r($decodedResponse);\n" tags: - editorial_images operationId: getUpdatedImages summary: (Deprecated) List updated content description: Deprecated; use `GET /v2/editorial/images/updated` instead to get recently updated items. deprecated: true servers: - url: https://api.shutterstock.com description: Shutterstock API components: 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. schemas: AccessTokenDetails: description: Access token details that are currently associated with this user properties: client_id: description: Client ID that is associated with the user type: string contributor_id: description: Contributor ID that is associated with the user type: string customer_id: description: Customer ID that is associated with the user type: string expires_in: description: Number of seconds until the access token expires; no expiration if this value is null type: integer organization_id: description: Organization ID that is associated with the user type: string realm: description: Type of access token enum: - customer - contributor type: string scopes: description: Scopes that this access token provides when used as authentication items: type: string type: array user_id: description: User ID that is associated with the user type: string username: description: User name that is associated with the user type: string type: object Album: description: Album metadata properties: id: type: string description: The album ID title: type: string description: The album title required: - id - title type: object additionalProperties: false Allotment: description: An allotment of credits as part of a subscription properties: downloads_left: description: Number of credits remaining in the subscription type: integer downloads_limit: description: Total number of credits available to this subscription type: integer end_time: description: Date the subscription ends format: date-time type: string start_time: description: Date the subscription started format: date-time type: string type: object Artist: description: Metadata about the artist that created the media properties: name: type: string description: The artist's name required: - name type: object Audio: description: Audio metadata example: added_date: '2016-08-16' album: id: '' title: '' artists: - name: Klimenko Music assets: clean_audio: file_size: 35188408 preview_mp3: file_size: 4400203 url: https://ak.picdn.net/shutterstock/audio/442583/preview/preview.mp3 preview_ogg: file_size: 4453197 url: https://ak.picdn.net/shutterstock/audio/442583/preview/preview.ogg waveform: file_size: 18778 url: https://ak.picdn.net/shutterstock/audio/442583/waveform/waveform.png bpm: 110 contributor: id: '2847971' description: Pulsing and feel-good, featuring soaring synthesizer, groovy synth bass drums and synth drums that create a euphoric, upbeat mood. duration: 183 genres: - Dance/Electronic - Electro Pop - Pop/Rock id: '442583' instruments: - Piano - Synth bass - Synth drums - Synthesizer is_adult: false is_instrumental: true isrc: '' keywords: - celebratory - chic - euphoric - good times - hip - optimistic - party - soaring - upbeat language: en lyrics: '' media_type: audio moods: - Bright - Confident - Fun - Happy - Inspiring - Optimistic - Playful - Sophisticated - Stylish - Uplifting published_time: '2016-08-16T14:30:03-04:00' recording_version: '' releases: [] similar_artists: [] title: Another Tomorrow updated_time: '2016-08-18T17:59:33-04:00' vocal_description: '' url: '' properties: added_date: description: Date this track was added to the Shutterstock library format: date type: string affiliate_url: description: Affiliate referral link; appears only for registered affiliate partners type: string album: $ref: '#/components/schemas/Album' artists: description: List of artists items: $ref: '#/components/schemas/Artist' type: array assets: $ref: '#/components/schemas/AudioAssets' bpm: description: BPM (beats per minute) of this track type: integer contributor: $ref: '#/components/schemas/Contributor' deleted_time: format: date-time type: string description: description: Description of this track type: string duration: description: Duration of this track in seconds type: integer genres: description: List of all genres for this track items: description: Genre that is associated with this track type: string type: array id: description: Shutterstock ID of this track type: string instruments: description: List of all instruments that appear in this track items: description: Instrument that appears in this track type: string type: array is_adult: description: Whether or not this track contains adult content type: boolean is_instrumental: description: Whether or not this track is purely instrumental (lacking lyrics) type: boolean isrc: description: '' type: string keywords: description: List of all keywords for this track items: description: Keyword for this track type: string type: array language: description: Language of this track's lyrics type: string lyrics: description: Lyrics of this track type: string media_type: description: Media type of this track; should always be "audio" type: string model_releases: description: List of all model releases for this track items: $ref: '#/components/schemas/ModelRelease' type: array moods: description: List of all moods of this track items: description: Mood of this track type: string type: array published_time: description: Time this track was published format: date-time type: string recording_version: description: Recording version of this track type: string releases: description: List of all releases of this track items: description: Release of this track type: string type: array similar_artists: description: List of all similar artists of this track items: $ref: '#/components/schemas/Artist' type: array submitted_time: description: Time this track was submitted format: date-time type: string title: description: Title of this track type: string updated_time: description: Time this track was last updated format: date-time type: string vocal_description: description: Vocal description of this track type: string url: description: '' type: string required: - id - media_type - contributor type: object additionalProperties: false AudioAssetDetails: description: Information about a file that is part of an audio asset properties: file_size: description: File size of the track type: integer url: description: URL the track is available at type: string type: object AudioAssets: description: Files that are available as part of an audio asset properties: album_art: $ref: '#/components/schemas/AudioAssetDetails' clean_audio: $ref: '#/components/schemas/AudioAssetDetails' original_audio: $ref: '#/components/schemas/AudioAssetDetails' preview_mp3: $ref: '#/components/schemas/AudioAssetDetails' preview_ogg: $ref: '#/components/schemas/AudioAssetDetails' waveform: $ref: '#/components/schemas/AudioAssetDetails' type: object AudioDataList: description: List of tracks example: data: - added_date: '2016-04-12' album: id: '' title: '' artists: - name: Fin Productions assets: clean_audio: file_size: 30760372 preview_mp3: file_size: 3846606 url: https://ak.picdn.net/shutterstock/audio/434750/preview/preview.mp3 preview_ogg: file_size: 4402608 url: https://ak.picdn.net/shutterstock/audio/434750/preview/preview.ogg waveform: file_size: 19822 url: https://ak.picdn.net/shutterstock/audio/434750/waveform/waveform.png bpm: 100 contributor: id: '2847971' description: Pulsing and feel-good, featuring slick electric guitar, synthesizer, bass, electronic drum pads and drums that create a positive, celebratory mood. duration: 160 genres: - Dance/Electronic - Electro Pop - Pop/Rock id: '434750' instruments: - Bass - Drums - Electric guitar - Pads - Percussion - Synthesizer is_adult: false is_instrumental: true isrc: '' keywords: - breezy - celebration - festive - good times - hopeful - optimistic - party - positive - reflective language: en lyrics: '' media_type: audio moods: - Bright - Confident - Fun - Happy - Inspiring - Optimistic - Playful - Sophisticated - Stylish - Uplifting published_time: '2016-04-12T17:45:29-04:00' recording_version: '' releases: [] similar_artists: [] title: Fresh Love updated_time: '2016-08-18T18:03:11-04:00' vocal_description: '' properties: data: description: Tracks items: $ref: '#/components/schemas/Audio' 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 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 AudioSearchResults: description: Audio search results properties: data: description: List of tracks items: $ref: '#/components/schemas/Audio' 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: ID of the search type: string required: - data - total_count - search_id type: object additionalProperties: false AuthorizeResponse: description: Response to Authorize requests properties: body: description: HTML redirect URL that contains the application authorization 'code' type: string required: - body type: object Category: description: Category information properties: id: description: Category ID type: string name: description: Category name type: string type: object CategoryDataList: description: List of categories that images can belong to properties: data: description: Categories items: $ref: '#/components/schemas/Category' 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 page: description: The current page of results type: integer per_page: description: The number of results per page type: integer total_count: description: The total number of results across all pages type: integer Collection: description: Metadata about a collection of assets properties: cover_item: $ref: '#/components/schemas/CollectionItem' created_time: description: When the collection was created format: date-time type: string id: description: The collection ID type: string items_updated_time: description: The last time this collection's items were updated format: date-time type: string name: description: The name of the collection type: string share_code: description: A code that can be used to share the collection (optional) type: string share_url: description: The browser URL that can be used to share the collection (optional) type: string total_item_count: description: The number of items in the collection type: integer updated_time: description: The last time the collection was update (other than changes to the items in it) format: date-time type: string required: - id - name - total_item_count type: object CollectionCreateRequest: description: Collection creation request example: name: Test Collection 19cf properties: name: description: The name of the collection type: string required: - name type: object CollectionCreateResponse: description: Collection creation response example: id: '48433105' properties: id: description: ID of the new collection type: string required: - id type: object CollectionDataList: description: List of collections example: data: - created_time: '2014-11-05T19:29:56-05:00' id: '5747953' name: Test Collection cdad total_item_count: 0 updated_time: '2014-11-05T19:29:56-05:00' - created_time: '2014-11-05T19:29:56-05:00' id: '5747955' name: Test Collection ff5f total_item_count: 0 updated_time: '2014-11-05T19:29:56-05:00' - created_time: '2014-11-05T19:29:58-05:00' id: '5747957' name: Updated Collection ebc4 total_item_count: 0 updated_time: '2014-11-05T19:29:58-05:00' - created_time: '2014-11-05T19:32:13-05:00' id: '5747971' name: Test Collection 0072 total_item_count: 0 updated_time: '2014-11-05T19:32:13-05:00' - created_time: '2014-11-05T19:32:13-05:00' id: '5747973' name: Test Collection d332 total_item_count: 0 updated_time: '2014-11-05T19:32:13-05:00' properties: data: description: Collections items: $ref: '#/components/schemas/Collection' 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 page: description: The current page of results type: integer per_page: description: The number of results per page type: integer total_count: description: The total number of results across all pages type: integer CollectionItem: description: Metadata about an item that is part of a collection properties: added_time: description: The date the item was added to the collection format: date-time type: string id: description: ID of the item type: string media_type: description: The media type of the item, such as image, video, or audio type: string required: - id type: object CollectionItemDataList: description: List of items in a collection example: data: - added_time: '2016-08-18T18:52:59-04:00' id: '76688182' media_type: audio - added_time: '2016-08-18T18:52:59-04:00' id: '40005859' media_type: audio page: 1 per_page: 100 properties: data: description: Assets in the collection items: $ref: '#/components/schemas/CollectionItem' 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 page: description: The current page of results type: integer per_page: description: The number of results per page type: integer total_count: description: The total number of results across all pages type: integer CollectionItemRequest: description: Request to get a list of items in a collection properties: items: description: List of items items: $ref: '#/components/schemas/CollectionItem' type: array required: - items type: object CollectionUpdateRequest: description: Collection update request example: name: My collection with a new name properties: name: description: The new name of the collection type: string required: - name type: object ComputerVisionImageCreateResponse: description: Asset upload information properties: upload_id: type: string required: - upload_id type: object Contributor: description: Information about a contributor properties: id: description: ID of the contributor type: string required: - id type: object ContributorProfile: description: Contributor profile data properties: about: description: Short description of the contributors' library type: string contributor_type: description: Type of content that the contributor specializes in (photographer, illustrator, etc) items: type: string type: array display_name: description: Preferred name to be displayed for the contributor type: string equipment: description: List of equipment used by the contributor (Canon EOS 5D Mark II, etc) items: type: string type: array id: description: Contributor ID type: string location: description: Country code representing the contributor's locale type: string format: country-code-2 portfolio_url: description: Web URL for the contributors' profile type: string social_media: $ref: '#/components/schemas/ContributorProfileSocialMedia' styles: description: List of styles that the contributor specializes in (lifestyle, mixed media, etc) items: type: string type: array subjects: description: Generic list of subjects for contributors' work (food_and_drink, holiday, people, etc) items: type: string type: array website: description: Personal website for the contributor type: string required: - id type: object ContributorProfileDataList: description: List of contributor profiles properties: data: description: Conributor profiles items: $ref: '#/components/schemas/ContributorProfile' type: array errors: description: Error list; appears only if there was an error items: $ref: '#/components/schemas/Error' type: array message: description: Error message type: string page: description: Page of response type: integer per_page: description: Number of contributors per page type: integer total_count: description: Total count of contributors for this request type: integer ContributorProfileSocialMedia: description: Contributor profile social media links properties: facebook: description: Facebook link for contributor type: string google_plus: description: Google+ link for contributor type: string linkedin: description: LinkedIn link for contributor type: string pinterest: description: Pinterest page for contributor type: string tumblr: description: Tumblr link for contributor type: string twitter: description: Twitter link for contributor type: string type: object Cookie: description: Cookie object properties: name: description: The name of the cookie type: string value: description: The value of the cookie type: string required: - name - value type: object CustomSizeDimensions: description: A custom height or a custom width to resize the image to, but not both (experimental) properties: height: description: Custom height to resize the image to type: integer minimum: 100 width: description: Custom width to resize the image to type: integer minimum: 100 type: object DownloadHistory: description: Information about a downloaded media item. Applicable for all media types, only one of 'audio', 'image' or 'video' will be in a single DownloadHistory object properties: audio: $ref: '#/components/schemas/DownloadHistoryMediaDetails' download_time: description: Date the media was downloaded the first time format: date-time type: string id: description: ID of the download type: string image: $ref: '#/components/schemas/DownloadHistoryMediaDetails' is_downloadable: description: Specifies if the media is downloadable via its respective downloads endpoint type: boolean license: description: The name of the license of this download type: string metadata: description: The metadata that was passed in the original licensing request type: object subscription_id: description: ID of the subscription used to perform this download type: string user: $ref: '#/components/schemas/DownloadHistoryUserDetails' video: $ref: '#/components/schemas/DownloadHistoryMediaDetails' required: - id - download_time - license type: object DownloadHistoryDataList: description: List of download events properties: data: description: Download events items: $ref: '#/components/schemas/DownloadHistory' 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 page: description: The current page of results type: integer per_page: description: The number of results per page type: integer total_count: description: The total number of results across all pages type: integer DownloadHistoryFormatDetails: description: Information about the format of a download properties: format: description: The format of the downloaded media type: string size: description: The size of the downloaded media type: string type: object DownloadHistoryMediaDetails: description: Information about the downloaded media properties: format: $ref: '#/components/schemas/DownloadHistoryFormatDetails' id: description: ID of the download history media details type: string required: - id type: object DownloadHistoryUserDetails: description: Information about a user properties: username: description: The name of the user who downloaded the item type: string required: - username type: object EditorialAssets: description: Asset information, including size and thumbnail URLs properties: original: $ref: '#/components/schemas/ImageSizeDetails' thumb_170: $ref: '#/components/schemas/Thumbnail' thumb_220: $ref: '#/components/schemas/Thumbnail' watermark_450: $ref: '#/components/schemas/Thumbnail' watermark_1500: $ref: '#/components/schemas/Thumbnail' small_jpg: $ref: '#/components/schemas/ImageSizeDetails' medium_jpg: $ref: '#/components/schemas/ImageSizeDetails' type: object EditorialCategory: description: Name of an editorial category properties: name: type: string type: object EditorialCategoryResults: description: List of editorial categories type: object properties: data: type: array items: $ref: '#/components/schemas/EditorialCategory' EditorialContent: description: Metadata about editorial content properties: aspect: type: number assets: $ref: '#/components/schemas/EditorialAssets' byline: type: string caption: type: string categories: description: List of categories items: $ref: '#/components/schemas/EditorialCategory' type: array date_taken: format: date type: string description: type: string id: type: string keywords: items: type: string type: array title: type: string required: - id type: object EditorialContentDataList: description: List of editorial items properties: data: description: Editorial items items: $ref: '#/components/schemas/EditorialContent' type: array errors: description: Error list; appears only if there was an error items: $ref: '#/components/schemas/Error' type: array message: description: Optional error message type: string page: description: Current page of the response type: integer per_page: description: Number of results per page type: integer total_count: description: Total count of all results type: integer EditorialCoverItem: description: Cover image for editorial livefeed properties: height: type: integer id: type: string url: type: string width: type: integer required: - id - url type: object EditorialImageCategoryResults: description: List of editorial categories type: object properties: data: type: array items: $ref: '#/components/schemas/EditorialCategory' EditorialImageContentDataList: description: List of editorial items properties: data: description: Editorial items items: $ref: '#/components/schemas/EditorialContent' type: array errors: description: Error list; appears only if there was an error items: $ref: '#/components/schemas/Error' type: array message: description: Optional error message type: string page: description: Current page of the response type: integer per_page: description: Number of results per page type: integer total_count: description: Total count of all results type: integer EditorialImageLivefeed: description: Metadata about editorial livefeed properties: cover_item: $ref: '#/components/schemas/EditorialCoverItem' created_time: description: When the livefeed was initially created format: date-time type: string id: description: Livefeed ID type: string name: description: Name of the livefeed type: string total_item_count: description: Total count of items in the livefeed type: integer required: - id - name - total_item_count type: object EditorialImageLivefeedList: description: List of editorial livefeeds properties: data: description: Editorial livefeeds items: $ref: '#/components/schemas/EditorialLivefeed' type: array message: description: Optional error message type: string page: description: Current page of the response type: integer per_page: description: Number of results per page type: integer total_count: description: Total count of all results type: integer required: - data - total_count type: object EditorialLivefeed: description: Metadata about editorial livefeed properties: cover_item: $ref: '#/components/schemas/EditorialCoverItem' created_time: description: When the livefeed was initially created format: date-time type: string id: description: Livefeed ID type: string name: description: Name of the livefeed type: string total_item_count: description: Total count of items in the livefeed type: integer required: - id - name - total_item_count type: object EditorialLivefeedList: description: List of editorial livefeeds properties: data: description: Editorial livefeeds items: $ref: '#/components/schemas/EditorialLivefeed' type: array message: description: Optional error message type: string page: description: Current page of the response type: integer per_page: description: Number of results per page type: integer total_count: description: Total count of all results type: integer required: - data - total_count type: object EditorialSearchResults: description: Editorial search results properties: data: description: Editorial items items: $ref: '#/components/schemas/EditorialContent' type: array message: description: Optional error message type: string next: description: Cursor value that represents the next page of results type: string page: description: Current page of the response type: integer per_page: description: Number of results per page type: integer prev: description: Cursor value that represents the previous page of results type: string search_id: description: Unique identifier for the search request type: string total_count: description: Total count of all results type: integer required: - data - total_count type: object EditorialUpdatedContent: description: Metadata about updated editorial content properties: commercial_status: properties: status: type: string reason: type: string aspect: type: number assets: $ref: '#/components/schemas/EditorialAssets' byline: type: string caption: type: string categories: description: List of categories items: $ref: '#/components/schemas/EditorialCategory' type: array date_taken: format: date type: string description: type: string id: type: string keywords: items: type: string type: array title: type: string updated_time: type: string format: date-time created_time: type: string format: date-time rights: type: object properties: countries: type: string updates: type: array items: type: string supplier_code: type: string required: - id type: object EditorialUpdatedResults: description: Editorial updated results properties: data: description: Editorial updated items items: $ref: '#/components/schemas/EditorialUpdatedContent' type: array message: description: Optional error message type: string next: description: Cursor value that represents the next page of results type: string per_page: description: Number of results per page type: integer prev: description: Cursor value that represents the previous page of results type: string required: - data type: object EditorialVideoAssets: description: Asset information, including size and thumbnail URLs properties: original: $ref: '#/components/schemas/VideoSizeDetails' preview_mp4: $ref: '#/components/schemas/VideoPreviewUrl' preview_webm: $ref: '#/components/schemas/VideoPreviewUrl' thumb_jpg: $ref: '#/components/schemas/VideoPreviewUrl' type: object EditorialVideoCategoryResults: description: List of editorial video categories type: object properties: data: type: array items: $ref: '#/components/schemas/EditorialCategory' EditorialVideoContent: description: Metadata about editorial content properties: aspect: type: number assets: $ref: '#/components/schemas/EditorialVideoAssets' byline: type: string caption: type: string categories: description: List of categories items: $ref: '#/components/schemas/EditorialCategory' type: array date_taken: format: date type: string description: type: string id: type: string keywords: items: type: string type: array title: type: string required: - id type: object EditorialVideoSearchResults: description: Editorial search results properties: data: description: Editorial items items: $ref: '#/components/schemas/EditorialVideoContent' type: array message: description: Optional error message type: string next: description: Cursor value that represents the next page of results type: string page: description: Current page of the response type: integer per_page: description: Number of results per page type: integer prev: description: Cursor value that represents the previous page of results type: string search_id: description: Unique identifier for the search request type: string total_count: description: Total count of all results type: integer required: - data - total_count 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 FeaturedCollection: description: Metadata about a featured collection properties: cover_item: $ref: '#/components/schemas/FeaturedCollectionCoverItem' created_time: description: Date that the collection was created format: date-time type: string hero_item: $ref: '#/components/schemas/FeaturedCollectionCoverItem' description: Top-level item that is meant as a cover image, as the first image seen to represent the collection id: description: Collection ID type: string items_updated_time: description: Date that an item in the collection was last added or removed format: date-time type: string name: description: Name of the collection type: string share_url: description: Unique share url for the collection type: string total_item_count: description: Total number of items in the collection type: integer updated_time: description: Date that the collection was last modified format: date-time type: string required: - id - name - total_item_count type: object FeaturedCollectionCoverItem: description: Featured collection cover item metadata properties: url: description: URL of the collection cover item type: string required: - url type: object FeaturedCollectionDataList: description: List of featured collections properties: data: description: Featured collections items: $ref: '#/components/schemas/FeaturedCollection' 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 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 GenreList: description: List of audio genres example: data: - Rock properties: data: description: List of genres items: type: string type: array required: - data type: object additionalProperties: false 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 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 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 ImageCreateResponse: description: Image upload information properties: id: type: string required: - id type: object ImageDataList: description: List of images properties: data: description: Images items: $ref: '#/components/schemas/Image' 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 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 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 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 InstrumentList: description: List of instruments example: data: - Electric Guitar properties: data: description: List of instruments items: type: string type: array required: - data type: object additionalProperties: false 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 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 LicenseAudio: description: An audio track in a licensing request properties: audio_id: description: ID of the track being licensed type: string license: description: Type of license enum: - audio_platform - premier_music_basic - premier_music_extended - premier_music_pro - premier_music_comp type: string search_id: description: ID of the search that led to this licensing event type: string required: - audio_id type: object LicenseAudioRequest: description: Audio license request data example: audio: - audio_id: '1' properties: audio: description: List of audio tracks to license items: $ref: '#/components/schemas/LicenseAudio' type: array required: - audio type: object LicenseAudioResult: description: The response to a licensing request for an audio track properties: audio_id: description: ID of the track that was licensed type: string download: $ref: '#/components/schemas/Url' error: description: Error information if applicable type: string required: - audio_id type: object LicenseAudioResultDataList: description: List of audio license results example: data: - audio_id: '1' download: url: http://download2.dev.shutterstock.com/gatekeeper/abc/original.wav properties: data: description: License results items: $ref: '#/components/schemas/LicenseAudioResult' 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 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 LicenseEditorialContent: description: Individual editorial content to license properties: editorial_id: description: Editorial ID type: string license: description: License agreement to use for licensing type: string metadata: $ref: '#/components/schemas/LicenseRequestMetadata' size: description: Asset size to download default: original enum: - small - medium - original type: string required: - editorial_id - license type: object LicenseEditorialContentRequest: description: License editorial content request properties: country: description: Mandatory country code for where the editorial content will be distributed; this value is used for rights checks anyOf: - type: string format: country-code-3 - type: string format: country-code-2 example: USA editorial: description: Editorial content to license items: $ref: '#/components/schemas/LicenseEditorialContent' type: array required: - country - editorial type: object LicenseEditorialContentResult: description: The response to a licensing request for editorial content properties: allotment_charge: description: For pre-paid plans, how many credits were used for the item license type: integer download: $ref: '#/components/schemas/Url' description: Information that is needed to download the image editorial_id: description: Editorial ID type: string error: type: string required: - editorial_id type: object LicenseEditorialContentResults: description: List of editorial license results properties: data: description: License results items: $ref: '#/components/schemas/LicenseEditorialContentResult' type: array errors: description: Error list; appears only if there was an error items: $ref: '#/components/schemas/Error' type: array message: description: Optional error message type: string page: description: Current page of the response type: integer per_page: description: Number of results per page type: integer total_count: description: Total count of all results type: integer LicenseEditorialVideoContent: description: Individual editorial video content to license properties: editorial_id: description: Editorial ID type: string license: description: License agreement to use for licensing type: string enum: - premier_editorial_video_digital_only - premier_editorial_video_all_media - premier_editorial_video_all_media_single_territory - premier_editorial_video_comp metadata: $ref: '#/components/schemas/LicenseRequestMetadata' size: description: Asset size to download default: original enum: - original type: string required: - editorial_id - license type: object LicenseEditorialVideoContentRequest: description: License editorial video content request properties: country: description: Mandatory country code for where the editorial content will be distributed; this value is used for rights checks anyOf: - type: string format: country-code-3 - type: string format: country-code-2 example: USA editorial: description: Editorial content to license items: $ref: '#/components/schemas/LicenseEditorialVideoContent' type: array required: - country - editorial type: object LicenseFormat: description: Description of a license properties: description: description: Description of the license type: string format: description: Format or extension of the media, such as mpeg for videos or jpeg for images type: string media_type: description: Media type of the license enum: - image - video - audio - editorial type: string min_resolution: description: Width of the media, in pixels, allowed by this license type: integer size: description: Keyword that details the size of the media, such as hd or sd for video, huge or vector for images type: string type: object LicenseImage: description: Data required to license an image properties: auth_cookie: $ref: '#/components/schemas/Cookie' description: Cookie object editorial_acknowledgement: description: Set to true to acknowledge the editorial agreement type: boolean format: description: Image format to download enum: - jpg - eps type: string image_id: description: Image ID type: string metadata: $ref: '#/components/schemas/LicenseRequestMetadata' price: description: For revenue-sharing transactions, the final cost to the end customer type: number search_id: description: ID of the search that led to this licensing transaction type: string show_modal: description: (Deprecated) type: boolean size: description: Image size to download enum: - small - medium - huge - vector - custom type: string custom_dimensions: $ref: '#/components/schemas/CustomSizeDimensions' subscription_id: description: ID of the subscription to use for the download. type: string verification_code: description: (Deprecated) type: string required: - image_id type: object LicenseImageRequest: description: Image license request data properties: images: description: Images to create licenses for items: $ref: '#/components/schemas/LicenseImage' type: array required: - images type: object LicenseImageResult: description: The response to a licensing request for an image properties: allotment_charge: description: Number of credits that this licensing event used type: integer download: $ref: '#/components/schemas/Url' description: Information that is needed to download the image error: description: Error message, appears only if there was an error type: string image_id: description: Image ID that was licensed type: string price: $ref: '#/components/schemas/Price' description: Wholesale price information; only for rev-share partners required: - image_id type: object LicenseImageResultDataList: description: List of information about licensed images properties: data: description: License results items: $ref: '#/components/schemas/LicenseImageResult' 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 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 LicenseRequestMetadata: description: Additional information for license requests for enterprise accounts and API subscriptions, 4 fields maximum; which fields are required is set by the account holder example: customer_id: '12345' geo_location: US number_viewed: '15' search_term: dog maxProperties: 4 properties: {} type: object LicenseVideo: description: Data required to license a video example: size: hd subscription_id: s8241143 video_id: '2140697' properties: auth_cookie: $ref: '#/components/schemas/Cookie' editorial_acknowledgement: description: Whether or not this item is editorial content type: boolean metadata: $ref: '#/components/schemas/LicenseRequestMetadata' price: description: Retail price amount; only for rev-share partners type: number search_id: description: ID of the search that led to this licensing event type: string show_modal: description: (Deprecated) type: boolean size: description: Size of the video being licensed enum: - web - sd - hd - 4k type: string subscription_id: description: ID of the subscription used for this license type: string video_id: description: ID of the video being licensed type: string required: - video_id type: object LicenseVideoRequest: description: List of videos to license properties: videos: description: Videos to license items: $ref: '#/components/schemas/LicenseVideo' type: array required: - videos type: object LicenseVideoResult: description: The response to a licensing request for a video properties: allotment_charge: description: Number of credits that this licensing event used type: integer download: $ref: '#/components/schemas/Url' error: description: Potential error that occurred during licensing type: string price: $ref: '#/components/schemas/Price' description: Wholesale price information; only for rev-share partners only video_id: description: ID of the video that was licensed type: string required: - video_id type: object LicenseVideoResultDataList: description: List of video license results properties: data: description: License results items: $ref: '#/components/schemas/LicenseVideoResult' 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 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 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 MoodList: description: List of audio moods example: data: - Aggressive properties: data: description: List of audio moods items: type: string type: array required: - data type: object additionalProperties: false OauthAccessTokenResponse: description: Access token response to client apps properties: access_token: description: Access token that can be used for future requests type: string expires_in: description: Number of seconds before token expires, only present for expiring tokens type: integer token_type: default: Bearer description: Type of token type: string refresh_token: description: A refresh token that can be used to renew the access_token when it expires, only present for expiring tokens type: string user_token: description: Metadata about the access_token, only present for expiring tokens type: string required: - access_token - token_type type: object Price: description: Price properties: local_amount: description: Dollar amount of the calculated rev-share price in the currency local_currency type: number local_currency: description: Currency of the rev-share price that was calculated type: string type: object Recommendation: description: Media Recommendation properties: id: description: Media ID type: string required: - id type: object RecommendationDataList: description: List of recommended images properties: data: description: Recommended images items: $ref: '#/components/schemas/Recommendation' 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 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 RedownloadImage: description: Data required to redownload an image properties: auth_cookie: description: (Deprecated) deprecated: true $ref: '#/components/schemas/Cookie' show_modal: description: (Deprecated) deprecated: true type: boolean size: description: Size of the image enum: - small - medium - huge - supersize - vector type: string verification_code: description: (Deprecated) deprecated: true type: string type: object RedownloadVideo: description: Data required to redownload a video properties: auth_cookie: description: (Deprecated) deprecated: true $ref: '#/components/schemas/Cookie' show_modal: description: (Deprecated) deprecated: true type: boolean size: description: Size of the video enum: - web - sd - hd - 4k type: string verification_code: description: (Deprecated) deprecated: true type: string type: object SearchEntitiesRequest: description: Search entity request data properties: text: description: Plain text to extract keywords from type: string minLength: 1 maxLength: 100000 required: - text type: object SearchEntitiesResponse: description: The response to a request for keyword analysis example: keywords: - beach - place - sand - ocean properties: keywords: description: The top keywords from the submitted text type: array items: type: string Subscription: description: Subscription information properties: allotment: $ref: '#/components/schemas/Allotment' description: description: Description of the subscription type: string expiration_time: description: Date the subscription ends format: date-time type: string formats: description: List of formats that are licensable for the subscription items: $ref: '#/components/schemas/LicenseFormat' type: array id: description: Unique internal identifier for the subscription type: string license: description: Internal identifier for the type of subscription type: string asset_type: description: Identifier for the type of assets associated with this subscription (images, videos, audio, editorial) type: string metadata: $ref: '#/components/schemas/SubscriptionMetadata' price_per_download: $ref: '#/components/schemas/Price' required: - id type: object SubscriptionDataList: description: List of subscriptions properties: data: description: Subscriptions retrieved from this user items: $ref: '#/components/schemas/Subscription' type: array errors: description: Error list; appears only if there was an error items: $ref: '#/components/schemas/Error' type: array message: description: Optional error message type: string page: description: Current page that is being queried type: integer per_page: description: Amount of subscriptions to show per page type: integer total_count: description: Total number of subscriptions for this user type: integer SubscriptionMetadata: description: Subscription metadata type: object Suggestions: description: List of search suggestions properties: data: description: Search suggestions type: array items: type: string type: object TestEcho: description: Text to echo in the response properties: text: type: string type: object TestValidate: description: Validation results properties: header: $ref: '#/components/schemas/TestValidateHeader' description: Headers as included in the request query: $ref: '#/components/schemas/TestValidateQuery' description: Query as included in the request type: object TestValidateHeader: description: Validation results properties: user-agent: description: User agent to expect in the response type: string type: object TestValidateQuery: description: Validation results properties: id: description: Integer ID that was passed in the request type: integer tag: description: List of tags that were passed in the request items: type: string type: array required: - id type: object 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 UpdatedMedia: description: Information about a piece of updated media properties: id: description: ID of the media type: string updated_time: description: Date that the media was updated format: date-time type: string updates: description: Types of updates that were made to the piece of media items: type: string type: array required: - id - updated_time - updates type: object UpdatedMediaDataList: description: List of updated media properties: data: description: Updated media items items: $ref: '#/components/schemas/UpdatedMedia' 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 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 Url: description: URL object properties: url: description: URL that can be used to download the unwatermarked, licensed asset type: string required: - url type: object Urls: description: List of URLs properties: urls: description: URLs items: type: string type: array required: - urls type: object UserDetails: description: User details properties: contributor_id: description: Unique internal identifier of the user, as a contributor type: string customer_id: description: Unique internal identifier of the user, as a purchaser type: string email: description: Email address of the user type: string first_name: description: First name of the user type: string full_name: description: Full name including first, middle, and last name of the user type: string id: description: Unique internal identifier for the user, not tied to contributor or purchasing customer type: string is_premier: description: True if the user has access to the Premier collection, false otherwise type: boolean is_premier_parent: description: True if the user has access to the Premier collection and also has child users type: boolean language: description: Main language of the user account type: string last_name: description: Last name of the user type: string only_enhanced_license: description: True if the user has an enterprise license, false otherwise type: boolean only_sensitive_use: description: True if the user has access to sensitive use only, false otherwise type: boolean organization_id: description: Unique internal identifier for the user's organization, specific to Premier users type: string premier_permissions: description: List of permissions allowed through the Premier client items: type: string type: array username: description: User name associated to the user type: string 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 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 VideoDataList: description: List of videos properties: data: description: Videos items: $ref: '#/components/schemas/Video' 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 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 VideoPreviewUrl: description: Video preview information properties: url: description: Direct URL to the image type: string required: - url 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 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 x-string-formats: country-code-2: format: A two-character (ISO 3166 Alpha-2) country code example: US country-code-3: format: A three-character (ISO 3166 Alpha-3) country code example: USA date: format: YYYY-MM-DD example: '2020-05-29' date-time: format: YYYY-MM-DDTHH:mm:ssZ example: '2020-05-29T12:10:22-05:00' ipv4: format: A valid IPv4 address example: 1.1.1.1 uri: format: A valid URI example: https://wwww.shutterstock.com