---
title: "One non-compliant affiliate case with its timeline"
method: GET
path: "/projects/{project_id}/affiliate-findings/{affiliate_id}/case"
tags: ["Case actions"]
---

# One non-compliant affiliate case with its timeline

`GET /projects/{project_id}/affiliate-findings/{affiliate_id}/case`

## Request

- Base URL: `https://adslighthouse.com/api/v1`
- URL: `https://adslighthouse.com/api/v1/projects/{project_id}/affiliate-findings/{affiliate_id}/case`
- Auth: HTTP bearer

Returns one non-compliant affiliate case: the affiliate ID and its directory name, advertiser domains, status, first and last seen, the number of ads seen, the complaints recorded and the timeline (status changes, notes, complaints filed and their outcomes, messages sent), oldest first. An observation shows an ad was displayed for a search at a moment; it does not prove a purchased keyword, spend or infringement.

## 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.
- `affiliate_id` string, required: The affiliate ID from list_affiliate_findings, exactly as returned.

## Response `200`

One non-compliant affiliate case with its timeline

- object
  - `affiliate_id` string, required
  - `name` string, nullable, required
  - `advertiser_domains` string[], required
  - `status` 'new' | 'in_progress' | 'resolved' | 'ignored', required
  - `status_label` string, required
  - `first_seen_at` string, required
  - `last_seen_at` string, required
  - `ads_seen` integer, required
  - `app_url` string, required
  - `complaints` object[], required
    - `id` string, required
    - `platform` 'google_ads' | 'microsoft_advertising', required
    - `platform_name` string, required
    - `filed_on` string, required
    - `reference` string, nullable, required
    - `outcome` 'pending' | 'ad_removed' | 'rejected' | 'withdrawn', required
    - `outcome_on` string, nullable, required
  - `timeline` object[], required
    - `id` string, required
    - `kind` string, required
    - `text` string, required
    - `note` string, nullable, required
    - `actor_email` string, nullable, required
    - `created_at` string, 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)
