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.
Bring your own key. This API needs your own Shutterstock API Explorer key - get one from the provider, add it once below, and the proxy injects it on every call. Your OmniStream plan covers the unified SDK, key storage, and proxy - the provider's own rate limits still apply to your key.
This is a community listing. If you own this API, you can request ownership.
npm install omnistream-sdkimport { OmniClient } from "omnistream-sdk";
const omni = new OmniClient({ token: process.env.OMNI_KEY! });
// One key reaches every API on the marketplace.
const data = await omni.call("shutterstock/listCustomDescriptors");One install, one key - the same client calls every API on the marketplace.
Show descriptors with an average render speed that is greater than or equal to the specified value
Show descriptors that contain the specified band (case-sentsitive)
Show descriptors with the specified band name (case-sensitive)
Page number
Number of results per page
Show descriptors with the specified IDs (case-sensitive)
Show descriptors with the specified instrument name (case-sensitive)
Show descriptors with the specified instrument ID (case-sensitive)
Show descriptors whose tempo range includes the specified tempo in beats per minute
Show descriptors with a tempo that is less than or equal to the specified number
Show descriptors that have a tempo range that includes the specified tempo in beats per minute
Show descriptors with the specified name (case-sensitive)
Show descriptors with the specified tag, such as Cinematic or Roomy (case-sensitive)
List computer audio descriptors
List computer audio instruments
Get details about audio renders
Create rendered audio
List audio tracks
/**
* ShutterstockAPIExplorer - generated by OmniStream from Shutterstock API Explorer's OpenAPI spec.
* One typed method per endpoint. A single Omni key reaches the API.
*/
const DEFAULT_BASE = "https://grid.skinvaults.online/v1/proxy/shutterstock";
export class ShutterstockAPIExplorerError extends Error {
status: number;
code?: string;
constructor(status: number, code: string | undefined, message?: string) {
super(message || `ShutterstockAPIExplorer error ${status}`);
this.name = "ShutterstockAPIExplorerError";
this.status = status;
this.code = code;
}
}
export interface ShutterstockAPIExplorerOptions {
baseUrl?: string;
fetch?: typeof fetch;
timeoutMs?: number;
}
export class ShutterstockAPIExplorer {
/** @param token Your OmniStream key (one key for every API). */
constructor(private token: string, private opts: ShutterstockAPIExplorerOptions = {}) {
if (!token) throw new Error("ShutterstockAPIExplorer: token is required");
}
rateLimit: { remainingMinute?: number; remainingDay?: number } | null = null;
private async _request(method: string, path: string, { params, body }: { params?: Record<string, unknown>; body?: unknown } = {}): Promise<any> {
const f = this.opts.fetch ?? globalThis.fetch;
const url = new URL((this.opts.baseUrl ?? DEFAULT_BASE).replace(/\/+$/, "") + path);
if (params) for (const [k, v] of Object.entries(params)) if (v != null) url.searchParams.set(k, String(v));
const headers: Record<string, string> = { "x-omni-key": this.token };
if (body !== undefined) headers["content-type"] = "application/json";
const res = await f(url, { method, headers, body: body !== undefined ? JSON.stringify(body) : undefined });
this.rateLimit = {
remainingMinute: Number(res.headers.get("x-ratelimit-remaining-minute")) || undefined,
remainingDay: Number(res.headers.get("x-ratelimit-remaining-day")) || undefined,
};
const data = await res.json().catch(() => ({}));
if (!res.ok) throw new ShutterstockAPIExplorerError(res.status, data?.error?.code, data?.error?.message);
return data.data ?? data;
}
/** List computer audio descriptors */
listCustomDescriptors(params: { "render_speed_over"?: number; "band_id"?: string; "band_name"?: string; "page"?: number; "per_page"?: number; "id"?: unknown[]; "instrument_name"?: string; "instrument_id"?: string; "tempo"?: number; "tempo_to"?: number; "tempo_from"?: number; "name"?: string; "tag"?: string }): Promise<any> {
return this._request("GET", "/v2/ai/audio/descriptors", { params });
}
/** List computer audio instruments */
listCustomInstruments(params: { "id"?: unknown[]; "per_page"?: number; "page"?: number; "name"?: string; "tag"?: string }): Promise<any> {
return this._request("GET", "/v2/ai/audio/instruments", { params });
}
/** Get details about audio renders */
fetchRenders(params: { "id": unknown[] }): Promise<any> {
return this._request("GET", "/v2/ai/audio/renders", { params });
}
/** Create rendered audio */
createAudioRenders(body: unknown): Promise<any> {
return this._request("POST", "/v2/ai/audio/renders", { body });
}
/** List audio tracks */
getTrackList(params: { "id": unknown[]; "view"?: string; "search_id"?: string }): Promise<any> {
return this._request("GET", "/v2/audio", { params });
}
/** List audio collections */
getTrackCollectionList(params: { "page"?: number; "per_page"?: number; "embed"?: unknown[] }): Promise<any> {
return this._request("GET", "/v2/audio/collections", { params });
}
/** Create audio collections */
createTrackCollection(body: unknown): Promise<any> {
return this._request("POST", "/v2/audio/collections", { body });
}
/** Get the details of audio collections */
getTrackCollection(params: { "id": string; "embed"?: unknown[]; "share_code"?: string }): Promise<any> {
return this._request("GET", "/v2/audio/collections/{id}", { params });
}
/** Rename audio collections */
renameTrackCollection(body: unknown, params: { "id": string }): Promise<any> {
return this._request("POST", "/v2/audio/collections/{id}", { body, params });
}
/** Delete audio collections */
deleteTrackCollection(params: { "id": string }): Promise<any> {
return this._request("DELETE", "/v2/audio/collections/{id}", { params });
}
/** Get the contents of audio collections */
getTrackCollectionItems(params: { "id": string; "page"?: number; "per_page"?: number; "share_code"?: string; "sort"?: string }): Promise<any> {
return this._request("GET", "/v2/audio/collections/{id}/items", { params });
}
/** Add audio tracks to collections */
addTrackCollectionItems(body: unknown, params: { "id": string }): Promise<any> {
return this._request("POST", "/v2/audio/collections/{id}/items", { body, params });
}
/** Remove audio tracks from collections */
deleteTrackCollectionItems(params: { "id": string; "item_id"?: unknown[] }): Promise<any> {
return this._request("DELETE", "/v2/audio/collections/{id}/items", { params });
}
/** List audio genres */
listGenres(params: { "language"?: string }): Promise<any> {
return this._request("GET", "/v2/audio/genres", { params });
}
/** List audio instruments */
listInstruments(params: { "language"?: string }): Promise<any> {
return this._request("GET", "/v2/audio/instruments", { params });
}
/** List audio licenses */
getTrackLicenseList(params: { "audio_id"?: string; "license"?: string; "page"?: number; "per_page"?: number; "sort"?: string; "username"?: string; "start_date"?: string; "end_date"?: string; "download_availability"?: string; "team_history"?: boolean }): Promise<any> {
return this._request("GET", "/v2/audio/licenses", { params });
}
/** License audio tracks */
licenseTrack(body: unknown, params: { "license"?: string; "search_id"?: string }): Promise<any> {
return this._request("POST", "/v2/audio/licenses", { body, params });
}
/** Download audio tracks */
downloadTracks(params: { "id": string }): Promise<any> {
return this._request("POST", "/v2/audio/licenses/{id}/downloads", { params });
}
/** List audio moods */
listMoods(params: { "language"?: string }): Promise<any> {
return this._request("GET", "/v2/audio/moods", { params });
}
/** Search for tracks */
searchTracks(params: { "artists"?: unknown[]; "bpm"?: number; "bpm_from"?: number; "bpm_to"?: number; "duration"?: number; "duration_from"?: number; "duration_to"?: number; "genre"?: unknown[]; "is_instrumental"?: boolean; "instruments"?: unknown[]; "moods"?: unknown[]; "page"?: number; "per_page"?: number; "query"?: string; "sort"?: string; "sort_order"?: string; "vocal_description"?: string; "view"?: string; "fields"?: string; "library"?: string; "language"?: string }): Promise<any> {
return this._request("GET", "/v2/audio/search", { params });
}
/** Get details about audio tracks */
getTrack(params: { "id": number; "view"?: string; "search_id"?: string }): Promise<any> {
return this._request("GET", "/v2/audio/{id}", { params });
}
/** Run multiple image searches */
bulkSearchImages(body: unknown, params: { "added_date"?: string; "added_date_start"?: string; "aspect_ratio_min"?: number; "aspect_ratio_max"?: number; "aspect_ratio"?: number; "added_date_end"?: string; "category"?: string; "color"?: string; "contributor"?: unknown[]; "contributor_country"?: string; "fields"?: string; "height"?: number; "height_from"?: number; "height_to"?: number; "image_type"?: unknown[]; "keyword_safe_search"?: boolean; "language"?: string; "license"?: unknown[]; "model"?: unknown[]; "orientation"?: string; "page"?: number; "per_page"?: number; "people_model_released"?: boolean; "people_age"?: string; "people_ethnicity"?: unknown[]; "people_gender"?: string; "people_number"?: number; "region"?: string; "safe"?: boolean; "sort"?: string; "spellcheck_query"?: boolean; "view"?: string; "width"?: number; "width_from"?: number; "width_to"?: number }): Promise<any> {
return this._request("POST", "/v2/bulk_search/images", { body, params });
}
/** List catalog collections */
getCollections(params: { "page"?: number; "per_page"?: number; "sort"?: string; "shared"?: boolean }): Promise<any> {
return this._request("GET", "/v2/catalog/collections", { params });
}
/** Create catalog collections */
createCollection(body: unknown): Promise<any> {
return this._request("POST", "/v2/catalog/collections", { body });
}
/** Update collection metadata */
updateCollection(body: unknown, params: { "collection_id": string }): Promise<any> {
return this._request("PATCH", "/v2/catalog/collections/{collection_id}", { body, params });
}
/** Delete catalog collections */
deleteCollection(params: { "collection_id": string }): Promise<any> {
return this._request("DELETE", "/v2/catalog/collections/{collection_id}", { params });
}
/** Add items to catalog collections */
addToCollection(body: unknown, params: { "collection_id": string }): Promise<any> {
return this._request("POST", "/v2/catalog/collections/{collection_id}/items", { body, params });
}
/** Remove items from catalog collection */
deleteFromCollection(params: { "collection_id": string }): Promise<any> {
return this._request("DELETE", "/v2/catalog/collections/{collection_id}/items", { params });
}
/** Search catalogs for assets */
searchCatalog(params: { "sort"?: string; "page"?: number; "per_page"?: number; "query"?: string; "collection_id"?: unknown[]; "asset_type"?: unknown[] }): Promise<any> {
return this._request("GET", "/v2/catalog/search", { params });
}
/** Get details about multiple contributors */
getContributorList(params: { "id": unknown[] }): Promise<any> {
return this._request("GET", "/v2/contributors", { params });
}
/** Get details about a single contributor */
getContributor(params: { "contributor_id": string }): Promise<any> {
return this._request("GET", "/v2/contributors/{contributor_id}", { params });
}
/** List contributors' collections */
getContributorCollectionsList(params: { "contributor_id": string; "sort"?: string }): Promise<any> {
return this._request("GET", "/v2/contributors/{contributor_id}/collections", { params });
}
/** Get details about contributors' collections */
getContributorCollections(params: { "contributor_id": string; "id": string }): Promise<any> {
return this._request("GET", "/v2/contributors/{contributor_id}/collections/{id}", { params });
}
/** Get the items in contributors' collections */
getContributorCollectionItems(params: { "contributor_id": string; "id": string; "page"?: number; "per_page"?: number; "sort"?: string }): Promise<any> {
return this._request("GET", "/v2/contributors/{contributor_id}/collections/{id}/items", { params });
}
/** Upload images */
uploadImage(body: unknown): Promise<any> {
return this._request("POST", "/v2/cv/images", { body });
}
/** List suggested keywords */
getKeywords(params: { "asset_id": string }): Promise<any> {
return this._request("GET", "/v2/cv/keywords", { params });
}
/** List similar images */
getSimilarImages(params: { "asset_id": string; "license"?: unknown[]; "safe"?: boolean; "language"?: string; "page"?: number; "per_page"?: number; "view"?: string }): Promise<any> {
return this._request("GET", "/v2/cv/similar/images", { params });
}
/** List similar videos */
getSimilarVideos(params: { "asset_id": string; "license"?: unknown[]; "safe"?: boolean; "language"?: string; "page"?: number; "per_page"?: number; "view"?: string }): Promise<any> {
return this._request("GET", "/v2/cv/similar/videos", { params });
}
/** List editorial categories */
listEditorialImageCategories(): Promise<any> {
return this._request("GET", "/v2/editorial/images/categories", {});
}
/** List editorial image licenses */
getEditorialImageLicenseList(params: { "image_id"?: string; "license"?: string; "page"?: number; "per_page"?: number; "sort"?: string; "username"?: string; "start_date"?: string; "end_date"?: string; "download_availability"?: string; "team_history"?: boolean }): Promise<any> {
return this._request("GET", "/v2/editorial/images/licenses", { params });
}
/** License editorial content */
licenseEditorialImages(body: unknown): Promise<any> {
return this._request("POST", "/v2/editorial/images/licenses", { body });
}
/** Get editorial livefeed list */
getEditorialImageLivefeedList(params: { "country": string; "page"?: number; "per_page"?: number }): Promise<any> {
return this._request("GET", "/v2/editorial/images/livefeeds", { params });
}
/** Get editorial livefeed */
getEditorialImageLivefeed(params: { "id": string; "country": string }): Promise<any> {
return this._request("GET", "/v2/editorial/images/livefeeds/{id}", { params });
}
/** Get editorial livefeed items */
getEditorialImageLivefeedItems(params: { "id": string; "country": string }): Promise<any> {
return this._request("GET", "/v2/editorial/images/livefeeds/{id}/items", { params });
}
/** Search editorial images */
searchEditorialImages(params: { "country": string; "query"?: string; "sort"?: string; "category"?: string; "supplier_code"?: unknown[]; "date_start"?: string; "date_end"?: string; "per_page"?: number; "cursor"?: string }): Promise<any> {
return this._request("GET", "/v2/editorial/images/search", { params });
}
/** List updated content */
getUpdatedEditorialImages(params: { "type": string; "date_updated_start": string; "date_updated_end": string; "country": string; "date_taken_start"?: string; "date_taken_end"?: string; "cursor"?: string; "sort"?: string; "supplier_code"?: unknown[]; "per_page"?: number }): Promise<any> {
return this._request("GET", "/v2/editorial/images/updated", { params });
}
/** Get editorial content details */
getEditorialImage(params: { "id": string; "country": string }): Promise<any> {
return this._request("GET", "/v2/editorial/images/{id}", { params });
}
/** List editorial video categories */
listEditorialVideoCategories(): Promise<any> {
return this._request("GET", "/v2/editorial/videos/categories", {});
}
/** List editorial video licenses */
getEditorialVideoLicenseList(params: { "video_id"?: string; "license"?: string; "page"?: number; "per_page"?: number; "sort"?: string; "username"?: string; "start_date"?: string; "end_date"?: string; "download_availability"?: string; "team_history"?: boolean }): Promise<any> {
return this._request("GET", "/v2/editorial/videos/licenses", { params });
}
/** License editorial video content */
licenseEditorialVideo(body: unknown): Promise<any> {
return this._request("POST", "/v2/editorial/videos/licenses", { body });
}
/** Search editorial video content */
searchEditorialVideos(params: { "country": string; "query"?: string; "sort"?: string; "category"?: string; "supplier_code"?: unknown[]; "date_start"?: string; "date_end"?: string; "resolution"?: string; "fps"?: number; "per_page"?: number; "cursor"?: string }): Promise<any> {
return this._request("GET", "/v2/editorial/videos/search", { params });
}
/** Get editorial video content details */
getEditorialVideo(params: { "id": string; "country": string; "search_id"?: string }): Promise<any> {
return this._request("GET", "/v2/editorial/videos/{id}", { params });
}
/** List images */
getImageList(params: { "id": unknown[]; "view"?: string; "search_id"?: string }): Promise<any> {
return this._request("GET", "/v2/images", { params });
}
/** List image categories */
listImageCategories(params: { "language"?: string }): Promise<any> {
return this._request("GET", "/v2/images/categories", { params });
}
/** List image collections */
getImageCollectionList(params: { "embed"?: unknown[]; "page"?: number; "per_page"?: number }): Promise<any> {
return this._request("GET", "/v2/images/collections", { params });
}
/** Create image collections */
createImageCollection(body: unknown): Promise<any> {
return this._request("POST", "/v2/images/collections", { body });
}
/** List featured image collections */
getFeaturedImageCollectionList(params: { "embed"?: string; "type"?: unknown[]; "asset_hint"?: string }): Promise<any> {
return this._request("GET", "/v2/images/collections/featured", { params });
}
/** Get the details of featured image collections */
getFeaturedImageCollection(params: { "id": string; "embed"?: string; "asset_hint"?: string }): Promise<any> {
return this._request("GET", "/v2/images/collections/featured/{id}", { params });
}
/** Get the contents of featured image collections */
getFeaturedImageCollectionItems(params: { "id": string; "page"?: number; "per_page"?: number }): Promise<any> {
return this._request("GET", "/v2/images/collections/featured/{id}/items", { params });
}
/** Get the details of image collections */
getImageCollection(params: { "id": string; "embed"?: unknown[]; "share_code"?: string }): Promise<any> {
return this._request("GET", "/v2/images/collections/{id}", { params });
}
/** Rename image collections */
renameImageCollection(body: unknown, params: { "id": string }): Promise<any> {
return this._request("POST", "/v2/images/collections/{id}", { body, params });
}
/** Delete image collections */
deleteImageCollection(params: { "id": string }): Promise<any> {
return this._request("DELETE", "/v2/images/collections/{id}", { params });
}
/** Get the contents of image collections */
getImageCollectionItems(params: { "id": string; "page"?: number; "per_page"?: number; "share_code"?: string; "sort"?: string }): Promise<any> {
return this._request("GET", "/v2/images/collections/{id}/items", { params });
}
/** Add images to collections */
addImageCollectionItems(body: unknown, params: { "id": string }): Promise<any> {
return this._request("POST", "/v2/images/collections/{id}/items", { body, params });
}
/** Remove images from collections */
deleteImageCollectionItems(params: { "id": string; "item_id"?: unknown[] }): Promise<any> {
return this._request("DELETE", "/v2/images/collections/{id}/items", { params });
}
/** List image licenses */
getImageLicenseList(params: { "image_id"?: string; "license"?: string; "page"?: number; "per_page"?: number; "sort"?: string; "username"?: string; "start_date"?: string; "end_date"?: string; "download_availability"?: string; "team_history"?: boolean }): Promise<any> {
return this._request("GET", "/v2/images/licenses", { params });
}
/** License images */
licenseImages(body: unknown, params: { "subscription_id"?: string; "format"?: string; "size"?: string; "search_id"?: string }): Promise<any> {
return this._request("POST", "/v2/images/licenses", { body, params });
}
/** Download images */
downloadImage(body: unknown, params: { "id": string }): Promise<any> {
return this._request("POST", "/v2/images/licenses/{id}/downloads", { body, params });
}
/** List recommended images */
getImageRecommendations(params: { "id": unknown[]; "max_items"?: number; "safe"?: boolean }): Promise<any> {
return this._request("GET", "/v2/images/recommendations", { params });
}
/** Search for images */
searchImages(params: { "added_date"?: string; "added_date_start"?: string; "aspect_ratio_min"?: number; "aspect_ratio_max"?: number; "aspect_ratio"?: number; "ai_search"?: boolean; "ai_labels_limit"?: number; "ai_industry"?: string; "ai_objective"?: string; "added_date_end"?: string; "category"?: string; "color"?: string; "contributor"?: unknown[]; "contributor_country"?: string; "fields"?: string; "height"?: number; "height_from"?: number; "height_to"?: number; "image_type"?: unknown[]; "keyword_safe_search"?: boolean; "language"?: string; "license"?: unknown[]; "model"?: unknown[]; "orientation"?: string; "page"?: number; "per_page"?: number; "people_model_released"?: boolean; "people_age"?: string; "people_ethnicity"?: unknown[]; "people_gender"?: string; "people_number"?: number; "query"?: string; "region"?: string; "safe"?: boolean; "sort"?: string; "spellcheck_query"?: boolean; "view"?: string; "width"?: number; "width_from"?: number; "width_to"?: number }): Promise<any> {
return this._request("GET", "/v2/images/search", { params });
}
/** Get suggestions for a search term */
getImageSuggestions(params: { "query": string; "limit"?: number }): Promise<any> {
return this._request("GET", "/v2/images/search/suggestions", { params });
}
/** Get keywords from text */
getImageKeywordSuggestions(body: unknown): Promise<any> {
return this._request("POST", "/v2/images/search/suggestions", { body });
}
/** List updated images */
getUpdatedImages(params: { "type"?: unknown[]; "start_date"?: string; "end_date"?: string; "interval"?: string; "page"?: number; "per_page"?: number; "sort"?: string }): Promise<any> {
return this._request("GET", "/v2/images/updated", { params });
}
/** Get details about images */
getImage(params: { "id": string; "language"?: string; "view"?: string; "search_id"?: string }): Promise<any> {
return this._request("GET", "/v2/images/{id}", { params });
}
/** List similar images */
listSimilarImages(params: { "id": string; "language"?: string; "page"?: number; "per_page"?: number; "view"?: string }): Promise<any> {
return this._request("GET", "/v2/images/{id}/similar", { params });
}
/** Get access tokens */
createAccessToken(body: unknown): Promise<any> {
return this._request("POST", "/v2/oauth/access_token", { body });
}
/** Authorize applications */
authorize(params: { "client_id": string; "redirect_uri": string; "response_type": string; "state": string; "realm"?: string; "scope"?: string }): Promise<any> {
return this._request("GET", "/v2/oauth/authorize", { params });
}
/** List details about sound effects */
getSfxListDetails(params: { "id": unknown[]; "view"?: string; "language"?: string; "library"?: string; "search_id"?: string }): Promise<any> {
return this._request("GET", "/v2/sfx", { params });
}
/** List sound effects licenses */
getSfxLicenseList(params: { "sfx_id"?: string; "license"?: string; "page"?: number; "per_page"?: number; "sort"?: string; "username"?: string; "start_date"?: string; "end_date"?: string; "license_id"?: string; "download_availability"?: string; "team_history"?: boolean }): Promise<any> {
return this._request("GET", "/v2/sfx/licenses", { params });
}
/** License sound effects */
licensesSFX(body: unknown): Promise<any> {
return this._request("POST", "/v2/sfx/licenses", { body });
}
/** Download sound effects */
downloadSfx(params: { "id": string }): Promise<any> {
return this._request("POST", "/v2/sfx/licenses/{id}/downloads", { params });
}
/** Search for sound effects */
searchSFX(params: { "added_date"?: string; "added_date_start"?: string; "added_date_end"?: string; "duration"?: number; "duration_from"?: number; "duration_to"?: number; "page"?: number; "per_page"?: number; "query"?: string; "safe"?: boolean; "sort"?: string; "view"?: string; "language"?: string }): Promise<any> {
return this._request("GET", "/v2/sfx/search", { params });
}
/** Get details about sound effects */
getSfxDetails(params: { "id": number; "language"?: string; "view"?: string; "library"?: string; "search_id"?: string }): Promise<any> {
return this._request("GET", "/v2/sfx/{id}", { params });
}
/** Echo text */
echo(params: { "text"?: string }): Promise<any> {
return this._request("GET", "/v2/test", { params });
}
/** Validate input */
validate(params: { "id": number; "tag"?: unknown[]; "user-agent"?: string }): Promise<any> {
return this._request("GET", "/v2/test/validate", { params });
}
/** Get user details */
getUser(): Promise<any> {
return this._request("GET", "/v2/user", {});
}
/** Get access token details */
getAccessToken(): Promise<any> {
return this._request("GET", "/v2/user/access_token", {});
}
/** List user subscriptions */
getUserSubscriptionList(): Promise<any> {
return this._request("GET", "/v2/user/subscriptions", {});
}
/** List videos */
getVideoList(params: { "id": unknown[]; "view"?: string; "search_id"?: string }): Promise<any> {
return this._request("GET", "/v2/videos", { params });
}
/** List video categories */
listVideoCategories(params: { "language"?: string }): Promise<any> {
return this._request("GET", "/v2/videos/categories", { params });
}
/** List video collections */
getVideoCollectionList(params: { "page"?: number; "per_page"?: number; "embed"?: unknown[] }): Promise<any> {
return this._request("GET", "/v2/videos/collections", { params });
}
/** Create video collections */
createVideoCollection(body: unknown): Promise<any> {
return this._request("POST", "/v2/videos/collections", { body });
}
/** List featured video collections */
getFeaturedVideoCollectionList(params: { "embed"?: string }): Promise<any> {
return this._request("GET", "/v2/videos/collections/featured", { params });
}
/** Get the details of featured video collections */
getFeaturedVideoCollection(params: { "id": string; "embed"?: string }): Promise<any> {
return this._request("GET", "/v2/videos/collections/featured/{id}", { params });
}
/** Get the contents of featured video collections */
getFeaturedVideoCollectionItems(params: { "id": string; "page"?: number; "per_page"?: number }): Promise<any> {
return this._request("GET", "/v2/videos/collections/featured/{id}/items", { params });
}
/** Get the details of video collections */
getVideoCollection(params: { "id": string; "embed"?: unknown[]; "share_code"?: string }): Promise<any> {
return this._request("GET", "/v2/videos/collections/{id}", { params });
}
/** Rename video collections */
renameVideoCollection(body: unknown, params: { "id": string }): Promise<any> {
return this._request("POST", "/v2/videos/collections/{id}", { body, params });
}
/** Delete video collections */
deleteVideoCollection(params: { "id": string }): Promise<any> {
return this._request("DELETE", "/v2/videos/collections/{id}", { params });
}
/** Get the contents of video collections */
getVideoCollectionItems(params: { "id": string; "page"?: number; "per_page"?: number; "share_code"?: string; "sort"?: string }): Promise<any> {
return this._request("GET", "/v2/videos/collections/{id}/items", { params });
}
/** Add videos to collections */
addVideoCollectionItems(body: unknown, params: { "id": string }): Promise<any> {
return this._request("POST", "/v2/videos/collections/{id}/items", { body, params });
}
/** Remove videos from collections */
deleteVideoCollectionItems(params: { "id": string; "item_id"?: unknown[] }): Promise<any> {
return this._request("DELETE", "/v2/videos/collections/{id}/items", { params });
}
/** List video licenses */
getVideoLicenseList(params: { "video_id"?: string; "license"?: string; "page"?: number; "per_page"?: number; "sort"?: string; "username"?: string; "start_date"?: string; "end_date"?: string; "download_availability"?: string; "team_history"?: boolean }): Promise<any> {
return this._request("GET", "/v2/videos/licenses", { params });
}
/** License videos */
licenseVideos(body: unknown, params: { "subscription_id"?: string; "size"?: string; "search_id"?: string }): Promise<any> {
return this._request("POST", "/v2/videos/licenses", { body, params });
}
/** Download videos */
downloadVideos(body: unknown, params: { "id": string }): Promise<any> {
return this._request("POST", "/v2/videos/licenses/{id}/downloads", { body, params });
}
/** Search for videos */
searchVideos(params: { "added_date"?: string; "added_date_start"?: string; "added_date_end"?: string; "aspect_ratio"?: string; "category"?: string; "contributor"?: unknown[]; "contributor_country"?: unknown[]; "duration"?: number; "duration_from"?: number; "duration_to"?: number; "fps"?: number; "fps_from"?: number; "fps_to"?: number; "keyword_safe_search"?: boolean; "language"?: string; "license"?: unknown[]; "model"?: unknown[]; "page"?: number; "per_page"?: number; "people_age"?: string; "people_ethnicity"?: unknown[]; "people_gender"?: string; "people_number"?: number; "people_model_released"?: boolean; "query"?: string; "resolution"?: string; "safe"?: boolean; "sort"?: string; "view"?: string }): Promise<any> {
return this._request("GET", "/v2/videos/search", { params });
}
/** Get suggestions for a search term */
getVideoSuggestions(params: { "query": string; "limit"?: number }): Promise<any> {
return this._request("GET", "/v2/videos/search/suggestions", { params });
}
/** List updated videos */
getUpdatedVideos(params: { "start_date"?: string; "end_date"?: string; "interval"?: string; "page"?: number; "per_page"?: number; "sort"?: string }): Promise<any> {
return this._request("GET", "/v2/videos/updated", { params });
}
/** Get details about videos */
getVideo(params: { "id": string; "language"?: string; "view"?: string; "search_id"?: string }): Promise<any> {
return this._request("GET", "/v2/videos/{id}", { params });
}
/** List similar videos */
findSimilarVideos(params: { "id": string; "language"?: string; "page"?: number; "per_page"?: number; "view"?: string }): Promise<any> {
return this._request("GET", "/v2/videos/{id}/similar", { params });
}
}
export default ShutterstockAPIExplorer;
No reviews yet. Be the first to rate this API.
Yes. Shutterstock API Explorer uses basic authentication, so you bring your own key from the provider. You store it once on OmniStream and the proxy injects it into every call, so your code only ever sends your Omni key.
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. It exposes 109 endpoints over GET, POST, DELETE, PATCH, including GET /v2/ai/audio/descriptors, GET /v2/ai/audio/instruments, GET /v2/ai/audio/renders.
Install the OmniStream SDK for your language and call Shutterstock API Explorer through it. The client is generated from this API's OpenAPI spec, so parameters and responses are fully typed, and the same client also calls every other API in the marketplace.
You can start on the free plan. OmniStream charges for the unified SDK, key storage and proxy rather than for Shutterstock API Explorer itself, and Shutterstock API Explorer's own rate limits still apply to your provider key.
ExchangeRate-API: Fetch the latest currency exchange rates via API. ExchangeRate-API is free and unlimited.
List audio collections
Create audio collections
Get the details of audio collections
Rename audio collections
Delete audio collections
Get the contents of audio collections
Add audio tracks to collections
Remove audio tracks from collections
List audio genres
List audio instruments
List audio licenses
License audio tracks
Download audio tracks
List audio moods
Search for tracks
Get details about audio tracks
Run multiple image searches
List catalog collections
Create catalog collections
Update collection metadata
Delete catalog collections
Add items to catalog collections
Remove items from catalog collection
Search catalogs for assets
Get details about multiple contributors
Get details about a single contributor
List contributors' collections
Get details about contributors' collections
Get the items in contributors' collections
Upload images
List suggested keywords
List similar images
List similar videos
List editorial categories
List editorial image licenses
License editorial content
Get editorial livefeed list
Get editorial livefeed
Get editorial livefeed items
Search editorial images
List updated content
Get editorial content details
List editorial video categories
List editorial video licenses
License editorial video content
Search editorial video content
Get editorial video content details
List images
List image categories
List image collections
Create image collections
List featured image collections
Get the details of featured image collections
Get the contents of featured image collections
Get the details of image collections
Rename image collections
Delete image collections
Get the contents of image collections
Add images to collections
Remove images from collections
List image licenses
License images
Download images
List recommended images
Search for images
Get suggestions for a search term
Get keywords from text
List updated images
Get details about images
List similar images
Get access tokens
Authorize applications
List details about sound effects
List sound effects licenses
License sound effects
Download sound effects
Search for sound effects
Get details about sound effects
Echo text
Validate input
Get user details
Get access token details
List user subscriptions
List videos
List video categories
List video collections
Create video collections
List featured video collections
Get the details of featured video collections
Get the contents of featured video collections
Get the details of video collections
Rename video collections
Delete video collections
Get the contents of video collections
Add videos to collections
Remove videos from collections
List video licenses
License videos
Download videos
Search for videos
Get suggestions for a search term
List updated videos
Get details about videos
List similar videos