Skip to content

Suppressions

Greg Svoboda edited this page Mar 4, 2026 · 1 revision

Suppressions

Suppression management is done through ServerClient. You will need a server API token.

import postmark

client = postmark.ServerClient("your-server-token")

Suppressions are scoped to a message stream (e.g. "outbound" or "broadcast").

Retrieve Suppressions

Fetch all suppressed addresses for a message stream.

import asyncio

async def main():
    suppressions = await client.suppressions.dump("outbound")

    print(f"Total suppressions: {len(suppressions)}")
    for s in suppressions:
        print(f"  {s.email_address}")
        print(f"       Reason:  {s.suppression_reason.value}")
        print(f"       Origin:  {s.origin.value}")
        print(f"       Created: {s.created_at}")

asyncio.run(main())

Filter by Reason or Date

from datetime import date
from postmark.models.suppressions import SuppressionReason

async def main():
    suppressions = await client.suppressions.dump(
        "outbound",
        suppression_reason=SuppressionReason.HARD_BOUNCE,
        from_date=date(2024, 1, 1),
        to_date=date(2024, 12, 31),
    )

Available SuppressionReason values: HARD_BOUNCE, SPAM_COMPLAINT, MANUAL_SUPPRESSION, UNSUBSCRIBE

Create Suppressions

Add email addresses to a suppression list for a given stream. A maximum of 50 addresses can be submitted per call.

import asyncio

async def main():
    results = await client.suppressions.create(
        "outbound",
        ["user@example.com", "other@example.com"],
    )

    for r in results:
        print(f"  {r.email_address}: {r.status}")
        if r.message:
            print(f"       {r.message}")

asyncio.run(main())

Delete Suppressions

Remove addresses from a suppression list. A maximum of 50 addresses can be submitted per call.

import asyncio

async def main():
    results = await client.suppressions.delete(
        "outbound",
        ["user@example.com"],
    )

    for r in results:
        print(f"  {r.email_address}: {r.status}")
        if r.message:
            print(f"       {r.message}")

asyncio.run(main())

Further Reading

Clone this wiki locally