Bring the power of 42 million
images to any application.

Our stock photo API supports a wide range of integrations across websites,
mobile applications, content management systems, and more.

Request a Key
Questions? Contact api@shutterstock.com

Table of Contents

Introduction
An overview of how the Shutterstock REST API works.
Representation File Formats
An explanation of which data formats can be returned by the API and how to request them.
HTTP Response Codes
A list of response codes and their descriptions. These are the codes that will be returned by the API to indicate success, redirection, or errors.
Sample Code
Links to sample code and clients.
Affiliate Site Link Creation
How to create affiliate links from API results.
Affiliate Site Optimization
Tips on how to make your site respond quickly while hitting the Shutterstock stock photo API.
Licensing and Downloading Images
How to download and license images.
DAM and CMS Integration
How to copy Shutterstock downloads into a DAM or CMS.

Resources and Endpoints

/resources
A meta-resource that provides information about all available resources.
/test/echo
Allows developers to test code by verifying that inputs are received by the API and outputs are received by the client.

Image Requests

/images/search
Searches for images that meet provided criteria.
/images/<image_id>
Displays details for a specific image.
/images/<image_id>/similar
Searches for images similar to a given image.
/categories
Displays all image categories and their category ids.

Customer Login and Account Management

/auth/customer
Allows the client to login as a registered downloading customer.
/customers/<username>
Creates a registered user, and displays or modifies registered user information.
/customers/<username>/images/downloads
Displays customer image downloads and the subscriptions under which they were downloaded.
/customers/<username>/subscriptions
Displays information about customer subscriptions including start and end dates, number of downloads remaining, and available image sizes. For Premier plans, also returns price per download.

Image Download

/subscriptions/<subscription_id>/images/<image_id>/sizes/<size>
Provides a URL to download an image and charges your account a license fee as needed.

Video-specific Resources

/videos/search
Searches for videos that meet provided criteria.
/videos/<video_id>
Displays details for a specific video.
/subscriptions/<subscription_id>/videos/<video_id>/sizes/<size>
Provides a URL for a customer to download a video and charges their account as needed. If a customer has had multiple subscriptions with Shutterstock, some previously-downloaded videos may be available for redownload without charge. It is the client's responsibility to check for this and use the correct subscription id under which the video was originally purchased. Otherwise, the download will count against the subscription id provided.

Working with Lightboxes

/lightboxes/<lightbox_id>
Displays and deletes collections of images created by the user.
/lightboxes/<lightbox_id>/extended
Additional information about lightbox contents
/lightboxes/<lightbox_id>/images/<image_id>
Adds or removes images from a collection of images created by the user.
/lightboxes/<lightbox_id>/public_url
Returns public URLs for lightboxes
/customers/<username>/lightboxes
Displays and creates customer lightboxes.
/customers/<username>/lightboxes/extended
Additional information about the contents of customer lightboxes

Introduction

The Shutterstock REST API allows outside developers to create their own tools using the functionality of the Shutterstock website. It allows for search, preview, and download of Shutterstock images and video clips.

In this documentation, when we refer to the "user," we're referring to the end user--the customer or entity who is getting the benefit of using your application that is using the Shutterstock API. The term "client" will refer to your application that is accessing the API on behalf of a user.

The Shutterstock stock photo API conforms to REST standards for the most part and accepts GET, POST, and DELETE requests. REST refers to both static web pages and dynamic web applications as resources.

Authentication

We have two layers of authentication which may be required simultaneously.

HTTP basic authentication is necessary to access all API resources. Click Request a Key above to apply for an API username and API key which you then must always supply as the HTTP basic authentication username and password. Performing searches of Shutterstock images typically requires no further authentication. In most cases, you will only need your API username and API key. If you're looking to access resources that are specific to a customer so you can act on a customer's behalf, you will also need 2 usernames and 2 passwords: your API username and an API key, and the user's Shutterstock username and password that you submit to the /auth/customer resource via post parameters. Failing to provide an API username and API key will result in a 401 status. Failing to provide a customer's auth_token will result in a 403 status.

