Skip to content

hostedContentFilterPolicies

Anti-Spam Policies. Inbound anti-spam content-filtering policies for mail. The hostedContentFilterPolicies entity set lives under /exchange/v1.0/hostedContentFilterPolicies in the Threat protection category.

Fact Value
Path /exchange/v1.0/hostedContentFilterPolicies
Category Threat protection
Tier Tier 4, Threat protection
Read role ThreatPolicy.Read.All (Community)
Write role ThreatPolicy.ReadWrite.All (Enterprise)
Backing cmdlets Get-HostedContentFilterPolicy, Set-HostedContentFilterPolicy, New-HostedContentFilterPolicy, Remove-HostedContentFilterPolicy
Method Path Synopsis Role Plan
GET /exchange/v1.0/hostedContentFilterPolicies List hostedContentFilterPolicies entries. ThreatPolicy.Read Community
POST /exchange/v1.0/hostedContentFilterPolicies Create a new hostedContentFilterPolicies entry. Body keys map 1:1 to the cmdlet’s parameter names (camelCased). Returns 201 + Location + the freshly-fetched entity. Use ?dryRun=true to map to -WhatIf without applying. ThreatPolicy.ReadWrite Enterprise
GET /exchange/v1.0/hostedContentFilterPolicies/{key} Get a single hostedContentFilterPolicies entry by Identity. ThreatPolicy.Read Community
PATCH /exchange/v1.0/hostedContentFilterPolicies/{key} Partial update of the hostedContentFilterPolicies at /hostedContentFilterPolicies/{key}. Only body fields present are passed to the cmdlet. Returns 200 + the post-Set entity (rename-aware re-fetch when name is in the body). ThreatPolicy.ReadWrite Enterprise
DELETE /exchange/v1.0/hostedContentFilterPolicies/{key} Remove the hostedContentFilterPolicies at /hostedContentFilterPolicies/{key}. Returns 204 with no body. ThreatPolicy.ReadWrite Enterprise

GET /exchange/v1.0/hostedContentFilterPolicies

Section titled “GET /exchange/v1.0/hostedContentFilterPolicies”

List hostedContentFilterPolicies entries.

Backing cmdlet: Get-HostedContentFilterPolicy. Role: ThreatPolicy.Read (Community).

List hosted content filter (anti-spam) policies

Section titled “List hosted content filter (anti-spam) policies”

Returns the tenant’s anti-spam inbound policies. Backed by Get-HostedContentFilterPolicy; each entry carries spam/phish/bulk actions, allow/block lists, and ZAP settings.

