---
title: "Your affiliate IDs seen behind ads that use your brand"
method: GET
path: "/projects/{project_id}/affiliate-findings"
tags: ["Reports"]
---

# Your affiliate IDs seen behind ads that use your brand

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

## Request

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

Lists the project's affiliate IDs found in destination URLs of ads whose copy uses the brand, with case status, networks, advertiser domains and example URLs. Use these scoped findings to prioritize partner review. Match the returned keyword text and market against list_keywords to resolve its keyword_id, then call list_keyword_ads with that keyword_id, view=ads, one advertiser domain from the finding, and the same date window and observation filters. After the team's review, record its outcome with set_affiliate_case_status. Requires an affiliate URL parameter in project settings; configured is false otherwise and the list is empty. A finding is a lead to review with the partner, not proof of a violation.

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

- `status` 'new' | 'in_progress' | 'resolved' | 'ignored': Only cases with this status.
- `range` '7d' | '14d' | '30d' | '12m' | 'custom': Window ending today: 7d, 14d, 30d (default) or 12m. Use custom with from and to for fixed dates.
- `from` string: First local day, YYYY-MM-DD (custom range).
- `to` string: Last local day, YYYY-MM-DD, included in full (custom range).
- `time_zone` string: IANA time zone for day boundaries, such as America/New_York. Defaults to the time zone of the person the credential acts for.
- `engine` union: Search engine, or a list of engines combined with OR.
  - 'google' | 'bing'
  - string[]
- `device` union: Device, or a list combined with OR.
  - 'desktop' | 'mobile'
  - string[]
- `os` union: Operating system. unspecified matches checks that did not pin one. Must fit the chosen device.
  - 'windows' | 'macos' | 'android' | 'ios' | 'unspecified'
  - string[]
- `country` union: ISO 3166-1 alpha-2 country code such as US, or a list.
  - string
  - string[]
- `location` union: Saved location key: code:<location code>, name:<label> or country:<ISO code>. get_project_details lists the keys that have data.
  - string
  - string[]
- `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`

Your affiliate IDs seen behind ads that use your brand

- object
  - `data` object[], required
    - `affiliate_id` string, required: The identifier exactly as observed in the ad link.
    - `name` string, nullable, required: The name registered for this ID in project settings.
    - `status` 'new' | 'in_progress' | 'resolved' | 'ignored', required
    - `ads_observed` integer, required
    - `networks` string[], required
    - `advertiser_domains` string[], required
    - `countries` string[], required
    - `keywords` string[], required
    - `brand_terms_in_copy` string[], required
    - `example_urls` string[], required: Up to five destination URLs, as observed.
    - `first_seen` string, required
    - `last_seen` string, required
  - `next_cursor` string, nullable, required: Pass as cursor to get the next page; null on the last page.
  - `configured` boolean, required
  - `note` string, nullable, required: A caution about sample size or configuration to repeat when reporting results.
  - `window` object, required
    - `from` string, required: First local day included, YYYY-MM-DD.
    - `to` string, required: Last local day included, YYYY-MM-DD.
    - `time_zone` string, required
    - `start` string, required: Inclusive start instant, ISO 8601.
    - `end` string, required: Exclusive end instant, ISO 8601.
  - `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)
