Skip to content
Start here

Email Security

Email SecurityInvestigate

Search email messages
email_security.investigate.list(InvestigateListParams**kwargs) -> SyncV4PagePaginationArray[InvestigateListResponse]
GET/accounts/{account_id}/email-security/investigate
Get message details
email_security.investigate.get(strpostfix_id, InvestigateGetParams**kwargs) -> InvestigateGetResponse
GET/accounts/{account_id}/email-security/investigate/{postfix_id}
ModelsExpand Collapse
class InvestigateListResponse:
id: str
action_log: object
client_recipients: List[str]
detection_reasons: List[str]
is_phish_submission: bool
is_quarantined: bool
postfix_id: str

The identifier of the message.

properties: Properties
allowlisted_pattern: Optional[str]
allowlisted_pattern_type: Optional[Literal["quarantine_release", "acceptable_sender", "allowed_sender", 5 more]]
One of the following:
"quarantine_release"
"acceptable_sender"
"allowed_sender"
"allowed_recipient"
"domain_similarity"
"domain_recency"
"managed_acceptable_sender"
"outbound_ndr"
blocklisted_message: Optional[bool]
blocklisted_pattern: Optional[str]
whitelisted_pattern_type: Optional[Literal["quarantine_release", "acceptable_sender", "allowed_sender", 5 more]]
One of the following:
"quarantine_release"
"acceptable_sender"
"allowed_sender"
"allowed_recipient"
"domain_similarity"
"domain_recency"
"managed_acceptable_sender"
"outbound_ndr"
Deprecatedts: str

Deprecated, use scanned_at instead

alert_id: Optional[str]
delivery_mode: Optional[Literal["DIRECT", "BCC", "JOURNAL", 8 more]]
One of the following:
"DIRECT"
"BCC"
"JOURNAL"
"REVIEW_SUBMISSION"
"DMARC_UNVERIFIED"
"DMARC_FAILURE_REPORT"
"DMARC_AGGREGATE_REPORT"
"THREAT_INTEL_SUBMISSION"
"SIMULATION_SUBMISSION"
"API"
"RETRO_SCAN"
edf_hash: Optional[str]
envelope_from: Optional[str]
envelope_to: Optional[List[str]]
final_disposition: Optional[Literal["MALICIOUS", "MALICIOUS-BEC", "SUSPICIOUS", 7 more]]
One of the following:
"MALICIOUS"
"MALICIOUS-BEC"
"SUSPICIOUS"
"SPOOF"
"SPAM"
"BULK"
"ENCRYPTED"
"EXTERNAL"
"UNKNOWN"
"NONE"
findings: Optional[List[Finding]]
attachment: Optional[str]
detail: Optional[str]
detection: Optional[Literal["MALICIOUS", "MALICIOUS-BEC", "SUSPICIOUS", 7 more]]
One of the following:
"MALICIOUS"
"MALICIOUS-BEC"
"SUSPICIOUS"
"SPOOF"
"SPAM"
"BULK"
"ENCRYPTED"
"EXTERNAL"
"UNKNOWN"
"NONE"
field: Optional[str]
name: Optional[str]
portion: Optional[str]
reason: Optional[str]
score: Optional[float]
formatdouble
value: Optional[str]
from_: Optional[str]
from_name: Optional[str]
htmltext_structure_hash: Optional[str]
message_id: Optional[str]
post_delivery_operations: Optional[List[Literal["PREVIEW", "QUARANTINE_RELEASE", "SUBMISSION", "MOVE"]]]
One of the following:
"PREVIEW"
"QUARANTINE_RELEASE"
"SUBMISSION"
"MOVE"
postfix_id_outbound: Optional[str]
replyto: Optional[str]
scanned_at: Optional[datetime]
formatdate-time
sent_at: Optional[datetime]
formatdate-time
Deprecatedsent_date: Optional[str]

Deprecated, use sent_at instead

subject: Optional[str]
threat_categories: Optional[List[str]]
to: Optional[List[str]]
to_name: Optional[List[str]]
validation: Optional[Validation]
comment: Optional[str]
dkim: Optional[Literal["pass", "neutral", "fail", 2 more]]
One of the following:
"pass"
"neutral"
"fail"
"error"
"none"
dmarc: Optional[Literal["pass", "neutral", "fail", 2 more]]
One of the following:
"pass"
"neutral"
"fail"
"error"
"none"
spf: Optional[Literal["pass", "neutral", "fail", 2 more]]
One of the following:
"pass"
"neutral"
"fail"
"error"
"none"
class InvestigateGetResponse:
id: str
action_log: object
client_recipients: List[str]
detection_reasons: List[str]
is_phish_submission: bool
is_quarantined: bool
postfix_id: str

The identifier of the message.

properties: Properties
allowlisted_pattern: Optional[str]
allowlisted_pattern_type: Optional[Literal["quarantine_release", "acceptable_sender", "allowed_sender", 5 more]]
One of the following:
"quarantine_release"
"acceptable_sender"
"allowed_sender"
"allowed_recipient"
"domain_similarity"
"domain_recency"
"managed_acceptable_sender"
"outbound_ndr"
blocklisted_message: Optional[bool]
blocklisted_pattern: Optional[str]
whitelisted_pattern_type: Optional[Literal["quarantine_release", "acceptable_sender", "allowed_sender", 5 more]]
One of the following:
"quarantine_release"
"acceptable_sender"
"allowed_sender"
"allowed_recipient"
"domain_similarity"
"domain_recency"
"managed_acceptable_sender"
"outbound_ndr"
Deprecatedts: str