GET /exchange/v1.0/hostedContentFilterPolicies?$top=3 HTTP/1.1
Authorization: Bearer {token}
HTTP/1.1 200 OK
{
"@odata.context": "http://localhost:5043/exchange/v1.0/$metadata#hostedContentFilterPolicies",
"value": [
{
"Id": "Default",
"Name": "Default",
"Identity": "Default",
"AdminDisplayName": "Default Anti-Spam inbound policy customized by Ayla Kol",
"Guid": "7c9b1f04-3a2e-4d18-bf6a-21c8e0d4517b",
"IsDefault": true,
"SpamAction": "MoveToJmf",
"HighConfidenceSpamAction": "Quarantine",
"PhishSpamAction": "Quarantine",
"HighConfidencePhishAction": "Quarantine",
"BulkSpamAction": "MoveToJmf",
"BulkThreshold": 5,
"MarkAsSpamBulkMail": false,
"InlineSafetyTipsEnabled": true,
"EnableEndUserSpamNotifications": false,
"EndUserSpamNotificationFrequency": null,
"AllowedSenders": [
"ayla.kol@contoso.com",
"ayla.kol23@example.com",
"ayla.kol@example.com",
"john.woods@contoso.com"
],
"AllowedSenderDomains": [
"contoso.com"
],
"BlockedSenders": [],
"BlockedSenderDomains": [],
"RegionBlockList": [],
"LanguageBlockList": [],
"WhenCreated": "2026-03-30T17:41:50+03:00",
"WhenChanged": "2026-03-30T17:41:59+03:00",
"AddXHeaderValue": "",
"BulkMovesEnabled": "NotSet",
"BulkQuarantineTag": "DefaultFullAccessPolicy",
"DistinguishedName": "CN=Default,CN=Hosted Content Filter,CN=Transport Settings,CN=Configuration,CN=contoso.onmicrosoft.com,CN=ConfigurationUnits,DC=EURPR01A017,DC=PROD,DC=OUTLOOK,DC=COM",
"DownloadLink": false,
"EnableLanguageBlockList": false,
"EnableRegionBlockList": false,
"ExchangeObjectId": "a18d6e23-7b4c-4f90-9d2e-5c1a83bf0e44",
"FalsePositiveAdditionalRecipients": [],
"HighConfidencePhishQuarantineTag": "AdminOnlyAccessPolicy",
"HighConfidenceSpamQuarantineTag": "DefaultFullAccessWithNotificationPolicy",
"IncreaseScoreWithBizOrInfoUrls": "On",
"IncreaseScoreWithImageLinks": "Off",
"IncreaseScoreWithNumericIps": "On",
"IncreaseScoreWithRedirectToOtherPort": "Off",
"IntraOrgFilterState": "Phish",
"MarkAsSpamEmbedTagsInHtml": "Off",
"MarkAsSpamEmptyMessages": "On",
"MarkAsSpamFormTagsInHtml": "Off",
"MarkAsSpamFramesInHtml": "Off",
"MarkAsSpamFromAddressAuthFail": "On",
"MarkAsSpamJavaScriptInHtml": "On",
"MarkAsSpamNdrBackscatter": "Off",
"MarkAsSpamObjectTagsInHtml": "Off",
"MarkAsSpamSensitiveWordList": "On",
"MarkAsSpamSpfRecordHardFail": "On",
"MarkAsSpamWebBugsInHtml": "Off",
"ModifySubjectValue": "",
"OrganizationId": "EURPR01A017.PROD.OUTLOOK.COM/Microsoft Exchange Hosted Organizations/contoso.onmicrosoft.com - EURPR01A017.PROD.OUTLOOK.COM/ConfigurationUnits/contoso.onmicrosoft.com/Configuration",
"OrganizationalUnitRoot": "contoso.onmicrosoft.com",
"PhishQuarantineTag": "DefaultFullAccessWithNotificationPolicy",
"PhishZapEnabled": true,
"QuarantineRetentionPeriod": 14,
"RecommendedPolicyType": "Custom",
"RedirectToRecipients": [],
"SpamQuarantineTag": "DefaultFullAccessPolicy",
"SpamZapEnabled": true,
"TestModeAction": "None",
"TestModeBccToRecipients": [],
"WhenChangedUTC": "2026-03-30T14:41:59Z",
"WhenCreatedUTC": "2026-03-30T14:41:50Z",
"ZapEnabled": true
}
]
}

Notes: A tenant always carries a built-in Default policy (IsDefault=true). Allow/block sender lists and quarantine-tag references vary by tenant configuration.

Related: GET /exchange/v1.0/hostedContentFilterPolicies/{key}

POST /exchange/v1.0/hostedContentFilterPolicies

Section titled “POST /exchange/v1.0/hostedContentFilterPolicies”

Create a new hostedContentFilterPolicies entry. Body keys map 1:1 to the cmdlet’s parameter names (camelCased). Returns 201 + Location + the freshly-fetched entity. Use ?dryRun=true to map to -WhatIf without applying.

Backing cmdlet: New-HostedContentFilterPolicy. Role: ThreatPolicy.ReadWrite (Enterprise).

