---
title: "Generate the Traffic Quality PDF report"
description: "Generate a placement-day's PDF report from the Traffic Quality grid, read what page one and the AI analyst notes hold, know which key and allowance the notes run on, and add the notes later to a report made without them."
type: "howto"
audience: [admin, network-manager]
keywords: [traffic quality, PDF report, analyst notes, Add AI notes, Generate report, Download PDF, message for the publisher, AI allowance, Anthropic key, report language, traffic_quality_analyze, invalid traffic evidence]
ui_path: "Account → Traffic Quality → Report"
---

Fetch the complete documentation index at: https://epom.com/ad-server/docs/llms.txt. Use this file to discover all available pages before exploring further. Append .md to any documentation page URL to get its markdown version.

# Generate the Traffic Quality PDF report

The PDF report is the evidence you send a publisher: page one is the ad server's own verdict on
the placement-day, exactly as the **Details** panel shows it, and AI-written analyst notes follow
it with a neutral message for the publisher. A report is made once per placement and day and
kept, so a colleague who downloads it later gets the same file. The verdict itself and how to read
the page are on [Read the Traffic Quality report](https://epom.com/ad-server/docs/guides/admin/traffic-quality-report.md).

**Example.** The *Sports Daily › sidebar › 300×250* placement reads **Act** on yesterday's scan
with 34 % invalid traffic and $41.20 of its $132.80 gross paid for invalid impressions. You click
**Generate report** on the row; when the report is ready the page offers **Download PDF**, and
the analyst notes end with a message you paste into your email to the publisher.

## Typical scenarios

| You want | Do | Where |
|---|---|---|
| Get something you can send the publisher | **Generate report** on the row, then **Download PDF**: page one is the verdict, the analyst notes end with a neutral message for the publisher | The **Report** column |
| Add the analyst notes to a report made while no key was at hand | **Add AI notes** on the row, once there is a key to run them on and allowance left this month | The **Report** column |
| Let an AI assistant draw its own conclusions without paying for the notes | Run the deep analysis on its own over the API, without the AI findings and the PDF | [Over the API](https://epom.com/ad-server/docs/guides/admin/traffic-quality-report.md#over-the-api) |

## Step by step

1. For evidence, click **Generate report** on the row. The button becomes *Generating...*; the
   page polls every 30 seconds and, when the report is ready, asks *Report for placement N is
   ready. Download now?* and then shows **Download PDF** on the row. Rows already generating when
   you open the page keep polling. The report is made once per placement and day and kept:
   downloading it again, or anyone else downloading it, reuses it. A report made without the
   analyst notes shows **Add AI notes** beside **Download PDF** once there is a key to run them
   on and your monthly AI allowance is not spent.

**The PDF report.** Page one is the ad server's own verdict, as the **Details** panel shows it:
the status, the invalid share with its likely range and split, the facts, why, what to do and the
context. *Analyst notes* written by AI follow it and never replace it: a headline, whether the AI
agrees with the status — it may say the status *may overstate* or *may understate* the problem,
and why — its findings, up to three recommendations and a neutral **message for the publisher**
you can paste into an email. The raw data is an appendix on a page of its own; once the deep
analysis has run it also lists the day's refused and flagged events by reason, with refusals
logged without a reason as *Reason not recorded*. The report is written in the language of the
user who asked for it when the PDF can set that script — English, German, Spanish, French,
Portuguese, Indonesian and Ukrainian; a user on Arabic, Hebrew, Urdu, Hindi, Bengali, Chinese,
Japanese or Korean gets it in English. A stored report keeps the language it was written in: a
colleague on another language downloads the same PDF rather than paying for a second write-up.

**Who pays for the analyst notes.** They are one model call per report, made on the key of
whoever asks for the report, the way the
[AI assistant](https://epom.com/ad-server/docs/guides/collaboration/ai-assistant.md#which-key-it-runs-on) picks it: their own
Anthropic key, else the network's, else the platform's while the network's billing plan switches
it on — then billed to the network at the list price × the plan's AI price multiplier, and listed
as *Traffic Quality report* in the AI usage report on the
[Ad Server Fees](https://epom.com/ad-server/docs/guides/admin/finances-and-billing.md#read-your-ad-server-fees) page. They count against
the monthly AI allowance of whoever asks for the report, the same one their AI assistant counts
against. With none of these keys, or with that allowance spent this month, the report is still
made, without the analyst notes and without a model call, and a note above the grid says why
(*You have reached your monthly AI assistant budget* for the allowance); the notes can be added to
it later with **Add AI notes**, once there is a key and allowance left. Until release 155 the
notes always ran on Epom's key, free of charge.

## Caveats and exceptions

- **A report without notes stays requestable.** A report made while no key was at hand — or
  whose AI call failed — has no analyst notes. Once a key is available to whoever asks, **Add AI
  notes** on the row (or the API and the assistant's `traffic_quality_analyze` with `report:
  true`) writes them: only the notes are a new, billed model call; the stored deep analysis and
  figures are reused, and the PDF is rewritten with the notes. Without a key the row offers only
  **Download PDF**. A report that has its notes is final and is never paid for again.
- **PDF generation gives up silently after about 20 minutes** (40 polls, 30 seconds apart) with
  no error. If a row never turns ready, generate it again rather than waiting. Only one report is
  built at a time network-wide.
- **A row with a report keeps its numbers.** A day that is scored again refreshes its rows, except
  rows that already have a PDF report: they keep the figures the report was built from.

The caveats that apply to every Traffic Quality figure are on
[Read the Traffic Quality report](https://epom.com/ad-server/docs/guides/admin/traffic-quality-report.md#caveats-and-exceptions).

## Not working?

The full list of causes is on
[Read the Traffic Quality report](https://epom.com/ad-server/docs/guides/admin/traffic-quality-report.md#not-working); the ones about the
report itself:

| Symptom | Check | Where |
|---|---|---|
| **Generate report** never turns into **Download PDF** | Generation gives up silently after about 20 minutes; only one report is built at a time. Generate it again. | The row |
| The report has no analyst notes, and a note above the grid says why | No key (own, network, or platform with the plan's AI switched on), or your monthly AI allowance is spent. **Add AI notes** appears once a key and allowance are available. | [AI assistant keys](https://epom.com/ad-server/docs/guides/collaboration/ai-assistant.md#which-key-it-runs-on); your monthly limit |

## Reference

The grants and the key the notes need are in
[Permissions](https://epom.com/ad-server/docs/guides/admin/traffic-quality-report.md#permissions); the REST endpoints and the assistant's
`traffic_quality_analyze` tool, which also writes the notes onto a report that has none, are
under [Over the API](https://epom.com/ad-server/docs/guides/admin/traffic-quality-report.md#over-the-api).

## Related

- [Read the Traffic Quality report](https://epom.com/ad-server/docs/guides/admin/traffic-quality-report.md)
- [Read the Traffic Quality cards, rows and Details](https://epom.com/ad-server/docs/guides/admin/traffic-quality-report-cards-and-details.md)
- [AI assistant](https://epom.com/ad-server/docs/guides/collaboration/ai-assistant.md) — which key the analyst notes run on
- [Billing, ad-server fees and referral billing](https://epom.com/ad-server/docs/guides/admin/finances-and-billing.md)