A customer's username and password should not be submitted via HTTP basic authentication. Instead, submit the customer's username and password as normal POST parameters (in addition to always providing your API username and API key via HTTP basic authentication in the request headers) to the auth resource listed in this document. The auth resource will return a value called the auth_token. User-specific protected resources require this auth_token argument as a parameter in every request (in addition to always requiring your API username and API key to be provided via HTTP basic authentication in the request headers). An auth_token is good for a limited time. If it expires, the client application will start receiving an HTTP response code of 403. If this happens, the client application will have to resubmit the customer's username and password and request a new auth_token.

Accessing the API

The Shutterstock stock photo API can be accessed at http://api.shutterstock.com/. You must choose a resource path to append to this URL. An example of a resource path is /test/echo. An example URL which can be viewed in a web browser is http://api.shutterstock.com/test/echo.html?hello=world. Feel free to change the parameter names and values to see how this example resource works. You can also change the file extension from html to json or yaml to view a resource in a different representation file format.

We've provided sample PHP code, and below are existing clients to help you get started. We encourage you to make any reusable code that you write open source, and be sure to let us know if you do.

Representation File Formats

Representation file formats are chosen by the file extension of the resource URL.

JSON: JSON is valid executable Javascript, but it is commonly used to send data between other languages as well. www.json.org

YAML: YAML is language-independent, but resembles JSON plus a few other features. www.yaml.org

HTML: HTML can also be output, but should not be used by automated requests. Feel free to view HTML responses in a browser to get a feel for how the API works.

HTTP Response Codes

One of these response codes will be returned with every request. These are our API-specific meanings for these response codes. We have tried to follow the standards as well as possible, but where the standards are vague or inadequate we may use these codes in ways that are slightly different from how they were originally intended.

Today we deliver the error state information in the HTML header.

Depending on the request and the state of the resource, the response's content entity body may be empty, may contain a generic Apache error message, may contain a specific text message relating to your request, or may contain a response made up of machine-readable structured data. If a given response's content entity body is empty or generic, you can refer to this chart for more information.

Codes shown in black are normal and should be expected by your client. Codes shown in yellow are due to mistakes made by your client. We will do our best to provide your client with the resources it needs to avoid these errors entirely, and they should only show up when your client is under development. Your code should not have to check for these statuses, because they should not happen at all. Codes shown in red indicate an error on our server. If you receive a red response code not resolve itself promptly, or a response code that is not listed below, please email api@shutterstock.com.

Code Name Description
200 OK  
201 Resource created This is a successful response to a PUT or POST request trying to create a resource. A successful PUT request indicates that the resource can be now be retrieved at the same URL using a GET request. POST requests will return a location header where the new resource can be retrieved.
202 OK but request is still being processed offline Your request has been received, and is being processed, but we can't immediately show you the results. See the content entity body or location header for a link to GET for updated resource status information.
204 OK but I have no response to that Your request was successful, but no additional data is being sent in the content entity body.
400 Malformed request The request you submitted was invalid, so we failed to begin processing it. See content entity body for details. See also 409, in which case a request is understood, but fails during processing due to data integrity constraints or business rules.
401 Unauthenticated This code is officially named "Unauthorized," but what it really means is "Unauthenticated." This means that you have not identified your client to the API. You must provide your API credentials in your Authorization header or using the cookie from a previous recently-authenticated response. For more information on the concept of "authorization," ccessing the API (in its proper sense, that is, the decision of whether to allow access by an authenticated user to a given resource) as well as the concept of authenticating as a specific Shutterstock customer or submitter (not just a general API client), see status 403 below.
403 Forbidden You are forbidden from viewing or modifying this resource. Providing HTTP credentials will not correct the problem. We have correctly identified your API client, but this client is not currently allowed access to this resource. This is usually due to the fact that the requested resource belongs to a specific user, and your API client has not provided a valid auth_token for that specific user, or the auth_token your client provided has expired. The auth_token is not the same as the "Authorization" header mentioned in the description of response code 401. An auth_token is another level of authentication which is required for some resources. It is also possible that some API clients may not be allowed access to some resources, even on behalf of a valid customer or submitter with a valid auth_token. For instance, an API client used by customers only might not have access to an admin resource.
404 Not found Either the application to process your request was not found, or the specific item you requested was not found by the application. REST conflates these concepts.
405 Method not allowed This resource does not implement this method. See the documentation for this resource for allowed methods. Or, try a GET request instead, since most resources support GET. See also 501.
406 Representation format not available The resource file representation format you requested is not available for this resource. Examples of supported representation formats are json, yaml, perl, and html. Examples of unsupported representation formats are pdf and xls.
409 Conflict The request was formed correctly, but due to a conflict with what you sent and the state of the resource, your request could not be completed. This status should always include an error message explaining the relevant data integrity constraint or business rule that was violated. If you have reason to believe that you're receiving a 409 in response to a valid request, please report it to api@shutterstock.com.
500 Internal server error Please report all 500 errors to api@shutterstock.com if they do not resolve themselves promptly.
501 Method not implemented No resource implements this method. See also 405.
502 Proxy error Our gateway server is working, but the for some reason our API server has failed to generate a response to your request.
503 Service not available Our gateway server is up, and our API server is up, but some service that the API server uses is down. An example would be the case where our search server is under scheduled maintenance and cannot be accessed by the /images/search resource.

