SendGrid · Agentic Access

SendGrid Agentic Access

x-agentic-access generated

SendGrid exposes 389 API operations that an AI agent could call, of which 209 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: 180 read, 168 write, 36 physical, and 5 safety-critical.

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

EmailEmail APIMarketing EmailSMTPT1Transactional Email
Operations: 389 Acting: 209 Human-in-the-loop: 5 Method: generated

By consequence

read 180 write 168 physical 36 safety-critical 5

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 /v3/ips/warmup/{ip_address} safety-critical required
POST /v3/marketing/senders/{id}/resend_verification safety-critical required
POST /v3/senders/{sender_id}/resend_verification safety-critical required
PATCH /v3/subusers/{subuser_name} safety-critical required
PATCH /v3/subusers/{subuser_name}/website_access safety-critical required
POST /v3/campaigns/{campaign_id}/schedules/now physical conditional
POST /v3/campaigns/{campaign_id}/schedules/test physical conditional
POST /v3/designs/pre-builts/{id} physical conditional
POST /v3/mail/send physical conditional
POST /v3/marketing/senders physical conditional
PATCH /v3/marketing/senders/{id} physical conditional
DELETE /v3/marketing/senders/{id} physical conditional
POST /v3/marketing/singlesends physical conditional
DELETE /v3/marketing/singlesends physical conditional
POST /v3/marketing/singlesends/search physical conditional
POST /v3/marketing/singlesends/{id} physical conditional
PATCH /v3/marketing/singlesends/{id} physical conditional
DELETE /v3/marketing/singlesends/{id} physical conditional
PUT /v3/marketing/singlesends/{id}/schedule physical conditional
DELETE /v3/marketing/singlesends/{id}/schedule physical conditional
POST /v3/marketing/test/send_email physical conditional
POST /v3/send_ips/ips physical conditional
PATCH /v3/send_ips/ips/{ip} physical conditional
POST /v3/send_ips/ips/{ip}/subusers:batchAdd physical conditional
POST /v3/send_ips/ips/{ip}/subusers:batchDelete physical conditional

Source

Agentic Access

Raw ↑
generated: '2026-07-15'
method: generated
source: openapi/tsg_account_provisioning_v3.yaml, openapi/tsg_alerts_v3.yaml, openapi/tsg_api_keys_v3.yaml,
  openapi/tsg_domain_authentication_v3.yaml, openapi/tsg_email_activity_v3.yaml, openapi/tsg_email_validation_v3.yaml,
  openapi/tsg_enforced_tls_v3.yaml, openapi/tsg_integrations_v3.yaml, openapi/tsg_ip_access_management_v3.yaml,
  openapi/tsg_ip_address_management_v3.yaml, openapi/tsg_ip_warmup_v3.yaml, openapi/tsg_ips_v3.yaml,
  openapi/tsg_link_branding_v3.yaml, openapi/tsg_lmc_campaigns_v3.yaml, openapi/tsg_lmc_contactdb_v3.yaml,
  openapi/tsg_lmc_senders_v3.yaml, openapi/tsg_mail_settings_v3.yaml, openapi/tsg_mail_v3.yaml,
  openapi/tsg_mc_contacts_v3.yaml, openapi/tsg_mc_custom_fields_v3.yaml, openapi/tsg_mc_designs_v3.yaml,
  openapi/tsg_mc_lists_v3.yaml, openapi/tsg_mc_segments_2.0_v3.yaml, openapi/tsg_mc_segments_v3.yaml,
  openapi/tsg_mc_senders_v3.yaml, openapi/tsg_mc_singlesends_v3.yaml, openapi/tsg_mc_stats_v3.yaml,
  openapi/tsg_mc_test_v3.yaml, openapi/tsg_partner_v3.yaml, openapi/tsg_recipients_data_erasure_v3.yaml,
  openapi/tsg_reverse_dns_v3.yaml, openapi/tsg_scheduled_sends_v3.yaml, openapi/tsg_scopes_v3.yaml,
  openapi/tsg_seq_v3.yaml, openapi/tsg_sso_v3.yaml, openapi/tsg_stats_v3.yaml, openapi/tsg_subusers_v3.yaml,
  openapi/tsg_suppressions_v3.yaml, openapi/tsg_teammates_v3.yaml, openapi/tsg_templates_v3.yaml,
  openapi/tsg_tracking_settings_v3.yaml, openapi/tsg_user_v3.yaml, openapi/tsg_verified_senders_v3.yaml,
  openapi/tsg_webhooks_v3.yaml
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: 389
  by_action_class:
    connected: 180
    acting: 209
  by_consequence:
    read: 180
    write: 168
    physical: 36
    safety-critical: 5
  human_in_the_loop_required: 5
