> For a complete page index of the Captain API documentation, fetch https://docs.filesearch.dev/llms.txt?excludeSpec=true

# Borrower Ledger Divergence

GET https://api.filesearch.dev/v2/datasets/odyssey/credit-analysis/ledger/divergence

Cross-lender mark-divergence alerts for a period, widest spread first —
the sellable early-distress signal. Cursor-paged feed; each page is a bounded
Query over pre-sorted decile partitions (no read-time sort, no Scan).

Reference: https://docs.filesearch.dev/reference/datasets/odyssey/credit-analysis/borrower-ledger/borrower-ledger-divergence

## Request

### Query parameters

- `period` (string, required) — Filing period end YYYY-MM-DD
- `min_confidence` (string, optional, nullable, default: medium) — medium (2 lenders) or high (>=3)
- `page_size` (integer, optional, default: 25)
- `cursor` (string, optional, nullable) — Opaque pagination cursor

## Response

### 200

Successful Response

- `page_size` (integer, required)
- `items` (list of DivergenceAlert, optional)
- `next_cursor` (string, optional, nullable)
- `has_more` (boolean, optional, default: false)
- `_meta` (CoverageMeta, optional) — Dataset provenance / freshness, echoed on every response.

## Errors

### 422 Unprocessable Entity Error

Validation Error

- `error` (string, required) — `VALIDATION_ERROR`.
- `message` (string, required)
- `details` (list of V2DatasetsOdysseyCreditAnalysisLedgerDivergenceGetResponsesContentApplicationJsonSchemaDetailsItems, required) — One entry per invalid field, with `type`, `loc` and `msg`.
- `path` (string, required)

## Types

### DivergenceAlert

A borrower marked materially differently across lenders in one period — the sellable early-distress signal.

- `credit_id` (string, required)
- `period` (string, required)
- `n_lenders` (integer, required)
- `low_mark_pct` (double, required) — Lowest lender mark (%)
- `high_mark_pct` (double, required) — Highest lender mark (%)
- `spread_pts` (double, required) — Divergence between lenders (points)
- `display_name` (string, optional, nullable)
- `low_marker` (string, optional, nullable) — Lender at the low mark
- `high_marker` (string, optional, nullable) — Lender at the high mark
- `confidence` (string, optional, nullable) — high (>=3 lenders) / medium (2 lenders)
- `alert` (string, optional, default: mark_divergence)

### CoverageMeta

Dataset provenance / freshness, echoed on every response.

- `source` (string, optional, default: SEC BDC filings (public domain))
- `coverage` (string, optional, default: BDC filer registry)
- `freshness` (string, optional, default: as-filed 10-Q, ~4wk after quarter-end)
- `citations` (string, optional, default: per-mark SEC URL)

### V2DatasetsOdysseyCreditAnalysisLedgerDivergenceGetResponsesContentApplicationJsonSchemaDetailsItems

## Examples

**Response**

```json
{
  "page_size": 2,
  "items": [
    {
      "credit_id": "cred_b88143025498e3f0",
      "period": "2026-03-31",
      "n_lenders": 3,
      "low_mark_pct": 14.48,
      "high_mark_pct": 139.01,
      "spread_pts": 124.53,
      "display_name": "Isagenix International, LLC",
      "low_marker": "MAIN STREET CAPITAL CORP",
      "high_marker": "CION INVESTMENT CORP",
      "confidence": "high",
      "alert": "mark_divergence"
    },
    {
      "credit_id": "cred_0e74acfc91692058",
      "period": "2026-03-31",
      "n_lenders": 6,
      "low_mark_pct": 5.78,
      "high_mark_pct": 99.63,
      "spread_pts": 93.84,
      "display_name": "KENG  Acquisition, Inc..",
      "low_marker": "NEW MOUNTAIN PRIVATE CREDIT FUND",
      "high_marker": "NUVEEN CHURCHILL DIRECT LENDING CORP.",
      "confidence": "high",
      "alert": "mark_divergence"
    }
  ],
  "next_cursor": "WzAseyJzayI6Ijk5OTkuMDYxNSNjcmVkXzBlNzRhY2ZjOTE2OTIwNTgiLCJwayI6IkRJViMyMDI2LTAzLTMxIzAifV0",
  "has_more": true,
  "_meta": {
    "source": "SEC BDC filings (public domain)",
    "coverage": "BDC filer registry",
    "freshness": "as-filed 10-Q, ~4wk after quarter-end",
    "citations": "per-mark SEC URL"
  }
}
```

**SDK Code**

```python Python REST
import requests

BASE_URL = "https://api.filesearch.dev"
API_KEY = "your_api_key"

headers = {"Authorization": f"Bearer {API_KEY}"}

response = requests.get(
    f"{BASE_URL}/v2/datasets/odyssey/credit-analysis/ledger/divergence",
    params={"period": "2026-03-31", "min_confidence": "high", "page_size": 25},
    headers=headers,
    timeout=60.0
)
print(response.json())
```

```typescript TypeScript REST
const BASE_URL = "https://api.filesearch.dev";
const API_KEY = "your_api_key";

const response = await fetch(`${BASE_URL}/v2/datasets/odyssey/credit-analysis/ledger/divergence?period=2026-03-31&min_confidence=high&page_size=25`, {
    method: "GET",
    headers: { "Authorization": `Bearer ${API_KEY}` }
});
console.log(await response.json());
```