Parameter In Type Required Description
name body yes
addXHeaderValue body
adminDisplayName body
allowedSenderDomains body
allowedSenders body
blockedSenderDomains body
blockedSenders body
bulkMovesEnabled body
bulkQuarantineTag body
bulkSpamAction body
bulkThreshold body
enableLanguageBlockList body
enableRegionBlockList body
highConfidencePhishAction body
highConfidencePhishQuarantineTag body
highConfidenceSpamAction body
highConfidenceSpamQuarantineTag body
increaseScoreWithBizOrInfoUrls body
increaseScoreWithImageLinks body
increaseScoreWithNumericIps body
increaseScoreWithRedirectToOtherPort body
inlineSafetyTipsEnabled body
intraOrgFilterState body
languageBlockList body
markAsSpamBulkMail body
markAsSpamEmbedTagsInHtml body
markAsSpamEmptyMessages body
markAsSpamFormTagsInHtml body
markAsSpamFramesInHtml body
markAsSpamFromAddressAuthFail body
markAsSpamJavaScriptInHtml body
markAsSpamNdrBackscatter body
markAsSpamObjectTagsInHtml body
markAsSpamSensitiveWordList body
markAsSpamSpfRecordHardFail body
markAsSpamWebBugsInHtml body
modifySubjectValue body
phishQuarantineTag body
phishSpamAction body
phishZapEnabled body
quarantineRetentionPeriod body
redirectToRecipients body
regionBlockList body
spamAction body
spamQuarantineTag body
spamZapEnabled body
testModeAction body
testModeBccToRecipients body
dryRun query bool (switch)

Create hostedContentFilterPolicies - duplicate name (409)

Section titled “Create hostedContentFilterPolicies - duplicate name (409)”

Anti-spam (hosted content filter) policy create fails with 409 when a policy of that name already exists. Backed by New-HostedContentFilterPolicy.

POST /exchange/v1.0/hostedContentFilterPolicies HTTP/1.1
Authorization: Bearer {token}
Content-Type: application/json
{
"name": "exonaut-audit-hcf"
}
HTTP/1.1 409 Conflict
{
"error": {
"code": "Conflict",
"message": "Cmdlet 'New-HostedContentFilterPolicy' failed: ||Hosted content filter policy 'exonaut-audit-hcf' already exists.",
"target": null,
"innerError": {
"cmdlet": "New-HostedContentFilterPolicy"
}
},
"correlationId": "0HNLTIGH3TLOD:00000001"
}

Anti-spam (hosted content filter) policy create. Required: name. Returns 201 + Location + the freshly-fetched policy. Backed by New-HostedContentFilterPolicy.

POST /exchange/v1.0/hostedContentFilterPolicies HTTP/1.1
Authorization: Bearer {token}
Content-Type: application/json
{
"name": "exonaut-audit-hcf"
}
HTTP/1.1 201 Created
Location: /exchange/v1.0/hostedContentFilterPolicies/exonaut-audit-hcf
{
"@odata.context": "http://localhost:5043/exchange/v1.0/$metadata#hostedContentFilterPolicies/$entity",
"Id": "exonaut-audit-hcf",
"Name": "exonaut-audit-hcf",
"Identity": "exonaut-audit-hcf",
"AdminDisplayName": "",
"Guid": "e319b2fa-446e-4ff9-b17c-c6c5fd1cc1cc",
"IsDefault": false,
"SpamAction": "MoveToJmf",
"HighConfidenceSpamAction": "MoveToJmf",
"PhishSpamAction": "MoveToJmf",
"HighConfidencePhishAction": "Quarantine",
"BulkSpamAction": "MoveToJmf",
"BulkThreshold": 7,
"MarkAsSpamBulkMail": false,
"InlineSafetyTipsEnabled": true,
"EnableEndUserSpamNotifications": false,
"EndUserSpamNotificationFrequency": null,
"AllowedSenders": [],
"AllowedSenderDomains": [],
"BlockedSenders": [],
"BlockedSenderDomains": [],
"RegionBlockList": [],
"LanguageBlockList": [],
"WhenCreated": "2026-05-29T18:34:50+03:00",
"WhenChanged": "2026-05-29T18:34:50+03:00",
"AddXHeaderValue": "",
"BulkMovesEnabled": "NotSet",
"BulkQuarantineTag": "DefaultFullAccessPolicy",
"DistinguishedName": "CN=exonaut-audit-hcf,CN=Hosted Content Filter,CN=Transport Settings,CN=Configuration,CN=contoso.onmicrosoft.com,CN=ConfigurationUnits,DC=EURPR01A017,DC=PROD,DC=OUTLOOK,DC=COM",
"DownloadLink": false,
"EnableLanguageBlockList": false,
"EnableRegionBlockList": false,
"ExchangeObjectId": "e319b2fa-446e-4ff9-b17c-c6c5fd1cc1cc",
"FalsePositiveAdditionalRecipients": [],
"HighConfidencePhishQuarantineTag": "AdminOnlyAccessPolicy",
"HighConfidenceSpamQuarantineTag": "DefaultFullAccessPolicy",
"IncreaseScoreWithBizOrInfoUrls": "Off",
"IncreaseScoreWithImageLinks": "Off",
"IncreaseScoreWithNumericIps": "Off",
"IncreaseScoreWithRedirectToOtherPort": "Off",
"IntraOrgFilterState": "Default",
"MarkAsSpamEmbedTagsInHtml": "Off",
"MarkAsSpamEmptyMessages": "Off",
"MarkAsSpamFormTagsInHtml": "Off",
"MarkAsSpamFramesInHtml": "Off",
"MarkAsSpamFromAddressAuthFail": "Off",
"MarkAsSpamJavaScriptInHtml": "Off",
"MarkAsSpamNdrBackscatter": "Off",
"MarkAsSpamObjectTagsInHtml": "Off",
"MarkAsSpamSensitiveWordList": "Off",
"MarkAsSpamSpfRecordHardFail": "Off",
"MarkAsSpamWebBugsInHtml": "Off",
"ModifySubjectValue": "",
"OrganizationId": "EURPR01A017.PROD.OUTLOOK.COM/Microsoft Exchange Hosted Organizations/contoso.onmicrosoft.com - EURPR01A017.PROD.OUTLOOK.COM/ConfigurationUnits/contoso.onmicrosoft.com/Configuration",
"OrganizationalUnitRoot": "contoso.onmicrosoft.com",
"PhishQuarantineTag": "DefaultFullAccessPolicy",
"PhishZapEnabled": true,
"QuarantineRetentionPeriod": 15,
"RecommendedPolicyType": "Custom",
"RedirectToRecipients": [],
"SpamQuarantineTag": "DefaultFullAccessPolicy",
"SpamZapEnabled": true,
"TestModeAction": "None",
"TestModeBccToRecipients": [],
"WhenChangedUTC": "2026-05-29T15:34:50Z",
"WhenCreatedUTC": "2026-05-29T15:34:50Z",
"ZapEnabled": true
}

