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