Deprecated, use scanned_at instead

alert_id: Optional[str]
delivery_mode: Optional[Literal["DIRECT", "BCC", "JOURNAL", 8 more]]
One of the following:
"DIRECT"
"BCC"
"JOURNAL"
"REVIEW_SUBMISSION"
"DMARC_UNVERIFIED"
"DMARC_FAILURE_REPORT"
"DMARC_AGGREGATE_REPORT"
"THREAT_INTEL_SUBMISSION"
"SIMULATION_SUBMISSION"
"API"
"RETRO_SCAN"
edf_hash: Optional[str]
envelope_from: Optional[str]
envelope_to: Optional[List[str]]
final_disposition: Optional[Literal["MALICIOUS", "MALICIOUS-BEC", "SUSPICIOUS", 7 more]]
One of the following:
"MALICIOUS"
"MALICIOUS-BEC"
"SUSPICIOUS"
"SPOOF"
"SPAM"
"BULK"
"ENCRYPTED"
"EXTERNAL"
"UNKNOWN"
"NONE"
findings: Optional[List[Finding]]
attachment: Optional[str]
detail: Optional[str]
detection: Optional[Literal["MALICIOUS", "MALICIOUS-BEC", "SUSPICIOUS", 7 more]]
One of the following:
"MALICIOUS"
"MALICIOUS-BEC"
"SUSPICIOUS"
"SPOOF"
"SPAM"
"BULK"
"ENCRYPTED"
"EXTERNAL"
"UNKNOWN"
"NONE"
field: Optional[str]
name: Optional[str]
portion: Optional[str]
reason: Optional[str]
score: Optional[float]
formatdouble
value: Optional[str]
from_: Optional[str]
from_name: Optional[str]
htmltext_structure_hash: Optional[str]
message_id: Optional[str]
post_delivery_operations: Optional[List[Literal["PREVIEW", "QUARANTINE_RELEASE", "SUBMISSION", "MOVE"]]]
One of the following:
"PREVIEW"
"QUARANTINE_RELEASE"
"SUBMISSION"
"MOVE"
postfix_id_outbound: Optional[str]
replyto: Optional[str]
scanned_at: Optional[datetime]
formatdate-time
sent_at: Optional[datetime]
formatdate-time
Deprecatedsent_date: Optional[str]

Deprecated, use sent_at instead

subject: Optional[str]
threat_categories: Optional[List[str]]
to: Optional[List[str]]
to_name: Optional[List[str]]
validation: Optional[Validation]
comment: Optional[str]
dkim: Optional[Literal["pass", "neutral", "fail", 2 more]]
One of the following:
"pass"
"neutral"
"fail"
"error"
"none"
dmarc: Optional[Literal["pass", "neutral", "fail", 2 more]]
One of the following:
"pass"
"neutral"
"fail"
"error"
"none"
spf: Optional[Literal["pass", "neutral", "fail", 2 more]]
One of the following:
"pass"
"neutral"
"fail"
"error"
"none"

Email SecurityInvestigateDetections

Get message detection details
email_security.investigate.detections.get(strpostfix_id, DetectionGetParams**kwargs) -> DetectionGetResponse
GET/accounts/{account_id}/email-security/investigate/{postfix_id}/detections
ModelsExpand Collapse
class DetectionGetResponse:
action: str
attachments: List[Attachment]
size: int
minimum0
content_type: Optional[str]
detection: Optional[Literal["MALICIOUS", "MALICIOUS-BEC", "SUSPICIOUS", 7 more]]
One of the following:
"MALICIOUS"
"MALICIOUS-BEC"
"SUSPICIOUS"
"SPOOF"
"SPAM"
"BULK"
"ENCRYPTED"
"EXTERNAL"
"UNKNOWN"
"NONE"
encrypted: Optional[bool]
name: Optional[str]
headers: List[Header]
name: str
value: str
sender_info: SenderInfo
as_name: Optional[str]

The name of the autonomous system.

as_number: Optional[int]

The number of the autonomous system.

formatint64
geo: Optional[str]
ip: Optional[str]
pld: Optional[str]
threat_categories: List[ThreatCategory]
id: int
formatint64
description: Optional[str]
name: Optional[str]
validation: Validation
comment: Optional[str]
dkim: Optional[Literal["pass", "neutral", "fail", 2 more]]
One of the following:
"pass"
"neutral"
"fail"
"error"
"none"
dmarc: Optional[Literal["pass", "neutral", "fail", 2 more]]
One of the following:
"pass"
"neutral"
"fail"
"error"
"none"
spf: Optional[Literal["pass", "neutral", "fail", 2 more]]
One of the following:
"pass"
"neutral"
"fail"
"error"
"none"
final_disposition: Optional[Literal["MALICIOUS", "MALICIOUS-BEC", "SUSPICIOUS", 7 more]]
One of the following:
"MALICIOUS"
"MALICIOUS-BEC"
"SUSPICIOUS"
"SPOOF"
"SPAM"
"BULK"
"ENCRYPTED"
"EXTERNAL"
"UNKNOWN"
"NONE"

