---
title: "Preview a report"
method: POST
path: "/prospecting-reports/preview"
tags: ["Prospecting Reports"]
---

# Preview a report

`POST /prospecting-reports/preview`

## Request

- Base URL: `https://api.palisade.email`
- URL: `https://api.palisade.email/prospecting-reports/preview`
- Auth: one of:
  - HTTP bearer
  - HTTP basic

Runs the same audit as POST /prospecting-reports and returns the report itself rather than a link to a hosted PDF. `format: "json"` returns the report as data -- every score, finding and figure the PDF prints, with the wording resolved for the requested `language` -- so you can render it in your own layout. `format: "html"` returns the same report as a complete, self-contained HTML document, styled by Palisade and carrying your organization's name, logo and contact details. Nothing is stored and no link is minted, so use this for a page rendered on demand and POST /prospecting-reports when the recipient needs a PDF they can keep.

## Headers

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

## Request body

- object
  - `generated_for` string, required
  - `domains` string[], required
  - `language` 'en' | 'fr'
  - `include_organization_info` boolean
  - `include_bimi` boolean
  - `include_dns_records` boolean
  - `include_potential_loss` boolean
  - `theme` 'light' | 'dark': The skin the report is drawn in: light on paper, or dark on a near-black ground.
  - `currency` 'USD' | 'CAD' | 'EUR' | 'GBP' | 'AUD': The currency every price band in the report is printed in.
  - `deadline_weeks` integer: How many weeks the plan and closing pages give the reader to fix what the report found.
  - `format` 'json' | 'html': json returns the report as data; html returns the same report as a complete, self-contained HTML document.

## Response `200`

The report as data, or as an HTML document when format is "html"

- ProspectingReportContent
  - `language` 'en' | 'fr', required
  - `theme` 'light' | 'dark', required: The skin the report is drawn in: light on paper, or dark on a near-black ground.
  - `currency` 'USD' | 'CAD' | 'EUR' | 'GBP' | 'AUD', required: The currency every price band in the report is printed in.
  - `deadline_weeks` integer, required: How many weeks the plan and closing pages give the reader to fix what the report found.
  - `generated_at` string, date-time, required
  - `generated_by` string, required: Your organization name, as the report signs itself.
  - `generated_for` string, required
  - `organization_logo` string, nullable, required
  - `contact_info` object, required
    - `email` string, required
    - `phone` string, required
    - `website` string, required
  - `options` object, required
    - `include_bimi` boolean, required
    - `include_dns_records` boolean, required
    - `include_potential_loss` boolean, required
  - `cover` ProspectingReportCover, required
    - `year` integer, required
    - `domains_analyzed` string, required
    - `date` string, required: The generated date as the report prints it, in the requested language.
    - `verdict_key` 'one' | 'some' | 'all' | 'partial_one' | 'partial' | 'none', required
    - `verdict` string, required
    - `verdict_detail` string, required
    - `high_risk_findings` integer, required
    - `medium_findings` integer, required
    - `exposed_domains` integer, required
    - `protected_domains` integer, required
    - `high_risk_label` string, nullable, required
    - `medium_label` string, nullable, required
    - `protected_label` string, nullable, required
    - `rows` ProspectingReportCoverRow[], required: Worst score first, capped at the number of rows the cover prints.
      - `url` string, required
      - `logo` string, nullable, required
      - `score` integer, required
      - `score_band` 'critical' | 'bad' | 'good' | 'great', required
      - `risk_level` 'critical' | 'high' | 'medium' | 'low', required
      - `is_exposed` boolean, required
      - `is_fully_protected` boolean, required
      - `findings` integer, required: How many of the domain's checks are issues rather than passes.
      - `findings_label` string, required
      - `score_label` string, required
      - `chip` object, required
        - `type` 'pass' | 'fail' | 'soft-warn' | 'info', required
        - `label` string, nullable, required
    - `more_domains` string, nullable, required: Set when the report holds more domains than the cover lists.
  - `domains` ProspectingReportDomain[], required
    - `url` string, required
    - `score` integer, required
    - `score_band` 'critical' | 'bad' | 'good' | 'great', required
    - `risk_level` 'critical' | 'high' | 'medium' | 'low', required
    - `risk_level_label` string, nullable, required
    - `percentile` number, required: Deprecated. A value read off a fixed curve, not a comparison with the scores of other domains, so it does not say how this domain ranks. The report stopped printing it for that reason; it is kept only so existing callers do not break. Do not show it to a reader as a ranking.
    - `logo` string, nullable, required
    - `dmarc` object, required
      - `policy` string, required: none, quarantine, reject, or unknown when the domain publishes no DMARC record.
      - `pct` number, nullable, required
      - `spoofing_risk` 'high' | 'medium' | 'low' | 'unknown', required
      - `spoofing_risk_label` string, nullable, required
      - `is_fully_protected` boolean, required: True only at reject with pct=100.
    - `risk_summary` ProspectingReportRiskSummary, required
      - `high_risk_items` integer, required
      - `medium_risk_items` integer, required
      - `by_category` object, required
        - `security` object, required
          - `high` integer, required
          - `medium` integer, required
        - `deliverability` object, required
          - `high` integer, required
          - `medium` integer, required
    - `findings` ProspectingReportFinding[], required: Every check, including the ones that pass.
      - `key` string, required: Which check this is: mx, spf, dmarc, bimi.
      - `status` string, required: pass, warn, fail or error.
      - `status_label` string, nullable, required: The risk word the report prints for this status, in `language`.
      - `risk_category` string, nullable, required: security or deliverability.
      - `risk_category_label` string, nullable, required
      - `message` string, nullable, required: The finding as the report states it, in `language`.
    - `potential_loss` ProspectingReportPotentialLoss, nullable, required: Null when include_potential_loss is false.
      - `revenue_loss_pct` number, required
      - `revenue_loss_display` string, required: The figure as the report prints it, which floors a perfect score at "<10%".
      - `financial_loss` number, required
      - `financial_loss_display` string, required
    - `dns_records` object, nullable, required: The records as published. Null unless include_dns_records is true.
      - `dmarc` string[], required
      - `spf` string[], required
      - `mx` string[], required
      - `bimi` string[], required
    - `senders` object[], required: The services the domain's SPF record authorises to send as it. Empty when it publishes none.
      - `name` string, required: The catalogue's name for the service, or the SPF host itself when the catalogue has no entry.
      - `include` string, required: The host as it stands in the domain's own SPF record.
      - `logo` string, nullable, required
      - `dkim` 'signed' | 'missing' | 'unknown', required: Whether a DKIM key for this service was found on the domain. unknown when the service publishes per-customer selectors, which cannot be enumerated, or when it publishes none the check knows.
      - `mail_kind` 'invoices' | 'marketing' | 'sales' | 'support' | 'notifications' | 'transactional' | 'payroll' | 'mailbox' | 'security-gateway' | 'relay', nullable, required: What kind of mail the service carries for the domain, from the curated catalogue. Null when unknown.
  - `domains_without_audit` string[], required: Domains whose nameservers returned nothing usable, so the report has no page for them.

---

[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/37b4ae5a7766?raw)
