{
  "openapi": "3.1.0",
  "info": {
    "title": "Kiln Feed API",
    "version": "1.0.0",
    "description": "Fetch a public RSS, Atom, or JSON Feed and return bounded normalized JSON. The main operation uses x402 v2 USDC payments when enabled."
  },
  "servers": [{"url": "https://feed.kiln.casa"}],
  "paths": {
    "/v1/status": {"get": {"summary": "Service limits and current x402 price", "responses": {"200": {"description": "Status"}}}},
    "/v1/demo": {"get": {"summary": "Free normalized example", "responses": {"200": {"description": "Example response"}}}},
    "/v1/feed": {
      "get": {
        "summary": "Normalize one public feed",
        "description": "Costs $0.01 USDC through x402 v2 by default when payments are enabled.",
        "parameters": [
          {"name": "url", "in": "query", "required": true, "schema": {"type": "string", "format": "uri", "maxLength": 4096}},
          {"name": "limit", "in": "query", "required": false, "schema": {"type": "integer", "minimum": 1, "maximum": 100, "default": 25}}
        ],
        "responses": {
          "200": {"description": "Normalized feed"},
          "400": {"description": "Invalid URL or limit"},
          "402": {"description": "x402 payment required"},
          "403": {"description": "Private or reserved destination"},
          "413": {"description": "Decoded source exceeds 2 MiB"},
          "415": {"description": "Unsupported feed format"},
          "422": {"description": "Malformed feed"},
          "429": {"description": "Rate limited"},
          "504": {"description": "Source timeout"}
        }
      }
    }
  }
}