Sample Code

GitHub Page
Links to open source clients and more code examples.
PHP Example
A demonstration of the search resources using PHP and cURL.

Displaying thumbnails

Shutterstock thumbnails usually come with ids embedded into the images themselves. The API gives you the information you need to hide these ids. For thumbs either the actual jpg width or actual jpg height will be different from the width or height returned by the API. The width and height returned by the API is the appropriate cropped display size, not the size of the jpg itself. To hide these ids, enclose the jpgs inside a div of the returned width and height, with overflow set to hidden. The id at the bottom or right of the jpg will overflow beyond the dimensions of the containing div and disappear. See sample code.

The API returns results that link directly to Shutterstock, because the API is intended to be general-purpose. If you are an affiliate and want to be paid for directing users to Shutterstock, you will need to generate your own affiliate links:

  1. Retrieve a link from the API, or supply your own:
    http://www.shutterstock.com/pic.mhtml?id=[image id]
  2. URL encode it:
    http%3A%2F%2Fwww.shutterstock.com%2Fpic.mhtml%3Fid%3D[image id]
  3. Append it via the u param to your Impact Radius URL.
    Image affiliates:
    http://shutterstock.7eer.net/c/[your impact radius affiliate id]/43068/1305?u=http%3A%2F%2Fwww.shutterstock.com%2Fpic.mhtml%3Fid%3D[image id]
    Footage affiliates:
    http://shutterstock.7eer.net/c/[your impact radius affiliate id]/43977/1305?u=http%3A%2F%2Fwww.shutterstock.com%2Fpic.mhtml%3Fid%3D[image id]

Affiliate Site Optimization

If you are an affiliate generating a high volume of search requests, we recommend caching search results and loading them via Ajax. To do this, create an Ajax resource on your server, in addition to your main page. Have your main page request results from this Ajax resource. The Ajax resource should have access to cached Shutterstock API search results for as many recent searches as possible. If the Ajax resource finds a hit in the cache for the search query, it can return immediately without making a request to the Shutterstock API at all, and the main page will update immediately. If the Ajax resource does not find a hit in the cache, it can then query the Shutterstock API, and store its results in the cache before returning them to the main page. At that point the main page can update. And, since the main page was already loaded, and only waiting to update itself via Ajax, this won't feel slow to the user.

Licensing and Downloading Images

Shutterstock Premier, Media, and Partner accounts have access to licensing and downloading via the API. Standard subscription accounts (25/day or 35/day) will not have access to downloading via API and will need to upgrade their accounts to get access to the API and the image metadata. To upgrade and obtain download access, email api@shutterstock.com.

In order to purchase and download an image against your Shutterstock account, you will need to use the image download endpoint.

In the response, you will receive a temporary URL to download an image and it charges your account an image license fee as needed. Note that when accessing this endpoint, you will need 2 sets of credentials: your API username and API key, and your Shutterstock customer account username and password.

You will also need the correct subscription_id for your account. You can see your Shutterstock plans and their subscription IDs by using the subscription details endpoint. This endpoint allows your software to programmatically choose which subscription to download against. Note that this endpoint returns expired subscriptions in addition to active ones.

