Skip to content

Releases: ActiveCampaign/postmark-python

v0.3.0

08 Jun 20:42

Choose a tag to compare

What's New

Synchronous Client (new in v0.3.0)

SyncServerClient and SyncAccountClient are now available via postmark.sync. Use them in scripts, Flask apps, and Jupyter notebooks — no async/await required. A single background thread with a persistent event loop handles all calls; HTTP connection pooling is retained for performance.

import postmark

with postmark.sync.ServerClient(token) as client:
    response = client.outbound.send({...})

Other Changes

  • Examples reorganized into examples/async/ and examples/sync/ with parallel coverage
  • New examples: send_sync_simple.py, send_sync_batch.py
  • 31 new tests for sync client behavior (tests/test_sync_client.py)

Full Changelog: v0.2.5...v0.3.0

v0.2.5

03 Jun 21:00

Choose a tag to compare

What's Changed

  • update test workflow for modern python and github actions by @purificant in #3
  • chore: upgrade httpx to 0.28.1 by @mulka in #5

New Contributors

Thank you both!

Full Changelog: v0.2.4...v0.2.5

v0.2.4

16 Apr 20:32

Choose a tag to compare

This is a patch release with one fix for the PyPI project page.

Fixed
The Postmark Python SDK logo was broken on the PyPI project page due to a relative image path in the README. It now uses an absolute URL and renders correctly.

Full changelog: 0.2.3 → 0.2.4

v0.2.0

06 Mar 21:28

Choose a tag to compare

[0.2.0] - 2026-03-06

Added

  • User-Agent header sent on every request in the format Postmark.PY - {version} (Python/{major}.{minor}.{micro}).
  • X-Request-Id from Postmark responses is now stored as request_id on all PostmarkAPIException subclasses and included in the exception __str__ output when present — enabling direct support escalations.
  • request_id included in structured log records for both successful requests and API errors.
  • Structured extra={} fields on all log calls (method, endpoint, status_code, duration_ms, error_code, postmark_message, request_id) for compatibility with Datadog, Splunk, and other log aggregators.
  • duration_ms timing on every request log record (success, error, and timeout).

Changed

  • Upgraded pytest-asyncio to ^1.0.0 and set asyncio_mode = "auto" to eliminate deprecation warnings on Python 3.12+.