Reputation

Monitor sending domain health (DKIM, SPF, DMARC), sending reputation metrics, and AWS SES Virtual Deliverability Manager (VDM) findings. Self-hosted edition uses domain-level checks; cloud edition adds per-workspace SES tenant reputation.

Posthawk tracks two layers of reputation:

1. Domain health — DNS-level checks (DKIM, SPF, DMARC) per domain
2. SES reputation metrics — bounce rate, complaint rate, delivery rate computed from email_logs over the trailing window

Cloud edition also tracks SES Virtual Deliverability Manager (VDM) findings per-workspace tenant. See the "Tenant Reputation (Cloud)" section for tenant-specific endpoints.

Sync endpoints trigger an immediate refresh of cached metrics. Useful right after domain DNS changes or after a large send to see updated rates.

GET/reputation/domains

Get health status (DKIM, SPF, DMARC) for all sending domains.

Authorizations

Authorizationstring · headerrequired

Bearer authentication header of the form Bearer <token>, where <token> is your JWT.

GET /reputation/domains
curl https://api.posthawk.dev/reputation/domains \
  -H "Authorization: Bearer your_jwt_token"
Response
{
  "success": true,
  "data": [
    {
      "domain": "yourdomain.com",
      "dkim_status": "verified",
      "spf_status": "verified",
      "dmarc_status": "verified",
      "last_checked_at": "2026-04-28T10:00:00Z"
    }
  ]
}
GET/reputation/metrics

Get computed reputation metrics over the trailing window. Bounce + complaint rates are what AWS SES uses to gate accounts; warn at >4% bounce / >0.1% complaint.

Authorizations

Authorizationstring · headerrequired

Bearer authentication header of the form Bearer <token>, where <token> is your JWT.

GET /reputation/metrics
curl https://api.posthawk.dev/reputation/metrics \
  -H "Authorization: Bearer your_jwt_token"
Response
{
  "success": true,
  "data": {
    "bounce_rate": 0.02,
    "complaint_rate": 0.001,
    "delivery_rate": 0.98,
    "open_rate": 0.45,
    "computed_at": "2026-04-28T10:00:00Z"
  }
}
POST/reputation/sync

Run both domain-health and metrics syncs. Returns when both complete.

Authorizations

Authorizationstring · headerrequired

Bearer authentication header of the form Bearer <token>, where <token> is your JWT.

POST /reputation/sync
curl -X POST https://api.posthawk.dev/reputation/sync \
  -H "Authorization: Bearer your_jwt_token"
Response
{
  "success": true,
  "data": {
    "domains_synced": 3,
    "metrics_window_hours": 24,
    "synced_at": "2026-04-28T10:00:00Z"
  }
}
POST/reputation/sync/domains

Re-check DKIM/SPF/DMARC for every domain in the workspace.

Authorizations

Authorizationstring · headerrequired

Bearer authentication header of the form Bearer <token>, where <token> is your JWT.

POST /reputation/sync/domains
curl -X POST https://api.posthawk.dev/reputation/sync/domains \
  -H "Authorization: Bearer your_jwt_token"
Response
{
  "success": true,
  "data": { "domains_synced": 3, "synced_at": "2026-04-28T10:00:00Z" }
}
POST/reputation/sync/metrics

Recompute bounce/complaint/delivery/open rates from email_logs. Used by the dashboard "Refresh" button.

Authorizations

Authorizationstring · headerrequired

Bearer authentication header of the form Bearer <token>, where <token> is your JWT.

POST /reputation/sync/metrics
curl -X POST https://api.posthawk.dev/reputation/sync/metrics \
  -H "Authorization: Bearer your_jwt_token"
Response
{
  "success": true,
  "data": {
    "bounce_rate": 0.018,
    "complaint_rate": 0.0008,
    "delivery_rate": 0.982,
    "synced_at": "2026-04-28T10:00:00Z"
  }
}