Email SecurityInvestigatePreview

Get email preview
email_security.investigate.preview.get(strpostfix_id, PreviewGetParams**kwargs) -> PreviewGetResponse
GET/accounts/{account_id}/email-security/investigate/{postfix_id}/preview
Preview for non-detection messages
email_security.investigate.preview.create(PreviewCreateParams**kwargs) -> PreviewCreateResponse
POST/accounts/{account_id}/email-security/investigate/preview
ModelsExpand Collapse
class PreviewGetResponse:
screenshot: str

A base64 encoded PNG image of the email.

class PreviewCreateResponse:
screenshot: str

A base64 encoded PNG image of the email.

Email SecurityInvestigateRaw

Get raw email content
email_security.investigate.raw.get(strpostfix_id, RawGetParams**kwargs) -> RawGetResponse
GET/accounts/{account_id}/email-security/investigate/{postfix_id}/raw
ModelsExpand Collapse
class RawGetResponse:
raw: str

A UTF-8 encoded eml file of the email.

Email SecurityInvestigateTrace

Get email trace
email_security.investigate.trace.get(strpostfix_id, TraceGetParams**kwargs) -> TraceGetResponse
GET/accounts/{account_id}/email-security/investigate/{postfix_id}/trace
ModelsExpand Collapse
class TraceGetResponse:
inbound: Inbound
lines: Optional[List[InboundLine]]
lineno: int
formatint64
message: str
ts: datetime
formatdate-time
pending: Optional[bool]
outbound: Outbound
lines: Optional[List[OutboundLine]]
lineno: int
formatint64
message: str
ts: datetime
formatdate-time
pending: Optional[bool]

Email SecurityInvestigateMove

Move a message
email_security.investigate.move.create(strpostfix_id, MoveCreateParams**kwargs) -> SyncSinglePage[MoveCreateResponse]
POST/accounts/{account_id}/email-security/investigate/{postfix_id}/move
Move multiple messages
email_security.investigate.move.bulk(MoveBulkParams**kwargs) -> SyncSinglePage[MoveBulkResponse]
POST/accounts/{account_id}/email-security/investigate/move
ModelsExpand Collapse
class MoveCreateResponse:
Deprecatedcompleted_timestamp: datetime

Deprecated, use completed_at instead

formatdate-time
Deprecateditem_count: int
formatint32
success: bool
completed_at: Optional[datetime]
formatdate-time
destination: Optional[str]
message_id: Optional[str]
operation: Optional[str]
recipient: Optional[str]
status: Optional[str]
class MoveBulkResponse:
Deprecatedcompleted_timestamp: datetime

Deprecated, use completed_at instead

formatdate-time
Deprecateditem_count: int
formatint32
success: bool
completed_at: Optional[datetime]
formatdate-time
destination: Optional[str]
message_id: Optional[str]
operation: Optional[str]
recipient: Optional[str]
status: Optional[str]

Email SecurityInvestigateReclassify

Change email classification
email_security.investigate.reclassify.create(strpostfix_id, ReclassifyCreateParams**kwargs) -> object
POST/accounts/{account_id}/email-security/investigate/{postfix_id}/reclassify

Email SecurityInvestigateRelease

Release messages from quarantine
email_security.investigate.release.bulk(ReleaseBulkParams**kwargs) -> SyncSinglePage[ReleaseBulkResponse]
POST/accounts/{account_id}/email-security/investigate/release
ModelsExpand Collapse
class ReleaseBulkResponse:
id: str
postfix_id: str

The identifier of the message.

delivered: Optional[List[str]]
failed: Optional[List[str]]
undelivered: Optional[List[str]]

Email SecurityPhishguard

Email SecurityPhishguardReports

Get `PhishGuard` reports
email_security.phishguard.reports.list(ReportListParams**kwargs) -> SyncSinglePage[ReportListResponse]
GET/accounts/{account_id}/email-security/phishguard/reports
ModelsExpand Collapse
class ReportListResponse:
id: int
formatint32
content: str
created_at: datetime
formatdate-time
disposition: Literal["MALICIOUS", "MALICIOUS-BEC", "SUSPICIOUS", 7 more]
One of the following:
"MALICIOUS"
"MALICIOUS-BEC"
"SUSPICIOUS"
"SPOOF"
"SPAM"
"BULK"
"ENCRYPTED"
"EXTERNAL"
"UNKNOWN"
"NONE"
fields: Fields
to: List[str]
ts: datetime
formatdate-time
from_: Optional[str]
postfix_id: Optional[str]
priority: str
title: str
ts: datetime
formatdate-time
updated_at: datetime
formatdate-time
tags: Optional[List[Tag]]
category: str
value: str

Email SecuritySettings

Email SecuritySettingsAllow Policies

