Twitter/X · Agentic Access

Twitter/X Agentic Access

x-agentic-access generated

Twitter/X exposes 165 API operations that an AI agent could call, of which 68 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: 97 read, 63 write, 2 physical, and 3 safety-critical.

3 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.

CompanySocialSocial MediaPostsReal-TimeStreamingNewsDeveloper Platform
Operations: 165 Acting: 68 Human-in-the-loop: 3 Method: generated

By consequence

read 97 write 63 physical 2 safety-critical 3

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.

MethodPathConsequenceHuman-in-loop
DELETE /2/connections safety-critical required
DELETE /2/connections/all safety-critical required
DELETE /2/connections/{endpoint_id} safety-critical required
POST /2/chat/conversations/{id}/messages physical conditional
POST /2/chat/conversations/{id}/typing physical conditional

Source

Agentic Access

Raw ↑
generated: '2026-07-21'
method: generated
source: openapi/twitter-x-x-api-v2-openapi.json
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: 165
  by_action_class:
    connected: 97
    acting: 68
  by_consequence:
    read: 97
    write: 63
    physical: 2
    safety-critical: 3
  human_in_the_loop_required: 3
operations:
- path: /2/account_activity/subscriptions/count
  method: get
  operationId: getAccountActivitySubscriptionCount
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /2/account_activity/webhooks/{webhook_id}/subscriptions/all
  method: get
  operationId: validateAccountActivitySubscription
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    scope:
    - dm.read
    - dm.write
    - tweet.read
    - users.read
    token:
      max-ttl: 3600
    audit: none
- path: /2/account_activity/webhooks/{webhook_id}/subscriptions/all
  method: post
  operationId: createAccountActivitySubscription
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    scope:
    - dm.read
    - dm.write
    - tweet.read
    - users.read
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /2/account_activity/webhooks/{webhook_id}/subscriptions/all/list
  method: get
  operationId: getAccountActivitySubscriptions
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /2/account_activity/webhooks/{webhook_id}/subscriptions/{user_id}/all
  method: delete
  operationId: deleteAccountActivitySubscription
  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: /2/activity/stream
  method: get
  operationId: activityStream
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /2/activity/subscriptions
  method: delete
  operationId: deleteActivitySubscriptionsByIds
  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: /2/activity/subscriptions
  method: get
  operationId: getActivitySubscriptions
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    scope:
    - like.read
    - tweet.read
    token:
      max-ttl: 3600
    audit: none
- path: /2/activity/subscriptions
  method: post
  operationId: createActivitySubscription
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    scope:
    - dm.read
    - like.read
    - tweet.read
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /2/activity/subscriptions/{subscription_id}
  method: delete
  operationId: deleteActivitySubscription
  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: /2/activity/subscriptions/{subscription_id}
  method: put
  operationId: updateActivitySubscription
  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: /2/articles/draft
  method: post
  operationId: articleCreateDraft
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    scope:
    - tweet.write
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /2/articles/{article_id}/publish
  method: post
  operationId: articlePublish
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    scope:
    - tweet.write
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /2/chat/conversations
  method: get
  operationId: getChatConversations
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    scope:
    - dm.read
    - users.read
    token:
      max-ttl: 3600
    audit: none
- path: /2/chat/conversations/group
  method: post
  operationId: createChatConversation
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    scope:
    - dm.write
    - tweet.read
    - users.read
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /2/chat/conversations/group/initialize
  method: post
  operationId: initializeChatGroup
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    scope:
    - dm.write
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /2/chat/conversations/{id}
  method: get
  operationId: getChatConversation
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    scope:
    - dm.read
    - tweet.read
    - users.read
    token:
      max-ttl: 3600
    audit: none
- path: /2/chat/conversations/{id}/events
  method: get
  operationId: getChatConversationEvents
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    scope:
    - dm.read
    - tweet.read
    - users.read
    token:
      max-ttl: 3600
    audit: none
