Company fundamentals built from SEC filings — revenue disaggregated by the axes an issuer tags, the KPIs and non-GAAP reconciliations it states in writing, management's guidance, valuation multiples against a peer cohort, and the two verified narrative risk flags. Reported figures stay sourced to a filing, arithmetic ones are labelled by their basis, and a missing or unproved input comes back `null` rather than estimated. Every endpoint here is keyed to one ticker and returns a single object — none of them page, so none carry a `meta` block.

## /v1/stocks/{ticker}/revenue-breakdown

Revenue disaggregated by business segment, geography, and product/service, built from the dimensional XBRL facts the issuer tags in its own filings — annual fiscal years only, latest restated values. Each axis carries its `unit`, a `periodEnds` list oldest first, and one entry per member whose `values` align to those period ends by index; a `null` means the member was not reported that period, never zero. `segmentOperatingIncome` and `segmentOperatingMargin` are filled only when the issuer tags operating income on the same business-segment axis, and the margin axis is explicitly derived (income ÷ revenue × 100, `unit: "%"`). Members can overlap hierarchically — a parent line tagged alongside its children — so never sum them: `consolidatedRevenue` carries the real per-year totals. An axis comes back with no members when the company reports revenue only as a consolidated total.

**Parameters:** `{ticker}` (path). No query parameters — any other name returns `400` with `invalid_parameter`.

```bash
curl "https://api.equibles.com/v1/stocks/NVDA/revenue-breakdown" \
  -H "Authorization: Bearer eq_your_api_key"
```

```python
import requests
r = requests.get(
    "https://api.equibles.com/v1/stocks/NVDA/revenue-breakdown",
    headers={"Authorization": "Bearer eq_your_api_key"},
)
print(r.json())
```

```javascript
const res = await fetch("https://api.equibles.com/v1/stocks/NVDA/revenue-breakdown", {
  headers: { Authorization: "Bearer eq_your_api_key" },
});
console.log(await res.json());
```

Response (trimmed — the two most recent fiscal years and two members per axis):

```json
{
  "ticker": "NVDA",
  "companyName": "Nvidia Corp",
  "segments": {
    "unit": "USD",
    "periodEnds": [
      "2025-01-26",
      "2026-01-25"
    ],
    "members": [
      {
        "member": "nvda:ComputeAndNetworkingSegmentMember",
        "label": "Compute and Networking Segment",
        "values": [
          116193000000.0,
          193479000000.0
        ]
      },
      {
        "member": "nvda:GraphicsSegmentMember",
        "label": "Graphics Segment",
        "values": [
          14304000000.0,
          22459000000.0
        ]
      }
    ]
  },
  "geographies": {
    "unit": "USD",
    "periodEnds": [
      "2025-01-26",
      "2026-01-25"
    ],
    "members": [
      {
        "member": "country:US",
        "label": "United States",
        "values": [
          77482000000.0,
          149617000000.0
        ]
      },
      {
        "member": "country:TW",
        "label": "Taiwan",
        "values": [
          23600000000.0,
          42345000000.0
        ]
      }
    ]
  },
  "products": {
    "unit": "USD",
    "periodEnds": [
      "2025-01-26",
      "2026-01-25"
    ],
    "members": [
      {
        "member": "nvda:DataCenterMember",
        "label": "Data Center",
        "values": [
          115186000000.0,
          193737000000.0
        ]
      },
      {
        "member": "nvda:ComputeMember",
        "label": "Compute",
        "values": [
          102196000000.0,
          162361000000.0
        ]
      }
    ]
  },
  "segmentOperatingIncome": {
    "unit": "USD",
    "periodEnds": [
      "2025-01-26",
      "2026-01-25"
    ],
    "members": [
      {
        "member": "nvda:ComputeAndNetworkingSegmentMember",
        "label": "Compute and Networking Segment",
        "values": [
          82875000000.0,
          130141000000.0
        ]
      },
      {
        "member": "nvda:GraphicsSegmentMember",
        "label": "Graphics Segment",
        "values": [
          5085000000.0,
          9156000000.0
        ]
      }
    ]
  },
  "segmentOperatingMargin": {
    "unit": "%",
    "periodEnds": [
      "2025-01-26",
      "2026-01-25"
    ],
    "members": [
      {
        "member": "nvda:ComputeAndNetworkingSegmentMember",
        "label": "Compute and Networking Segment",
        "values": [
          71.325294983346673207508197570,
          67.263630678264824606288020920
        ]
      },
      {
        "member": "nvda:GraphicsSegmentMember",
        "label": "Graphics Segment",
        "values": [
          35.549496644295302013422818790,
          40.767620998263502382118527090
        ]
      }
    ]
  },
  "consolidatedRevenue": [
    {
      "periodEnd": "2025-01-26",
      "unit": "USD",
      "value": 130497000000.0
    },
    {
      "periodEnd": "2026-01-25",
      "unit": "USD",
      "value": 215938000000.0
    }
  ]
}
```

