VirusTotal Agentic Access
VirusTotal exposes 206 API operations that an AI agent could call, of which 56 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: 150 read, 39 write, 6 physical, and 11 safety-critical.
11 operations are classed safety-critical and should require human-in-the-loop approval at runtime.
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.
By consequence
Highest-consequence actions
The physical and safety-critical operations an agent could invoke — the ones that most warrant scoped tokens, tight TTLs, and escalation. Full per-operation contracts are in the source below.
| Method | Path | Consequence | Human-in-loop |
|---|---|---|---|
| DELETE | /graphs/{id}/relationships/editors/{user_or_group_id} | safety-critical | required |
| DELETE | /graphs/{id}/relationships/viewers/{user_or_group_id} | safety-critical | required |
| PATCH | /groups/{id} | safety-critical | required |
| POST | /groups/{id}/relationships/administrators | safety-critical | required |
| DELETE | /groups/{id}/relationships/administrators/{user_id} | safety-critical | required |
| POST | /groups/{id}/relationships/service_accounts | safety-critical | required |
| POST | /groups/{id}/relationships/users | safety-critical | required |
| DELETE | /groups/{id}/relationships/users/{user_id} | safety-critical | required |
| DELETE | /intelligence/hunting_rulesets/{id}/relationships/editors/{user_or_group_id} | safety-critical | required |
| DELETE | /users/{id} | safety-critical | required |
| PATCH | /users/{id} | safety-critical | required |
| DELETE | /collections/{id}/{relationship} | physical | conditional |
| POST | /collections/{id}/{relationship} | physical | conditional |
| POST | /graphs/{id}/relationships/editors | physical | conditional |
| POST | /graphs/{id}/relationships/viewers | physical | conditional |
| POST | /intelligence/hunting_rulesets/{id}/relationships/editors | physical | conditional |
| POST | /intelligence/hunting_rulesets/{id}/relationships/owner | physical | conditional |
Source
Agentic Access
generated: '2026-07-15'
method: generated
source: openapi/virustotal-access-control-openapi.yml, openapi/virustotal-ioc-feeds-openapi.yml,
openapi/virustotal-ioc-investigation-openapi.yml, openapi/virustotal-private-scanning-openapi.yml,
openapi/virustotal-threat-graphs-openapi.yml, openapi/virustotal-threat-landscape-openapi.yml,
openapi/virustotal-yara-hunting-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: 206
by_action_class:
connected: 150
acting: 56
by_consequence:
read: 150
safety-critical: 11
write: 39
physical: 6
human_in_the_loop_required: 11
operations:
- path: /groups/{id}
method: get
operationId: groups
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /groups/{id}
method: patch
operationId: patchGroup
x-agentic-access:
action-class: acting
consequence: safety-critical
subject: required
audience: null
token:
max-ttl: 120
exchange: true
purpose-required: true
proof-of-possession: true
escalation:
human-in-the-loop: required
audit: required
- path: /groups/{id}/relationships/administrators
method: get
operationId: getGroupAdministrators
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /groups/{id}/relationships/administrators
method: post
operationId: postGroupAdministrators
x-agentic-access:
action-class: acting
consequence: safety-critical
subject: required
audience: null
token:
max-ttl: 120
exchange: true
purpose-required: true
proof-of-possession: true
escalation:
human-in-the-loop: required
audit: required
- path: /groups/{id}/relationships/administrators/{user_id}
method: delete
operationId: deleteUserGroupAdministrator
x-agentic-access:
action-class: acting
consequence: safety-critical
subject: required
audience: null
token:
max-ttl: 120
exchange: true
purpose-required: true
proof-of-possession: true
escalation:
human-in-the-loop: required
audit: required
- path: /groups/{id}/relationships/administrators/{user_id}
method: get
operationId: checkUserGroupAdministrator
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /groups/{id}/relationships/users
method: get
operationId: getGroupUsers
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /groups/{id}/relationships/users
method: post
operationId: updateGroupUsers
x-agentic-access:
action-class: acting
consequence: safety-critical
subject: required
audience: null
token:
max-ttl: 120
exchange: true
purpose-required: true
proof-of-possession: true
escalation:
human-in-the-loop: required
audit: required
- path: /groups/{id}/relationships/users/{user_id}
method: delete
operationId: deleteUserFromGroup
x-agentic-access:
action-class: acting
consequence: safety-critical
subject: required
audience: null
token:
max-ttl: 120
exchange: true
purpose-required: true
proof-of-possession: true
escalation:
human-in-the-loop: required
audit: required
- path: /groups/{id}/relationships/users/{user_id}
method: get
operationId: checkUserInGroup
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /groups/{id}/relationships/{relationship}
method: get
operationId: groupsRelationshipsIds
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /groups/{id}/{relationship}
method: get
operationId: groupsRelationships
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /users/{id}/api_usage
method: get
operationId: userApiUsage
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /users/{id}/overall_quotas
method: get
operationId: getUserOverallQuotas
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /groups/{id}/api_usage
method: get
operationId: groupApiUsage
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /groups/{id}/relationships/service_accounts
method: get
operationId: getServiceAccountsOfAGroup
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /groups/{id}/relationships/service_accounts
method: post
operationId: createANewServiceAccount
x-agentic-access:
action-class: acting
consequence: safety-critical
subject: required
audience: null
token:
max-ttl: 120
exchange: true
purpose-required: true
proof-of-possession: true
escalation:
human-in-the-loop: required
audit: required
- path: /service_accounts/{id}
method: get
operationId: getAServiceAccountObject
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /users/{id}
method: delete
operationId: deleteUserId
x-agentic-access:
action-class: acting
consequence: safety-critical
subject: required
audience: null
token:
max-ttl: 120
exchange: true
purpose-required: true
proof-of-possession: true
escalation:
human-in-the-loop: required
audit: required
- path: /users/{id}
method: get
operationId: user
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /users/{id}
method: patch
operationId: patchUserId
x-agentic-access:
action-class: acting
consequence: safety-critical
subject: required
audience: null
token:
max-ttl: 120
exchange: true
purpose-required: true
proof-of-possession: true
escalation:
human-in-the-loop: required
audit: required
- path: /users/{id}/relationships/{relationship}
method: get
operationId: getUsersRelationshipsIds
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /users/{id}/{relationship}
method: get
operationId: usersRelationships
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /feeds/domains/hourly/{time}
method: get
operationId: feedsdomainshourly2time
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /feeds/domains/{time}
method: get
operationId: feedsdomains2time
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /feeds/files/hourly/{time}
method: get
operationId: feedsFileHourly
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /feeds/files/{time}
method: get
operationId: feedsFile
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /feeds/files/{token}/download
method: get
operationId: fileFeedDownload
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /feeds/ip_addresses/hourly/{time}
method: get
operationId: feedsipAddresseshourly2time
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /feeds/ip_addresses/{time}
method: get
operationId: feedsipAddressestime
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /feeds/file_behaviours/hourly/{time}
method: get
operationId: feedsFileBehaviourHourly
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /feeds/file_behaviours/{time}
method: get
operationId: feedsFileBehaviour
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /feeds/file_behaviours/{token}/evtx
method: get
operationId: fileBehaviourFeedEvtx
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /feeds/file_behaviours/{token}/html
method: get
operationId: fileBehaviourFeedHtml
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /feeds/file_behaviours/{token}/memdump
method: get
operationId: fileBehaviourFeedMemdump
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /feeds/file_behaviours/{token}/pcap
method: get
operationId: fileBehaviourFeedPcap
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /feeds/urls/hourly/{time}
method: get
operationId: feedsUrlHourly
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /feeds/urls/{time}
method: get
operationId: feedsUrl
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /analyses/{id}
method: get
operationId: analysis
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /analyses/{id}/relationships/{relationship}
method: get
operationId: analysesGetDescriptors
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /analyses/{id}/{relationship}
method: get
operationId: analysesGetObjects
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /submission/{id}
method: get
operationId: getSubmission
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /operations/{id}
method: get
operationId: getOperationsId
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /attack_tactics/{id}
method: get
operationId: attackTacticsid
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /attack_tactics/{id}/relationships/{relationship}
method: get
operationId: attackTacticsidrelationshipsrelationship
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /attack_tactics/{id}/{relationship}
method: get
operationId: attackTacticsidrelationship
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /attack_techniques/{id}
method: get
operationId: attackTechniqueid
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /attack_techniques/{id}/relationships/{relationship}
method: get
operationId: attackTechniquesidrelationshipsrelationship
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /attack_techniques/{id}/{relationship}
method: get
operationId: attackTechniqueidrelationship
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /comments
method: get
operationId: getComments
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /comments/{id}
method: delete
operationId: commentIdDelete
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: /comments/{id}
method: get
operationId: getComment
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /comments/{id}/relationships/{relationship}
method: get
operationId: commentsRelationshipsIds
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /comments/{id}/vote
method: post
operationId: voteComment
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: /comments/{id}/{relationship}
method: get
operationId: commentsRelationships
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /domains/{domain}
method: get
operationId: domainInfo
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /domains/{domain}/comments
method: get
operationId: domainsCommentsGet
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /domains/{domain}/comments
method: post
operationId: domainsCommentsPost
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: /domains/{domain}/relationships/{relationship}
method: get
operationId: domainsRelationshipsIds
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /domains/{domain}/votes
method: get
operationId: domainsVotesGet
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /domains/{domain}/votes
method: post
operationId: domainVotesPost
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: /domains/{domain}/{relationship}
method: get
operationId: domainsRelationships
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /resolutions/{id}
method: get
operationId: getResolutionById
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /files/upload_url
method: get
operationId: filesUploadUrl
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /files
method: post
operationId: filesScan
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: /files/{id}
method: get
operationId: fileInfo
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /files/{id}/analyse
method: post
operationId: filesAnalyse
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: /files/{id}/comments
method: get
operationId: filesCommentsGet
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /files/{id}/comments
method: post
operationId: filesCommentsPost
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: /files/{id}/download
method: get
operationId: filesDownload
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /files/{id}/download_url
method: get
operationId: filesDownloadUrl
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /files/{id}/relationships/{relationship}
method: get
operationId: filesRelationshipsIds
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /files/{id}/votes
method: get
operationId: filesVotesGet
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /files/{id}/votes
method: post
operationId: filesVotesPost
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: /files/{id}/{relationship}
method: get
operationId: filesRelationships
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /sigma_rules/{id}
method: get
operationId: getSigmaRules
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /yara_rulesets/{id}
method: get
operationId: getYaraRulesets
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /file_behaviours/{sandbox_id}
method: get
operationId: getFileBehaviourId
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /file_behaviours/{sandbox_id}/evtx
method: get
operationId: fileBehaviourEvtx
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /file_behaviours/{sandbox_id}/html
method: get
operationId: getFileBehaviourHtml
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /file_behaviours/{sandbox_id}/memdump
method: get
operationId: fileBehaviourMemdump
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /file_behaviours/{sandbox_id}/pcap
method: get
operationId: fileBehavioursPcap
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /file_behaviours/{sandbox_id}/relationships/{relationship}
method: get
operationId: fileBehaviourssandboxIdrelationshipsrelationship
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /file_behaviours/{sandbox_id}/{relationship}
method: get
operationId: fileBehaviourssandboxIdrelationship
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /files/{id}/behaviour_mitre_trees
method: get
operationId: getASummaryOfAllMitreAttckTechniquesObservedInAFile
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /files/{id}/behaviour_summary
method: get
operationId: fileAllBehavioursSummary
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /files/{id}/behaviours
method: get
operationId: getAllBehaviorReportsForAFile
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /ip_addresses/{ip}
method: get
operationId: ipInfo
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /ip_addresses/{ip}/comments
method: get
operationId: ipCommentsGet
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /ip_addresses/{ip}/comments
method: post
operationId: ipCommentsPost
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: /ip_addresses/{ip}/relationships/{relationship}
method: get
operationId: ipRelationshipsIds
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /ip_addresses/{ip}/votes
method: get
operationId: ipVotes
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /ip_addresses/{ip}/votes
method: post
operationId: ipVotesPost
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: /ip_addresses/{ip}/{relationship}
method: get
operationId: ipRelationships
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /popular_threat_categories
method: get
operationId: popularThreatCategories
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /intelligence/search
method: get
operationId: intelligenceSearch
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /intelligence/search/snippets/{snippet}
method: get
operationId: intelligenceSearchSnippets
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /metadata
method: get
operationId: metadata
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /search
method: get
operationId: apiSearch
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /urls
method: post
operationId: scanUrl
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: /urls/{id}
method: get
operationId: urlInfo
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /urls/{id}/analyse
method: post
operationId: urlsAnalyse
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: /urls/{id}/comments
method: get
operationId: urlsCommentsGet
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /urls/{id}/comments
method: post
operationId: urlsCommentsPost
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: /urls/{id}/relationships/{relationship}
method: get
operationId: urlsRelationshipsIds
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /urls/{id}/votes
method: get
operationId: urlsVotesGet
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /urls/{id}/votes
method: post
operationId: urlsVotesPost
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: /urls/{id}/{relationship}
method: get
operationId: urlsRelationships
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /intelligence/zip_files
method: post
operationId: zipFiles
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: /intelligence/zip_files/{id}
method: get
operationId: getZipFile
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /intelligence/zip_files/{id}/download
method: get
operationId: zipFilesDownload
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /intelligence/zip_files/{id}/download_url
method: get
operationId: zipFilesDownloadUrl
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /private/analyses
method: get
operationId: listPrivateAnalyses
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /private/analyses/{id}
method: get
operationId: privateAnalysis
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /private/analyses/{id}/relationships/{relationship}
method: get
operationId: analysesidrelationshipsrelationship
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /private/analyses/{id}/{relationship}
method: get
operationId: analysesidrelationship
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /private/files
method: post
operationId: uploadFilePrivateScanning
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: /private/files
method: get
operationId: listPrivateFiles
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /private/files/upload_url
method: get
operationId: privateFilesUploadUrl
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /private/files/{id}
method: delete
operationId: deleteFilePrivateScanning
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: /private/files/{id}
method: get
operationId: privateFilesInfo
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /private/files/{id}/relationships/{relationship}
method: get
operationId: privatefilesidrelationshipsrelationship
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /private/files/{id}/{relationship}
method: get
operationId: privateFilesRelationships
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /private/files/{sha256}/analyse
method: post
operationId: rescanAPrivateFile
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: /private/file/{id}/behaviours
method: get
operationId: getAllBehaviourReportsFromAPrivateFile
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /private/file_behaviours/{sandbox_id}
method: get
operationId: privatefileBehaviourssandboxId
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /private/file_behaviours/{sandbox_id}/evtx
method: get
operationId: fileBehaviourssandboxIdevtx
x-agentic-access:
action-class: conne
# --- truncated at 32 KB (54 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/virustotal/refs/heads/main/agentic-access/virustotal-agentic-access.yml