Make sure to use the correct subscription ID with each purchase call to the Shutterstock API. If you have multiple subscriptions with Shutterstock, some previously-downloaded images may be available for redownload without charge. In this case, make sure to use the subscription id under which the image was originally purchased. Otherwise, the download will count against the subscription id provided.

If you have a Shutterstock Premier account, downloaded JPGs also contain EXIF embedded in the image files with various metadata about the image.

Licensing and Downloading Video Clips

Similar to downloading images, Shutterstock Premier, Media, and Partner accounts can download video clips via the API. You need to have a video plan enabled for your Shutterstock account.

To purchase and download a video clip against your Shutterstock account, you will need to use the video download endpoint as well as the correct subscription_id for your account.

A Note on Downloading Editorial Images and Video

Shutterstock offers commercial use images and editorial use images. If you would like to exclude editorial images from your search results, you can use the commercial_only parameter in your search request. To download an editorial image or video clip, a user must acknowledge that the image or video will be used only as the license allows. The following notice (or equivalent non-English translation) must be presented to the user before downloading each editoral image or video: Editorial Use Only. Use of this image/video in advertising or for promotional purposes is prohibited. The user must indicate agreement (for instance, by checking a checkbox) before an editorial download can begin. Calls to the image download endpoint or video download endpoint for editorial assets must include an editorial_acknowledgement parameter. The parameter's value should be 1 if the user agreed to the notice and 0 if the user did not agree. A download will not be allowed if the user did not agree.

To determine whether an image is considered an editorial image, look at the value for model_released returned by the image details endpoint. Editorial images have a code value of 3 and a translation_id of EDITORIAL_ONLY.

To determine whether a video clip is considered an editorial video clip, look at the value for model_released returned by the video details endpoint. Editorial videos have an info value of editorial.

How to copy Shutterstock downloads into a DAM or CMS

To populate your DAM from your Shutterstock downloads, write RESTful client code to perform the following:

First, access the /auth/customer.json endpoint to authenticate as the Shutterstock user. The server will return JSON with an auth_token that you use in following requests to authenticate as that user.

For each image you want to redownload from shutterstock, access the /subscriptions/<subscription_id>/images/<image_id>/sizes/<size>.json endpoint, which provides you with a URL to download the image. Make sure to use the correct subscription ID as described in the general downloading instructions.

You can name the file whatever you want upon downloading, and then copy onto your system or DAM as desired.

You can then run this process in batches as desired to keep downloading and copying the previously-licensed images.

Resources

/resources

A meta-resource that provides information about all available resources.

Demo: http://api.shutterstock.com/resources.html
Supported methods GET Returns documentation for all available resources.

/test/echo

Allows developers to test code by verifying that inputs are received by the API and outputs are received by the client.

Demo: http://api.shutterstock.com/test/echo.html?example_param=example_value
Supported methods GET Echoes whatever parameters are sent in, displayed in the representation format of your choice.
Parameters example_param str An example of how to incorporate a named parameter into the path of a URI. Example: 'example_value'.

Image Requests

/images/search

Searches for images that meet provided criteria.