- path: /2/chat/conversations/{id}/keys
  method: post
  operationId: addConversationKeys
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    scope:
    - dm.write
    - tweet.read
    - users.read
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /2/chat/conversations/{id}/members
  method: post
  operationId: addChatGroupMembers
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    scope:
    - dm.write
    - tweet.read
    - users.read
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /2/chat/conversations/{id}/messages
  method: post
  operationId: sendChatMessage
  x-agentic-access:
    action-class: acting
    consequence: physical
    subject: required
    scope:
    - dm.write
    - tweet.read
    - users.read
    audience: null
    token:
      max-ttl: 300
      exchange: true
      purpose-required: true
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /2/chat/conversations/{id}/read
  method: post
  operationId: markChatConversationRead
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    scope:
    - dm.write
    - tweet.read
    - users.read
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /2/chat/conversations/{id}/typing
  method: post
  operationId: sendChatTypingIndicator
  x-agentic-access:
    action-class: acting
    consequence: physical
    subject: required
    scope:
    - dm.write
    - tweet.read
    - users.read
    audience: null
    token:
      max-ttl: 300
      exchange: true
      purpose-required: true
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /2/chat/media/upload/initialize
  method: post
  operationId: chatMediaUploadInitialize
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    scope:
    - media.write
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /2/chat/media/upload/{id}/append
  method: post
  operationId: chatMediaUploadAppend
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    scope:
    - media.write
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /2/chat/media/upload/{id}/finalize
  method: post
  operationId: chatMediaUploadFinalize
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    scope:
    - media.write
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /2/chat/media/{id}/{media_hash_key}
  method: get
  operationId: chatMediaDownload
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    scope:
    - media.write
    token:
      max-ttl: 3600
    audit: none
- path: /2/communities/search
  method: get
  operationId: searchCommunities
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    scope:
    - tweet.read
    - users.read
    token:
      max-ttl: 3600
    audit: none
- path: /2/communities/{id}
  method: get
  operationId: getCommunitiesById
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    scope:
    - list.read
    - tweet.read
    - users.read
    token:
      max-ttl: 3600
    audit: none
- path: /2/compliance/jobs
  method: get
  operationId: getComplianceJobs
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /2/compliance/jobs
  method: post
  operationId: createComplianceJobs
  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: /2/compliance/jobs/{id}
  method: get
  operationId: getComplianceJobsById
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /2/connections
  method: delete
  operationId: deleteConnectionsByUuids
  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: /2/connections
  method: get
  operationId: getConnectionHistory
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /2/connections/all
  method: delete
  operationId: deleteAllConnections
  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: /2/connections/{endpoint_id}
  method: delete
  operationId: deleteConnectionsByEndpoint
  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: /2/dm_conversations
  method: post
  operationId: createDirectMessagesConversation
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    scope:
    - dm.write
    - tweet.read
    - users.read
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /2/dm_conversations/media/{dm_id}/{media_id}/{resource_id}
  method: get
  operationId: dmConversationsMediaDownload
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    scope:
    - dm.read
    token:
      max-ttl: 3600
    audit: none
- path: /2/dm_conversations/with/{participant_id}/dm_events
  method: get
  operationId: getDirectMessagesEventsByParticipantId
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    scope:
    - dm.read
    - tweet.read
    - users.read
    token:
      max-ttl: 3600
    audit: none
- path: /2/dm_conversations/with/{participant_id}/messages
  method: post
  operationId: createDirectMessagesByParticipantId
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    scope:
    - dm.write
    - tweet.read
    - users.read
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /2/dm_conversations/{dm_conversation_id}/messages
  method: post
  operationId: createDirectMessagesByConversationId
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    scope:
    - dm.write
    - tweet.read
    - users.read
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /2/dm_conversations/{id}/dm_events
  method: get
  operationId: getDirectMessagesEventsByConversationId
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    scope:
    - dm.read
    - tweet.read
    - users.read
    token:
      max-ttl: 3600
    audit: none
- path: /2/dm_events
  method: get
  operationId: getDirectMessagesEvents
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    scope:
    - dm.read
    - tweet.read
    - users.read
    token:
      max-ttl: 3600
    audit: none
- path: /2/dm_events/{event_id}
  method: delete
  operationId: deleteDirectMessagesEvents
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    scope:
    - dm.read
    - dm.write
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /2/dm_events/{event_id}
  method: get
  operationId: getDirectMessagesEventsById
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    scope:
    - dm.read
    - tweet.read
    - users.read
    token:
      max-ttl: 3600
    audit: none