List email allow policies
email_security.settings.allow_policies.list(AllowPolicyListParams**kwargs) -> SyncV4PagePaginationArray[AllowPolicyListResponse]
GET/accounts/{account_id}/email-security/settings/allow_policies
Get an email allow policy
email_security.settings.allow_policies.get(intpolicy_id, AllowPolicyGetParams**kwargs) -> AllowPolicyGetResponse
GET/accounts/{account_id}/email-security/settings/allow_policies/{policy_id}
Create an email allow policy
email_security.settings.allow_policies.create(AllowPolicyCreateParams**kwargs) -> AllowPolicyCreateResponse
POST/accounts/{account_id}/email-security/settings/allow_policies
Update an email allow policy
email_security.settings.allow_policies.edit(intpolicy_id, AllowPolicyEditParams**kwargs) -> AllowPolicyEditResponse
PATCH/accounts/{account_id}/email-security/settings/allow_policies/{policy_id}
Delete an email allow policy
email_security.settings.allow_policies.delete(intpolicy_id, AllowPolicyDeleteParams**kwargs) -> AllowPolicyDeleteResponse
DELETE/accounts/{account_id}/email-security/settings/allow_policies/{policy_id}
ModelsExpand Collapse
class AllowPolicyListResponse:
id: int

The unique identifier for the allow policy.

formatint32
created_at: datetime
formatdate-time
is_acceptable_sender: bool

Messages from this sender will be exempted from Spam, Spoof and Bulk dispositions. Note: This will not exempt messages with Malicious or Suspicious dispositions.

is_exempt_recipient: bool

Messages to this recipient will bypass all detections.

is_regex: bool
is_trusted_sender: bool

Messages from this sender will bypass all detections and link following.

last_modified: datetime
formatdate-time
pattern: str
maxLength1024
minLength1
pattern_type: Literal["EMAIL", "DOMAIN", "IP", "UNKNOWN"]
One of the following:
"EMAIL"
"DOMAIN"
"IP"
"UNKNOWN"
verify_sender: bool

Enforce DMARC, SPF or DKIM authentication. When on, Email Security only honors policies that pass authentication.

comments: Optional[str]
maxLength1024
Deprecatedis_recipient: Optional[bool]
Deprecatedis_sender: Optional[bool]
Deprecatedis_spoof: Optional[bool]
class AllowPolicyGetResponse:
id: int

The unique identifier for the allow policy.

formatint32
created_at: datetime
formatdate-time
is_acceptable_sender: bool

Messages from this sender will be exempted from Spam, Spoof and Bulk dispositions. Note: This will not exempt messages with Malicious or Suspicious dispositions.

is_exempt_recipient: bool

Messages to this recipient will bypass all detections.

is_regex: bool
is_trusted_sender: bool

Messages from this sender will bypass all detections and link following.

last_modified: datetime
formatdate-time
pattern: str
maxLength1024
minLength1
pattern_type: Literal["EMAIL", "DOMAIN", "IP", "UNKNOWN"]
One of the following:
"EMAIL"
"DOMAIN"
"IP"
"UNKNOWN"
verify_sender: bool

Enforce DMARC, SPF or DKIM authentication. When on, Email Security only honors policies that pass authentication.

comments: Optional[str]
maxLength1024
Deprecatedis_recipient: Optional[bool]
Deprecatedis_sender: Optional[bool]
Deprecatedis_spoof: Optional[bool]
class AllowPolicyCreateResponse:
id: int

The unique identifier for the allow policy.

formatint32
created_at: datetime
formatdate-time
is_acceptable_sender: bool

Messages from this sender will be exempted from Spam, Spoof and Bulk dispositions. Note: This will not exempt messages with Malicious or Suspicious dispositions.

is_exempt_recipient: bool

Messages to this recipient will bypass all detections.

is_regex: bool
is_trusted_sender: bool

Messages from this sender will bypass all detections and link following.

last_modified: datetime
formatdate-time
pattern: str
maxLength1024
minLength1
pattern_type: Literal["EMAIL", "DOMAIN", "IP", "UNKNOWN"]
One of the following:
"EMAIL"
"DOMAIN"
"IP"
"UNKNOWN"
verify_sender: bool

Enforce DMARC, SPF or DKIM authentication. When on, Email Security only honors policies that pass authentication.

comments: Optional[str]
maxLength1024
Deprecatedis_recipient: Optional[bool]
Deprecatedis_sender: Optional[bool]
Deprecatedis_spoof: Optional[bool]
class AllowPolicyEditResponse:
id: int

The unique identifier for the allow policy.

formatint32
created_at: datetime
formatdate-time
is_acceptable_sender: bool

Messages from this sender will be exempted from Spam, Spoof and Bulk dispositions. Note: This will not exempt messages with Malicious or Suspicious dispositions.

is_exempt_recipient: bool

Messages to this recipient will bypass all detections.

is_regex: bool
is_trusted_sender: bool

Messages from this sender will bypass all detections and link following.

last_modified: datetime
formatdate-time
pattern: str
maxLength1024
minLength1
pattern_type: Literal["EMAIL", "DOMAIN", "IP", "UNKNOWN"]
One of the following:
"EMAIL"
"DOMAIN"
"IP"
"UNKNOWN"
verify_sender: bool

Enforce DMARC, SPF or DKIM authentication. When on, Email Security only honors policies that pass authentication.