Demo: http://api.shutterstock.com/images/search.html?searchterm=cat
Supported methods GET Gets search results for provided criteria. At least one of the following is required: searchterm, category_id, photographer_name, submmiter_id, color.
Parameters all boolean A flag indicating that all search results should be returned. Accepted values are 1 for true and 0 for false.
category_id int An integer category id to search within. Valid values and their meanings can be seen by accessing the /categories endpoint. Required when searchterm, photographer_name, submitter_id, and color are not provided.
color html color A color to search for. Required when searchterm, category_id, photographer_name, and submitter_id are not provided. Accepted values are 6-character HTML hex colors from '000000' to 'FFFFFF', with or without number sign.
commercial_only boolean A flag indicating that only images available for commercial use should be returned; no images for editorial use only. This option is mutually exclusive with the editorial_only option. Accepted values are 1 for true and 0 for false.
editorial_only boolean A flag indicating that only images available for editorial use should be returned; no images for commercial use only. This option is mutually exclusive with the commercial_only option. Accepted values are 1 for true and 0 for false.
enhanced_only boolean A flag indicating that only images with enhanced licenses available should be returned. Accepted values are 1 for true and 0 for false.
exclude_keywords str A string of space-separated keywords to exclude from your search.
language language The 2-letter language code that the query and desired results should be in. If not specified, use an eligible language from the Accept-Language header. Otherwise, defaults to "en". Accepted values are: 'cs' (Czech), 'da' (Danish), 'de' (German), 'en' (English), 'es' (Spanish), 'fi' (Finnish), 'fr' (French), 'hu' (Hungarian), 'it' (Italian), 'ja' (Japanese), 'ko' (Korean), 'nb' (Norwegian), 'nl' (Dutch), 'pl' (Polish), 'pt' (Portuguese), 'ru' (Russian), 'sv' (Swedish), 'th' (Thai), 'tr' (Turkish), 'zh' (Chinese). Default is 'en'.
model_released boolean A flag indicating that only images with people should be returned (all model-released). Accepted values are 1 for true and 0 for false.
orientation enum Whether a photograph is wider than it is tall, or taller than it is wide. Accepted values are: 'all', 'horizontal', 'vertical'. Default is 'all'.
page_number nonnegative integer Which page of results is wanted Accepted values are nonnegative integers.
people_age enum Restrict results to photos that feature people of a specified age range. Accepted values are: 'infants', 'children', 'teenagers', '20s', '30s', '40s', '50s', '60s', 'older', 'any'. Default is 'any'.
people_ethnicity enum Restrict results to photos whose subject(s) are of a specified ethnicity. Accepted values are: 'african', 'african_american', 'black', 'brazilian', 'chinese', 'caucasian', 'east_asian', 'hispanic', 'japanese', 'middle_eastern', 'native_american', 'pacific_islander', 'south_asian', 'southeast_asian', 'other', 'any'. Default is 'any'.
people_gender enum Restrict results to photos whose subject(s) are of a specified gender. Accepted values are: 'male', 'female', 'both', 'any'. Default is 'any'.
people_number enum Restrict results to photos that contain a specified number of people. Accepted values are: 'none', '1', '2', '3', '4', 'any'. Default is 'any'.
photographer_name str The username of a specific artist whose work you want to search within. Required when searchterm, category_id, submitter_id, and color are not provided.
results_per_page integer range How many results to show per page. Accepted values are integers from 1 to 150. Default is '150'.
safesearch boolean A flag indicating that only images suitable for all ages should be returned. Accepted values are 1 for true and 0 for false. Default is '1'.
search_group enum Media type to search within. Accepted values are: 'photos', 'illustrations', 'vectors', 'all'. Default is 'all'.
searchterm str A string of space-separated keywords to search for. Required when category_id, photographer_name, submitter_id, and color are not provided. Example: 'cat'.
sort_method enum How the results should be sorted. Accepted values are: 'newest', 'oldest', 'popular', 'random', 'relevance'. Default is 'popular'.
submitter_id int The integer id of a specific submitter whose work you want to search within. Required when searchterm, category_id, photographer_name, and color are not provided.

/images/<image_id>

Displays details for a specific image.

Demo: http://api.shutterstock.com/images/15484942.html
Supported methods GET Gets data about the image with a provided image id.
Parameters image_id int The integer id of the image to display details for. Example: '15484942'. Required.
language language The language that the image details should be in. Accepted values are: 'cs' (Czech), 'da' (Danish), 'de' (German), 'en' (English), 'es' (Spanish), 'fi' (Finnish), 'fr' (French), 'hu' (Hungarian), 'it' (Italian), 'ja' (Japanese), 'ko' (Korean), 'nb' (Norwegian), 'nl' (Dutch), 'pl' (Polish), 'pt' (Portuguese), 'ru' (Russian), 'sv' (Swedish), 'th' (Thai), 'tr' (Turkish), 'zh' (Chinese). Default is 'en'.

/images/<image_id>/similar

Searches for images similar to a given image.

Supported methods GET Gets similar image results for provided image id.
Parameters image_id nonnegative integer Images similar to this image id are shown. Accepted values are nonnegative integers.
page_number nonnegative integer Which page of results is wanted Accepted values are nonnegative integers.
sort_method enum How the results should be sorted. Accepted values are: 'newest', 'oldest', 'popular', 'random', 'relevance'. Default is 'popular'.

/categories

Displays all image categories and their category ids.

Supported methods GET Displays all image categories and their category ids.

Customer Login and Account Management

