{
  "apiVersion": "v1",
  "generated": "2026-10-29",
  "name": "Foldkit Content API",
  "description": "Read-only JSON access to the Foldkit documentation site: the page index, the Markdown of every page, the example applications, and the blog. Every endpoint is a public, unauthenticated GET.",
  "documentation": "https://foldkit.dev/api",
  "openapi": "https://foldkit.dev/openapi.json",
  "website": "https://foldkit.dev",
  "authentication": {
    "type": "none",
    "description": "No credentials, API key, or registration. Every endpoint is public and read-only."
  },
  "versioning": {
    "current": "v1",
    "supported": [
      "v1"
    ],
    "style": "url-path",
    "responseHeader": "API-Version",
    "policy": "https://foldkit.dev/api#versioning",
    "deprecation": {
      "deprecationHeader": {
        "name": "Deprecation",
        "specification": "https://www.rfc-editor.org/rfc/rfc9745",
        "format": "structured-field-date",
        "example": "Deprecation: @1735689600",
        "meaning": "When this version became deprecated, as seconds since the Unix epoch behind an @ sign."
      },
      "sunsetHeader": {
        "name": "Sunset",
        "specification": "https://www.rfc-editor.org/rfc/rfc8594",
        "format": "http-date",
        "example": "Sunset: Wed, 31 Dec 2025 23:59:59 GMT",
        "meaning": "When this version stops answering."
      },
      "linkRelation": "deprecation",
      "minimumNoticeDays": 180,
      "description": "A breaking change ships as a new path prefix (/api/v2). The previous version then carries a Deprecation header holding the date it became deprecated, a Sunset header holding the date it stops answering, and a Link header with rel=\"deprecation\" pointing at the migration notes. The two dates are at least 180 days apart. The two headers do not share a value format: read Deprecation as a structured-field date and Sunset as an HTTP-date. Compare Sunset against the current time to know how long is left."
    }
  },
  "rateLimit": {
    "policyName": "default",
    "quota": 600,
    "windowSeconds": 60,
    "headers": [
      "RateLimit",
      "RateLimit-Policy"
    ],
    "description": "Every response advertises an advisory ceiling of 600 requests per 60 seconds per client. The site serves static files from a CDN and keeps no per-client counter, so both the remaining count and the seconds until reset are constants: they describe the policy, not this client's balance. Nothing in the site itself returns 429. The hosting platform may reject a request before it reaches this API and return a platform-owned 429 outside this contract; if that response carries Retry-After, obey it rather than the RateLimit fields."
  },
  "errors": {
    "mediaType": "application/problem+json",
    "specification": "https://www.rfc-editor.org/rfc/rfc9457",
    "documentation": "https://foldkit.dev/api#errors",
    "codes": [
      "not_found",
      "method_not_allowed"
    ]
  },
  "counts": {
    "pages": 210,
    "examples": 35,
    "blogPosts": 13
  },
  "endpoints": [
    {
      "operationId": "getServiceIndex",
      "method": "GET",
      "path": "/api/v1",
      "url": "https://foldkit.dev/api/v1",
      "description": "This document: the endpoint list, the versioning and deprecation policy, the rate limit policy, and the error model."
    },
    {
      "operationId": "listPages",
      "method": "GET",
      "path": "/api/v1/pages.json",
      "url": "https://foldkit.dev/api/v1/pages.json",
      "description": "Every documentation page with its title, description, section, and the URLs of its HTML, Markdown, and JSON representations."
    },
    {
      "operationId": "getPage",
      "method": "GET",
      "path": "/api/v1/page.json",
      "url": "https://foldkit.dev/api/v1/page.json",
      "description": "One documentation page with its metadata and its full Markdown content. Pass the page URL path without the leading slash as the `path` query parameter; the homepage is `index`. Each page in listPages carries the ready-made URL as apiUrl."
    },
    {
      "operationId": "listSections",
      "method": "GET",
      "path": "/api/v1/sections.json",
      "url": "https://foldkit.dev/api/v1/sections.json",
      "description": "The documentation sections in reading order, each with the paths of the pages it holds."
    },
    {
      "operationId": "listExamples",
      "method": "GET",
      "path": "/api/v1/examples.json",
      "url": "https://foldkit.dev/api/v1/examples.json",
      "description": "Every example application with its difficulty, tags, and the URLs of its write-up, playground, and source."
    },
    {
      "operationId": "listBlogPosts",
      "method": "GET",
      "path": "/api/v1/blog.json",
      "url": "https://foldkit.dev/api/v1/blog.json",
      "description": "Every blog post with its publication date and the URLs of its HTML and Markdown representations."
    }
  ]
}
