{
  "name": "Texuli public API",
  "version": "0.18.0",
  "status": "released",
  "statusNote": "Released in 0.18.0 (first released in 0.9.0): published on npm and served by texuli.com, deployed from main.",
  "documentation": "https://texuli.com/developers/",
  "openapi": "https://texuli.com/openapi.json",
  "health": "https://texuli.com/api/health.json",
  "authentication": "none",
  "rateLimit": {
    "policy": "api",
    "quota": 300,
    "windowSeconds": 60,
    "scope": "per client IP, per edge isolate (best-effort)"
  },
  "versioning": {
    "current": "0.18.0",
    "prefix": "/api/v1/",
    "header": "X-API-Version",
    "policy": "Paths under /api/v1/ only change additively: new endpoints and new optional fields. A breaking change ships under /api/v2/, and /api/v1/ keeps serving for at least one release line (0.x minor) after that, with Deprecation (RFC 9745) and Sunset (RFC 8594) headers on every affected response. The unversioned paths are the files the site itself fetches: they follow the site and may change in any release, so pin /api/v1/.",
    "deprecationHeaders": [
      "Deprecation",
      "Sunset"
    ]
  },
  "license": "MIT",
  "endpoints": [
    {
      "operationId": "getApiIndexV1",
      "method": "GET",
      "path": "/api/v1/index.json",
      "title": "API index",
      "summary": "The version, the limits, the deprecation policy and every endpoint with its operationId.",
      "url": "https://texuli.com/api/v1/index.json"
    },
    {
      "operationId": "getApiIndex",
      "method": "GET",
      "path": "/api/index.json",
      "title": "API index",
      "summary": "The version, the limits, the deprecation policy and every endpoint with its operationId. Unversioned; prefer /api/v1/index.json.",
      "url": "https://texuli.com/api/index.json"
    },
    {
      "operationId": "getHealthV1",
      "method": "GET",
      "path": "/api/v1/health.json",
      "title": "Health",
      "summary": "A static file written by the build: status, release line and build time. It proves the build is served, not that a Function runs.",
      "url": "https://texuli.com/api/v1/health.json"
    },
    {
      "operationId": "getHealth",
      "method": "GET",
      "path": "/api/health.json",
      "title": "Health",
      "summary": "A static file written by the build: status, release line and build time. It proves the build is served, not that a Function runs. Unversioned; prefer /api/v1/health.json.",
      "url": "https://texuli.com/api/health.json"
    },
    {
      "operationId": "getCatalogV1",
      "method": "GET",
      "path": "/api/v1/catalog.json",
      "title": "Component catalog",
      "summary": "The agent catalog snapshot: every component manifest with props, examples, accessibility notes and the emit tiers that may place it.",
      "url": "https://texuli.com/api/v1/catalog.json"
    },
    {
      "operationId": "getCatalog",
      "method": "GET",
      "path": "/catalog/catalog.json",
      "title": "Component catalog",
      "summary": "The agent catalog snapshot: every component manifest with props, examples, accessibility notes and the emit tiers that may place it. Unversioned; prefer /api/v1/catalog.json.",
      "url": "https://texuli.com/catalog/catalog.json"
    },
    {
      "operationId": "listThemesV1",
      "method": "GET",
      "path": "/api/v1/themes.json",
      "title": "Theme catalog",
      "summary": "Every library theme: id, name, description, category, collection, tags and its light swatches.",
      "url": "https://texuli.com/api/v1/themes.json"
    },
    {
      "operationId": "listThemes",
      "method": "GET",
      "path": "/theme-catalog.json",
      "title": "Theme catalog",
      "summary": "Every library theme: id, name, description, category, collection, tags and its light swatches. Unversioned; prefer /api/v1/themes.json.",
      "url": "https://texuli.com/theme-catalog.json"
    },
    {
      "operationId": "listThemeDarkSwatchesV1",
      "method": "GET",
      "path": "/api/v1/themes-dark.json",
      "title": "Dark swatches",
      "summary": "The dark-mode swatches of every theme that has a dark palette.",
      "url": "https://texuli.com/api/v1/themes-dark.json"
    },
    {
      "operationId": "listThemeDarkSwatches",
      "method": "GET",
      "path": "/theme-catalog-dark.json",
      "title": "Dark swatches",
      "summary": "The dark-mode swatches of every theme that has a dark palette. Unversioned; prefer /api/v1/themes-dark.json.",
      "url": "https://texuli.com/theme-catalog-dark.json"
    },
    {
      "operationId": "listThemeGalleryCardsV1",
      "method": "GET",
      "path": "/api/v1/theme-gallery.json",
      "title": "Theme gallery cards",
      "summary": "Every theme with its WCAG AA contrast summary per mode and the key colors of each mode.",
      "url": "https://texuli.com/api/v1/theme-gallery.json"
    },
    {
      "operationId": "listThemeGalleryCards",
      "method": "GET",
      "path": "/theme-gallery.json",
      "title": "Theme gallery cards",
      "summary": "Every theme with its WCAG AA contrast summary per mode and the key colors of each mode. Unversioned; prefer /api/v1/theme-gallery.json.",
      "url": "https://texuli.com/theme-gallery.json"
    },
    {
      "operationId": "getThemeV1",
      "method": "GET",
      "path": "/api/v1/themes/{id}.json",
      "title": "One theme",
      "summary": "One theme's color explorer payload: its metadata and every color of each mode.",
      "url": "https://texuli.com/api/v1/themes/%7Bid%7D.json"
    },
    {
      "operationId": "getTheme",
      "method": "GET",
      "path": "/theme-data/{id}.json",
      "title": "One theme",
      "summary": "One theme's color explorer payload: its metadata and every color of each mode. Unversioned; prefer /api/v1/themes/{id}.json.",
      "url": "https://texuli.com/theme-data/%7Bid%7D.json"
    },
    {
      "operationId": "getTwinsManifestV1",
      "method": "GET",
      "path": "/api/v1/twins.json",
      "title": "Markdown twins manifest",
      "summary": "Every page route mapped to its Markdown twin (the page URL plus .md).",
      "url": "https://texuli.com/api/v1/twins.json"
    },
    {
      "operationId": "getTwinsManifest",
      "method": "GET",
      "path": "/md-manifest.json",
      "title": "Markdown twins manifest",
      "summary": "Every page route mapped to its Markdown twin (the page URL plus .md). Unversioned; prefer /api/v1/twins.json.",
      "url": "https://texuli.com/md-manifest.json"
    },
    {
      "operationId": "callMcp",
      "method": "POST",
      "path": "/mcp",
      "title": "MCP server",
      "summary": "The read-only remote MCP server: JSON-RPC over stateless Streamable HTTP (tools, resources, prompts).",
      "url": "https://texuli.com/mcp"
    }
  ]
}