/auth/customer

Allows the client to login as a registered downloading customer.

Supported methods POST requires permission Performs the login operation on behalf of an existing customer account. The client must be trusted with the customer's username/email address and password to perform the login operation. If both username and email are supplied, username is used to login.
Parameters email The email address of the registered downloading customer. Username or email is required. Email addresses can only be used to login as non-subaccounts.
password The password of the registered downloading customer. Required.
username The username of the registered downloading customer. Username or email is required. If both username and email are supplied, username is used to login.

/customers/<username>

Creates a registered user, and displays or modifies registered user information.

Supported methods GET requires permission Returns the account_id for the given username (requires auth_token). If you have a Shutterstock Premier account, this endpoint will also return the custom metadata fields configured for your account that are necessary to POST when licensing an image.
PUT requires permission Creates a registered user.
Parameters auth_token str A token returned from /auth/customer to identify an authenticated user.
email email The contact email of the registering customer. Accepted values are a valid email address.
password str The desired password of the registering customer.
username str The username of the registering customer.

/customers/<username>/images/downloads

Displays customer image downloads and the subscriptions under which they were downloaded.

Supported methods GET requires permission Displays all downloads for an authenticated customer.
Parameters auth_token str A token returned from /auth/customer to identify an authenticated user. Required.
field enum When present and an image_id is specified, the output will include only records for the specified image that are redownloadable. Each record will include a "redownloadable_state" field. Optional. Accepted values are: 'redownloadable_state'.
image_id num Specifies a single image_id. Optional. Used with field=redownloadable_state, not applicable without field=redownloadable_state.
license str Filters results for download history only under the specified license. Optional.
page_number nonnegative integer A number specifying which page of results is wanted. Optional. Starts at 0. A page contains up to 40 results. If no page number is specified, all results will be returned. Does not apply when image_id/field is specified. Accepted values are nonnegative integers.
page_size nonnegative integer A number which specifies how many results to return in each page. Defaults to 40, which is also the max value. Does not apply when image_id/field is specified. Accepted values are nonnegative integers.
sort_by str The 'sort by' name. Accepted Values: Date. Optional.
sort_order str The sort order, either asc or desc. Defaults to desc
username str The username of the registered downloading customer. Required.

/customers/<username>/subscriptions

Displays information about customer subscriptions including start and end dates, number of downloads remaining, and available image sizes. For Premier plans, also returns price per download.

Supported methods GET requires permission Displays all subscription plans for an authenticated downloading customer.
Parameters auth_token str A token returned from /auth/customer to identify an authenticated user. Required.
username str The username of the registered downloading customer. Required.

Image Download

/subscriptions/<subscription_id>/images/<image_id>/sizes/<size>

Provides a URL to download an image and charges your account a license fee as needed.

Supported methods POST requires permission Allows client to download an image on behalf of an authenticated customer's account and charges the customer's account if necessary. Returns a temporary URL for the image to be downloaded, accessible only to the current client. Client must accept cookies for image to be downloaded.
Parameters auth_cookie_name str The name of a cookie which the client will need to send when requesting the download.shutterstock.com url returned by this route's response. Required when auth_cookie_value is present, optional otherwise.
auth_cookie_value str The value of a cookie which the client will need to send when requesting the download.shutterstock.com url returned by this route's response. Required when auth_cookie_value is present, optional otherwise.
auth_token str A token returned from /auth/customer to identify an authenticated user. Required.
download_host str Hostname from which the download should occur. Optional.
editorial_acknowledgement boolean Indicates the end-user has agreed to editorial usage guidelines. For editorial images, required to be 1. Must be absent or 0 for non-editorial images. Accepted values are 1 for true and 0 for false.
format enum The file format of the image to be downloaded. Required. Accepted values are: 'jpg', 'eps'.
image_id positive integer The id of the image to download. Required. Accepted values are positive integers.
metadata str Customer metadata for Premier account downloads. Required only for Premier-level image plans, ignored otherwise. Expects json representing a hash (aka associative array) with name/value pairs for enterprise downloads. Names by default are purchase_order, job, client, and other. By default, Premier accounts must specify a non-empty value for the purchase_order metadata, and all metadata fields values must be defined (even if their values are empty). Note that only the first 64 characters of each metadata value will be recorded, the remainder will be silently ignored. Also, some users may have the names of the metadata fields changed, and/or different fields required. You can retrieve the metadata fields for your account by using the /customers/<username> endpoint.
show_modal boolean When true, a Content-Disposition header will be sent when the download URL is requested. When false, no such header will be sent. Accepted values are 1 for true and 0 for false. Default is '1'.
size enum The size of the image to be downloaded. Required. Accepted values are: 'small', 'medium', 'huge', 'vector'.
subscription_id positive integer The id of the subscription to be used to download. The customer must be logged in, and the subscription id must be owned by the logged-in customer. Required. Accepted values are positive integers.

