---
title: "List AI-visibility audit subjects"
method: GET
path: "/v1/trust/audit/subjects"
tags: ["Trust"]
---

# List AI-visibility audit subjects

`GET /v1/trust/audit/subjects`

## Request

- Base URL: `https://api.prod.keyban.io`
- URL: `https://api.prod.keyban.io/v1/trust/audit/subjects`
- Auth: API key in header `X-Api-Key`

List the products tracked as AI-visibility audit subjects for an application: their lifecycle state, T0 (baseline) score, latest score and the delta between the two.

## Query parameters

- `applicationId` string, uuid, required
- `state` 'baseline_pending' | 'active' | 'archived'
- `limit` integer
- `offset` integer

## Response `200`

- PaginatedAuditSubjectsDto
  - `data` object[], required: Page of audit subjects for the requested application, most recently recruited first.
    - `id` string, uuid, required: UUID of the audit subject (the tracked product), distinct from the UUID of the passport it wraps.
    - `passportId` string, uuid, required: UUID of the DPP passport this subject tracks. A passport is tracked by at most one subject.
    - `productName` string, required: Commercial name of the tracked product, read live from the passport (not frozen at recruitment, unlike `category`).
    - `webPageUrl` string, nullable, required: Merchant product page (PDP) the audits crawl, read live from the passport. Never null in practice — a passport without a parsable URL is not recruited — but nullable to survive a passport edited after recruitment.
    - `category` string, required: Product category the subject was classified under at recruitment time (`schemeID:code`), or `uncategorized` when the passport had none. Frozen: later edits to the passport category do not change it. Drives the stratified sampling across the catalogue.
    - `language` string, nullable, required: ISO 639-1 code of the language the frozen audit prompts are written in, resolved at baseline from the merchant page (`<html lang>` cross-checked against the page text, product data as fallback). Null while `baseline_pending`, or when no signal allowed a decision.
    - `state` 'baseline_pending' | 'active' | 'archived', required: Lifecycle state: `baseline_pending` (recruited, T0 audit not captured yet, passport still held back as draft), `active` (T0 captured, passport live, re-audited weekly), `archived` (audits stopped, quota slot freed).
    - `recruitedAt` string, date-time, required: When the product was recruited as an audit subject (at its publish attempt).
    - `baseline` object, nullable, required: The T0 snapshot (first audit, captured before the passport went live). Null while the subject is still `baseline_pending`.
      - `auditedAt` string, date-time, required: When this snapshot was captured (audit run completion time), not when this response was generated.
      - `geo` integer, required: Composite GEO (Generative Engine Optimization) score of this snapshot, the weighted combination of the four axes.
    - `latest` object, nullable, required: Most recent snapshot (the baseline itself, or a later weekly re-audit). Null while the subject is still `baseline_pending`.
      - `auditedAt` string, date-time, required: When this snapshot was captured (audit run completion time), not when this response was generated.
      - `geo` integer, required: Composite GEO (Generative Engine Optimization) score of this snapshot, the weighted combination of the four axes.
    - `delta` integer, nullable, required: `latest.geo` minus `baseline.geo`. Null only when there is no baseline yet — a delta of 0 (no movement since T0) is a real, distinct value.
  - `total` integer, required: Total subjects recruited for the application, independent of `limit`/`offset`.
  - `limit` integer, required: Page size applied (echo of the request).
  - `offset` integer, required: Number of subjects skipped before this page (echo of the request).

---

[API](https://skmtc.dev/keyban/apis/keyban-rest-apis.md) · [All operations](https://skmtc.dev/keyban/apis/keyban-rest-apis/llms.txt) · [OpenAPI document](https://skmtc.dev/keyban/apis/keyban-rest-apis/revisions/0bb79a1da961?raw)
