---
title: "List DMARC senders"
method: GET
path: "/domains/{domainId}/reports/senders"
tags: ["Reports"]
---

# List DMARC senders

`GET /domains/{domainId}/reports/senders`

## Request

- Base URL: `https://api.palisade.email`
- URL: `https://api.palisade.email/domains/{domainId}/reports/senders`
- Auth: one of:
  - HTTP bearer
  - HTTP basic

## Path parameters

- `domainId` string, uuid, required

## Query parameters

- `period` 'last_7_days' | 'last_14_days' | 'last_30_days': Reporting window, ending yesterday. Defaults to last_7_days.
- `limit` integer: How many senders to return, highest volume first. Maximum 20.

## Headers

- `Palisade-Version` '2025-04-30' | 'unstable', required

## Response `200`

Success

- DmarcSenders
  - `domain_id` string, uuid, required
  - `domain` string, required
  - `date_from` string, required
  - `date_to` string, required
  - `volume` integer, required: Total windowed volume across every sender, not just the ones returned.
  - `total_senders` integer, required: Distinct senders seen in the window.
  - `truncated` boolean, required: True when total_senders exceeds the returned list.
  - `senders` DmarcSender[], required
    - `source_alias` string, required: Stable identifier for the sending source: a Palisade source id when the sender is recognised, otherwise the sending base domain, or "unknown". This is the key that links a sender to a task.
    - `name` string, required: Display name when the source is recognised, otherwise source_alias.
    - `source_id` string, uuid, nullable, required
    - `is_known` boolean, required: False when DMARC reports show this sender but Palisade cannot identify it.
    - `sending_domains` string[], required: The header-from domains this source sent as, highest volume first, capped at 5.
    - `volume` integer, required
    - `volume_share_pct` number, required: Share of the domain's total windowed volume this sender accounts for.
    - `dmarc_pass_pct` number, required
    - `spf_pass_pct` number, required
    - `dkim_pass_pct` number, required
    - `totals` object, required: Message counts by compliance bucket. They sum to volume.
      - `compliant` integer, required: Messages that passed DMARC alignment.
      - `non_compliant` integer, required: Messages that failed DMARC. This is the number to drive to zero.
      - `forwarded` integer, required: Messages the compliance categorizer attributed to forwarding.
      - `unknown` integer, required: Messages from a sending source Palisade could not identify.
      - `undetermined` integer, required: Messages whose compliance is undetermined, including reports the categorizer has not processed yet.
    - `is_failing` boolean, required: True when the sender has non-compliant volume in the window.
    - `open_task_id` string, uuid, nullable, required: An open or pending remediation task covering this sender, when one exists. Call GET /tasks/{id}?expand[]=instructions for the fix rather than improvising one.
    - `open_task_type` 'cleanup_spf_record' | 'confirm_source' | 'lockdown_domain' | 'reduce_spf_lookups' | 'set_up_dmarc_record' | 'source_failing_dkim' | 'source_failing_spf' | 'set_up_mx_record' | 'set_up_spf_record' | 'update_dmarc_record' | 'update_ttl' | 'set_up_mta_sts' | 'set_up_tls_rpt' | 'resolve_dns_conflict' | 'review_unused_sender' | 'cleanup_sender_records' | 'fix_mx_certificate' | 'renew_vmc_certificate' | 'dkim_selector_not_imported' | 'set_up_bimi', nullable, required
  - `next_step` string, required

---

[API](https://skmtc.dev/palisade/apis/palisade-api.md) · [All operations](https://skmtc.dev/palisade/apis/palisade-api/llms.txt) · [OpenAPI document](https://skmtc.dev/palisade/apis/palisade-api/revisions/aabc77d12934?raw)