Video-specific Resources

/videos/search

Searches for videos that meet provided criteria.

Demo: http://api.shutterstock.com/videos/search.html?searchterm=cat
Supported methods GET Gets search results for provided criteria. At least one of the following is required: searchterm, category_id.
Parameters page_number nonnegative integer Which page of results is wanted Accepted values are nonnegative integers.
results_per_page integer range How many results to show per page. Accepted values are integers from 1 to 150. Default is '150'.
searchterm str A string of space-separated keywords to search for. Required. Example: 'cat'.
sort_method enum How the results should be sorted. Accepted values are: 'newest', 'oldest', 'popular', 'random', 'relevance'. Default is 'popular'.
submitter_id int The integer id of a specific submitter whose work you want to search within. Required when searchterm is not provided.

/videos/<video_id>

Displays details for a specific video.

Demo: http://api.shutterstock.com/videos/12345.html
Supported methods GET Gets data about the video with the provided video id.
Parameters language language The language that the video details should be in. Accepted values are: 'cs' (Czech), 'da' (Danish), 'de' (German), 'en' (English), 'es' (Spanish), 'fi' (Finnish), 'fr' (French), 'hu' (Hungarian), 'it' (Italian), 'ja' (Japanese), 'ko' (Korean), 'nb' (Norwegian), 'nl' (Dutch), 'pl' (Polish), 'pt' (Portuguese), 'ru' (Russian), 'sv' (Swedish), 'th' (Thai), 'tr' (Turkish), 'zh' (Chinese). Default is 'en'.
video_id int The integer id of the video to display details for. Example: '12345'. Required.

/subscriptions/<subscription_id>/videos/<video_id>/sizes/<size>

Provides a URL for a customer to download a video and charges their account as needed. If a customer has had multiple subscriptions with Shutterstock, some previously-downloaded videos may be available for redownload without charge. It is the client's responsibility to check for this and use the correct subscription id under which the video was originally purchased. Otherwise, the download will count against the subscription id provided.

Supported methods POST requires permission Allows client to download a video on behalf of an authenticated customer's account and charges the customer's account if necessary. Returns a temporary URL for the video to be downloaded, accessible only to the current client. Client must accept cookies for video to be downloaded.
Parameters auth_cookie_name str The name of a cookie which the client will need to send when requesting the download.shutterstock.com url returned by this route's response. Required when auth_cookie_value is present, optional otherwise.
auth_cookie_value str The value of a cookie which the client will need to send when requesting the download.shutterstock.com url returned by this route's response. Required when auth_cookie_value is present, optional otherwise.
auth_token str A token returned from /auth/customer to identify an authenticated user. Required.
download_host str Hostname from which the download should occur. Optional.
editorial_acknowledgement boolean Indicates the end-user has agreed to editorial usage guidelines. For editorial videos, required to be 1. Must be absent or 0 for non-editorial images. Accepted values are 1 for true and 0 for false.
metadata str Customer metadata for enterprise downloads. Required only for enterprise subscriptions, ignored otherwise. Expects json representing a hash (aka associative array) with name/value pairs for enterprise downloads. Names by default are purchase_order, job, client, and other, and by default, enterprise subscriptions must specify a non-empty value for the purchase_order metadata, and all metadata fields values must be defined (even if their values are empty). Note that only the first 64 characters of each metadata value will be recorded, the remainder will be silently ignored. Also, some users may have the names of the metadata fields changed, and/or different fields required.
show_modal boolean When true, a Content-Disposition header will be sent when the download URL is requested. When false, no such header will be sent. Accepted values are 1 for true and 0 for false. Default is '1'.
size enum The size of the video to be downloaded. The size to use is the internal_name key returned by the /videos/<video_id> resource. Required. Accepted values are: 'lowres', 'sd', 'hd', 'original'.
subscription_id positive integer The id of the subscription to be used to download. The customer must be logged in, and the subscription id must be owned by the logged-in customer. Required. Accepted values are positive integers.
video_id positive integer The id of the video to download. Required. Accepted values are positive integers.