operations:
- path: /v3/partners/accounts
  method: get
  operationId: ListAccount
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /v3/partners/accounts
  method: post
  operationId: CreateAccount
  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: /v3/partners/accounts/{accountID}
  method: delete
  operationId: DeleteAccount
  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: /v3/partners/accounts/{accountID}/offerings
  method: get
  operationId: ListAccountOffering
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /v3/partners/accounts/{accountID}/offerings
  method: put
  operationId: UpdateAccountOffering
  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: /v3/partners/accounts/{accountID}/sso
  method: post
  operationId: AuthenticateAccount
  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: /v3/partners/accounts/{accountID}/state
  method: get
  operationId: GetAccountState
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /v3/partners/accounts/{accountID}/state
  method: put
  operationId: UpdateAccountState
  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: /v3/partners/offerings
  method: get
  operationId: ListOffering
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /v3/alerts
  method: post
  operationId: CreateAlert
  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: /v3/alerts
  method: get
  operationId: ListAlert
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /v3/alerts/{alert_id}
  method: get
  operationId: GetAlert
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /v3/alerts/{alert_id}
  method: delete
  operationId: DeleteAlert
  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: /v3/alerts/{alert_id}
  method: patch
  operationId: UpdateAlert
  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: /v3/api_keys
  method: post
  operationId: CreateApiKey
  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: /v3/api_keys
  method: get
  operationId: ListApiKey
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /v3/api_keys/{api_key_id}
  method: get
  operationId: GetApiKey
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /v3/api_keys/{api_key_id}
  method: patch
  operationId: UpdateApiKeyName
  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: /v3/api_keys/{api_key_id}
  method: put
  operationId: UpdateApiKey
  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: /v3/api_keys/{api_key_id}
  method: delete
  operationId: DeleteApiKey
  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: /v3/whitelabel/dns/email
  method: post
  operationId: EmailDnsRecord
  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: /v3/whitelabel/domains
  method: get
  operationId: ListAuthenticatedDomain
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /v3/whitelabel/domains
  method: post
  operationId: AuthenticateDomain
  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: /v3/whitelabel/domains/{domain_id}
  method: get
  operationId: GetAuthenticatedDomain
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /v3/whitelabel/domains/{domain_id}
  method: patch
  operationId: UpdateAuthenticatedDomain
  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: /v3/whitelabel/domains/{domain_id}
  method: delete
  operationId: DeleteAuthenticatedDomain
  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: /v3/whitelabel/domains/{domain_id}/subuser
  method: post
  operationId: AssociateSubuserWithDomain
  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: /v3/whitelabel/domains/{domain_id}/subuser
  method: delete
  operationId: DisassociateSubuserFromDomain
  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: /v3/whitelabel/domains/{domain_id}/subuser:add
  method: post
  operationId: AssociateSubuserWithDomainMultiple
  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: /v3/whitelabel/domains/{id}/ips
  method: post
  operationId: AddIpToAuthenticatedDomain
  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: /v3/whitelabel/domains/{id}/ips/{ip}
  method: delete
  operationId: DeleteIpFromAuthenticatedDomain
  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: /v3/whitelabel/domains/{id}/validate
  method: post
  operationId: ValidateAuthenticatedDomain
  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: /v3/whitelabel/domains/default
  method: get
  operationId: ListDefaultAuthenticatedDomain
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /v3/whitelabel/domains/subuser
  method: get
  operationId: ListAuthenticatedDomainWithUser
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /v3/whitelabel/domains/subuser
  method: delete
  operationId: DisassociateAuthenticatedDomainFromUser
  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: /v3/whitelabel/domains/subuser/all
  method: get
  operationId: ListAllAuthenticatedDomainWithUser
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /v3/messages
  method: get
  operationId: ListMessage
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /v3/messages/{msg_id}
  method: get
  operationId: GetMessage
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /v3/messages/download
  method: post
  operationId: RequestCsv
  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: /v3/messages/download/{download_uuid}
  method: get
  operationId: DownloadCsv
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /v3/validations/email
  method: post
  operationId: ValidateEmail
  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: /v3/validations/email/jobs
  method: put
  operationId: ListEmailJobForVerification
  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: /v3/validations/email/jobs
  method: get
  operationId: GetValidationsEmailJobs
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /v3/validations/email/jobs/{job_id}
  method: get
  operationId: GetEmailJobForVerification
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /v3/user/settings/enforced_tls
  method: get
  operationId: ListEnforcedTlsSetting
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /v3/user/settings/enforced_tls
  method: patch
  operationId: UpdateEnforcedTlsSetting
  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: /v3/marketing/integrations
  method: get
  operationId: GetIntegrationsByUser
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /v3/marketing/integrations
  method: post
  operationId: AddIntegration
  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: /v3/marketing/integrations
  method: delete
  operationId: DeleteIntegration
  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: /v3/marketing/integrations/{id}
  method: get
  operationId: FindIntegrationById
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /v3/marketing/integrations/{id}
  method: patch
  operationId: UpdateIntegration
  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: /v3/access_settings/activity
  method: get
  operationId: ListAccessActivity
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /v3/access_settings/whitelist
  method: post
  operationId: AddIpToAllowList
  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: /v3/access_settings/whitelist
  method: get
  operationId: ListAllowedIp
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /v3/access_settings/whitelist
  method: delete
  operationId: DeleteAllowedIps
  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: /v3/access_settings/whitelist/{rule_id}
  method: get
  operationId: GetAllowedIp
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /v3/access_settings/whitelist/{rule_id}
  method: delete
  operationId: DeleteAllowedIp
  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: /v3/send_ips/ips
  method: get
  operationId: ListIp
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /v3/send_ips/ips
  method: post
  operationId: AddIp
  x-agentic-access:
    action-class: acting
    consequence: physical
    subject: required
    audience: null
    token:
      max-ttl: 300
      exchange: true
      purpose-required: true
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /v3/send_ips/ips/{ip}
  method: get
  operationId: GetIp
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /v3/send_ips/ips/{ip}
  method: patch
  operationId: UpdateIp
  x-agentic-access:
    action-class: acting
    consequence: physical
    subject: required
    audience: null
    token:
      max-ttl: 300
      exchange: true
      purpose-required: true
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /v3/send_ips/ips/{ip}/subusers
  method: get
  operationId: ListSubUserAssignedToIp
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /v3/send_ips/ips/{ip}/subusers:batchAdd
  method: post
  operationId: AddSubUsersToIp
  x-agentic-access:
    action-class: acting
    consequence: physical
    subject: required
    audience: null
    token:
      max-ttl: 300
      exchange: true
      purpose-required: true
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /v3/send_ips/ips/{ip}/subusers:batchDelete
  method: post
  operationId: DeleteSubUsersFromIp
  x-agentic-access:
    action-class: acting
    consequence: physical
    subject: required
    audience: null
    token:
      max-ttl: 300
      exchange: true
      purpose-required: true
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /v3/send_ips/pools
  method: get
  operationId: ListIpPool
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /v3/send_ips/pools
  method: post
  operationId: CreateIpPool
  x-agentic-access:
    action-class: acting
    consequence: physical
    subject: required
    audience: null
    token:
      max-ttl: 300
      exchange: true
      purpose-required: true
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /v3/send_ips/pools/{poolid}
  method: get
  operationId: GetIpPool
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /v3/send_ips/pools/{poolid}
  method: put
  operationId: UpdateIpPool
  x-agentic-access:
    action-class: acting
    consequence: physical
    subject: required
    audience: null
    token:
      max-ttl: 300
      exchange: true
      purpose-required: true
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /v3/send_ips/pools/{poolid}
  method: delete
  operationId: DeleteIpPool
  x-agentic-access:
    action-class: acting
    consequence: physical
    subject: required
    audience: null
    token:
      max-ttl: 300
      exchange: true
      purpose-required: true
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /v3/send_ips/pools/{poolid}/ips
  method: get
  operationId: ListIpAssignedToIpPool
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /v3/send_ips/pools/{poolid}/ips:batchAdd
  method: post
  operationId: AddIpsToIpPool
  x-agentic-access:
    action-class: acting
    consequence: physical
    subject: required
    audience: null
    token:
      max-ttl: 300
      exchange: true
      purpose-required: true
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /v3/send_ips/pools/{poolid}/ips:batchDelete
  method: post
  operationId: DeleteIpsFromIpPool
  x-agentic-access:
    action-class: acting
    consequence: physical
    subject: required
    audience: null
    token:
      max-ttl: 300
      exchange: true
      purpose-required: true
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /v3/ips/warmup
  method: post
  operationId: WarmUpIp
  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: /v3/ips/warmup
  method: get
  operationId: ListWarmUpIp
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /v3/ips/warmup/{ip_address}
  method: get
  operationId: GetWarmUpIp
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /v3/ips/warmup/{ip_address}
  method: delete
  operationId: StopIpWarmUp
  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: /v3/ips
  method: post
  operationId: AddIp
  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: /v3/ips
  method: get
  operationId: ListIp
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /v3/ips/{ip_address}
  method: get
  operationId: GetIp
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /v3/ips/assigned
  method: get
  operationId: ListAssignedIp
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /v3/ips/pools
  method: post
  operationId: CreateIpPool
  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: /v3/ips/pools
  method: get
  operationId: ListIpPool
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /v3/ips/pools/{pool_name}
  method: get
  operationId: GetIpPool
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /v3/ips/pools/{pool_name}
  method: put
  operationId: UpdateIpPool
  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: /v3/ips/pools/{pool_name}
  method: delete
  operationId: DeleteIpPool
  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: /v3/ips/pools/{pool_name}/ips
  method: post
  operationId: AddIpToIpPool
  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: /v3/ips/pools/{pool_name}/ips/{ip}
  method: delete
  operationId: DeleteIpFromIpPool
  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: /v3/ips/remaining
  method: get
  operationId: ListRemainingIpCount
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /v3/whitelabel/links
  method: post
  operationId: CreateBrandedLink
  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: /v3/whitelabel/links
  method: get
  operationId: ListBrandedLink
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /v3/whitelabel/links/{id}
  method: get
  operationId: GetBrandedLink
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /v3/whitelabel/links/{id}
  method: patch
  operationId: UpdateBrandedLink
  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: /v3/whitelabel/links/{id}
  method: delete
  operationId: DeleteBrandedLink
  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: /v3/whitelabel/links/{id}/validate
  method: post
  operationId: ValidateBrandedLink
  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: /v3/whitelabel/links/{link_id}/subuser
  method: post
  operationId: AssociateBrandedLinkWithSubuser
  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: /v3/whitelabel/links/default
  method: get
  operationId: ListDefaultBrandedLink
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /v3/whitelabel/links/subuser
  method: get
  operationId: ListSubuserBrandedLink
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /v3/whitelabel/links/subuser
  method: delete
  operationId: DisassociateBrandedLinkFromSubuser
  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: /v3/campaigns
  method: post
  operationId: CreateCampaign
  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: /v3/campaigns
  method: get
  operationId: ListCampaign
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /v3/campaigns/{campaign_id}
  method: get
  operationId: GetCampaign
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /v3/campaigns/{campaign_id}
  method: delete
  operationId: DeleteCampaign
  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: /v3/campaigns/{campaign_id}
  method: patch
  operationId: UpdateCampaign
  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: /v3/c

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