- path: /2/evaluate_note
  method: post
  operationId: evaluateCommunityNotes
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    scope:
    - tweet.write
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /2/insights/28hr
  method: get
  operationId: getInsights28Hr
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    scope:
    - tweet.read
    token:
      max-ttl: 3600
    audit: none
- path: /2/insights/historical
  method: get
  operationId: getInsightsHistorical
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    scope:
    - tweet.read
    token:
      max-ttl: 3600
    audit: none
- path: /2/likes/compliance/stream
  method: get
  operationId: streamLikesCompliance
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /2/likes/firehose/stream
  method: get
  operationId: streamLikesFirehose
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /2/likes/sample10/stream
  method: get
  operationId: streamLikesSample10
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /2/lists
  method: post
  operationId: createLists
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    scope:
    - list.read
    - list.write
    - tweet.read
    - users.read
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /2/lists/{id}
  method: delete
  operationId: deleteLists
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    scope:
    - list.write
    - tweet.read
    - users.read
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /2/lists/{id}
  method: get
  operationId: getListsById
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    scope:
    - list.read
    - tweet.read
    - users.read
    token:
      max-ttl: 3600
    audit: none
- path: /2/lists/{id}
  method: put
  operationId: updateLists
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    scope:
    - list.write
    - tweet.read
    - users.read
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /2/lists/{id}/followers
  method: get
  operationId: getListsFollowers
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    scope:
    - list.read
    - tweet.read
    - users.read
    token:
      max-ttl: 3600
    audit: none
- path: /2/lists/{id}/members
  method: get
  operationId: getListsMembers
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    scope:
    - list.read
    - tweet.read
    - users.read
    token:
      max-ttl: 3600
    audit: none
- path: /2/lists/{id}/members
  method: post
  operationId: addListsMember
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    scope:
    - list.write
    - tweet.read
    - users.read
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /2/lists/{id}/members/{user_id}
  method: delete
  operationId: removeListsMemberByUserId
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    scope:
    - list.write
    - tweet.read
    - users.read
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /2/lists/{id}/tweets
  method: get
  operationId: getListsPosts
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    scope:
    - list.read
    - tweet.read
    - users.read
    token:
      max-ttl: 3600
    audit: none
- path: /2/media
  method: get
  operationId: getMediaByMediaKeys
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    scope:
    - tweet.read
    token:
      max-ttl: 3600
    audit: none
- path: /2/media/analytics
  method: get
  operationId: getMediaAnalytics
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    scope:
    - tweet.read
    token:
      max-ttl: 3600
    audit: none
- path: /2/media/metadata
  method: post
  operationId: createMediaMetadata
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    scope:
    - media.write
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /2/media/subtitles
  method: delete
  operationId: deleteMediaSubtitles
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    scope:
    - media.write
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /2/media/subtitles
  method: post
  operationId: createMediaSubtitles
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    scope:
    - media.write
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /2/media/upload
  method: get
  operationId: getMediaUploadStatus
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    scope:
    - media.write
    token:
      max-ttl: 3600
    audit: none
- path: /2/media/upload
  method: post
  operationId: mediaUpload
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    scope:
    - media.write
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /2/media/upload/initialize
  method: post
  operationId: initializeMediaUpload
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    scope:
    - media.write
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /2/media/upload/{id}/append
  method: post
  operationId: appendMediaUpload
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    scope:
    - media.write
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /2/media/upload/{id}/finalize
  method: post
  operationId: finalizeMediaUpload
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    scope:
    - media.write
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /2/media/{media_key}
  method: get
  operationId: getMediaByMediaKey
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    scope:
    - tweet.read
    token:
      max-ttl: 3600
    audit: none
- path: /2/news/search
  method: get
  operationId: searchNews
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    scope:
    - tweet.read
    - users.read
    token:
      max-ttl: 3600
    audit: none
- path: /2/news/{id}
  method: get
  operationId: getNews
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    scope:
    - tweet.read
    - users.read
    token:
      max-ttl: 3600
    audit: none
