---
title: "Citation scorecard for the latest monthly assistant-accuracy report"
method: GET
path: "/api/v1/energy/citation-scorecard.json"
tags: ["energy"]
---

# Citation scorecard for the latest monthly assistant-accuracy report

`GET /api/v1/energy/citation-scorecard.json`

## Request

- Base URL: `https://wattgap.com`
- URL: `https://wattgap.com/api/v1/energy/citation-scorecard.json`
- Auth: none required

Returns the latest citation scorecard report as a JSON envelope (month, generated_at, markdown). Gated behind CITATION_SCORECARD_PUBLISH env flag; returns 404 when the flag is not set to 'true'. The unsuffixed /citation-scorecard variant returns the same report as plain-text markdown.

## Response `200`

Citation scorecard report

- CitationScorecardResponse: month and generated_at satisfy two invariants that this OpenAPI 3.0 document cannot express as schema keywords, so they are documented here instead of enforced: (1) generated_at must be a real calendar-valid UTC timestamp, not just pattern-shaped -- 2026-02-30T00:00:00Z matches the property pattern but the API never returns it; (2) month must equal the YYYY-MM prefix of generated_at exactly. Both are enforced at runtime by CitationScorecardResponseSchema in lib/energy-api-contract/src/schemas.ts. A validator generated from this document alone will accept responses the API can never legitimately return unless both checks are implemented independently.
  - `month` string, required: Must equal the year and month (YYYY-MM prefix) of the sibling generated_at field exactly. This cross-field equality is not enforced by this OpenAPI 3.0 schema (no `if`/`then` or equivalent keyword is available); a consumer must implement the check independently to build a validator as strict as the API.
  - `generated_at` string, required: Must be a real calendar UTC timestamp, not merely pattern-shaped: for example 2026-02-30T00:00:00Z matches this field's pattern but is rejected by the API because February never has a 30th day. Full calendar validity (days-per-month, leap-year February 29) is not enforced by this OpenAPI 3.0 schema; a consumer must implement the check independently. Its year and month (the first 7 characters, YYYY-MM) must also equal the sibling month field exactly; see that field's description for the same cross-field rule.
  - `markdown` string, required

## Other responses

- `404`: Not published or no report available
- `429`: Rate limit exceeded
- `500`: Failed to read report

---

[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)