comments: Optional[str]
maxLength1024
Deprecatedis_recipient: Optional[bool]
Deprecatedis_sender: Optional[bool]
Deprecatedis_spoof: Optional[bool]
class AllowPolicyDeleteResponse:
id: int

The unique identifier for the allow policy.

formatint32

Email SecuritySettingsBlock Senders

List blocked email senders
email_security.settings.block_senders.list(BlockSenderListParams**kwargs) -> SyncV4PagePaginationArray[BlockSenderListResponse]
GET/accounts/{account_id}/email-security/settings/block_senders
Get a blocked email sender
email_security.settings.block_senders.get(intpattern_id, BlockSenderGetParams**kwargs) -> BlockSenderGetResponse
GET/accounts/{account_id}/email-security/settings/block_senders/{pattern_id}
Create a blocked email sender
email_security.settings.block_senders.create(BlockSenderCreateParams**kwargs) -> BlockSenderCreateResponse
POST/accounts/{account_id}/email-security/settings/block_senders
Update a blocked email sender
email_security.settings.block_senders.edit(intpattern_id, BlockSenderEditParams**kwargs) -> BlockSenderEditResponse
PATCH/accounts/{account_id}/email-security/settings/block_senders/{pattern_id}
Delete a blocked email sender
email_security.settings.block_senders.delete(intpattern_id, BlockSenderDeleteParams**kwargs) -> BlockSenderDeleteResponse
DELETE/accounts/{account_id}/email-security/settings/block_senders/{pattern_id}
ModelsExpand Collapse
class BlockSenderListResponse:
id: int

The unique identifier for the allow policy.

formatint32
created_at: datetime
formatdate-time
is_regex: bool
last_modified: datetime
formatdate-time
pattern: str
maxLength1024
minLength1
pattern_type: Literal["EMAIL", "DOMAIN", "IP", "UNKNOWN"]
One of the following:
"EMAIL"
"DOMAIN"
"IP"
"UNKNOWN"
comments: Optional[str]
maxLength1024
class BlockSenderGetResponse:
id: int

The unique identifier for the allow policy.

formatint32
created_at: datetime
formatdate-time
is_regex: bool
last_modified: datetime
formatdate-time
pattern: str
maxLength1024
minLength1
pattern_type: Literal["EMAIL", "DOMAIN", "IP", "UNKNOWN"]
One of the following:
"EMAIL"
"DOMAIN"
"IP"
"UNKNOWN"
comments: Optional[str]
maxLength1024
class BlockSenderCreateResponse:
id: int

The unique identifier for the allow policy.

formatint32
created_at: datetime
formatdate-time
is_regex: bool
last_modified: datetime
formatdate-time
pattern: str
maxLength1024
minLength1
pattern_type: Literal["EMAIL", "DOMAIN", "IP", "UNKNOWN"]
One of the following:
"EMAIL"
"DOMAIN"
"IP"
"UNKNOWN"
comments: Optional[str]
maxLength1024
class BlockSenderEditResponse:
id: int

The unique identifier for the allow policy.

formatint32
created_at: datetime
formatdate-time
is_regex: bool
last_modified: datetime
formatdate-time
pattern: str
maxLength1024
minLength1
pattern_type: Literal["EMAIL", "DOMAIN", "IP", "UNKNOWN"]
One of the following:
"EMAIL"
"DOMAIN"
"IP"
"UNKNOWN"
comments: Optional[str]
maxLength1024
class BlockSenderDeleteResponse:
id: int

The unique identifier for the allow policy.

formatint32

Email SecuritySettingsDomains

List protected email domains
email_security.settings.domains.list(DomainListParams**kwargs) -> SyncV4PagePaginationArray[DomainListResponse]
GET/accounts/{account_id}/email-security/settings/domains
Get an email domain
email_security.settings.domains.get(intdomain_id, DomainGetParams**kwargs) -> DomainGetResponse
GET/accounts/{account_id}/email-security/settings/domains/{domain_id}
Update an email domain
email_security.settings.domains.edit(intdomain_id, DomainEditParams**kwargs) -> DomainEditResponse
PATCH/accounts/{account_id}/email-security/settings/domains/{domain_id}
Unprotect an email domain
email_security.settings.domains.delete(intdomain_id, DomainDeleteParams**kwargs) -> DomainDeleteResponse
DELETE/accounts/{account_id}/email-security/settings/domains/{domain_id}
Unprotect multiple email domains
email_security.settings.domains.bulk_delete(DomainBulkDeleteParams**kwargs) -> SyncSinglePage[DomainBulkDeleteResponse]
DELETE/accounts/{account_id}/email-security/settings/domains
ModelsExpand Collapse
class DomainListResponse:
id: int

The unique identifier for the domain.

