SendGrid Agentic Access
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.
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 | /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
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