Related: GET /exchange/v1.0/hostedContentFilterPolicies, DELETE /exchange/v1.0/hostedContentFilterPolicies/{key}

GET /exchange/v1.0/hostedContentFilterPolicies/{key}

Section titled “GET /exchange/v1.0/hostedContentFilterPolicies/{key}”

Get a single hostedContentFilterPolicies entry by Identity.

Backing cmdlet: Get-HostedContentFilterPolicy. Role: ThreatPolicy.Read (Community).

Get a single hosted content filter (anti-spam) policy

Section titled “Get a single hosted content filter (anti-spam) policy”

Returns one anti-spam inbound policy by identity. Backed by Get-HostedContentFilterPolicy with -Identity {key}; returns the full entity body including spam/phish actions, allow/block lists, and ZAP settings.

GET /exchange/v1.0/hostedContentFilterPolicies/{key} HTTP/1.1
Authorization: Bearer {token}
HTTP/1.1 200 OK
{
"@odata.context": "http://localhost:5043/exchange/v1.0/$metadata#hostedContentFilterPolicies/$entity",
"Id": "Default",
"Name": "Default",
"Identity": "Default",
"AdminDisplayName": "Default Anti-Spam inbound policy customized by Ayla Kol",
"Guid": "7c9b1f04-3a2e-4d18-bf6a-21c8e0d4517b",
"IsDefault": true,
"SpamAction": "MoveToJmf",
"HighConfidenceSpamAction": "Quarantine",
"PhishSpamAction": "Quarantine",
"HighConfidencePhishAction": "Quarantine",
"BulkSpamAction": "MoveToJmf",
"BulkThreshold": 5,
"MarkAsSpamBulkMail": false,
"InlineSafetyTipsEnabled": true,
"EnableEndUserSpamNotifications": false,
"EndUserSpamNotificationFrequency": null,
"AllowedSenders": [
"ayla.kol@contoso.com",
"ayla.kol23@example.com",
"ayla.kol@example.com",
"john.woods@contoso.com"
],
"AllowedSenderDomains": [
"contoso.com"
],
"BlockedSenders": [],
"BlockedSenderDomains": [],
"RegionBlockList": [],
"LanguageBlockList": [],
"WhenCreated": "2026-03-30T17:41:50+03:00",
"WhenChanged": "2026-03-30T17:41:59+03:00",
"AddXHeaderValue": "",
"BulkMovesEnabled": "NotSet",
"BulkQuarantineTag": "DefaultFullAccessPolicy",
"DistinguishedName": "CN=Default,CN=Hosted Content Filter,CN=Transport Settings,CN=Configuration,CN=contoso.onmicrosoft.com,CN=ConfigurationUnits,DC=EURPR01A017,DC=PROD,DC=OUTLOOK,DC=COM",
"DownloadLink": false,
"EnableLanguageBlockList": false,
"EnableRegionBlockList": false,
"ExchangeObjectId": "a18d6e23-7b4c-4f90-9d2e-5c1a83bf0e44",
"FalsePositiveAdditionalRecipients": [],
"HighConfidencePhishQuarantineTag": "AdminOnlyAccessPolicy",
"HighConfidenceSpamQuarantineTag": "DefaultFullAccessWithNotificationPolicy",
"IncreaseScoreWithBizOrInfoUrls": "On",
"IncreaseScoreWithImageLinks": "Off",
"IncreaseScoreWithNumericIps": "On",
"IncreaseScoreWithRedirectToOtherPort": "Off",
"IntraOrgFilterState": "Phish",
"MarkAsSpamEmbedTagsInHtml": "Off",
"MarkAsSpamEmptyMessages": "On",
"MarkAsSpamFormTagsInHtml": "Off",
"MarkAsSpamFramesInHtml": "Off",
"MarkAsSpamFromAddressAuthFail": "On",
"MarkAsSpamJavaScriptInHtml": "On",
"MarkAsSpamNdrBackscatter": "Off",
"MarkAsSpamObjectTagsInHtml": "Off",
"MarkAsSpamSensitiveWordList": "On",
"MarkAsSpamSpfRecordHardFail": "On",
"MarkAsSpamWebBugsInHtml": "Off",
"ModifySubjectValue": "",
"OrganizationId": "EURPR01A017.PROD.OUTLOOK.COM/Microsoft Exchange Hosted Organizations/contoso.onmicrosoft.com - EURPR01A017.PROD.OUTLOOK.COM/ConfigurationUnits/contoso.onmicrosoft.com/Configuration",
"OrganizationalUnitRoot": "contoso.onmicrosoft.com",
"PhishQuarantineTag": "DefaultFullAccessWithNotificationPolicy",
"PhishZapEnabled": true,
"QuarantineRetentionPeriod": 14,
"RecommendedPolicyType": "Custom",
"RedirectToRecipients": [],
"SpamQuarantineTag": "DefaultFullAccessPolicy",
"SpamZapEnabled": true,
"TestModeAction": "None",
"TestModeBccToRecipients": [],
"WhenChangedUTC": "2026-03-30T14:41:59Z",
"WhenCreatedUTC": "2026-03-30T14:41:50Z",
"ZapEnabled": true
}

