{
  "openapi": "3.1.0",
  "info": { "title": "Kunkafa public data files", "version": "2026-09-07", "description": "Static JSON files published by kunkafa.com: aggregate results, plans and blog posts. No authentication. Forecasts themselves are not published here.", "contact": { "email": "contact@kunkafa.com" } },
  "servers": [{ "url": "https://kunkafa.com" }],
  "paths": {
    "/api/stats.json": { "get": { "summary": "How past forecasts turned out, by window and by strength", "responses": { "200": { "description": "Rewritten daily", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Stats" } } } } } } },
    "/api/plans.json": { "get": { "summary": "The four plans, prices and what each includes", "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Plans" } } } } } } },
    "/api/articles.json": { "get": { "summary": "Every blog post with its full text", "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Articles" } } } } } } }
  },
  "components": { "schemas": {
    "Window": { "type": "object", "description": "A figure is null when fewer than 100 forecasts finished in the window.", "properties": { "evaluated": { "type": "integer" }, "strongEnough": { "type": "integer" }, "strongEnoughPct": { "type": ["number", "null"] }, "finishedInDirectionPct": { "type": ["number", "null"] }, "reachedLevelPct": { "type": ["number", "null"] }, "trusted": { "type": "boolean" } } },
    "Stats": { "type": "object", "properties": { "schema": { "type": "integer" }, "generatedAt": { "type": "string", "format": "date-time" }, "strengthPct": { "type": "number", "description": "The strength setting the windows are counted at (the app's default)" }, "windows": { "type": "object", "properties": { "d1": { "$ref": "#/components/schemas/Window" }, "d7": { "$ref": "#/components/schemas/Window" }, "d30": { "$ref": "#/components/schemas/Window" }, "all_time": { "$ref": "#/components/schemas/Window" } } }, "curve": { "type": "array", "items": { "type": "object", "properties": { "strengthPct": { "type": "number" }, "evaluated": { "type": "integer" }, "finishedInDirectionPct": { "type": ["number", "null"] }, "reachedLevelPct": { "type": ["number", "null"] }, "trusted": { "type": "boolean" } } } }, "markets": { "type": "integer" }, "durations": { "type": "integer" } } },
    "Plans": { "type": "object", "properties": { "generatedAt": { "type": "string", "format": "date-time" }, "currency": { "type": "string" }, "trialDays": { "type": "integer" }, "plans": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string" }, "name": { "type": "string" }, "descriptor": { "type": "string" }, "priceCents": { "type": "integer" }, "priceMonthly": { "type": "number" }, "trialDays": { "type": "integer" }, "bullets": { "type": "array", "items": { "type": "string" } } } } } } },
    "Articles": { "type": "object", "properties": { "version": { "type": "string" }, "lastUpdated": { "type": "string", "format": "date-time" }, "articles": { "type": "array", "items": { "type": "object", "properties": { "slug": { "type": "string" }, "title": { "type": "string" }, "description": { "type": "string" }, "category": { "type": "string" }, "readTime": { "type": "string" }, "publishDate": { "type": "string", "format": "date" }, "updated": { "type": "string", "format": "date" }, "tags": { "type": "array", "items": { "type": "string" } }, "author": { "type": "string" }, "url": { "type": "string", "format": "uri" }, "content": { "type": "string", "description": "HTML" } } } } } }
  } }
}