formatint32
allowed_delivery_modes: List[Literal["DIRECT", "BCC", "JOURNAL", 2 more]]
One of the following:
"DIRECT"
"BCC"
"JOURNAL"
"API"
"RETRO_SCAN"
created_at: datetime
formatdate-time
domain: str
drop_dispositions: List[Literal["MALICIOUS", "MALICIOUS-BEC", "SUSPICIOUS", 7 more]]
One of the following:
"MALICIOUS"
"MALICIOUS-BEC"
"SUSPICIOUS"
"SPOOF"
"SPAM"
"BULK"
"ENCRYPTED"
"EXTERNAL"
"UNKNOWN"
"NONE"
ip_restrictions: List[str]
last_modified: datetime
formatdate-time
lookback_hops: int
formatint32
regions: List[Literal["GLOBAL", "AU", "DE", 2 more]]
One of the following:
"GLOBAL"
"AU"
"DE"
"IN"
"US"
transport: str
authorization: Optional[Authorization]
authorized: bool
timestamp: datetime
formatdate-time
status_message: Optional[str]
dmarc_status: Optional[Literal["none", "good", "invalid"]]
One of the following:
"none"
"good"
"invalid"
emails_processed: Optional[EmailsProcessed]
timestamp: datetime
formatdate-time
total_emails_processed: int
formatint32
minimum0
total_emails_processed_previous: int
formatint32
minimum0
folder: Optional[Literal["AllItems", "Inbox"]]
One of the following:
"AllItems"
"Inbox"
inbox_provider: Optional[Literal["Microsoft", "Google"]]
One of the following:
"Microsoft"
"Google"
integration_id: Optional[str]
formatuuid
o365_tenant_id: Optional[str]
require_tls_inbound: Optional[bool]
require_tls_outbound: Optional[bool]
spf_status: Optional[Literal["none", "good", "neutral", 2 more]]
One of the following:
"none"
"good"
"neutral"
"open"
"invalid"
class DomainGetResponse:
id: int

The unique identifier for the domain.

formatint32
allowed_delivery_modes: List[Literal["DIRECT", "BCC", "JOURNAL", 2 more]]
One of the following:
"DIRECT"
"BCC"
"JOURNAL"
"API"
"RETRO_SCAN"
created_at: datetime
formatdate-time
domain: str
drop_dispositions: List[Literal["MALICIOUS", "MALICIOUS-BEC", "SUSPICIOUS", 7 more]]
One of the following:
"MALICIOUS"
"MALICIOUS-BEC"
"SUSPICIOUS"
"SPOOF"
"SPAM"
"BULK"
"ENCRYPTED"
"EXTERNAL"
"UNKNOWN"
"NONE"
ip_restrictions: List[str]
last_modified: datetime
formatdate-time
lookback_hops: int
formatint32
regions: List[Literal["GLOBAL", "AU", "DE", 2 more]]
One of the following:
"GLOBAL"
"AU"
"DE"
"IN"
"US"
transport: str
authorization: Optional[Authorization]
authorized: bool
timestamp: datetime
formatdate-time
status_message: Optional[str]
dmarc_status: Optional[Literal["none", "good", "invalid"]]
One of the following:
"none"
"good"
"invalid"
emails_processed: Optional[EmailsProcessed]
timestamp: datetime
formatdate-time
total_emails_processed: int
formatint32
minimum0
total_emails_processed_previous: int
formatint32
minimum0
folder: Optional[Literal["AllItems", "Inbox"]]
One of the following:
"AllItems"
"Inbox"
inbox_provider: Optional[Literal["Microsoft", "Google"]]
One of the following:
"Microsoft"
"Google"
integration_id: Optional[str]
formatuuid
o365_tenant_id: Optional[str]
require_tls_inbound: Optional[bool]
require_tls_outbound: Optional[bool]
spf_status: Optional[Literal["none", "good", "neutral", 2 more]]
One of the following:
"none"
"good"
"neutral"
"open"
"invalid"
class DomainEditResponse:
id: int

The unique identifier for the domain.

formatint32
allowed_delivery_modes: List[Literal["DIRECT", "BCC", "JOURNAL", 2 more]]
One of the following:
"DIRECT"
"BCC"
"JOURNAL"
"API"
"RETRO_SCAN"
created_at: datetime
formatdate-time
domain: str
drop_dispositions: List[Literal["MALICIOUS", "MALICIOUS-BEC", "SUSPICIOUS", 7 more]]
One of the following:
"MALICIOUS"
"MALICIOUS-BEC"
"SUSPICIOUS"
"SPOOF"
"SPAM"
"BULK"
"ENCRYPTED"
"EXTERNAL"
"UNKNOWN"
"NONE"
ip_restrictions: List[str]
last_modified: datetime
formatdate-time
lookback_hops: int
formatint32
regions: List[Literal["GLOBAL", "AU", "DE", 2 more]]
One of the following:
"GLOBAL"
"AU"
"DE"
"IN"
"US"
transport: str
authorization: Optional[Authorization]
authorized: bool
timestamp: datetime
formatdate-time
status_message: Optional[str]
dmarc_status: Optional[Literal["none", "good", "invalid"]]
One of the following:
"none"
"good"
"invalid"
emails_processed: Optional[EmailsProcessed]
timestamp: datetime
formatdate-time
total_emails_processed: int
formatint32
minimum0
total_emails_processed_previous: int
formatint32
minimum0
folder: Optional[Literal["AllItems", "Inbox"]]
One of the following:
"AllItems"
"Inbox"
inbox_provider: Optional[Literal["Microsoft", "Google"]]
One of the following:
"Microsoft"
"Google"
integration_id: Optional[str]
formatuuid
o365_tenant_id: Optional[str]
require_tls_inbound: Optional[bool]
require_tls_outbound: Optional[bool]
spf_status: Optional[Literal["none", "good", "neutral", 2 more]]
One of the following:
"none"
"good"
"neutral"
"open"
"invalid"
class DomainDeleteResponse:
id: int

