---
title: "The saved ads that matched a case's rule"
method: GET
path: "/projects/{project_id}/policy-cases/{case_id}/evidence"
tags: ["Policy"]
---

# The saved ads that matched a case's rule

`GET /projects/{project_id}/policy-cases/{case_id}/evidence`

## Request

- Base URL: `https://adslighthouse.com/api/v1`
- URL: `https://adslighthouse.com/api/v1/projects/{project_id}/policy-cases/{case_id}/evidence`
- Auth: HTTP bearer

Lists the saved ads recorded on a case, newest first, with when and where each was observed (search term, engine, device, operating system, country, location), the ad copy, destination URL and what matched. Check the observation context and matched value as part of human review; a matching saved ad does not establish that a platform policy was violated. A match is a lead to review: an observation shows an ad was displayed for a search at a moment, not proof of a violation, spend or a purchased keyword.

## 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.
- `case_id` string, required: The case id from list_policy_cases.

## 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`

The saved ads that matched a case's rule

- object
  - `total` integer, required
  - `data` object[], required
    - `observed_at` string, required
    - `query` string, required
    - `engine` 'google' | 'bing', required
    - `device` 'desktop' | 'mobile', required
    - `os` string, nullable, required
    - `country` string, required
    - `location` string, nullable, required
    - `position` integer, required
    - `advertiser_domain` string, required
    - `title` string, nullable, required
    - `description` string, nullable, required
    - `display_url` string, nullable, required
    - `url` string, nullable, required
    - `placement` 'top' | 'bottom', nullable, required: Where a Google ad was shown on the page; null for Bing and older observations.
    - `assets` union[], nullable, required: Ad assets shown with the ad (sitelinks, phone, promotion, price, image, extra description rows). null: not captured (older observations, imported studies); []: captured, none shown.
      - union
        - object
          - `kind` 'sitelink', required
          - `title` string, nullable, required
          - `url` string, nullable, required
          - `description` string, nullable, required
        - object
          - `kind` 'phone', required
          - `number` string, required
        - object
          - `kind` 'promotion', required
          - `text` string, required
          - `url` string, nullable, required
        - object
          - `kind` 'price', required
          - `displayed` string, nullable, required
          - `current` number, nullable, required
          - `regular` number, nullable, required
          - `max_value` number, nullable, required
          - `currency` string, nullable, required: ISO 4217 code when reported.
          - `is_range` boolean, nullable, required
        - object: The ad showed an image; it is not stored.
          - `kind` 'image', required
        - object
          - `kind` 'description_line', required
          - `text` string, required
    - `matched` string, required: What matched: terms, a code, a destination host, a position or an affiliate ID.
    - `paid_results_path` string, required: App path of the saved ads for this advertiser, market and day.
    - `screenshot` object, nullable, required: Picture of the results page where this ad (same domain, title and description) first appeared in the project; null when none was stored. Evidence of that page, not proof of spend.
      - `id` string, required: Download it over REST from /projects/{project_id}/screenshots/{id}.
      - `exact` boolean, required: true: the results page this ad was found on. false: only on older pictures, taken from a new load of the same search moments later, which may show different ads.
      - `captured_at` string, required
      - `app_url` string, required: Opens the picture in the app for a signed-in member of the project's account.
  - `next_cursor` string, nullable, required
  - `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)
