{
 "service": "The Forecast Post",
 "description": "A chronicle of American weather and climate",
 "version": "v1",
 "terms": "Free to read and to cite. Attribution to forecastpost.com is requested. Paid mileposts expose metadata and a teaser only; their bodies are not served by this API at any endpoint.",
 "endpoints": {
  "/api/v1/mileposts.json": "the chronicle index, newest first",
  "/api/v1/mp/<n>.json": "one milepost, with claims and provenance",
  "/api/v1/desks.json": "the desks and what each one watches",
  "/api/v1/ledger.json": "standing forecast skill, by model and lead",
  "/feed.xml": "RSS 2.0",
  "/atom.xml": "Atom",
  "/feed.json": "JSON Feed 1.1",
  "/llms.txt": "site summary for language models",
  "/openapi.json": "OpenAPI 3.1 description of this API"
 },
 "conventions": {
  "milepost": "A milepost number is issued once and never reissued. It is the permanent identifier; a gap in the sequence means an entry was spiked, which is itself information.",
  "claims": "Every published number carries at least one of: a normal to compare it against, a rank within a stated period, or the denominator it is drawn from. This is enforced at build time, so a claim object with none of the three does not exist in this API.",
  "corrections": "A correction does not modify a milepost. It lays the next one and links back via `supersedes`; the corrected entry gains `superseded_by` and is otherwise left exactly as filed."
 },
 "count": 1108,
 "latest": 1108,
 "generated": "2026-09-16T18:25:28Z"
}