Working with Lightboxes

/lightboxes/<lightbox_id>

Displays and deletes collections of images created by the user.

Supported methods GET requires permission Retrieves contents of a lightbox specified by lightbox_id.
POST requires permission Updates a lightbox (only the lightbox_name field may be updated)
DELETE requires permission Deletes a lightbox specified by lightbox_id.
Parameters auth_token str A token returned from /auth/customer to identify an authenticated user. If a public URL has been generated for this lightbox, you can specify a verification_code parameter instead.
exclude_images str If set this will return just lightboxes with no image data.
lightbox_id int An integer id of a lightbox to view.
lightbox_name str The name of the lightbox (for updating this resource)
verification_code str The code returned by the /lightboxes/<lightbox_id>/public_url endpoint. This may be provided instead of an auth_token to allow un-authenticated users of the API to see details of the specified lightbox.

/lightboxes/<lightbox_id>/extended

Additional information about lightbox contents

Supported methods GET requires permission Returns extended information about the contents of a lightbox
POST requires permission
DELETE requires permission
Parameters auth_token str A token returned from /auth/customer to identify an authenticated user. If a public URL has been generated for this lightbox, you can specify a verification_code parameter instead.
exclude_images str If set this will return just lightboxes with no image data.
lightbox_id int An integer id of a lightbox to view.
lightbox_name str The name of the lightbox (for updating this resource)
verification_code str The code returned by the /lightboxes/<lightbox_id>/public_url endpoint. This may be provided instead of an auth_token to allow un-authenticated users of the API to see details of the specified lightbox.

/lightboxes/<lightbox_id>/images/<image_id>

Adds or removes images from a collection of images created by the user.

Supported methods PUT requires permission Puts a provided image id into the lightbox with a provided lightbox id.
DELETE requires permission Deletes a provided image id from a lightbox with a provided lightbox id.
Parameters auth_token str A token returned from /auth/customer to identify an authenticated user.
image_id int The integer id of the image to display details for.
lightbox_id int The integer id of a lightbox.
username str The username whose lightbox is to be modified. Required for lightboxes owned by registered downloading customers. Not required for guest lightboxes.

/lightboxes/<lightbox_id>/public_url

Returns public URLs for lightboxes

Supported methods GET requires permission Retrieves a public, sharable URL for a lightbox. This resource also provides a verification code for retrieving this lightbox over the API.
Parameters auth_token str A token returned from /auth/customer to identify an authenticated user.
lightbox_id int An integer id of a lightbox for which the public URL should be retrieved.

/customers/<username>/lightboxes

Displays and creates customer lightboxes.

Supported methods GET requires permission Displays all lightboxes for an authenticated downloading customer.
POST requires permission Creates a lightbox for an authenticated downloading customer. Lightbox name must be provided. If lightbox creation is successful, the location header in the response will contain the URL for the new lightbox. A lightbox id will be also be returned in the response body.
Parameters auth_token str A token returned from /auth/customer to identify an authenticated user.
exclude_empty str If set this will return only lightboxes that have images.
exclude_images str If set this will return just lightboxes with no image data.
hero_image_only str If set this will return just lightboxes with associated hero image.
lightbox_name str The desired name of a newly created lightbox.
username str The username of the registered downloading customer.

/customers/<username>/lightboxes/extended

Additional information about the contents of customer lightboxes

Supported methods GET requires permission Returns extended information about the contents of a contributor's lightboxes
POST requires permission
Parameters auth_token str A token returned from /auth/customer to identify an authenticated user.
exclude_empty str If set this will return only lightboxes that have images.
exclude_images str If set this will return just lightboxes with no image data.
hero_image_only str If set this will return just lightboxes with associated hero image.
lightbox_name str The desired name of a newly created lightbox.
username str The username of the registered downloading customer.