Shutterstock · Agentic Access
Shutterstock Agentic Access
x-agentic-access
generated
Shutterstock exposes 95 API operations that an AI agent could call, of which 28 are state-changing ‘acting’ operations. This is a recommended x-agentic-access execution contract — the scope, audience, consequence tier, short-lived token constraints, and escalation each action should carry before it is handed to an autonomous agent.
By consequence: 67 read and 28 write.
Contracts are classified heuristically from the provider’s OpenAPI and refresh on every APIs.io network build; audience is bound per deployment. The model follows Curity’s Access Intelligence (apidays Munich 2026). Browse every provider’s agent contracts at agentic-access.apis.io.
ImagesMediaPhotosStock ImagesVideosAudioLicensingCreative Content
Operations: 95
Acting: 28
Human-in-the-loop: 0
Method: generated
By consequence
read 67
write 28
Source
Agentic Access
generated: '2026-07-15'
method: generated
source: openapi/shutterstock-openapi.yml
description: Recommended x-agentic-access execution contracts, classified heuristically from
the OpenAPI. A governance starting point for exposing this API to AI agents — review and bind
audience per deployment. See research/curity/agentic-governance/.
summary:
operations: 95
by_action_class:
connected: 67
acting: 28
by_consequence:
read: 67
write: 28
human_in_the_loop_required: 0
operations:
- path: /v2/images/search
method: get
operationId: searchImages
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /v2/images/search/suggestions
method: get
operationId: getImageSuggestions
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /v2/images/search/suggestions
method: post
operationId: postImageEntities
x-agentic-access:
action-class: acting
consequence: write
subject: required
audience: null
token:
max-ttl: 900
escalation:
human-in-the-loop: conditional
triggers:
- abnormal
- high-value
audit: required
- path: /v2/images/{id}
method: get
operationId: getImage
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /v2/images/categories
method: get
operationId: getImageCategories
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /v2/images/{id}/similar
method: get
operationId: getSimilarImages
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /v2/images/licenses
method: post
operationId: licenseImages
x-agentic-access:
action-class: acting
consequence: write
subject: required
scope:
- licenses.create
- purchases.view
- user.view
audience: null
token:
max-ttl: 900
escalation:
human-in-the-loop: conditional
triggers:
- abnormal
- high-value
audit: required
- path: /v2/images/licenses
method: get
operationId: getImageLicenseList
x-agentic-access:
action-class: connected
consequence: read
subject: optional
scope:
- licenses.view
token:
max-ttl: 3600
audit: none
- path: /v2/images/licenses/{id}/downloads
method: post
operationId: downloadImage
x-agentic-access:
action-class: acting
consequence: write
subject: required
scope:
- licenses.view
audience: null
token:
max-ttl: 900
escalation:
human-in-the-loop: conditional
triggers:
- abnormal
- high-value
audit: required
- path: /v2/images/recommendations
method: get
operationId: getImageRecommendations
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /v2/images/collections
method: post
operationId: createLightbox
x-agentic-access:
action-class: acting
consequence: write
subject: required
scope:
- collections.edit
audience: null
token:
max-ttl: 900
escalation:
human-in-the-loop: conditional
triggers:
- abnormal
- high-value
audit: required
- path: /v2/images/collections
method: get
operationId: getLightboxList
x-agentic-access:
action-class: connected
consequence: read
subject: optional
scope:
- collections.view
token:
max-ttl: 3600
audit: none
- path: /v2/images/collections/{id}
method: get
operationId: getLightbox
x-agentic-access:
action-class: connected
consequence: read
subject: optional
scope:
- collections.view
token:
max-ttl: 3600
audit: none
- path: /v2/images/collections/{id}
method: post
operationId: renameLightbox
x-agentic-access:
action-class: acting
consequence: write
subject: required
scope:
- collections.edit
audience: null
token:
max-ttl: 900
escalation:
human-in-the-loop: conditional
triggers:
- abnormal
- high-value
audit: required
- path: /v2/images/collections/{id}
method: delete
operationId: deleteLightbox
x-agentic-access:
action-class: acting
consequence: write
subject: required
scope:
- collections.edit
audience: null
token:
max-ttl: 900
escalation:
human-in-the-loop: conditional
triggers:
- abnormal
- high-value
audit: required
- path: /v2/images/collections/{id}/items
method: post
operationId: addLightboxItems
x-agentic-access:
action-class: acting
consequence: write
subject: required
scope:
- collections.edit
audience: null
token:
max-ttl: 900
escalation:
human-in-the-loop: conditional
triggers:
- abnormal
- high-value
audit: required
- path: /v2/images/collections/{id}/items
method: get
operationId: getLightboxItems
x-agentic-access:
action-class: connected
consequence: read
subject: optional
scope:
- collections.view
token:
max-ttl: 3600
audit: none
- path: /v2/images/collections/{id}/items
method: delete
operationId: deleteLightboxItems
x-agentic-access:
action-class: acting
consequence: write
subject: required
scope:
- collections.edit
audience: null
token:
max-ttl: 900
escalation:
human-in-the-loop: conditional
triggers:
- abnormal
- high-value
audit: required
- path: /v2/images/collections/featured
method: get
operationId: getFeaturedLightboxList
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /v2/images/collections/featured/{id}
method: get
operationId: getFeaturedLightbox
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /v2/images/collections/featured/{id}/items
method: get
operationId: getFeaturedLightboxItems
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /v2/images/updated
method: get
operationId: getUpdatedImages
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /v2/videos/search
method: get
operationId: searchVideos
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /v2/videos/search/suggestions
method: get
operationId: getVideoSuggestions
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /v2/videos
method: get
operationId: getVideoList
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /v2/videos/{id}
method: get
operationId: getVideo
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /v2/videos/licenses
method: post
operationId: licenseVideos
x-agentic-access:
action-class: acting
consequence: write
subject: required
scope:
- licenses.create
- purchases.view
audience: null
token:
max-ttl: 900
escalation:
human-in-the-loop: conditional
triggers:
- abnormal
- high-value
audit: required
- path: /v2/videos/licenses
method: get
operationId: getVideoLicenseList
x-agentic-access:
action-class: connected
consequence: read
subject: optional
scope:
- licenses.view
token:
max-ttl: 3600
audit: none
- path: /v2/videos/licenses/{id}/downloads
method: post
operationId: downloadVideos
x-agentic-access:
action-class: acting
consequence: write
subject: required
scope:
- licenses.view
audience: null
token:
max-ttl: 900
escalation:
human-in-the-loop: conditional
triggers:
- abnormal
- high-value
audit: required
- path: /v2/videos/collections
method: post
operationId: createClipbox
x-agentic-access:
action-class: acting
consequence: write
subject: required
scope:
- collections.edit
audience: null
token:
max-ttl: 900
escalation:
human-in-the-loop: conditional
triggers:
- abnormal
- high-value
audit: required
- path: /v2/videos/collections
method: get
operationId: getClipboxList
x-agentic-access:
action-class: connected
consequence: read
subject: optional
scope:
- collections.view
token:
max-ttl: 3600
audit: none
- path: /v2/videos/collections/{id}
method: get
operationId: getClipbox
x-agentic-access:
action-class: connected
consequence: read
subject: optional
scope:
- collections.view
token:
max-ttl: 3600
audit: none
- path: /v2/videos/collections/{id}
method: post
operationId: renameClipbox
x-agentic-access:
action-class: acting
consequence: write
subject: required
scope:
- collections.edit
audience: null
token:
max-ttl: 900
escalation:
human-in-the-loop: conditional
triggers:
- abnormal
- high-value
audit: required
- path: /v2/videos/collections/{id}
method: delete
operationId: deleteClipbox
x-agentic-access:
action-class: acting
consequence: write
subject: required
scope:
- collections.edit
audience: null
token:
max-ttl: 900
escalation:
human-in-the-loop: conditional
triggers:
- abnormal
- high-value
audit: required
- path: /v2/videos/categories
method: get
operationId: getVideoCategories
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /v2/videos/collections/{id}/items
method: post
operationId: addClipboxItems
x-agentic-access:
action-class: acting
consequence: write
subject: required
scope:
- collections.edit
audience: null
token:
max-ttl: 900
escalation:
human-in-the-loop: conditional
triggers:
- abnormal
- high-value
audit: required
- path: /v2/videos/collections/{id}/items
method: get
operationId: getClipboxItems
x-agentic-access:
action-class: connected
consequence: read
subject: optional
scope:
- collections.view
token:
max-ttl: 3600
audit: none
- path: /v2/videos/collections/{id}/items
method: delete
operationId: deleteClipboxItems
x-agentic-access:
action-class: acting
consequence: write
subject: required
scope:
- collections.edit
audience: null
token:
max-ttl: 900
escalation:
human-in-the-loop: conditional
triggers:
- abnormal
- high-value
audit: required
- path: /v2/videos/{id}/similar
method: get
operationId: getSimilarVideos
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /v2/videos/updated
method: get
operationId: getUpdatedVideos
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /v2/audio/search
method: get
operationId: searchAudio
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /v2/audio/genres
method: get
operationId: getGenres
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /v2/audio/instruments
method: get
operationId: getInstruments
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /v2/audio/moods
method: get
operationId: getMoods
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /v2/audio
method: get
operationId: getTrackList
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /v2/audio/{id}
method: get
operationId: getTrack
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /v2/audio/licenses
method: post
operationId: licenseTrack
x-agentic-access:
action-class: acting
consequence: write
subject: required
scope:
- licenses.create
audience: null
token:
max-ttl: 900
escalation:
human-in-the-loop: conditional
triggers:
- abnormal
- high-value
audit: required
- path: /v2/audio/licenses
method: get
operationId: getAudioLicenseList
x-agentic-access:
action-class: connected
consequence: read
subject: optional
scope:
- licenses.view
token:
max-ttl: 3600
audit: none
- path: /v2/audio/licenses/{id}/downloads
method: post
operationId: downloadTracks
x-agentic-access:
action-class: acting
consequence: write
subject: required
scope:
- licenses.view
audience: null
token:
max-ttl: 900
escalation:
human-in-the-loop: conditional
triggers:
- abnormal
- high-value
audit: required
- path: /v2/audio/collections
method: post
operationId: createSoundbox
x-agentic-access:
action-class: acting
consequence: write
subject: required
scope:
- collections.edit
audience: null
token:
max-ttl: 900
escalation:
human-in-the-loop: conditional
triggers:
- abnormal
- high-value
audit: required
- path: /v2/audio/collections
method: get
operationId: getSoundboxList
x-agentic-access:
action-class: connected
consequence: read
subject: optional
scope:
- collections.view
token:
max-ttl: 3600
audit: none
- path: /v2/audio/collections/{id}
method: get
operationId: getSoundbox
x-agentic-access:
action-class: connected
consequence: read
subject: optional
scope:
- collections.view
token:
max-ttl: 3600
audit: none
- path: /v2/audio/collections/{id}
method: post
operationId: renameSoundbox
x-agentic-access:
action-class: acting
consequence: write
subject: required
scope:
- collections.edit
audience: null
token:
max-ttl: 900
escalation:
human-in-the-loop: conditional
triggers:
- abnormal
- high-value
audit: required
- path: /v2/audio/collections/{id}
method: delete
operationId: deleteSoundbox
x-agentic-access:
action-class: acting
consequence: write
subject: required
scope:
- collections.edit
audience: null
token:
max-ttl: 900
escalation:
human-in-the-loop: conditional
triggers:
- abnormal
- high-value
audit: required
- path: /v2/audio/collections/{id}/items
method: post
operationId: addSoundboxItems
x-agentic-access:
action-class: acting
consequence: write
subject: required
scope:
- collections.edit
audience: null
token:
max-ttl: 900
escalation:
human-in-the-loop: conditional
triggers:
- abnormal
- high-value
audit: required
- path: /v2/audio/collections/{id}/items
method: get
operationId: getSoundboxItems
x-agentic-access:
action-class: connected
consequence: read
subject: optional
scope:
- collections.view
token:
max-ttl: 3600
audit: none
- path: /v2/audio/collections/{id}/items
method: delete
operationId: deleteSoundboxItems
x-agentic-access:
action-class: acting
consequence: write
subject: required
scope:
- collections.edit
audience: null
token:
max-ttl: 900
escalation:
human-in-the-loop: conditional
triggers:
- abnormal
- high-value
audit: required
- path: /v2/editorial/images/search
method: get
operationId: searchEditorialImages
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /v2/editorial/images/categories
method: get
operationId: getEditorialImageCategories
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /v2/editorial/images/{id}
method: get
operationId: getEditorialImageDetails
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /v2/editorial/images/licenses
method: get
operationId: getEditorialImageLicenseList
x-agentic-access:
action-class: connected
consequence: read
subject: optional
scope:
- licenses.view
token:
max-ttl: 3600
audit: none
- path: /v2/editorial/images/licenses
method: post
operationId: licenseEditorialImages
x-agentic-access:
action-class: acting
consequence: write
subject: required
scope:
- licenses.create
- purchases.view
audience: null
token:
max-ttl: 900
escalation:
human-in-the-loop: conditional
triggers:
- abnormal
- high-value
audit: required
- path: /v2/editorial/images/livefeeds
method: get
operationId: getEditorialLivefeedImagesList
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /v2/editorial/images/livefeeds/{id}
method: get
operationId: getEditorialImageLivefeed
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /v2/editorial/images/livefeeds/{id}/items
method: get
operationId: getEditorialLivefeedImageItems
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /v2/editorial/videos/search
method: get
operationId: editorialVideosSearch
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /v2/editorial/videos/categories
method: get
operationId: getEditorialCategories
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /v2/editorial/videos/{id}
method: get
operationId: editorialVideosDetails
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /v2/editorial/videos/licenses
method: post
operationId: licenseEditorialVideo
x-agentic-access:
action-class: acting
consequence: write
subject: required
scope:
- licenses.create
- purchases.view
audience: null
token:
max-ttl: 900
escalation:
human-in-the-loop: conditional
triggers:
- abnormal
- high-value
audit: required
- path: /v2/cv/images
method: post
operationId: uploadImage
x-agentic-access:
action-class: acting
consequence: write
subject: required
audience: null
token:
max-ttl: 900
escalation:
human-in-the-loop: conditional
triggers:
- abnormal
- high-value
audit: required
- path: /v2/cv/similar/images
method: get
operationId: getSimilarImages
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /v2/cv/similar/videos
method: get
operationId: getSimilarVideos
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /v2/cv/keywords
method: get
operationId: getKeywords
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /v2/images
method: get
operationId: getImageList
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /v2/images
method: post
operationId: uploadEphemeralImage
x-agentic-access:
action-class: acting
consequence: write
subject: required
audience: null
token:
max-ttl: 900
escalation:
human-in-the-loop: conditional
triggers:
- abnormal
- high-value
audit: required
- path: /v2/contributors
method: get
operationId: getContributorList
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /v2/contributors/{contributor_id}
method: get
operationId: getContributor
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /v2/contributors/{contributor_id}/collections
method: get
operationId: getContributorCollectionsList
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /v2/contributors/{contributor_id}/collections/{id}
method: get
operationId: getContributorCollections
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /v2/contributors/{contributor_id}/collections/{id}/items
method: get
operationId: getContributorCollectionItems
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /v2/user
method: get
operationId: getUser
x-agentic-access:
action-class: connected
consequence: read
subject: optional
scope:
- user.view
token:
max-ttl: 3600
audit: none
- path: /v2/user/access_token
method: get
operationId: getAccessToken
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /v2/user/subscriptions
method: get
operationId: getUserSubsciptionList
x-agentic-access:
action-class: connected
consequence: read
subject: optional
scope:
- purchases.view
token:
max-ttl: 3600
audit: none
- path: /v2/test
method: get
operationId: echo
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /v2/test/validate
method: get
operationId: validate
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /v2/oauth/authorize
method: get
operationId: authorize
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /v2/oauth/access_token
method: post
operationId: createAccessToken
x-agentic-access:
action-class: acting
consequence: write
subject: required
audience: null
token:
max-ttl: 900
escalation:
human-in-the-loop: conditional
triggers:
- abnormal
- high-value
audit: required
- path: /v2/editorial/{id}
method: get
operationId: getEditorialImage
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /v2/editorial/licenses
method: post
operationId: licenseEditorialImage
x-agentic-access:
action-class: acting
consequence: write
subject: required
scope:
- licenses.create
audience: null
token:
max-ttl: 900
escalation:
human-in-the-loop: conditional
triggers:
- abnormal
- high-value
audit: required
- path: /v2/editorial/livefeeds
method: get
operationId: getEditorialLivefeedList
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /v2/editorial/livefeeds/{id}
method: get
operationId: getEditorialLivefeed
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /v2/editorial/livefeeds/{id}/items
method: get
operationId: getEditorialLivefeedItems
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /v2/editorial/search
method: get
operationId: searchEditorial
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /v2/editorial/categories
method: get
operationId: getEditorialCategories
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /v2/editorial/updated
method: get
operationId: getUpdatedImages
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none