---
title: "Potentially claimable programs based on ZIP-level facts"
method: GET
path: "/api/v1/energy/rebates"
tags: ["energy"]
---

# Potentially claimable programs based on ZIP-level facts

`GET /api/v1/energy/rebates`

## Request

- Base URL: `https://wattgap.com`
- URL: `https://wattgap.com/api/v1/energy/rebates`
- Auth: API key in header `X-WattGap-Key`

Screening result only, not a final eligibility determination. Additional household facts may be requested only when needed for a specific program. Requires X-WattGap-Key.

## Query parameters

- `zip` string, required
- `income` number
- `household_size` integer

## Response `200`

Potentially claimable programs. OpenAPI expresses structural and scalar bounds; runtime-only invariants additionally require confidence_tier to equal provenance.confidence, data_sources to have exact ordered equality with provenance.source, each rebate total to equal the nearest-cent additive total of program amounts (ungrouped rows add; mutually exclusive groups contribute their maximum, not the sum), data.zip to equal meta.zip whenever the endpoint data includes a ZIP, and each energy response's serialized data and meta sections to stay within 524272 encoded bytes apiece.

- RebatesResponse
  - `data` object, required
    - `programs` object[], required
      - `name` string, required
      - `type` string, required
      - `amount` number, required
      - `income_qualified` boolean
      - `source_urls` string[]
      - `last_verified_at` string, nullable
      - `mutually_exclusive_group` string
    - `total` number, required
  - `meta` EnergyApiMeta, required
    - `zip` string, required
    - `generated_at` string, required
    - `api_version` 'v1', required
    - `confidence_tier` 'high' | 'medium' | 'low', required
    - `data_sources` string[], required
    - `provenance` ProvenanceEnvelope, required
      - `source` string[], required
      - `verified_at` string, nullable, required
      - `confidence` 'high' | 'medium' | 'low', required
      - `confidence_base` 'high' | 'medium' | 'low', required
      - `age_days` number, nullable, required
      - `stale` boolean, required
      - `reason` 'fresh' | 'aging' | 'stale' | 'unverifiable' | 'check_failed', required
      - `as_of` string, required

## Other responses

- `400`: Invalid request (for example, malformed ZIP)
- `401`: Missing or invalid X-WattGap-Key. Rate-limit headers are omitted because no key was accepted.
- `429`: Rate limit exceeded
- `500`: Provider or response-schema failure

---

[API](https://skmtc.dev/wattgap/apis/wattgap-energy-intelligence-api.md) · [All operations](https://skmtc.dev/wattgap/apis/wattgap-energy-intelligence-api/llms.txt) · [OpenAPI document](https://skmtc.dev/wattgap/apis/wattgap-energy-intelligence-api/revisions/9e79fdd6bcc2?raw)