Notes: The {key} is the policy Identity (e.g. “Default” for the built-in policy). A 404 is returned when the identity doesn’t resolve.

Related: GET /exchange/v1.0/hostedContentFilterPolicies

Get a single hostedContentFilterPolicies entry - not found

Section titled “Get a single hostedContentFilterPolicies entry - not found”

When the supplied identity doesn’t resolve to an anti-spam policy, Get-HostedContentFilterPolicy fails and the middleware returns a canonical 404 NotFound error envelope.

GET /exchange/v1.0/hostedContentFilterPolicies/{key} HTTP/1.1
Authorization: Bearer {token}
HTTP/1.1 404 Not Found
{
"error": {
"code": "NotFound",
"message": "Exchange object 'does-not-exist-12345' could not be found.",
"target": "identity",
"innerError": {
"cmdlet": "Get-HostedContentFilterPolicy"
}
},
"correlationId": "0HNLSU6PPVJ03:00000001"
}

Notes: The {key} is the policy Identity. An unresolved identity yields a 404 with the canonical error envelope.

Related: GET /exchange/v1.0/hostedContentFilterPolicies

PATCH /exchange/v1.0/hostedContentFilterPolicies/{key}

Section titled “PATCH /exchange/v1.0/hostedContentFilterPolicies/{key}”