## /v1/stocks/{ticker}/kpis

The company's own key performance indicators — subscribers, units delivered, backlog, ARR, adjusted EBITDA, free cash flow, same-store sales — extracted from its written Item-2.02 8-K earnings releases and 10-K/10-Q MD&A, the operational and non-GAAP figures XBRL does not carry. Earnings-call transcripts are deliberately not a KPI figure source. Each entry in `data` is one metric as a time series: `points` oldest first, each with the stated value on the company's own scale (`unit` rides the series), the written source, the verbatim quote, and `periodShape` — `Quarter`, `Annual`, `YearToDate`, `Instant`, or `None` when the wording is ambiguous. `yoYPercent` is filled only against an exactly comparable prior-year period, so it is often `null`. `bridge` carries the GAAP-to-non-GAAP reconciliation when the release stated one for that metric.

**Parameters:** `{ticker}` (path); `metric` (optional — return one metric on its own, matched case-insensitively against the company's own labels; a name matching several metrics returns `400` naming the candidates, a name matching none returns `404` listing every metric on file).

```bash
curl "https://api.equibles.com/v1/stocks/NVDA/kpis" \
  -H "Authorization: Bearer eq_your_api_key"
```

```python
import requests
r = requests.get(
    "https://api.equibles.com/v1/stocks/NVDA/kpis",
    headers={"Authorization": "Bearer eq_your_api_key"},
)
print(r.json())
```

```javascript
const res = await fetch("https://api.equibles.com/v1/stocks/NVDA/kpis", {
  headers: { Authorization: "Bearer eq_your_api_key" },
});
console.log(await res.json());
```

```json
{
  "ticker": "NVDA",
  "companyName": "Nvidia Corp",
  "data": [
    {
      "name": "Remaining share repurchase authorization",
      "unit": "USD billions",
      "isNonGaap": false,
      "latestValueFormatted": "$38.5B",
      "latestPeriodText": "As of the end of the first quarter of fiscal 2027",
      "yoYPercent": null,
      "points": [
        {
          "periodLabel": "As of the end of the first quarter of fiscal 2027",
          "value": 38.500000,
          "valueFormatted": "$38.5B",
          "filedDate": "2026-05-20",
          "source": "release",
          "sourceQuote": "As of the end of the first quarter, the company had $38.5 billion remaining under its share repurchase authorization.",
          "isAnnual": false,
          "periodShape": "Instant",
          "sourceDocumentId": "9ab0a248-e65a-46ad-abc2-db37abbf4a22"
        }
      ],
      "bridge": null
    }
  ]
}
```

## /v1/stocks/{ticker}/non-gaap-bridge

The GAAP-to-non-GAAP reconciliations a company states in its earnings releases — adjusted EBITDA, adjusted EPS, adjusted operating income and the like — verifier-approved and newest filing first. Each item is one measure: the GAAP starting line, every stated adjustment in `position` order, and the non-GAAP result, with the period wording, the stated scale in `unit`, and the verbatim quote (`gaapValue` plus the adjustments equals `nonGaapValue`, on that scale). The `/kpis` endpoint carries the same bridge inline beside a metric; this one returns the reconciliations on their own. `filingsExamined` makes an empty `data` interpretable — greater than zero means the filings were read and stated no reconciliation, as NVIDIA's response shows, while zero means the company has not been processed yet.

**Parameters:** `{ticker}` (path); `limit` (maximum source filings to read, newest first — default 6, maximum 20; a larger value is clamped to 20, while zero or a negative value returns `400`).

```bash
curl "https://api.equibles.com/v1/stocks/NVDA/non-gaap-bridge?limit=2" \
  -H "Authorization: Bearer eq_your_api_key"
```

```python
import requests
r = requests.get(
    "https://api.equibles.com/v1/stocks/NVDA/non-gaap-bridge?limit=2",
    headers={"Authorization": "Bearer eq_your_api_key"},
)
print(r.json())
```

```javascript
const res = await fetch("https://api.equibles.com/v1/stocks/NVDA/non-gaap-bridge?limit=2", {
  headers: { Authorization: "Bearer eq_your_api_key" },
});
console.log(await res.json());
```

```json
{
  "ticker": "NVDA",
  "companyName": "Nvidia Corp",
  "filingsExamined": 4,
  "newestExaminedFiledDate": "2026-05-20",
  "data": []
}
```

The same call for a filer with reconciliations on file — `GET /v1/stocks/PAYC/non-gaap-bridge?limit=1`, trimmed to the newest filing's first two items:

```json
{
  "ticker": "PAYC",
  "companyName": "Paycom Software, Inc.",
  "filingsExamined": 6,
  "newestExaminedFiledDate": "2026-08-06",
  "data": [
    {
      "nonGaapMetricName": "Non-GAAP net income per share, diluted",
      "period": "the three months ended June 30, 2026",
      "fiscalYear": 2026,
      "fiscalQuarter": 2,
      "nonGaapValue": 2.780000,
      "gaapMetricName": "Earnings per share, diluted",
      "gaapValue": 2.340000,
      "unit": "USD per share",
      "sourceQuote": "Earnings per share, diluted $ 2.34 $ 1.58 $ 5.43 $ 4.06 Non-cash stock-based compensation expense 0.38 0.68 0.65 1.08 Gain on modification of naming rights agreement — — (0.19) — Income tax effect on non-GAAP adjustments 0.06 (0.20) 0.07 (0.27) Non-GAAP net income per share, diluted $ 2.78 $ 2.06 $ 5.96 $ 4.87",
      "fromTable": false,
      "form": "10-Q",
      "filedDate": "2026-08-06",
      "adjustments": [
        {
          "label": "Non-cash stock-based compensation expense",
          "amount": 0.380000,
          "position": 0
        },
        {
          "label": "Gain on modification of naming rights agreement",
          "amount": 0.000000,
          "position": 1
        },
        {
          "label": "Income tax effect on non-GAAP adjustments",
          "amount": 0.060000,
          "position": 2
        }
      ]
    },
    {
      "nonGaapMetricName": "Non-GAAP net income",
      "period": "the three months ended June 30, 2026",
      "fiscalYear": 2026,
      "fiscalQuarter": 2,
      "nonGaapValue": 127.700000,
      "gaapMetricName": "Net income",
      "gaapValue": 107.400000,
      "unit": "millions",
      "sourceQuote": "Net income $ 107.4 $ 89.5 $ 263.1 $ 228.9 Non-cash stock-based compensation expense 17.6 38.4 31.6 60.6 Gain on modification of naming rights agreement — — (9.0) — Income tax effect on non-GAAP adjustments 2.8 (11.3) 3.3 (15.2) Non-GAAP net income $ 127.7 $ 116.6 $ 289.0 $ 274.3",
      "fromTable": false,
      "form": "10-Q",
      "filedDate": "2026-08-06",
      "adjustments": [
        {
          "label": "Non-cash stock-based compensation expense",
          "amount": 17.600000,
          "position": 0
        },
        {
          "label": "Gain on modification of naming rights agreement",
          "amount": 0.000000,
          "position": 1
        },
        {
          "label": "Income tax effect on non-GAAP adjustments",
          "amount": 2.800000,
          "position": 2
        }
      ]
    }
  ]
}
```

## /v1/stocks/{ticker}/guidance

Forward guidance ranges issued by management, extracted from Item-2.02 8-K earnings releases and earnings-call transcripts — some issuers guide only verbally on the call, so `form` can be `Earnings Call`, and those rows carry no `filingUrl`. Rows come newest release first, so the first ones are the current outlook. Each carries the guided `low`/`high`/`midpoint`, the `unit` (`USD`, `USD/share`, or `percent` — a percent row's value is stated in percent, e.g. `74.4`), the GAAP/non-GAAP `basis`, the verbatim `quote`, and `changeVsPrior` measured only against guidance announced in an earlier release. Revenue and diluted-EPS rows also carry the reported `actual` and a `Below`/`Within`/`Above` `actualVerdict` once the guided period's XBRL facts land, with `actualIsDerived` marking a Q4 figure computed as full year minus the nine-month year-to-date; non-GAAP guidance is never scored against GAAP actuals. `periodEnded` is tri-state: `true` once the period has certainly closed, `false` while it is still open, and `null` for rows stating no normalized period (an open-ended target like "annualized savings when fully implemented"), which cannot be judged either way. The true/false judgement is deliberately conservative — a January or February fiscal-year filer's row stays `false` for a while after the real close. `coverage` reports how many source documents the lane has read, so an empty `data` with `documentsExamined` above zero means the documents stated no guidance; `coverage.stalenessNote` is set when the newest guidance on record trails the newest examined document by more than one quarterly filing cycle — the later documents were read and state no newer guidance — and is `null` while the record is fresh.

**Parameters:** `{ticker}` (path). No query parameters — any other name returns `400` with `invalid_parameter`.

```bash
curl "https://api.equibles.com/v1/stocks/NVDA/guidance" \
  -H "Authorization: Bearer eq_your_api_key"
```

```python
import requests
r = requests.get(
    "https://api.equibles.com/v1/stocks/NVDA/guidance",
    headers={"Authorization": "Bearer eq_your_api_key"},
)
print(r.json())
```

```javascript
const res = await fetch("https://api.equibles.com/v1/stocks/NVDA/guidance", {
  headers: { Authorization: "Bearer eq_your_api_key" },
});
console.log(await res.json());
```

Response (trimmed to two of the 32 rows — the current outlook, and a closed period already scored against its actual):

```json
{
  "ticker": "NVDA",
  "companyName": "Nvidia Corp",
  "data": [
    {
      "filedDate": "2026-05-20",
      "form": "8-K",
      "filingUrl": "https://www.sec.gov/Archives/edgar/data/0001045810/0001045810-26-000051.txt",
      "metric": "Revenue",
      "metricKind": "Revenue",
      "period": "second quarter of fiscal 2027",
      "fiscalYear": 2027,
      "fiscalQuarter": 2,
      "low": 89180000000.0000,
      "high": 92820000000.0000,
      "midpoint": 91000000000.0000,
      "unit": "USD",
      "basis": "Unspecified",
      "fromTable": false,
      "quote": "Revenue is expected to be $91.0 billion, plus or minus 2%.",
      "periodEnded": false,
      "actual": null,
      "actualVerdict": null,
      "actualIsDerived": false,
      "priorActual": 81615000000.0,
      "priorActualIsAnnual": false,
      "midpointVsPriorPercent": 11.499111682901427433682533850,
      "changeVsPrior": "Initiated"
    },
    {
      "filedDate": "2025-10-31",
      "form": "Earnings Call",
      "filingUrl": null,
      "metric": "Total revenue",
      "metricKind": "Revenue",
      "period": "fourth quarter",
      "fiscalYear": 2026,
      "fiscalQuarter": 4,
      "low": 63700000000.0000,
      "high": 66300000000.0000,
      "midpoint": 65000000000.0000,
      "unit": "USD",
      "basis": "Unspecified",
      "fromTable": false,
      "quote": "Total revenue is expected to be $65 billion, plus or minus 2%.",
      "periodEnded": false,
      "actual": 68127000000.0,
      "actualVerdict": "Above",
      "actualIsDerived": true,
      "priorActual": null,
      "priorActualIsAnnual": false,
      "midpointVsPriorPercent": null,
      "changeVsPrior": null
    }
  ],
  "coverage": {
    "documentsExamined": 12,
    "coverageStartDate": "2024-04-30",
    "coverageEndDate": "2026-05-20",
    "stalenessNote": null
  }
}
```

## /v1/stocks/{ticker}/valuation-multiples

Trailing-twelve-month EV/Revenue, EV/EBIT and P/E with the inputs behind them and a peer cohort's median and quartiles. TTM figures sum four consecutive discrete fiscal quarters and each carries its window end, so you can see how stale it is; enterprise value uses same-date, definitionally non-overlapping debt and cash and reports that balance-sheet date. The subject is excluded from its own peers: `sizeBanded` true means the cohort is the similar-size market-cap band (`marketCapFloor` to `marketCapCeiling`) rather than the whole industry, `companyCount` stays the industry-wide count while `peerCompanyCount` is the cohort, and each ratio's own sample count rides beside it — a median and its quartiles stay `null` below three reporting peers. A missing or unproved input yields a `null` ratio, never an estimate, and a company with no computable ratio at all returns `404`. REITs additionally carry P/FFO and P/AFFO from the company's own SEC-stated reconciliation, and any filer with a verified reconciliation carries `evToAdjustedEbitda` over its own stated Adjusted EBITDA (`adjustedEbitda` in absolute USD, with `adjustedEbitdaBasis` and the verbatim `adjustedEbitdaLabel`); those fields are `null` for everyone else, as they are for NVIDIA below.

**Parameters:** `{ticker}` (path). No query parameters — any other name returns `400` with `invalid_parameter`.

```bash
curl "https://api.equibles.com/v1/stocks/NVDA/valuation-multiples" \
  -H "Authorization: Bearer eq_your_api_key"
```

```python
import requests
r = requests.get(
    "https://api.equibles.com/v1/stocks/NVDA/valuation-multiples",
    headers={"Authorization": "Bearer eq_your_api_key"},
)
print(r.json())
```

```javascript
const res = await fetch("https://api.equibles.com/v1/stocks/NVDA/valuation-multiples", {
  headers: { Authorization: "Bearer eq_your_api_key" },
});
console.log(await res.json());
```

```json
{
  "ticker": "NVDA",
  "companyName": "Nvidia Corp",
  "industry": "Semiconductors",
  "marketCap": 5111765703697.122,
  "enterpriseValue": 5088545703697.12,
  "ttmRevenue": 302969000000.0,
  "ttmEbit": 197579000000.0,
  "ttmEpsDiluted": 7.91,
  "enterpriseValueBalanceSheetDate": "2026-07-26",
  "ttmRevenueWindowEnd": "2026-07-26",
  "ttmEbitWindowEnd": "2026-07-26",
  "ttmEpsWindowEnd": "2026-07-26",
  "evToRevenue": 16.80,
  "evToEbit": 25.75,
  "peRatio": 26.81,
  "priceToFfo": null,
  "priceToAffo": null,
  "ffoPerShare": null,
  "affoPerShare": null,
  "ffoBasis": null,
  "affoBasis": null,
  "ffoLabel": null,
  "affoLabel": null,
  "evToAdjustedEbitda": null,
  "adjustedEbitda": null,
  "adjustedEbitdaBasis": null,
  "adjustedEbitdaLabel": null,
  "industryContext": {
    "industry": "Semiconductors",
    "companyCount": 61,
    "peerCompanyCount": 3,
    "sizeBanded": true,
    "marketCapFloor": 511176570369.7122,
    "marketCapCeiling": 51117657036971.22,
    "evToRevenueCompanyCount": 3,
    "evToEbitCompanyCount": 3,
    "peCompanyCount": 3,
    "priceToFfoCompanyCount": 0,
    "priceToAffoCompanyCount": 0,
    "evToAdjustedEbitdaCompanyCount": 0,
    "evToRevenueMedian": 18.77,
    "evToRevenueP25": 15.12,
    "evToRevenueP75": 20.90,
    "evToEbitMedian": 53.05,
    "evToEbitP25": 35.26,
    "evToEbitP75": 86.27,
    "peMedian": 59.17,
    "peP25": 40.14,
    "peP75": 91.40,
    "priceToFfoMedian": null,
    "priceToFfoP25": null,
    "priceToFfoP75": null,
    "priceToAffoMedian": null,
    "priceToAffoP25": null,
    "priceToAffoP75": null,
    "evToAdjustedEbitdaMedian": null,
    "evToAdjustedEbitdaP25": null,
    "evToAdjustedEbitdaP75": null
  }
}
```

## /v1/stocks/{ticker}/valuation-multiples/history

EV/Revenue, EV/EBIT, EV/EBITDA and P/E recomputed point-in-time at each past quarter's filing date, oldest first, over roughly ten years. Every sample uses only facts filed by its `asOf` date and that day's raw `close`, so the series never back-projects today's figures. The series carries one sample per publication date: when one filing first publishes several quarters (a post-IPO catch-up 10-K), only the newest quarter it made public appears. A completed full-history reconciliation for the exact primary price series preserves samples across its split; anchors before a pending, unattributed, or stale-series split are omitted because their raw-close basis remains unproved. `omittedAnchorCount` says how many anchors were dropped in total and `omittedForUnprovenSplitBasisCount` how many fell to that split-basis rule alone, so a short series is explained rather than silent. A quarter missing an input returns `null` for that ratio, never an estimate, and names the gap: `evMissingReason` says why enterprise value itself was not computable (`NoCloseNearSampleDate`, `MissingShareCount`, `MissingSameDateDebt` or `MissingSameDateCash`; `null` when EV computed) and `peMissingReason` why P/E was not (`NoCloseNearSampleDate`, `IncompleteTtmEps` or `NonPositiveTtmEps`). An EV ratio can still be `null` with a `null` `evMissingReason` when EV computed but that ratio's earnings leg did not — `evToEbit` needs the exact TTM EBIT chain, and `evToEbitda` additionally the company's tagged depreciation-and-amortization family for every TTM quarter.

For REITs the response also prices the company's own stated FFO and AFFO — `priceToFfo` and `priceToAffo`, re-resolved point-in-time from the approved SEC-filed non-GAAP reconciliations as they existed at each sample date. These are company-defined measures, so each priced sample states its aggregation basis (`ffoBasis`/`affoBasis`: `"TTM"` for four consecutive stated fiscal quarters, or a stated full year like `"FY2024"`), and the response-level `ffoLabel`/`affoLabel` carry the company's verbatim name for each measure. All of these fields are `null` for non-REITs. Any filer with a verified reconciliation also prices `evToAdjustedEbitda` — the sample's same-date enterprise value over the company's own stated Adjusted EBITDA — with a per-point `adjustedEbitdaBasis` and the response-level `adjustedEbitdaLabel`; these are `null` without one.

**Parameters:** `{ticker}` (path). No query parameters — any other name returns `400` with `invalid_parameter`.

```bash
curl "https://api.equibles.com/v1/stocks/NVDA/valuation-multiples/history" \
  -H "Authorization: Bearer eq_your_api_key"
```

```python
import requests
r = requests.get(
    "https://api.equibles.com/v1/stocks/NVDA/valuation-multiples/history",
    headers={"Authorization": "Bearer eq_your_api_key"},
)
print(r.json())
```

```javascript
const res = await fetch("https://api.equibles.com/v1/stocks/NVDA/valuation-multiples/history", {
  headers: { Authorization: "Bearer eq_your_api_key" },
});
console.log(await res.json());
```

Response (trimmed to the two most recent of the 9 samples returned):

```json
{
  "ticker": "NVDA",
  "companyName": "Nvidia Corp",
  "omittedAnchorCount": 31,
  "omittedForUnprovenSplitBasisCount": 31,
  "ffoLabel": null,
  "affoLabel": null,
  "adjustedEbitdaLabel": null,
  "points": [
    {
      "label": "FY2027 Q1",
      "asOf": "2026-05-20",
      "close": 223.4700,
      "peRatio": 34.22,
      "evToRevenue": 21.17,
      "evToEbit": 33.07,
      "evToEbitda": null,
      "priceToFfo": null,
      "priceToAffo": null,
      "ffoBasis": null,
      "affoBasis": null,
      "evToAdjustedEbitda": null,
      "adjustedEbitdaBasis": null,
      "evMissingReason": null,
      "peMissingReason": null
    },
    {
      "label": "FY2027 Q2",
      "asOf": "2026-08-26",
      "close": 209.6600,
      "peRatio": 26.51,
      "evToRevenue": 16.60,
      "evToEbit": 25.46,
      "evToEbitda": null,
      "priceToFfo": null,
      "priceToAffo": null,
      "ffoBasis": null,
      "affoBasis": null,
      "evToAdjustedEbitda": null,
      "adjustedEbitdaBasis": null,
      "evMissingReason": null,
      "peMissingReason": null
    }
  ]
}
```

A REIT response with the extracted multiples populated — `GET /v1/stocks/ARE/valuation-multiples/history`, trimmed to two of the 27 samples returned:

```json
{
  "ticker": "ARE",
  "companyName": "Alexandria Real Estate Equities, Inc.",
  "omittedAnchorCount": 13,
  "omittedForUnprovenSplitBasisCount": 0,
  "ffoLabel": "Funds from operations per share attributable to Alexandria Real Estate Equities, Inc.'s common stockholders – diluted",
  "affoLabel": "Funds from operations per share attributable to Alexandria Real Estate Equities, Inc.'s common stockholders – diluted, as adjusted",
  "adjustedEbitdaLabel": null,
  "points": [
    {
      "label": "FY2026 Q1",
      "asOf": "2026-04-27",
      "close": 45.5600,
      "peRatio": null,
      "evToRevenue": 6.82,
      "evToEbit": null,
      "evToEbitda": null,
      "priceToFfo": 5.92,
      "priceToAffo": 5.06,
      "ffoBasis": "FY2025",
      "affoBasis": "FY2025",
      "evToAdjustedEbitda": null,
      "adjustedEbitdaBasis": null,
      "evMissingReason": null,
      "peMissingReason": "NonPositiveTtmEps"
    },
    {
      "label": "FY2026 Q2",
      "asOf": "2026-08-03",
      "close": 53.0300,
      "peRatio": null,
      "evToRevenue": 7.60,
      "evToEbit": null,
      "evToEbitda": null,
      "priceToFfo": 6.90,
      "priceToAffo": 5.89,
      "ffoBasis": "FY2025",
      "affoBasis": "FY2025",
      "evToAdjustedEbitda": null,
      "adjustedEbitdaBasis": null,
      "evMissingReason": null,
      "peMissingReason": "NonPositiveTtmEps"
    }
  ]
}
```

A filer with a verified Adjusted EBITDA reconciliation prices `evToAdjustedEbitda` the same way: `GET /v1/stocks/NGVT/valuation-multiples/history`, trimmed to the three most recent of the 27 samples returned:

```json
{
  "ticker": "NGVT",
  "companyName": "Ingevity Corp",
  "omittedAnchorCount": 13,
  "omittedForUnprovenSplitBasisCount": 0,
  "ffoLabel": null,
  "affoLabel": null,
  "adjustedEbitdaLabel": "Adjusted EBITDA from continuing operations (Non-GAAP)",
  "points": [
    {
      "label": "FY2025 Q4",
      "asOf": "2026-02-26",
      "close": 70.5200,
      "peRatio": null,
      "evToRevenue": 3.10,
      "evToEbit": 8.50,
      "evToEbitda": null,
      "priceToFfo": null,
      "priceToAffo": null,
      "ffoBasis": null,
      "affoBasis": null,
      "evToAdjustedEbitda": 9.70,
      "adjustedEbitdaBasis": "TTM",
      "evMissingReason": null,
      "peMissingReason": "NonPositiveTtmEps"
    },
    {
      "label": "FY2026 Q1",
      "asOf": "2026-05-07",
      "close": 74.0700,
      "peRatio": null,
      "evToRevenue": 3.13,
      "evToEbit": null,
      "evToEbitda": null,
      "priceToFfo": null,
      "priceToAffo": null,
      "ffoBasis": null,
      "affoBasis": null,
      "evToAdjustedEbitda": 9.88,
      "adjustedEbitdaBasis": "TTM",
      "evMissingReason": null,
      "peMissingReason": "NonPositiveTtmEps"
    },
    {
      "label": "FY2026 Q2",
      "asOf": "2026-07-30",
      "close": 70.1900,
      "peRatio": 46.48,
      "evToRevenue": 3.03,
      "evToEbit": null,
      "evToEbitda": null,
      "priceToFfo": null,
      "priceToAffo": null,
      "ffoBasis": null,
      "affoBasis": null,
      "evToAdjustedEbitda": 9.43,
      "adjustedEbitdaBasis": "TTM",
      "evMissingReason": null,
      "peMissingReason": null
    }
  ]
}
```

## /v1/stocks/{ticker}/customer-concentration

A company's disclosed customer-concentration risk — statements like "one customer accounted for 26% of revenue" — read from the filing's own narrative text and verified before publication. Each figure carries its `basis` (`Revenue` or `Receivables`), the customer count, the percentage as a 0–100 number, the verbatim period wording and quote. `headline` repeats the newest period's highest revenue-basis percentage, falling back to any basis. `figures` lists revenue before receivables, then the newest disclosed period, then the largest percentage. `hasDisclosure` false is never a statement of no risk: `missReason` says why — `tagged-xbrl` when the issuer's current structured XBRL takes precedence over the narrative row (NVIDIA and Apple among them, whose figure is available through the MCP tool instead), `nothing-found` when the latest scanned filing stated nothing, with `lastScannedForm` and `lastScannedFiledDate` naming it, or `not-processed` when the company's filings have not been examined yet. A newer verified narrative supersedes stale tags.

**Parameters:** `{ticker}` (path). No query parameters — any other name returns `400` with `invalid_parameter`.

```bash
curl "https://api.equibles.com/v1/stocks/NVDA/customer-concentration" \
  -H "Authorization: Bearer eq_your_api_key"
```

```python
import requests
r = requests.get(
    "https://api.equibles.com/v1/stocks/NVDA/customer-concentration",
    headers={"Authorization": "Bearer eq_your_api_key"},
)
print(r.json())
```

```javascript
const res = await fetch("https://api.equibles.com/v1/stocks/NVDA/customer-concentration", {
  headers: { Authorization: "Bearer eq_your_api_key" },
});
console.log(await res.json());
```

```json
{
  "ticker": "NVDA",
  "companyName": "Nvidia Corp",
  "hasDisclosure": false,
  "form": null,
  "filedDate": null,
  "filingUrl": null,
  "headline": null,
  "figures": [],
  "missReason": "tagged-xbrl",
  "lastScannedForm": null,
  "lastScannedFiledDate": null
}
```

A filer that leaves the disclosure in narrative text — `GET /v1/stocks/ANET/customer-concentration`, whose filings name two end customers each above 10% of revenue:

```json
{
  "ticker": "ANET",
  "companyName": "Arista Networks, Inc.",
  "hasDisclosure": true,
  "form": "10-Q",
  "filedDate": "2026-05-06",
  "filingUrl": "https://www.sec.gov/Archives/edgar/data/0001596532/0001596532-26-000078.txt",
  "headline": {
    "basis": "Revenue",
    "customerCount": 1,
    "percent": 26.00,
    "period": "the year ended December 31, 2025",
    "quote": "Sales to one end customer represented 16%, 15%, and 21% of our total revenue, and sales to the other end customer represented 26%, 20%, and 18% of our total revenue for the years ended December 31, 2025, 2024, and 2023, respectively."
  },
  "figures": [
    {
      "basis": "Revenue",
      "customerCount": 1,
      "percent": 26.00,
      "period": "the year ended December 31, 2025",
      "quote": "Sales to one end customer represented 16%, 15%, and 21% of our total revenue, and sales to the other end customer represented 26%, 20%, and 18% of our total revenue for the years ended December 31, 2025, 2024, and 2023, respectively."
    },
    {
      "basis": "Revenue",
      "customerCount": 1,
      "percent": 16.00,
      "period": "the year ended December 31, 2025",
      "quote": "Sales to one end customer represented 16%, 15%, and 21% of our total revenue, and sales to the other end customer represented 26%, 20%, and 18% of our total revenue for the years ended December 31, 2025, 2024, and 2023, respectively."
    }
  ],
  "missReason": null,
  "lastScannedForm": null,
  "lastScannedFiledDate": null
}
```

## /v1/stocks/{ticker}/going-concern

Whether the company's latest examined SEC filing states substantial doubt about its ability to continue as a going concern, with the verbatim disclosure, the source filing, and the history of examined filings newest first showing when doubt appeared, was alleviated, or cleared. Flags come from each company's 10-K/10-Q narrative and are verified before publication; a filing with no going-concern language counts as no doubt and carries an empty quote, which is what clears a flag. `currentStatus` is `null` when there is no active or resolved flag, and when it is present `flaggedDate` is the newest filing still stating doubt while `firstFlaggedDate` marks where that episode began. Coverage starts at `coverageStartDate` — filings older than it were never examined, so an earlier doubt episode is invisible here, not disproven — and `examined` is false when nothing has been checked yet.

**Parameters:** `{ticker}` (path). No query parameters — any other name returns `400` with `invalid_parameter`.

```bash
curl "https://api.equibles.com/v1/stocks/NVDA/going-concern" \
  -H "Authorization: Bearer eq_your_api_key"
```

```python
import requests
r = requests.get(
    "https://api.equibles.com/v1/stocks/NVDA/going-concern",
    headers={"Authorization": "Bearer eq_your_api_key"},
)
print(r.json())
```

```javascript
const res = await fetch("https://api.equibles.com/v1/stocks/NVDA/going-concern", {
  headers: { Authorization: "Bearer eq_your_api_key" },
});
console.log(await res.json());
```

```json
{
  "ticker": "NVDA",
  "companyName": "Nvidia Corp",
  "examined": true,
  "coverageStartDate": "2026-05-20",
  "currentStatus": null,
  "history": [
    {
      "filedDate": "2026-05-20",
      "form": "10-Q",
      "filingUrl": "https://www.sec.gov/Archives/edgar/data/0001045810/0001045810-26-000052.txt",
      "substantialDoubt": false,
      "alleviated": false,
      "quote": ""
    }
  ]
}
```