---
title: "Firm Drift"
method: GET
path: "/api/adviser/drift"
tags: ["Adviser"]
---

# Firm Drift

`GET /api/adviser/drift`

## Request

- Base URL: `https://api.earmarkiq.app` (the document declares no server; this is the origin it was published from)
- URL: `https://api.earmarkiq.app/api/adviser/drift`
- Auth: HTTP bearer

Who across the whole book needs attention.

AUDITED PER CLIENT, not once for the firm. This endpoint reads every
consented client's transactions, so every one of them gets a row in
their own access log. One row per scan per client is the honest count —
it is what actually happened — which is why the scan is an on-demand
call rather than something a dashboard polls.

## Query parameters

- `as_of` string, date, nullable
- `only_with_alerts` boolean: Return only clients with at least one alert. The whole point is a shortlist; set false to see the book with its quiet clients too.

## Response `200`

Successful Response

- FirmDriftResponse
  - `firm_name` string, required
  - `scanned_at` string, date-time, required
  - `period_label` string, required
  - `clients_scanned` integer, required
  - `clients_with_alerts` integer, required
  - `total_alerts` integer, required
  - `clients` FirmDriftClient[], required
    - `user_id` string, required
    - `client_label` string, required
    - `alert_count` integer, required
    - `highest_severity` string, nullable, required
    - `alerts` DriftAlertOut[], required
      - `rule` string, required
      - `severity` string, required
      - `subject` string, required
      - `headline` string, required
      - `detail` string, required
      - `threshold` string, required
      - `current` number, required
      - `prior` number, nullable, required
      - `change_abs` number, nullable, required
      - `change_pct` number, nullable, required
      - `period_label` string, required
      - `scope_required` string, required
      - `fingerprint` string, required
  - `rules` RuleDescription[], required
    - `rule` string, required
    - `name` string, required
    - `threshold` string, required
    - `rationale` string, required
    - `scope_required` string, required
  - `derivation` string, required

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/earmarkiq/apis/earmark-api.md) · [All operations](https://skmtc.dev/earmarkiq/apis/earmark-api/llms.txt) · [OpenAPI document](https://skmtc.dev/earmarkiq/apis/earmark-api/revisions/4a2c41907105?raw)