The unique identifier for the domain.

formatint32
class DomainBulkDeleteResponse:
id: int

The unique identifier for the domain.

formatint32

Email SecuritySettingsImpersonation Registry

List entries in impersonation registry
email_security.settings.impersonation_registry.list(ImpersonationRegistryListParams**kwargs) -> SyncV4PagePaginationArray[ImpersonationRegistryListResponse]
GET/accounts/{account_id}/email-security/settings/impersonation_registry
Get an entry in impersonation registry
email_security.settings.impersonation_registry.get(intdisplay_name_id, ImpersonationRegistryGetParams**kwargs) -> ImpersonationRegistryGetResponse
GET/accounts/{account_id}/email-security/settings/impersonation_registry/{display_name_id}
Create an entry in impersonation registry
email_security.settings.impersonation_registry.create(ImpersonationRegistryCreateParams**kwargs) -> ImpersonationRegistryCreateResponse
POST/accounts/{account_id}/email-security/settings/impersonation_registry
Update an entry in impersonation registry
email_security.settings.impersonation_registry.edit(intdisplay_name_id, ImpersonationRegistryEditParams**kwargs) -> ImpersonationRegistryEditResponse
PATCH/accounts/{account_id}/email-security/settings/impersonation_registry/{display_name_id}
Delete an entry from impersonation registry
email_security.settings.impersonation_registry.delete(intdisplay_name_id, ImpersonationRegistryDeleteParams**kwargs) -> ImpersonationRegistryDeleteResponse
DELETE/accounts/{account_id}/email-security/settings/impersonation_registry/{display_name_id}
ModelsExpand Collapse
class ImpersonationRegistryListResponse:
id: int
formatint32
created_at: datetime
formatdate-time
email: str
is_email_regex: bool
last_modified: datetime
formatdate-time
name: str
maxLength1024
comments: Optional[str]
directory_id: Optional[int]
formatint64
directory_node_id: Optional[int]
formatint64
Deprecatedexternal_directory_node_id: Optional[str]
provenance: Optional[str]
class ImpersonationRegistryGetResponse:
id: int
formatint32
created_at: datetime
formatdate-time
email: str
is_email_regex: bool
last_modified: datetime
formatdate-time
name: str
maxLength1024
comments: Optional[str]
directory_id: Optional[int]
formatint64
directory_node_id: Optional[int]
formatint64
Deprecatedexternal_directory_node_id: Optional[str]
provenance: Optional[str]
class ImpersonationRegistryCreateResponse:
id: int
formatint32
created_at: datetime
formatdate-time
email: str
is_email_regex: bool
last_modified: datetime
formatdate-time
name: str
maxLength1024
comments: Optional[str]
directory_id: Optional[int]
formatint64
directory_node_id: Optional[int]
formatint64
Deprecatedexternal_directory_node_id: Optional[str]
provenance: Optional[str]
class ImpersonationRegistryEditResponse:
id: int
formatint32
created_at: datetime
formatdate-time
email: str
is_email_regex: bool
last_modified: datetime
formatdate-time
name: str
maxLength1024
comments: Optional[str]
directory_id: Optional[int]
formatint64
directory_node_id: Optional[int]
formatint64
Deprecatedexternal_directory_node_id: Optional[str]
provenance: Optional[str]
class ImpersonationRegistryDeleteResponse:
id: int
formatint32

Email SecuritySettingsTrusted Domains

List trusted email domains
email_security.settings.trusted_domains.list(TrustedDomainListParams**kwargs) -> SyncV4PagePaginationArray[TrustedDomainListResponse]
GET/accounts/{account_id}/email-security/settings/trusted_domains
Get a trusted email domain
email_security.settings.trusted_domains.get(inttrusted_domain_id, TrustedDomainGetParams**kwargs) -> TrustedDomainGetResponse
GET/accounts/{account_id}/email-security/settings/trusted_domains/{trusted_domain_id}
Create a trusted email domain
email_security.settings.trusted_domains.create(TrustedDomainCreateParams**kwargs) -> TrustedDomainCreateResponse
POST/accounts/{account_id}/email-security/settings/trusted_domains
Update a trusted email domain
email_security.settings.trusted_domains.edit(inttrusted_domain_id, TrustedDomainEditParams**kwargs) -> TrustedDomainEditResponse
PATCH/accounts/{account_id}/email-security/settings/trusted_domains/{trusted_domain_id}
Delete a trusted email domain
email_security.settings.trusted_domains.delete(inttrusted_domain_id, TrustedDomainDeleteParams**kwargs) -> TrustedDomainDeleteResponse
DELETE/accounts/{account_id}/email-security/settings/trusted_domains/{trusted_domain_id}
ModelsExpand Collapse
class TrustedDomainListResponse:
id: int

