> ## Documentation Index
> Fetch the complete documentation index at: https://docs.davidhf.com/llms.txt
> Use this file to discover all available pages before exploring further.

# KPIs & guidance

> Management guidance, KPI metrics, and non-GAAP reconciliations.

These endpoints expose the operating KPIs and forward guidance management discloses alongside earnings, plus non-GAAP reconciliations.

## Guidance

```http theme={null}
GET /kpi/guidance
```

Management guidance ranges and point estimates by metric and period.

| Parameter     | Type    | Required | Default | Description                      |
| ------------- | ------- | -------- | ------- | -------------------------------- |
| `scenario_id` | string  | Yes      | -       | The world to read from.          |
| `ticker`      | string  | Yes      | -       | Ticker symbol to query.          |
| `period`      | string  | No       | all     | Filter by guidance period label. |
| `as_of`       | date    | No       | -       | Point-in-time cutoff.            |
| `limit`       | integer | No       | 10      | Page size (max 100).             |
| `offset`      | integer | No       | 0       | Pagination offset.               |

<CodeGroup>
  ```bash cURL theme={null}
  curl -s "https://api.davidhf.com/kpi/guidance?scenario_id=<id>&ticker=AAPL" \
    -H "X-API-KEY: YOUR_API_KEY"
  ```

  ```python Python theme={null}
  dd.financials.kpi_guidance("AAPL", scenario_id="<id>")
  ```
</CodeGroup>

```json theme={null}
{
  "kpi_guidance": [
    {
      "ticker": "AAPL",
      "metric_name": "revenue",
      "period": "Q2 2026",
      "period_type": "quarter",
      "unit": "USD",
      "low": 120000000000,
      "high": 124000000000,
      "point_estimate": 122000000000,
      "prior_value": 119500000000,
      "change_direction": "raised",
      "raw_text": "We expect second-quarter revenue between $120B and $124B.",
      "source_url": "https://.../"
    }
  ]
}
```

## KPI metrics

```http theme={null}
GET /kpi/metrics
```

Sector-aware operating KPIs derived from each period's statements.

| Parameter     | Type    | Required | Default     | Description              |
| ------------- | ------- | -------- | ----------- | ------------------------ |
| `scenario_id` | string  | Yes      | -           | The world to read from.  |
| `ticker`      | string  | Yes      | -           | Ticker symbol to query.  |
| `period`      | string  | No       | `quarterly` | `quarterly` \| `annual`. |
| `limit`       | integer | No       | 8           | Page size (max 100).     |
| `offset`      | integer | No       | 0           | Pagination offset.       |

<CodeGroup>
  ```bash cURL theme={null}
  curl -s "https://api.davidhf.com/kpi/metrics?scenario_id=<id>&ticker=AAPL" \
    -H "X-API-KEY: YOUR_API_KEY"
  ```

  ```python Python theme={null}
  dd.financials.kpi_metrics("AAPL", scenario_id="<id>")
  ```
</CodeGroup>

## Non-GAAP

```http theme={null}
GET /kpi/non-gaap
```

Non-GAAP metrics and their reconciliation to GAAP for each period.

| Parameter     | Type    | Required | Default     | Description              |
| ------------- | ------- | -------- | ----------- | ------------------------ |
| `scenario_id` | string  | Yes      | -           | The world to read from.  |
| `ticker`      | string  | Yes      | -           | Ticker symbol to query.  |
| `period`      | string  | No       | `quarterly` | `quarterly` \| `annual`. |
| `limit`       | integer | No       | 8           | Page size (max 100).     |
| `offset`      | integer | No       | 0           | Pagination offset.       |

<CodeGroup>
  ```bash cURL theme={null}
  curl -s "https://api.davidhf.com/kpi/non-gaap?scenario_id=<id>&ticker=AAPL" \
    -H "X-API-KEY: YOUR_API_KEY"
  ```

  ```python Python theme={null}
  dd.financials.kpi_non_gaap("AAPL", scenario_id="<id>")
  ```
</CodeGroup>

```json theme={null}
{ "non_gaap": [ { "ticker": "AAPL", "report_period": "2026-03-31", "adjusted_eps": 2.31, "...": "..." } ] }
```

## Discovery helpers

```http theme={null}
GET /kpi/metrics/tickers
GET /kpi/metrics/sectors
```

`/tickers` returns tickers with KPI metrics; `/sectors` returns the distinct sectors present. Both take only `scenario_id`.

```json theme={null}
{ "sectors": ["Technology", "Energy", "Financials", "..."] }
```