- path: /2/notes
  method: post
  operationId: createCommunityNotes
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    scope:
    - tweet.write
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /2/notes/search/notes_written
  method: get
  operationId: searchCommunityNotesWritten
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    scope:
    - tweet.read
    token:
      max-ttl: 3600
    audit: none
- path: /2/notes/search/posts_eligible_for_notes
  method: get
  operationId: searchEligiblePosts
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    scope:
    - tweet.read
    token:
      max-ttl: 3600
    audit: none
- path: /2/notes/{id}
  method: delete
  operationId: deleteCommunityNotes
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    scope:
    - tweet.write
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /2/openapi.json
  method: get
  operationId: getOpenApiSpec
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /2/spaces
  method: get
  operationId: getSpacesByIds
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    scope:
    - space.read
    - tweet.read
    - users.read
    token:
      max-ttl: 3600
    audit: none
- path: /2/spaces/by/creator_ids
  method: get
  operationId: getSpacesByCreatorIds
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    scope:
    - space.read
    - tweet.read
    - users.read
    token:
      max-ttl: 3600
    audit: none
- path: /2/spaces/search
  method: get
  operationId: searchSpaces
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    scope:
    - space.read
    - tweet.read
    - users.read
    token:
      max-ttl: 3600
    audit: none
- path: /2/spaces/{id}
  method: get
  operationId: getSpacesById
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    scope:
    - space.read
    - tweet.read
    - users.read
    token:
      max-ttl: 3600
    audit: none
- path: /2/spaces/{id}/buyers
  method: get
  operationId: getSpacesBuyers
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    scope:
    - space.read
    - tweet.read
    - users.read
    token:
      max-ttl: 3600
    audit: none
- path: /2/spaces/{id}/tweets
  method: get
  operationId: getSpacesPosts
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    scope:
    - space.read
    - tweet.read
    - users.read
    token:
      max-ttl: 3600
    audit: none
- path: /2/trends/by/woeid/{woeid}
  method: get
  operationId: getTrendsByWoeid
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /2/tweets
  method: get
  operationId: getPostsByIds
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    scope:
    - tweet.read
    - users.read
    token:
      max-ttl: 3600
    audit: none
- path: /2/tweets
  method: post
  operationId: createPosts
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    scope:
    - tweet.read
    - tweet.write
    - users.read
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /2/tweets/analytics
  method: get
  operationId: getPostsAnalytics
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    scope:
    - tweet.read
    - users.read
    token:
      max-ttl: 3600
    audit: none
- path: /2/tweets/compliance/stream
  method: get
  operationId: streamPostsCompliance
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /2/tweets/counts/all
  method: get
  operationId: getPostsCountsAll
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /2/tweets/counts/recent
  method: get
  operationId: getPostsCountsRecent
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /2/tweets/firehose/stream
  method: get
  operationId: streamPostsFirehose
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /2/tweets/firehose/stream/lang/en
  method: get
  operationId: streamPostsFirehoseEn
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /2/tweets/firehose/stream/lang/ja
  method: get
  operationId: streamPostsFirehoseJa
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /2/tweets/firehose/stream/lang/ko
  method: get
  operationId: streamPostsFirehoseKo
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /2/tweets/firehose/stream/lang/pt
  method: get
  operationId: streamPostsFirehosePt
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /2/tweets/label/stream
  method: get
  operationId: streamLabelsCompliance
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /2/tweets/sample/stream
  method: get
  operationId: streamPostsSample
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /2/tweets/sample10/stream
  method: get
  operationId: streamPostsSample10
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /2/tweets/search/all
  method: get
  operationId: searchPostsAll
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /2/tweets/search/recent
  method: get
  operationId: searchPostsRecent
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    scope:
    - tweet.read
    - users.read
    token:
      max-ttl: 3600
    audit: none
- path: /2/tweets/search/stream
  method: get
  operationId: streamPosts
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /2/tweets/search/stream/rules
  method: get
  operationId: getRules
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /2/tweets/search/stream/rules
  method: post
  operationId: updateRules
  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-

# --- truncated at 32 KB (50 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/twitter-x/refs/heads/main/agentic-access/twitter-x-agentic-access.yml