The unique identifier for the trusted domain.

formatint32
created_at: datetime
formatdate-time
is_recent: bool

Select to prevent recently registered domains from triggering a Suspicious or Malicious disposition.

is_regex: bool
is_similarity: bool

Select for partner or other approved domains that have similar spelling to your connected domains. Prevents listed domains from triggering a Spoof disposition.

last_modified: datetime
formatdate-time
pattern: str
maxLength1024
minLength1
comments: Optional[str]
maxLength1024
class TrustedDomainGetResponse:
id: int

The unique identifier for the trusted domain.

formatint32
created_at: datetime
formatdate-time
is_recent: bool

Select to prevent recently registered domains from triggering a Suspicious or Malicious disposition.

is_regex: bool
is_similarity: bool

Select for partner or other approved domains that have similar spelling to your connected domains. Prevents listed domains from triggering a Spoof disposition.

last_modified: datetime
formatdate-time
pattern: str
maxLength1024
minLength1
comments: Optional[str]
maxLength1024
One of the following:
class EmailSecurityTrustedDomain:
id: int

The unique identifier for the trusted domain.

formatint32
created_at: datetime
formatdate-time
is_recent: bool

Select to prevent recently registered domains from triggering a Suspicious or Malicious disposition.

is_regex: bool
is_similarity: bool

Select for partner or other approved domains that have similar spelling to your connected domains. Prevents listed domains from triggering a Spoof disposition.

last_modified: datetime
formatdate-time
pattern: str
maxLength1024
minLength1
comments: Optional[str]
maxLength1024
List[UnionMember1]
id: int

The unique identifier for the trusted domain.

formatint32
created_at: datetime
formatdate-time
is_recent: bool

Select to prevent recently registered domains from triggering a Suspicious or Malicious disposition.

is_regex: bool
is_similarity: bool

Select for partner or other approved domains that have similar spelling to your connected domains. Prevents listed domains from triggering a Spoof disposition.

last_modified: datetime
formatdate-time
pattern: str
maxLength1024
minLength1
comments: Optional[str]
maxLength1024
class TrustedDomainEditResponse:
id: int

The unique identifier for the trusted domain.

formatint32
created_at: datetime
formatdate-time
is_recent: bool

Select to prevent recently registered domains from triggering a Suspicious or Malicious disposition.

is_regex: bool
is_similarity: bool

Select for partner or other approved domains that have similar spelling to your connected domains. Prevents listed domains from triggering a Spoof disposition.

last_modified: datetime
formatdate-time
pattern: str
maxLength1024
minLength1
comments: Optional[str]
maxLength1024
class TrustedDomainDeleteResponse:
id: int

The unique identifier for the trusted domain.

formatint32

Email SecuritySubmissions

Get reclassify submissions
email_security.submissions.list(SubmissionListParams**kwargs) -> SyncV4PagePaginationArray[SubmissionListResponse]
GET/accounts/{account_id}/email-security/submissions
ModelsExpand Collapse
class SubmissionListResponse:
Deprecatedrequested_ts: datetime

deprecated as of 2026-04-01, use requested_at instead.

formatdate-time
submission_id: str
customer_status: Optional[Literal["escalated", "reviewed", "unreviewed"]]
One of the following:
"escalated"
"reviewed"
"unreviewed"
escalated_as: Optional[Literal["MALICIOUS", "MALICIOUS-BEC", "SUSPICIOUS", 7 more]]
One of the following:
"MALICIOUS"
"MALICIOUS-BEC"
"SUSPICIOUS"
"SPOOF"
"SPAM"
"BULK"
"ENCRYPTED"
"EXTERNAL"
"UNKNOWN"
"NONE"
escalated_at: Optional[datetime]
formatdate-time
escalated_by: Optional[str]
escalated_submission_id: Optional[str]
original_disposition: Optional[Literal["MALICIOUS", "MALICIOUS-BEC", "SUSPICIOUS", 7 more]]
One of the following:
"MALICIOUS"
"MALICIOUS-BEC"
"SUSPICIOUS"
"SPOOF"
"SPAM"
"BULK"
"ENCRYPTED"
"EXTERNAL"
"UNKNOWN"
"NONE"
original_edf_hash: Optional[str]
original_postfix_id: Optional[str]
outcome: Optional[str]
outcome_disposition: Optional[Literal["MALICIOUS", "MALICIOUS-BEC", "SUSPICIOUS", 7 more]]
One of the following:
"MALICIOUS"
"MALICIOUS-BEC"
"SUSPICIOUS"
"SPOOF"
"SPAM"
"BULK"
"ENCRYPTED"
"EXTERNAL"
"UNKNOWN"
"NONE"
requested_at: Optional[datetime]
formatdate-time
requested_by: Optional[str]
requested_disposition: Optional[Literal["MALICIOUS", "MALICIOUS-BEC", "SUSPICIOUS", 7 more]]
One of the following:
"MALICIOUS"
"MALICIOUS-BEC"
"SUSPICIOUS"
"SPOOF"
"SPAM"
"BULK"
"ENCRYPTED"
"EXTERNAL"
"UNKNOWN"
"NONE"
status: Optional[str]
subject: Optional[str]
type: Optional[str]