Partial update of the hostedContentFilterPolicies at /hostedContentFilterPolicies/{key}. Only body fields present are passed to the cmdlet. Returns 200 + the post-Set entity (rename-aware re-fetch when name is in the body).

Backing cmdlet: Set-HostedContentFilterPolicy. Role: ThreatPolicy.ReadWrite (Enterprise).

Parameter In Type Required Description
addXHeaderValue body
adminDisplayName body
allowedSenderDomains body
allowedSenders body
blockedSenderDomains body
blockedSenders body
bulkMovesEnabled body
bulkQuarantineTag body
bulkSpamAction body
bulkThreshold body
enableLanguageBlockList body
enableRegionBlockList body
highConfidencePhishAction body
highConfidencePhishQuarantineTag body
highConfidenceSpamAction body
highConfidenceSpamQuarantineTag body
increaseScoreWithBizOrInfoUrls body
increaseScoreWithImageLinks body
increaseScoreWithNumericIps body
increaseScoreWithRedirectToOtherPort body
inlineSafetyTipsEnabled body
intraOrgFilterState body
languageBlockList body
makeDefault body boolean (switch)
markAsSpamBulkMail body
markAsSpamEmbedTagsInHtml body
markAsSpamEmptyMessages body
markAsSpamFormTagsInHtml body
markAsSpamFramesInHtml body
markAsSpamFromAddressAuthFail body
markAsSpamJavaScriptInHtml body
markAsSpamNdrBackscatter body
markAsSpamObjectTagsInHtml body
markAsSpamSensitiveWordList body
markAsSpamSpfRecordHardFail body
markAsSpamWebBugsInHtml body
modifySubjectValue body
phishQuarantineTag body
phishSpamAction body
phishZapEnabled body
quarantineRetentionPeriod body
redirectToRecipients body
regionBlockList body
spamAction body
spamQuarantineTag body
spamZapEnabled body
testModeAction body
testModeBccToRecipients body
dryRun query bool (switch)

Update a hosted content filter (anti-spam) policy

Section titled “Update a hosted content filter (anti-spam) policy”

Partially updates the hosted content filter (inbound anti-spam) policy identified by {key}. Backed by the Set-HostedContentFilterPolicy cmdlet; only the body fields supplied are passed through and the post-Set entity is returned.

PATCH /exchange/v1.0/hostedContentFilterPolicies/{key} HTTP/1.1
Authorization: Bearer {token}
Content-Type: application/json
{
"spamAction": "MoveToJmf",
"highConfidenceSpamAction": "Quarantine",
"bulkThreshold": 6
}
HTTP/1.1 200 OK
Content-Type: application/json
{
"Id": "exonaut-sample-hostedContentFilterPolicies",
"Identity": "exonaut-sample-hostedContentFilterPolicies",
"Name": "exonaut-sample-hostedContentFilterPolicies",
"SpamAction": "MoveToJmf",
"HighConfidenceSpamAction": "Quarantine",
"BulkThreshold": 6
}

Notes: Doc-derived from Wiki + write-param allowlist; not live-captured. Body fields are Wiki-valid; values are illustrative.

Related: GET /exchange/v1.0/hostedContentFilterPolicies

DELETE /exchange/v1.0/hostedContentFilterPolicies/{key}

Section titled “DELETE /exchange/v1.0/hostedContentFilterPolicies/{key}”

Remove the hostedContentFilterPolicies at /hostedContentFilterPolicies/{key}. Returns 204 with no body.

Backing cmdlet: Remove-HostedContentFilterPolicy. Role: ThreatPolicy.ReadWrite (Enterprise).

Parameter In Type Required Description
dryRun query bool (switch)

Removes the policy by Identity. Returns 204. Backed by Remove-HostedContentFilterPolicy.

DELETE /exchange/v1.0/hostedContentFilterPolicies/{key} HTTP/1.1
Authorization: Bearer {token}
HTTP/1.1 204 No Content

Related: POST /exchange/v1.0/hostedContentFilterPolicies, GET /exchange/v1.0/hostedContentFilterPolicies/{key}

?dryRun=true previews of any write stay on Community.