---
title: "A project's PDF reports, newest first"
method: GET
path: "/projects/{project_id}/reports"
tags: ["Reports"]
---

# A project's PDF reports, newest first

`GET /projects/{project_id}/reports`

## Request

- Base URL: `https://adslighthouse.com/api/v1`
- URL: `https://adslighthouse.com/api/v1/projects/{project_id}/reports`
- Auth: HTTP bearer

Lists a project's PDF reports with their status, window, filters and expiry, newest first. Expired reports stay listed without a file.

## Path parameters

- `project_id` string, required: The project: its id, its brand domain (for example nike.example) or its exact project or brand name. Unknown or ambiguous references return not_found; call list_projects then.

## Query parameters

- `limit` integer: Items per page, 1 to 200.
- `cursor` string: The next_cursor value from the previous page. Omit it for the first page.

## Response `200`

A project's PDF reports, newest first

- object
  - `data` object[], required
    - `id` string, required
    - `project_id` string, required
    - `status` 'queued' | 'running' | 'ready' | 'failed' | 'expired', required: queued and running: still generating. ready: download it. failed: see error. expired: the file was deleted; request it again.
    - `error` object, nullable, required
      - `code` 'too_large' | 'unavailable' | 'generation_failed', required
      - `message` string, required
    - `window` object, nullable, required: The local calendar days the report covers, in its time zone.
      - `from` string, required
      - `to` string, required
      - `time_zone` string, required
    - `filters` object, required: Applied filters by dimension; empty when every observation is included.
      - `engine` string[]
      - `device` string[]
      - `os` string[]
      - `country` string[]
      - `location` string[]
    - `requested_at` string, required
    - `completed_at` string, nullable, required
    - `expires_at` string, required: When a ready report's file is deleted, 7 days after it was generated.
    - `page_count` integer, nullable, required
    - `size_bytes` integer, nullable, required
    - `branding` object, required: The branding the file was requested with.
      - `kind` 'default' | 'agency', required
      - `agency_name` string, nullable, required
      - `prepared_for` string, nullable, required
  - `next_cursor` string, nullable, required: Pass as cursor for the next page.
  - `request_id` string

## Other responses

- `400`: Invalid parameters, cursor or body.
- `401`: Missing, invalid, expired or revoked credential.
- `403`: The credential lacks the write scope, the plan does not include the API, or the allowance is used up.
- `404`: Unknown project, keyword or run in this account.
- `409`: The idempotency key was already used for a different request.
- `429`: Rate limit reached. Retry after the Retry-After seconds.
- `503`: The requested service or file is temporarily unavailable.

---

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