---
title: "Get report details"
method: GET
path: "/api/v1/reports/{id}"
tags: ["Reports"]
---

# Get report details

`GET /api/v1/reports/{id}`

## Request

- Base URL: `https://api.dmarc-examiner.com`
- URL: `https://api.dmarc-examiner.com/api/v1/reports/{id}`
- Auth: API key in header `X-API-Key`

Returns a single report with all individual records and geolocation data.

## Path parameters

- `id` string, uuid, required

## Response `200`

Report with records

- object
  - `id` string, uuid, required
  - `domain_id` string, uuid, required
  - `domain_name` string, nullable
  - `domain` object
    - `id` string, uuid, required
    - `name` string, required
  - `external_report_id` string, required: Report ID assigned by the reporting organization.
  - `reporter_org_name` string, required: Name of the organization that generated the report.
  - `reporter_email` string, email, required: Contact email of the reporting organization.
  - `date_range_begin` string, date-time, required: Start of the reporting period (ISO 8601).
  - `date_range_end` string, date-time, required: End of the reporting period (ISO 8601).
  - `policy_domain` string, required
  - `policy_p` 'none' | 'quarantine' | 'reject', required: DMARC policy for the domain.
  - `policy_sp` 'none' | 'quarantine' | 'reject', nullable: DMARC policy for subdomains. Falls back to `policy_p` when null.
  - `policy_adkim` 'r' | 's': DKIM alignment mode (r=relaxed, s=strict).
  - `policy_aspf` 'r' | 's': SPF alignment mode (r=relaxed, s=strict).
  - `policy_pct` integer, required: Percentage of messages to which the policy applies.
  - `total_records` integer, required: Total number of email messages in the report.
  - `pass_rate` number, float, required: Percentage of messages passing both DKIM and SPF (0-100, 1 decimal).
  - `received_at` string, date-time, required
  - `processed_at` string, date-time, nullable
  - `created_at` string, date-time, required
  - `records` ReportRecord[], required
    - `id` string, uuid, required
    - `source_ip` string, required: IP address of the sending mail server. May be IPv4 or IPv6.
    - `count` integer, required: Number of messages from this source with these results.
    - `disposition` 'none' | 'quarantine' | 'reject', required: Action applied to the message.
    - `dkim_result` 'none' | 'pass' | 'fail' | 'policy' | 'neutral' | 'temperror' | 'permerror', required: DKIM authentication result, as defined in RFC 7601 §2.7.1.
    - `spf_result` 'none' | 'neutral' | 'pass' | 'fail' | 'softfail' | 'temperror' | 'permerror', required: SPF authentication result, as defined in RFC 7601 §2.7.2.
    - `header_from` string, required: The From header domain.
    - `envelope_from` string, nullable: The MAIL FROM domain.
    - `dkim_domain` string, nullable: Domain used for DKIM signing.
    - `spf_domain` string, nullable: Domain used for SPF check.
    - `is_passing` boolean, required: True if both DKIM and SPF pass.
    - `geo` GeoLocation, nullable: Geolocation data for the source IP. Null if lookup failed.
      - `country` string
      - `country_code` string: ISO 3166-1 alpha-2 code. Returns "XX" for private IPs.
      - `org` string: ISP or organization name.
      - `asn` integer, nullable
      - `cidr` string, nullable
    - `created_at` string, date-time, required

## Other responses

- `401`: Authentication failed. Two shapes are possible depending on cause: - **Invalid or revoked key** — body is `{"message": "..."}` only. - **Missing `X-API-Key` header** — body adds an `error: "unauthorized"` machine-readable code. Clients should treat both as the same outcome and read `message` for display.
- `403`: The organization's current plan does not include the feature required by this endpoint (e.g. `apiAccess`, `forensicReports`, `advancedAlerts`). Distinct from `PlanLimitExceeded` (HTTP 402), which signals a *quota* exhausted on a feature the plan does include. If a customer downgrades to Free, all `/api/v1/*` requests will start returning this response.
- `404`: Resource not found.
- `429`: Rate limit exceeded.
- `500`: Internal server error.

---

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