{
  "openapi": "3.1.0",
  "info": {
    "title": "MediaCopilot website content API",
    "version": "1.0.0",
    "summary": "Read-only HTTP surface of the mediacopilot.io marketing website.",
    "description": "mediacopilot.io is a statically hosted marketing website. This description covers the\nsurface an agent can actually call: content pages with markdown content negotiation, a\nversioned JSON surface under `/v1`, the machine-readable index files, and the\ntyped error model.\n\n**This is not the MediaCopilot product API.** That API is credentialed and lives on its\nown origin: `https://api.mediacopilot.cires21.ai`, path-versioned under `/v1`, Bearer token in the\n`Authorization` header, described by https://api.mediacopilot.cires21.ai/openapi.json and documented at\nhttps://docs.mediacopilot.io/en/integrations/api. The MCP Server is issued per customer (https://docs.mediacopilot.io/en/integrations/mcp-server). Both are\nlisted in the RFC 9727 API catalog at https://mediacopilot.io/.well-known/api-catalog, and in\nhttps://mediacopilot.io/v1/site.json. Request access at hello@mediacopilot.io rather\nthan guessing endpoints on this host — everything under `/api` returns a problem+json\n404 by design.\n\nConventions:\n\n- Every page is available as HTML and as markdown. Append `.md` to the path, or send\n  `Accept: text/markdown`.\n- Negotiated responses carry `Vary: Accept, Accept-Encoding` and RFC 8288 `Link`\n  headers (`alternate`, `canonical`, `service-desc`, `describedby`, `api-catalog`).\n- Errors this site generates use RFC 9457 `application/problem+json` with a stable\n  `code` extension member.\n\nVersioning: URL path (`/v1`), additive within a version — ignore members you\ndo not recognise. A breaking change ships under a new prefix. Retirement is announced\nwith the `Deprecation` (RFC 9745) and `Sunset` (RFC 8594) response headers at least\n180 days ahead; the policy is published\nmachine-readably at https://mediacopilot.io/v1/site.json.\n\nRate limits: none enforced on this host, so no RateLimit headers are emitted (see\n`api.rate_limits` in site.json). On a 429 or 503 from the CDN, honour `Retry-After` and\nback off exponentially.",
    "contact": {
      "name": "MediaCopilot",
      "email": "hello@mediacopilot.io",
      "url": "https://mediacopilot.io/contact"
    },
    "license": {
      "name": "Proprietary — © MediaCopilot®. All rights reserved."
    }
  },
  "externalDocs": {
    "description": "MediaCopilot developer resources",
    "url": "https://mediacopilot.io/developers"
  },
  "servers": [
    {
      "url": "https://mediacopilot.io",
      "description": "Production"
    }
  ],
  "security": [],
  "tags": [
    {
      "name": "pages",
      "description": "Top-level pages."
    },
    {
      "name": "features",
      "description": "Product feature pages."
    },
    {
      "name": "use-cases",
      "description": "Use-case pages by audience and workflow."
    },
    {
      "name": "blog",
      "description": "Blog posts."
    },
    {
      "name": "developers",
      "description": "Developer and contact resources, including pointers to the product API.",
      "externalDocs": {
        "url": "https://mediacopilot.io/developers"
      }
    },
    {
      "name": "v1",
      "description": "Versioned JSON surface (v1). Typed responses, no credentials.",
      "externalDocs": {
        "url": "https://mediacopilot.io/v1/site.json"
      }
    },
    {
      "name": "legal",
      "description": "Privacy and cookie policies."
    },
    {
      "name": "agents",
      "description": "Machine-readable index files and the error model.",
      "externalDocs": {
        "url": "https://mediacopilot.io/problems"
      }
    }
  ],
  "paths": {
    "/": {
      "get": {
        "tags": [
          "pages"
        ],
        "operationId": "getHome",
        "summary": "Homepage",
        "description": "Automate transcription, subtitling, dubbing, and scene detection. Reframe for social, extract highlights, and search your archive instantly.",
        "parameters": [
          {
            "$ref": "#/components/parameters/Accept"
          }
        ],
        "responses": {
          "200": {
            "description": "The page, as HTML or markdown depending on the Accept header. The markdown representation is also addressable by appending `.md` to the path.",
            "headers": {
              "Vary": {
                "$ref": "#/components/headers/Vary"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              }
            },
            "content": {
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              },
              "text/markdown": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              }
            }
          },
          "403": {
            "description": "Preview environment restricted — returned only by the UAT preview and *.cloudfront.net hosts; the public origin never gates. Problem code `preview_restricted`.",
            "headers": {
              "Vary": {
                "$ref": "#/components/headers/Vary"
              }
            },
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "404": {
            "description": "No page at this path. Problem code `page_not_found`; the body is markdown or problem+json when the path provably has no page and the request asked for one of them, and otherwise the HTML 404 document, which embeds the same markdown recovery guide (https://mediacopilot.io/problems#page-not-found explains why).",
            "x-problem": {
              "code": "page_not_found",
              "type": "https://mediacopilot.io/problems#page-not-found",
              "docs": "https://mediacopilot.io/problems"
            },
            "content": {
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              },
              "text/markdown": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                },
                "example": {
                  "type": "https://mediacopilot.io/problems#page-not-found",
                  "title": "Page not found",
                  "status": 404,
                  "detail": "No page exists at this path. mediacopilot.io serves pages under /features, /use-cases and /blog (also under /es), plus a few top-level pages. /llms.txt and /v1/pages.json list every published page.",
                  "instance": "/some-path-that-does-not-exist",
                  "code": "page_not_found",
                  "docs": "https://mediacopilot.io/problems"
                }
              }
            }
          },
          "406": {
            "description": "No acceptable representation — the Accept header of the request excluded every representation this resource has. Problem code `not_acceptable`.",
            "headers": {
              "Vary": {
                "$ref": "#/components/headers/Vary"
              }
            },
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "429": {
            "description": "Throttled at the CDN. No per-client quota is enforced here, so no RateLimit headers are emitted; honour `Retry-After` and back off exponentially with jitter. Policy: https://mediacopilot.io/v1/site.json (`api.rate_limits`).",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/Retry-After"
              }
            },
            "content": {
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              }
            }
          },
          "5XX": {
            "description": "CDN or origin failure. The body is generated by CloudFront, so it is HTML with no problem+json envelope. Honour `Retry-After` when present and retry with backoff.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/Retry-After"
              }
            },
            "content": {
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              }
            }
          }
        }
      }
    },
    "/.well-known/api-catalog": {
      "get": {
        "tags": [
          "agents"
        ],
        "operationId": "getApiCatalog",
        "summary": "RFC 9727 API catalog",
        "description": "Well-known URI listing every API surface of the business: this host and the credentialed MediaCopilot API, each with its OpenAPI description (`service-desc`), documentation (`service-doc`) and metadata (`service-meta`). Serialized as an RFC 9264 linkset with the RFC 9727 profile parameter.",
        "responses": {
          "200": {
            "description": "The API catalog.",
            "headers": {
              "Vary": {
                "$ref": "#/components/headers/Vary"
              }
            },
            "content": {
              "application/linkset+json": {
                "schema": {
                  "$ref": "#/components/schemas/Linkset"
                }
              }
            }
          },
          "404": {
            "description": "No page at this path. Problem code `page_not_found`; the body is markdown or problem+json when the path provably has no page and the request asked for one of them, and otherwise the HTML 404 document, which embeds the same markdown recovery guide (https://mediacopilot.io/problems#page-not-found explains why).",
            "x-problem": {
              "code": "page_not_found",
              "type": "https://mediacopilot.io/problems#page-not-found",
              "docs": "https://mediacopilot.io/problems"
            },
            "content": {
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              },
              "text/markdown": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                },
                "example": {
                  "type": "https://mediacopilot.io/problems#page-not-found",
                  "title": "Page not found",
                  "status": 404,
                  "detail": "No page exists at this path. mediacopilot.io serves pages under /features, /use-cases and /blog (also under /es), plus a few top-level pages. /llms.txt and /v1/pages.json list every published page.",
                  "instance": "/some-path-that-does-not-exist",
                  "code": "page_not_found",
                  "docs": "https://mediacopilot.io/problems"
                }
              }
            }
          },
          "429": {
            "description": "Throttled at the CDN. No per-client quota is enforced here, so no RateLimit headers are emitted; honour `Retry-After` and back off exponentially with jitter. Policy: https://mediacopilot.io/v1/site.json (`api.rate_limits`).",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/Retry-After"
              }
            },
            "content": {
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              }
            }
          },
          "5XX": {
            "description": "CDN or origin failure. The body is generated by CloudFront, so it is HTML with no problem+json envelope. Honour `Retry-After` when present and retry with backoff.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/Retry-After"
              }
            },
            "content": {
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              }
            }
          }
        }
      }
    },
    "/404": {
      "get": {
        "tags": [
          "agents"
        ],
        "operationId": "get404",
        "summary": "Recovery page served for every unknown path",
        "description": "Reachable directly, and served as the body of every 404. `/404.md` is the markdown recovery guide: where to look next when a path does not exist.",
        "parameters": [
          {
            "$ref": "#/components/parameters/Accept"
          }
        ],
        "responses": {
          "200": {
            "description": "The page, as HTML or markdown depending on the Accept header. The markdown representation is also addressable by appending `.md` to the path.",
            "headers": {
              "Vary": {
                "$ref": "#/components/headers/Vary"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              }
            },
            "content": {
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              },
              "text/markdown": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              }
            }
          },
          "403": {
            "description": "Preview environment restricted — returned only by the UAT preview and *.cloudfront.net hosts; the public origin never gates. Problem code `preview_restricted`.",
            "headers": {
              "Vary": {
                "$ref": "#/components/headers/Vary"
              }
            },
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "406": {
            "description": "No acceptable representation — the Accept header of the request excluded every representation this resource has. Problem code `not_acceptable`.",
            "headers": {
              "Vary": {
                "$ref": "#/components/headers/Vary"
              }
            },
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "429": {
            "description": "Throttled at the CDN. No per-client quota is enforced here, so no RateLimit headers are emitted; honour `Retry-After` and back off exponentially with jitter. Policy: https://mediacopilot.io/v1/site.json (`api.rate_limits`).",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/Retry-After"
              }
            },
            "content": {
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              }
            }
          },
          "5XX": {
            "description": "CDN or origin failure. The body is generated by CloudFront, so it is HTML with no problem+json envelope. Honour `Retry-After` when present and retry with backoff.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/Retry-After"
              }
            },
            "content": {
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              }
            }
          }
        }
      }
    },
    "/404.md": {
      "get": {
        "tags": [
          "agents"
        ],
        "operationId": "get404Markdown",
        "summary": "Recovery page served for every unknown path (markdown)",
        "description": "Markdown twin of the page above. Identical content, no Accept header required.",
        "parameters": [],
        "responses": {
          "200": {
            "description": "The markdown representation of the page.",
            "headers": {
              "Vary": {
                "$ref": "#/components/headers/Vary"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              }
            },
            "content": {
              "text/markdown": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              }
            }
          },
          "403": {
            "description": "Preview environment restricted. Problem code `preview_restricted`.",
            "headers": {
              "Vary": {
                "$ref": "#/components/headers/Vary"
              }
            },
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "404": {
            "description": "No page at this path. Problem code `page_not_found`; the body is markdown or problem+json when the path provably has no page and the request asked for one of them, and otherwise the HTML 404 document, which embeds the same markdown recovery guide (https://mediacopilot.io/problems#page-not-found explains why).",
            "x-problem": {
              "code": "page_not_found",
              "type": "https://mediacopilot.io/problems#page-not-found",
              "docs": "https://mediacopilot.io/problems"
            },
            "content": {
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              },
              "text/markdown": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                },
                "example": {
                  "type": "https://mediacopilot.io/problems#page-not-found",
                  "title": "Page not found",
                  "status": 404,
                  "detail": "No page exists at this path. mediacopilot.io serves pages under /features, /use-cases and /blog (also under /es), plus a few top-level pages. /llms.txt and /v1/pages.json list every published page.",
                  "instance": "/some-path-that-does-not-exist",
                  "code": "page_not_found",
                  "docs": "https://mediacopilot.io/problems"
                }
              }
            }
          },
          "429": {
            "description": "Throttled at the CDN. No per-client quota is enforced here, so no RateLimit headers are emitted; honour `Retry-After` and back off exponentially with jitter. Policy: https://mediacopilot.io/v1/site.json (`api.rate_limits`).",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/Retry-After"
              }
            },
            "content": {
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              }
            }
          },
          "5XX": {
            "description": "CDN or origin failure. The body is generated by CloudFront, so it is HTML with no problem+json envelope. Honour `Retry-After` when present and retry with backoff.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/Retry-After"
              }
            },
            "content": {
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              }
            }
          }
        }
      }
    },
    "/api/{path}": {
      "get": {
        "tags": [
          "agents"
        ],
        "operationId": "getApiPlaceholder",
        "summary": "Always 404 — the product API is not on this host",
        "description": "Documented so agents stop guessing. Every path under /api returns a machine-readable RFC 9457 problem+json 404 (never an HTML page). The public JSON surface of this host is under /v1; the credentialed MediaCopilot product API is at https://api.mediacopilot.cires21.ai/v1 (described at https://api.mediacopilot.cires21.ai/openapi.json) and the MCP Server is issued per customer — contact hello@mediacopilot.io for access.",
        "parameters": [
          {
            "name": "path",
            "in": "path",
            "required": true,
            "description": "Any path segment(s).",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "403": {
            "description": "Preview environment restricted. Problem code `preview_restricted`.",
            "headers": {
              "Vary": {
                "$ref": "#/components/headers/Vary"
              }
            },
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "404": {
            "description": "No API on this host. Problem code `no_api_on_this_host`.",
            "headers": {
              "Vary": {
                "$ref": "#/components/headers/Vary"
              }
            },
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "429": {
            "description": "Throttled at the CDN. No per-client quota is enforced here, so no RateLimit headers are emitted; honour `Retry-After` and back off exponentially with jitter. Policy: https://mediacopilot.io/v1/site.json (`api.rate_limits`).",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/Retry-After"
              }
            },
            "content": {
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              }
            }
          },
          "5XX": {
            "description": "CDN or origin failure. The body is generated by CloudFront, so it is HTML with no problem+json envelope. Honour `Retry-After` when present and retry with backoff.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/Retry-After"
              }
            },
            "content": {
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              }
            }
          }
        }
      }
    },
    "/blog": {
      "get": {
        "tags": [
          "blog"
        ],
        "operationId": "getBlog",
        "summary": "Blog index",
        "parameters": [
          {
            "$ref": "#/components/parameters/Accept"
          }
        ],
        "responses": {
          "200": {
            "description": "The page, as HTML or markdown depending on the Accept header. The markdown representation is also addressable by appending `.md` to the path.",
            "headers": {
              "Vary": {
                "$ref": "#/components/headers/Vary"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              }
            },
            "content": {
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              },
              "text/markdown": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              }
            }
          },
          "403": {
            "description": "Preview environment restricted — returned only by the UAT preview and *.cloudfront.net hosts; the public origin never gates. Problem code `preview_restricted`.",
            "headers": {
              "Vary": {
                "$ref": "#/components/headers/Vary"
              }
            },
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "404": {
            "description": "No page at this path. Problem code `page_not_found`; the body is markdown or problem+json when the path provably has no page and the request asked for one of them, and otherwise the HTML 404 document, which embeds the same markdown recovery guide (https://mediacopilot.io/problems#page-not-found explains why).",
            "x-problem": {
              "code": "page_not_found",
              "type": "https://mediacopilot.io/problems#page-not-found",
              "docs": "https://mediacopilot.io/problems"
            },
            "content": {
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              },
              "text/markdown": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                },
                "example": {
                  "type": "https://mediacopilot.io/problems#page-not-found",
                  "title": "Page not found",
                  "status": 404,
                  "detail": "No page exists at this path. mediacopilot.io serves pages under /features, /use-cases and /blog (also under /es), plus a few top-level pages. /llms.txt and /v1/pages.json list every published page.",
                  "instance": "/some-path-that-does-not-exist",
                  "code": "page_not_found",
                  "docs": "https://mediacopilot.io/problems"
                }
              }
            }
          },
          "406": {
            "description": "No acceptable representation — the Accept header of the request excluded every representation this resource has. Problem code `not_acceptable`.",
            "headers": {
              "Vary": {
                "$ref": "#/components/headers/Vary"
              }
            },
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "429": {
            "description": "Throttled at the CDN. No per-client quota is enforced here, so no RateLimit headers are emitted; honour `Retry-After` and back off exponentially with jitter. Policy: https://mediacopilot.io/v1/site.json (`api.rate_limits`).",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/Retry-After"
              }
            },
            "content": {
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              }
            }
          },
          "5XX": {
            "description": "CDN or origin failure. The body is generated by CloudFront, so it is HTML with no problem+json envelope. Honour `Retry-After` when present and retry with backoff.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/Retry-After"
              }
            },
            "content": {
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              }
            }
          }
        }
      }
    },
    "/blog.md": {
      "get": {
        "tags": [
          "blog"
        ],
        "operationId": "getBlogMarkdown",
        "summary": "Blog index (markdown)",
        "description": "Markdown twin of the page above. Identical content, no Accept header required.",
        "parameters": [],
        "responses": {
          "200": {
            "description": "The markdown representation of the page.",
            "headers": {
              "Vary": {
                "$ref": "#/components/headers/Vary"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              }
            },
            "content": {
              "text/markdown": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              }
            }
          },
          "403": {
            "description": "Preview environment restricted. Problem code `preview_restricted`.",
            "headers": {
              "Vary": {
                "$ref": "#/components/headers/Vary"
              }
            },
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "404": {
            "description": "No page at this path. Problem code `page_not_found`; the body is markdown or problem+json when the path provably has no page and the request asked for one of them, and otherwise the HTML 404 document, which embeds the same markdown recovery guide (https://mediacopilot.io/problems#page-not-found explains why).",
            "x-problem": {
              "code": "page_not_found",
              "type": "https://mediacopilot.io/problems#page-not-found",
              "docs": "https://mediacopilot.io/problems"
            },
            "content": {
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              },
              "text/markdown": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                },
                "example": {
                  "type": "https://mediacopilot.io/problems#page-not-found",
                  "title": "Page not found",
                  "status": 404,
                  "detail": "No page exists at this path. mediacopilot.io serves pages under /features, /use-cases and /blog (also under /es), plus a few top-level pages. /llms.txt and /v1/pages.json list every published page.",
                  "instance": "/some-path-that-does-not-exist",
                  "code": "page_not_found",
                  "docs": "https://mediacopilot.io/problems"
                }
              }
            }
          },
          "429": {
            "description": "Throttled at the CDN. No per-client quota is enforced here, so no RateLimit headers are emitted; honour `Retry-After` and back off exponentially with jitter. Policy: https://mediacopilot.io/v1/site.json (`api.rate_limits`).",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/Retry-After"
              }
            },
            "content": {
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              }
            }
          },
          "5XX": {
            "description": "CDN or origin failure. The body is generated by CloudFront, so it is HTML with no problem+json envelope. Honour `Retry-After` when present and retry with backoff.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/Retry-After"
              }
            },
            "content": {
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              }
            }
          }
        }
      }
    },
    "/blog/{slug}": {
      "get": {
        "tags": [
          "blog"
        ],
        "operationId": "getBlogSlug",
        "summary": "A single blog page",
        "description": "One of 6 blog pages. The `slug` enum lists every published page.",
        "parameters": [
          {
            "$ref": "#/components/parameters/BlogSlug"
          },
          {
            "$ref": "#/components/parameters/Accept"
          }
        ],
        "responses": {
          "200": {
            "description": "The page, as HTML or markdown depending on the Accept header. The markdown representation is also addressable by appending `.md` to the path.",
            "headers": {
              "Vary": {
                "$ref": "#/components/headers/Vary"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              }
            },
            "content": {
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              },
              "text/markdown": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              }
            }
          },
          "403": {
            "description": "Preview environment restricted — returned only by the UAT preview and *.cloudfront.net hosts; the public origin never gates. Problem code `preview_restricted`.",
            "headers": {
              "Vary": {
                "$ref": "#/components/headers/Vary"
              }
            },
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "404": {
            "description": "No page at this path. Problem code `page_not_found`; the body is markdown or problem+json when the path provably has no page and the request asked for one of them, and otherwise the HTML 404 document, which embeds the same markdown recovery guide (https://mediacopilot.io/problems#page-not-found explains why).",
            "x-problem": {
              "code": "page_not_found",
              "type": "https://mediacopilot.io/problems#page-not-found",
              "docs": "https://mediacopilot.io/problems"
            },
            "content": {
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              },
              "text/markdown": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                },
                "example": {
                  "type": "https://mediacopilot.io/problems#page-not-found",
                  "title": "Page not found",
                  "status": 404,
                  "detail": "No page exists at this path. mediacopilot.io serves pages under /features, /use-cases and /blog (also under /es), plus a few top-level pages. /llms.txt and /v1/pages.json list every published page.",
                  "instance": "/some-path-that-does-not-exist",
                  "code": "page_not_found",
                  "docs": "https://mediacopilot.io/problems"
                }
              }
            }
          },
          "406": {
            "description": "No acceptable representation — the Accept header of the request excluded every representation this resource has. Problem code `not_acceptable`.",
            "headers": {
              "Vary": {
                "$ref": "#/components/headers/Vary"
              }
            },
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "429": {
            "description": "Throttled at the CDN. No per-client quota is enforced here, so no RateLimit headers are emitted; honour `Retry-After` and back off exponentially with jitter. Policy: https://mediacopilot.io/v1/site.json (`api.rate_limits`).",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/Retry-After"
              }
            },
            "content": {
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              }
            }
          },
          "5XX": {
            "description": "CDN or origin failure. The body is generated by CloudFront, so it is HTML with no problem+json envelope. Honour `Retry-After` when present and retry with backoff.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/Retry-After"
              }
            },
            "content": {
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              }
            }
          }
        }
      }
    },
    "/blog/{slug}.md": {
      "get": {
        "tags": [
          "blog"
        ],
        "operationId": "getBlogSlugMarkdown",
        "summary": "A single blog page (markdown)",
        "description": "Markdown twin of the page above. Identical content, no Accept header required.",
        "parameters": [
          {
            "$ref": "#/components/parameters/BlogSlug"
          }
        ],
        "responses": {
          "200": {
            "description": "The markdown representation of the page.",
            "headers": {
              "Vary": {
                "$ref": "#/components/headers/Vary"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              }
            },
            "content": {
              "text/markdown": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              }
            }
          },
          "403": {
            "description": "Preview environment restricted. Problem code `preview_restricted`.",
            "headers": {
              "Vary": {
                "$ref": "#/components/headers/Vary"
              }
            },
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "404": {
            "description": "No page at this path. Problem code `page_not_found`; the body is markdown or problem+json when the path provably has no page and the request asked for one of them, and otherwise the HTML 404 document, which embeds the same markdown recovery guide (https://mediacopilot.io/problems#page-not-found explains why).",
            "x-problem": {
              "code": "page_not_found",
              "type": "https://mediacopilot.io/problems#page-not-found",
              "docs": "https://mediacopilot.io/problems"
            },
            "content": {
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              },
              "text/markdown": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                },
                "example": {
                  "type": "https://mediacopilot.io/problems#page-not-found",
                  "title": "Page not found",
                  "status": 404,
                  "detail": "No page exists at this path. mediacopilot.io serves pages under /features, /use-cases and /blog (also under /es), plus a few top-level pages. /llms.txt and /v1/pages.json list every published page.",
                  "instance": "/some-path-that-does-not-exist",
                  "code": "page_not_found",
                  "docs": "https://mediacopilot.io/problems"
                }
              }
            }
          },
          "429": {
            "description": "Throttled at the CDN. No per-client quota is enforced here, so no RateLimit headers are emitted; honour `Retry-After` and back off exponentially with jitter. Policy: https://mediacopilot.io/v1/site.json (`api.rate_limits`).",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/Retry-After"
              }
            },
            "content": {
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              }
            }
          },
          "5XX": {
            "description": "CDN or origin failure. The body is generated by CloudFront, so it is HTML with no problem+json envelope. Honour `Retry-After` when present and retry with backoff.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/Retry-After"
              }
            },
            "content": {
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              }
            }
          }
        }
      }
    },
    "/contact": {
      "get": {
        "tags": [
          "developers"
        ],
        "operationId": "getContact",
        "summary": "Contact MediaCopilot — Sales, Support, API Access",
        "description": "Contact MediaCopilot: sales and demos, technical support, API and MCP Server access, and GDPR requests. Cires21, S.L., Las Rozas (Madrid), Spain.",
        "parameters": [
          {
            "$ref": "#/components/parameters/Accept"
          }
        ],
        "responses": {
          "200": {
            "description": "The page, as HTML or markdown depending on the Accept header. The markdown representation is also addressable by appending `.md` to the path.",
            "headers": {
              "Vary": {
                "$ref": "#/components/headers/Vary"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              }
            },
            "content": {
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              },
              "text/markdown": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              }
            }
          },
          "403": {
            "description": "Preview environment restricted — returned only by the UAT preview and *.cloudfront.net hosts; the public origin never gates. Problem code `preview_restricted`.",
            "headers": {
              "Vary": {
                "$ref": "#/components/headers/Vary"
              }
            },
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "406": {
            "description": "No acceptable representation — the Accept header of the request excluded every representation this resource has. Problem code `not_acceptable`.",
            "headers": {
              "Vary": {
                "$ref": "#/components/headers/Vary"
              }
            },
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "429": {
            "description": "Throttled at the CDN. No per-client quota is enforced here, so no RateLimit headers are emitted; honour `Retry-After` and back off exponentially with jitter. Policy: https://mediacopilot.io/v1/site.json (`api.rate_limits`).",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/Retry-After"
              }
            },
            "content": {
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              }
            }
          },
          "5XX": {
            "description": "CDN or origin failure. The body is generated by CloudFront, so it is HTML with no problem+json envelope. Honour `Retry-After` when present and retry with backoff.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/Retry-After"
              }
            },
            "content": {
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              }
            }
          }
        }
      }
    },
    "/contact.md": {
      "get": {
        "tags": [
          "developers"
        ],
        "operationId": "getContactMarkdown",
        "summary": "Contact MediaCopilot — Sales, Support, API Access (markdown)",
        "description": "Markdown twin of the page above. Identical content, no Accept header required.",
        "parameters": [],
        "responses": {
          "200": {
            "description": "The markdown representation of the page.",
            "headers": {
              "Vary": {
                "$ref": "#/components/headers/Vary"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              }
            },
            "content": {
              "text/markdown": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              }
            }
          },
          "403": {
            "description": "Preview environment restricted. Problem code `preview_restricted`.",
            "headers": {
              "Vary": {
                "$ref": "#/components/headers/Vary"
              }
            },
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "404": {
            "description": "No page at this path. Problem code `page_not_found`; the body is markdown or problem+json when the path provably has no page and the request asked for one of them, and otherwise the HTML 404 document, which embeds the same markdown recovery guide (https://mediacopilot.io/problems#page-not-found explains why).",
            "x-problem": {
              "code": "page_not_found",
              "type": "https://mediacopilot.io/problems#page-not-found",
              "docs": "https://mediacopilot.io/problems"
            },
            "content": {
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              },
              "text/markdown": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                },
                "example": {
                  "type": "https://mediacopilot.io/problems#page-not-found",
                  "title": "Page not found",
                  "status": 404,
                  "detail": "No page exists at this path. mediacopilot.io serves pages under /features, /use-cases and /blog (also under /es), plus a few top-level pages. /llms.txt and /v1/pages.json list every published page.",
                  "instance": "/some-path-that-does-not-exist",
                  "code": "page_not_found",
                  "docs": "https://mediacopilot.io/problems"
                }
              }
            }
          },
          "429": {
            "description": "Throttled at the CDN. No per-client quota is enforced here, so no RateLimit headers are emitted; honour `Retry-After` and back off exponentially with jitter. Policy: https://mediacopilot.io/v1/site.json (`api.rate_limits`).",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/Retry-After"
              }
            },
            "content": {
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              }
            }
          },
          "5XX": {
            "description": "CDN or origin failure. The body is generated by CloudFront, so it is HTML with no problem+json envelope. Honour `Retry-After` when present and retry with backoff.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/Retry-After"
              }
            },
            "content": {
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              }
            }
          }
        }
      }
    },
    "/cookie-policy": {
      "get": {
        "tags": [
          "legal"
        ],
        "operationId": "getCookiePolicy",
        "summary": "Cookie Policy — MediaCopilot",
        "description": "Learn how MediaCopilot uses cookies and how you can manage your cookie preferences.",
        "parameters": [
          {
            "$ref": "#/components/parameters/Accept"
          }
        ],
        "responses": {
          "200": {
            "description": "The page, as HTML or markdown depending on the Accept header. The markdown representation is also addressable by appending `.md` to the path.",
            "headers": {
              "Vary": {
                "$ref": "#/components/headers/Vary"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              }
            },
            "content": {
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              },
              "text/markdown": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              }
            }
          },
          "403": {
            "description": "Preview environment restricted — returned only by the UAT preview and *.cloudfront.net hosts; the public origin never gates. Problem code `preview_restricted`.",
            "headers": {
              "Vary": {
                "$ref": "#/components/headers/Vary"
              }
            },
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "404": {
            "description": "No page at this path. Problem code `page_not_found`; the body is markdown or problem+json when the path provably has no page and the request asked for one of them, and otherwise the HTML 404 document, which embeds the same markdown recovery guide (https://mediacopilot.io/problems#page-not-found explains why).",
            "x-problem": {
              "code": "page_not_found",
              "type": "https://mediacopilot.io/problems#page-not-found",
              "docs": "https://mediacopilot.io/problems"
            },
            "content": {
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              },
              "text/markdown": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                },
                "example": {
                  "type": "https://mediacopilot.io/problems#page-not-found",
                  "title": "Page not found",
                  "status": 404,
                  "detail": "No page exists at this path. mediacopilot.io serves pages under /features, /use-cases and /blog (also under /es), plus a few top-level pages. /llms.txt and /v1/pages.json list every published page.",
                  "instance": "/some-path-that-does-not-exist",
                  "code": "page_not_found",
                  "docs": "https://mediacopilot.io/problems"
                }
              }
            }
          },
          "406": {
            "description": "No acceptable representation — the Accept header of the request excluded every representation this resource has. Problem code `not_acceptable`.",
            "headers": {
              "Vary": {
                "$ref": "#/components/headers/Vary"
              }
            },
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "429": {
            "description": "Throttled at the CDN. No per-client quota is enforced here, so no RateLimit headers are emitted; honour `Retry-After` and back off exponentially with jitter. Policy: https://mediacopilot.io/v1/site.json (`api.rate_limits`).",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/Retry-After"
              }
            },
            "content": {
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              }
            }
          },
          "5XX": {
            "description": "CDN or origin failure. The body is generated by CloudFront, so it is HTML with no problem+json envelope. Honour `Retry-After` when present and retry with backoff.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/Retry-After"
              }
            },
            "content": {
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              }
            }
          }
        }
      }
    },
    "/cookie-policy.md": {
      "get": {
        "tags": [
          "legal"
        ],
        "operationId": "getCookiePolicyMarkdown",
        "summary": "Cookie Policy — MediaCopilot (markdown)",
        "description": "Markdown twin of the page above. Identical content, no Accept header required.",
        "parameters": [],
        "responses": {
          "200": {
            "description": "The markdown representation of the page.",
            "headers": {
              "Vary": {
                "$ref": "#/components/headers/Vary"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              }
            },
            "content": {
              "text/markdown": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              }
            }
          },
          "403": {
            "description": "Preview environment restricted. Problem code `preview_restricted`.",
            "headers": {
              "Vary": {
                "$ref": "#/components/headers/Vary"
              }
            },
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "404": {
            "description": "No page at this path. Problem code `page_not_found`; the body is markdown or problem+json when the path provably has no page and the request asked for one of them, and otherwise the HTML 404 document, which embeds the same markdown recovery guide (https://mediacopilot.io/problems#page-not-found explains why).",
            "x-problem": {
              "code": "page_not_found",
              "type": "https://mediacopilot.io/problems#page-not-found",
              "docs": "https://mediacopilot.io/problems"
            },
            "content": {
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              },
              "text/markdown": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                },
                "example": {
                  "type": "https://mediacopilot.io/problems#page-not-found",
                  "title": "Page not found",
                  "status": 404,
                  "detail": "No page exists at this path. mediacopilot.io serves pages under /features, /use-cases and /blog (also under /es), plus a few top-level pages. /llms.txt and /v1/pages.json list every published page.",
                  "instance": "/some-path-that-does-not-exist",
                  "code": "page_not_found",
                  "docs": "https://mediacopilot.io/problems"
                }
              }
            }
          },
          "429": {
            "description": "Throttled at the CDN. No per-client quota is enforced here, so no RateLimit headers are emitted; honour `Retry-After` and back off exponentially with jitter. Policy: https://mediacopilot.io/v1/site.json (`api.rate_limits`).",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/Retry-After"
              }
            },
            "content": {
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              }
            }
          },
          "5XX": {
            "description": "CDN or origin failure. The body is generated by CloudFront, so it is HTML with no problem+json envelope. Honour `Retry-After` when present and retry with backoff.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/Retry-After"
              }
            },
            "content": {
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              }
            }
          }
        }
      }
    },
    "/developers": {
      "get": {
        "tags": [
          "developers"
        ],
        "operationId": "getDevelopers",
        "summary": "MediaCopilot Developer Resources — API, OpenAPI Spec, MCP Server",
        "description": "Developer resources for MediaCopilot: REST API base URL and OpenAPI 3.1 spec, Bearer token authentication, MCP Server, versioning and deprecation policy, and the machine-readable surface of mediacopilot.io.",
        "parameters": [
          {
            "$ref": "#/components/parameters/Accept"
          }
        ],
        "responses": {
          "200": {
            "description": "The page, as HTML or markdown depending on the Accept header. The markdown representation is also addressable by appending `.md` to the path.",
            "headers": {
              "Vary": {
                "$ref": "#/components/headers/Vary"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              }
            },
            "content": {
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              },
              "text/markdown": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              }
            }
          },
          "403": {
            "description": "Preview environment restricted — returned only by the UAT preview and *.cloudfront.net hosts; the public origin never gates. Problem code `preview_restricted`.",
            "headers": {
              "Vary": {
                "$ref": "#/components/headers/Vary"
              }
            },
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "406": {
            "description": "No acceptable representation — the Accept header of the request excluded every representation this resource has. Problem code `not_acceptable`.",
            "headers": {
              "Vary": {
                "$ref": "#/components/headers/Vary"
              }
            },
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "429": {
            "description": "Throttled at the CDN. No per-client quota is enforced here, so no RateLimit headers are emitted; honour `Retry-After` and back off exponentially with jitter. Policy: https://mediacopilot.io/v1/site.json (`api.rate_limits`).",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/Retry-After"
              }
            },
            "content": {
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              }
            }
          },
          "5XX": {
            "description": "CDN or origin failure. The body is generated by CloudFront, so it is HTML with no problem+json envelope. Honour `Retry-After` when present and retry with backoff.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/Retry-After"
              }
            },
            "content": {
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              }
            }
          }
        }
      }
    },
    "/developers.md": {
      "get": {
        "tags": [
          "developers"
        ],
        "operationId": "getDevelopersMarkdown",
        "summary": "MediaCopilot Developer Resources — API, OpenAPI Spec, MCP Server (markdown)",
        "description": "Markdown twin of the page above. Identical content, no Accept header required.",
        "parameters": [],
        "responses": {
          "200": {
            "description": "The markdown representation of the page.",
            "headers": {
              "Vary": {
                "$ref": "#/components/headers/Vary"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              }
            },
            "content": {
              "text/markdown": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              }
            }
          },
          "403": {
            "description": "Preview environment restricted. Problem code `preview_restricted`.",
            "headers": {
              "Vary": {
                "$ref": "#/components/headers/Vary"
              }
            },
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "404": {
            "description": "No page at this path. Problem code `page_not_found`; the body is markdown or problem+json when the path provably has no page and the request asked for one of them, and otherwise the HTML 404 document, which embeds the same markdown recovery guide (https://mediacopilot.io/problems#page-not-found explains why).",
            "x-problem": {
              "code": "page_not_found",
              "type": "https://mediacopilot.io/problems#page-not-found",
              "docs": "https://mediacopilot.io/problems"
            },
            "content": {
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              },
              "text/markdown": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                },
                "example": {
                  "type": "https://mediacopilot.io/problems#page-not-found",
                  "title": "Page not found",
                  "status": 404,
                  "detail": "No page exists at this path. mediacopilot.io serves pages under /features, /use-cases and /blog (also under /es), plus a few top-level pages. /llms.txt and /v1/pages.json list every published page.",
                  "instance": "/some-path-that-does-not-exist",
                  "code": "page_not_found",
                  "docs": "https://mediacopilot.io/problems"
                }
              }
            }
          },
          "429": {
            "description": "Throttled at the CDN. No per-client quota is enforced here, so no RateLimit headers are emitted; honour `Retry-After` and back off exponentially with jitter. Policy: https://mediacopilot.io/v1/site.json (`api.rate_limits`).",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/Retry-After"
              }
            },
            "content": {
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              }
            }
          },
          "5XX": {
            "description": "CDN or origin failure. The body is generated by CloudFront, so it is HTML with no problem+json envelope. Honour `Retry-After` when present and retry with backoff.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/Retry-After"
              }
            },
            "content": {
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              }
            }
          }
        }
      }
    },
    "/es": {
      "get": {
        "tags": [
          "pages"
        ],
        "operationId": "getEs",
        "summary": "Homepage (Spanish)",
        "description": "Automatiza la transcripción, el subtitulado, el doblaje, la generación de clips y la búsqueda en archivos audiovisuales con la IA de MediaCopilot.",
        "parameters": [
          {
            "$ref": "#/components/parameters/Accept"
          }
        ],
        "responses": {
          "200": {
            "description": "The page, as HTML or markdown depending on the Accept header. The markdown representation is also addressable by appending `.md` to the path.",
            "headers": {
              "Vary": {
                "$ref": "#/components/headers/Vary"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              }
            },
            "content": {
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              },
              "text/markdown": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              }
            }
          },
          "403": {
            "description": "Preview environment restricted — returned only by the UAT preview and *.cloudfront.net hosts; the public origin never gates. Problem code `preview_restricted`.",
            "headers": {
              "Vary": {
                "$ref": "#/components/headers/Vary"
              }
            },
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "404": {
            "description": "No page at this path. Problem code `page_not_found`; the body is markdown or problem+json when the path provably has no page and the request asked for one of them, and otherwise the HTML 404 document, which embeds the same markdown recovery guide (https://mediacopilot.io/problems#page-not-found explains why).",
            "x-problem": {
              "code": "page_not_found",
              "type": "https://mediacopilot.io/problems#page-not-found",
              "docs": "https://mediacopilot.io/problems"
            },
            "content": {
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              },
              "text/markdown": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                },
                "example": {
                  "type": "https://mediacopilot.io/problems#page-not-found",
                  "title": "Page not found",
                  "status": 404,
                  "detail": "No page exists at this path. mediacopilot.io serves pages under /features, /use-cases and /blog (also under /es), plus a few top-level pages. /llms.txt and /v1/pages.json list every published page.",
                  "instance": "/some-path-that-does-not-exist",
                  "code": "page_not_found",
                  "docs": "https://mediacopilot.io/problems"
                }
              }
            }
          },
          "406": {
            "description": "No acceptable representation — the Accept header of the request excluded every representation this resource has. Problem code `not_acceptable`.",
            "headers": {
              "Vary": {
                "$ref": "#/components/headers/Vary"
              }
            },
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "429": {
            "description": "Throttled at the CDN. No per-client quota is enforced here, so no RateLimit headers are emitted; honour `Retry-After` and back off exponentially with jitter. Policy: https://mediacopilot.io/v1/site.json (`api.rate_limits`).",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/Retry-After"
              }
            },
            "content": {
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              }
            }
          },
          "5XX": {
            "description": "CDN or origin failure. The body is generated by CloudFront, so it is HTML with no problem+json envelope. Honour `Retry-After` when present and retry with backoff.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/Retry-After"
              }
            },
            "content": {
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              }
            }
          }
        }
      }
    },
    "/es.md": {
      "get": {
        "tags": [
          "pages"
        ],
        "operationId": "getEsMarkdown",
        "summary": "Homepage (Spanish) (markdown)",
        "description": "Markdown twin of the page above. Identical content, no Accept header required.",
        "parameters": [],
        "responses": {
          "200": {
            "description": "The markdown representation of the page.",
            "headers": {
              "Vary": {
                "$ref": "#/components/headers/Vary"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              }
            },
            "content": {
              "text/markdown": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              }
            }
          },
          "403": {
            "description": "Preview environment restricted. Problem code `preview_restricted`.",
            "headers": {
              "Vary": {
                "$ref": "#/components/headers/Vary"
              }
            },
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "404": {
            "description": "No page at this path. Problem code `page_not_found`; the body is markdown or problem+json when the path provably has no page and the request asked for one of them, and otherwise the HTML 404 document, which embeds the same markdown recovery guide (https://mediacopilot.io/problems#page-not-found explains why).",
            "x-problem": {
              "code": "page_not_found",
              "type": "https://mediacopilot.io/problems#page-not-found",
              "docs": "https://mediacopilot.io/problems"
            },
            "content": {
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              },
              "text/markdown": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                },
                "example": {
                  "type": "https://mediacopilot.io/problems#page-not-found",
                  "title": "Page not found",
                  "status": 404,
                  "detail": "No page exists at this path. mediacopilot.io serves pages under /features, /use-cases and /blog (also under /es), plus a few top-level pages. /llms.txt and /v1/pages.json list every published page.",
                  "instance": "/some-path-that-does-not-exist",
                  "code": "page_not_found",
                  "docs": "https://mediacopilot.io/problems"
                }
              }
            }
          },
          "429": {
            "description": "Throttled at the CDN. No per-client quota is enforced here, so no RateLimit headers are emitted; honour `Retry-After` and back off exponentially with jitter. Policy: https://mediacopilot.io/v1/site.json (`api.rate_limits`).",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/Retry-After"
              }
            },
            "content": {
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              }
            }
          },
          "5XX": {
            "description": "CDN or origin failure. The body is generated by CloudFront, so it is HTML with no problem+json envelope. Honour `Retry-After` when present and retry with backoff.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/Retry-After"
              }
            },
            "content": {
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              }
            }
          }
        }
      }
    },
    "/es/blog": {
      "get": {
        "tags": [
          "blog"
        ],
        "operationId": "getEsBlog",
        "summary": "Blog index (Spanish)",
        "parameters": [
          {
            "$ref": "#/components/parameters/Accept"
          }
        ],
        "responses": {
          "200": {
            "description": "The page, as HTML or markdown depending on the Accept header. The markdown representation is also addressable by appending `.md` to the path.",
            "headers": {
              "Vary": {
                "$ref": "#/components/headers/Vary"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              }
            },
            "content": {
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              },
              "text/markdown": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              }
            }
          },
          "403": {
            "description": "Preview environment restricted — returned only by the UAT preview and *.cloudfront.net hosts; the public origin never gates. Problem code `preview_restricted`.",
            "headers": {
              "Vary": {
                "$ref": "#/components/headers/Vary"
              }
            },
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "404": {
            "description": "No page at this path. Problem code `page_not_found`; the body is markdown or problem+json when the path provably has no page and the request asked for one of them, and otherwise the HTML 404 document, which embeds the same markdown recovery guide (https://mediacopilot.io/problems#page-not-found explains why).",
            "x-problem": {
              "code": "page_not_found",
              "type": "https://mediacopilot.io/problems#page-not-found",
              "docs": "https://mediacopilot.io/problems"
            },
            "content": {
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              },
              "text/markdown": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                },
                "example": {
                  "type": "https://mediacopilot.io/problems#page-not-found",
                  "title": "Page not found",
                  "status": 404,
                  "detail": "No page exists at this path. mediacopilot.io serves pages under /features, /use-cases and /blog (also under /es), plus a few top-level pages. /llms.txt and /v1/pages.json list every published page.",
                  "instance": "/some-path-that-does-not-exist",
                  "code": "page_not_found",
                  "docs": "https://mediacopilot.io/problems"
                }
              }
            }
          },
          "406": {
            "description": "No acceptable representation — the Accept header of the request excluded every representation this resource has. Problem code `not_acceptable`.",
            "headers": {
              "Vary": {
                "$ref": "#/components/headers/Vary"
              }
            },
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "429": {
            "description": "Throttled at the CDN. No per-client quota is enforced here, so no RateLimit headers are emitted; honour `Retry-After` and back off exponentially with jitter. Policy: https://mediacopilot.io/v1/site.json (`api.rate_limits`).",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/Retry-After"
              }
            },
            "content": {
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              }
            }
          },
          "5XX": {
            "description": "CDN or origin failure. The body is generated by CloudFront, so it is HTML with no problem+json envelope. Honour `Retry-After` when present and retry with backoff.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/Retry-After"
              }
            },
            "content": {
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              }
            }
          }
        }
      }
    },
    "/es/blog.md": {
      "get": {
        "tags": [
          "blog"
        ],
        "operationId": "getEsBlogMarkdown",
        "summary": "Blog index (Spanish) (markdown)",
        "description": "Markdown twin of the page above. Identical content, no Accept header required.",
        "parameters": [],
        "responses": {
          "200": {
            "description": "The markdown representation of the page.",
            "headers": {
              "Vary": {
                "$ref": "#/components/headers/Vary"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              }
            },
            "content": {
              "text/markdown": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              }
            }
          },
          "403": {
            "description": "Preview environment restricted. Problem code `preview_restricted`.",
            "headers": {
              "Vary": {
                "$ref": "#/components/headers/Vary"
              }
            },
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "404": {
            "description": "No page at this path. Problem code `page_not_found`; the body is markdown or problem+json when the path provably has no page and the request asked for one of them, and otherwise the HTML 404 document, which embeds the same markdown recovery guide (https://mediacopilot.io/problems#page-not-found explains why).",
            "x-problem": {
              "code": "page_not_found",
              "type": "https://mediacopilot.io/problems#page-not-found",
              "docs": "https://mediacopilot.io/problems"
            },
            "content": {
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              },
              "text/markdown": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                },
                "example": {
                  "type": "https://mediacopilot.io/problems#page-not-found",
                  "title": "Page not found",
                  "status": 404,
                  "detail": "No page exists at this path. mediacopilot.io serves pages under /features, /use-cases and /blog (also under /es), plus a few top-level pages. /llms.txt and /v1/pages.json list every published page.",
                  "instance": "/some-path-that-does-not-exist",
                  "code": "page_not_found",
                  "docs": "https://mediacopilot.io/problems"
                }
              }
            }
          },
          "429": {
            "description": "Throttled at the CDN. No per-client quota is enforced here, so no RateLimit headers are emitted; honour `Retry-After` and back off exponentially with jitter. Policy: https://mediacopilot.io/v1/site.json (`api.rate_limits`).",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/Retry-After"
              }
            },
            "content": {
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              }
            }
          },
          "5XX": {
            "description": "CDN or origin failure. The body is generated by CloudFront, so it is HTML with no problem+json envelope. Honour `Retry-After` when present and retry with backoff.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/Retry-After"
              }
            },
            "content": {
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              }
            }
          }
        }
      }
    },
    "/es/blog/{slug}": {
      "get": {
        "tags": [
          "blog"
        ],
        "operationId": "getEsBlogSlug",
        "summary": "A single blog page (Spanish)",
        "description": "One of 6 blog pages. The `slug` enum lists every published page.",
        "parameters": [
          {
            "$ref": "#/components/parameters/EsBlogSlug"
          },
          {
            "$ref": "#/components/parameters/Accept"
          }
        ],
        "responses": {
          "200": {
            "description": "The page, as HTML or markdown depending on the Accept header. The markdown representation is also addressable by appending `.md` to the path.",
            "headers": {
              "Vary": {
                "$ref": "#/components/headers/Vary"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              }
            },
            "content": {
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              },
              "text/markdown": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              }
            }
          },
          "403": {
            "description": "Preview environment restricted — returned only by the UAT preview and *.cloudfront.net hosts; the public origin never gates. Problem code `preview_restricted`.",
            "headers": {
              "Vary": {
                "$ref": "#/components/headers/Vary"
              }
            },
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "404": {
            "description": "No page at this path. Problem code `page_not_found`; the body is markdown or problem+json when the path provably has no page and the request asked for one of them, and otherwise the HTML 404 document, which embeds the same markdown recovery guide (https://mediacopilot.io/problems#page-not-found explains why).",
            "x-problem": {
              "code": "page_not_found",
              "type": "https://mediacopilot.io/problems#page-not-found",
              "docs": "https://mediacopilot.io/problems"
            },
            "content": {
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              },
              "text/markdown": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                },
                "example": {
                  "type": "https://mediacopilot.io/problems#page-not-found",
                  "title": "Page not found",
                  "status": 404,
                  "detail": "No page exists at this path. mediacopilot.io serves pages under /features, /use-cases and /blog (also under /es), plus a few top-level pages. /llms.txt and /v1/pages.json list every published page.",
                  "instance": "/some-path-that-does-not-exist",
                  "code": "page_not_found",
                  "docs": "https://mediacopilot.io/problems"
                }
              }
            }
          },
          "406": {
            "description": "No acceptable representation — the Accept header of the request excluded every representation this resource has. Problem code `not_acceptable`.",
            "headers": {
              "Vary": {
                "$ref": "#/components/headers/Vary"
              }
            },
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "429": {
            "description": "Throttled at the CDN. No per-client quota is enforced here, so no RateLimit headers are emitted; honour `Retry-After` and back off exponentially with jitter. Policy: https://mediacopilot.io/v1/site.json (`api.rate_limits`).",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/Retry-After"
              }
            },
            "content": {
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              }
            }
          },
          "5XX": {
            "description": "CDN or origin failure. The body is generated by CloudFront, so it is HTML with no problem+json envelope. Honour `Retry-After` when present and retry with backoff.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/Retry-After"
              }
            },
            "content": {
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              }
            }
          }
        }
      }
    },
    "/es/blog/{slug}.md": {
      "get": {
        "tags": [
          "blog"
        ],
        "operationId": "getEsBlogSlugMarkdown",
        "summary": "A single blog page (Spanish) (markdown)",
        "description": "Markdown twin of the page above. Identical content, no Accept header required.",
        "parameters": [
          {
            "$ref": "#/components/parameters/EsBlogSlug"
          }
        ],
        "responses": {
          "200": {
            "description": "The markdown representation of the page.",
            "headers": {
              "Vary": {
                "$ref": "#/components/headers/Vary"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              }
            },
            "content": {
              "text/markdown": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              }
            }
          },
          "403": {
            "description": "Preview environment restricted. Problem code `preview_restricted`.",
            "headers": {
              "Vary": {
                "$ref": "#/components/headers/Vary"
              }
            },
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "404": {
            "description": "No page at this path. Problem code `page_not_found`; the body is markdown or problem+json when the path provably has no page and the request asked for one of them, and otherwise the HTML 404 document, which embeds the same markdown recovery guide (https://mediacopilot.io/problems#page-not-found explains why).",
            "x-problem": {
              "code": "page_not_found",
              "type": "https://mediacopilot.io/problems#page-not-found",
              "docs": "https://mediacopilot.io/problems"
            },
            "content": {
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              },
              "text/markdown": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                },
                "example": {
                  "type": "https://mediacopilot.io/problems#page-not-found",
                  "title": "Page not found",
                  "status": 404,
                  "detail": "No page exists at this path. mediacopilot.io serves pages under /features, /use-cases and /blog (also under /es), plus a few top-level pages. /llms.txt and /v1/pages.json list every published page.",
                  "instance": "/some-path-that-does-not-exist",
                  "code": "page_not_found",
                  "docs": "https://mediacopilot.io/problems"
                }
              }
            }
          },
          "429": {
            "description": "Throttled at the CDN. No per-client quota is enforced here, so no RateLimit headers are emitted; honour `Retry-After` and back off exponentially with jitter. Policy: https://mediacopilot.io/v1/site.json (`api.rate_limits`).",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/Retry-After"
              }
            },
            "content": {
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              }
            }
          },
          "5XX": {
            "description": "CDN or origin failure. The body is generated by CloudFront, so it is HTML with no problem+json envelope. Honour `Retry-After` when present and retry with backoff.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/Retry-After"
              }
            },
            "content": {
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              }
            }
          }
        }
      }
    },
    "/es/features": {
      "get": {
        "tags": [
          "features"
        ],
        "operationId": "getEsFeatures",
        "summary": "Features index (Spanish)",
        "description": "Explora todas las funcionalidades de MediaCopilot: transcripción con IA, subtitulado automático, clipping de vídeo, doblaje, momentos destacados, búsqueda en archivo y mucho más para equipos de medios.",
        "parameters": [
          {
            "$ref": "#/components/parameters/Accept"
          }
        ],
        "responses": {
          "200": {
            "description": "The page, as HTML or markdown depending on the Accept header. The markdown representation is also addressable by appending `.md` to the path.",
            "headers": {
              "Vary": {
                "$ref": "#/components/headers/Vary"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              }
            },
            "content": {
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              },
              "text/markdown": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              }
            }
          },
          "403": {
            "description": "Preview environment restricted — returned only by the UAT preview and *.cloudfront.net hosts; the public origin never gates. Problem code `preview_restricted`.",
            "headers": {
              "Vary": {
                "$ref": "#/components/headers/Vary"
              }
            },
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "404": {
            "description": "No page at this path. Problem code `page_not_found`; the body is markdown or problem+json when the path provably has no page and the request asked for one of them, and otherwise the HTML 404 document, which embeds the same markdown recovery guide (https://mediacopilot.io/problems#page-not-found explains why).",
            "x-problem": {
              "code": "page_not_found",
              "type": "https://mediacopilot.io/problems#page-not-found",
              "docs": "https://mediacopilot.io/problems"
            },
            "content": {
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              },
              "text/markdown": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                },
                "example": {
                  "type": "https://mediacopilot.io/problems#page-not-found",
                  "title": "Page not found",
                  "status": 404,
                  "detail": "No page exists at this path. mediacopilot.io serves pages under /features, /use-cases and /blog (also under /es), plus a few top-level pages. /llms.txt and /v1/pages.json list every published page.",
                  "instance": "/some-path-that-does-not-exist",
                  "code": "page_not_found",
                  "docs": "https://mediacopilot.io/problems"
                }
              }
            }
          },
          "406": {
            "description": "No acceptable representation — the Accept header of the request excluded every representation this resource has. Problem code `not_acceptable`.",
            "headers": {
              "Vary": {
                "$ref": "#/components/headers/Vary"
              }
            },
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "429": {
            "description": "Throttled at the CDN. No per-client quota is enforced here, so no RateLimit headers are emitted; honour `Retry-After` and back off exponentially with jitter. Policy: https://mediacopilot.io/v1/site.json (`api.rate_limits`).",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/Retry-After"
              }
            },
            "content": {
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              }
            }
          },
          "5XX": {
            "description": "CDN or origin failure. The body is generated by CloudFront, so it is HTML with no problem+json envelope. Honour `Retry-After` when present and retry with backoff.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/Retry-After"
              }
            },
            "content": {
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              }
            }
          }
        }
      }
    },
    "/es/features.md": {
      "get": {
        "tags": [
          "features"
        ],
        "operationId": "getEsFeaturesMarkdown",
        "summary": "Features index (Spanish) (markdown)",
        "description": "Markdown twin of the page above. Identical content, no Accept header required.",
        "parameters": [],
        "responses": {
          "200": {
            "description": "The markdown representation of the page.",
            "headers": {
              "Vary": {
                "$ref": "#/components/headers/Vary"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              }
            },
            "content": {
              "text/markdown": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              }
            }
          },
          "403": {
            "description": "Preview environment restricted. Problem code `preview_restricted`.",
            "headers": {
              "Vary": {
                "$ref": "#/components/headers/Vary"
              }
            },
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "404": {
            "description": "No page at this path. Problem code `page_not_found`; the body is markdown or problem+json when the path provably has no page and the request asked for one of them, and otherwise the HTML 404 document, which embeds the same markdown recovery guide (https://mediacopilot.io/problems#page-not-found explains why).",
            "x-problem": {
              "code": "page_not_found",
              "type": "https://mediacopilot.io/problems#page-not-found",
              "docs": "https://mediacopilot.io/problems"
            },
            "content": {
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              },
              "text/markdown": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                },
                "example": {
                  "type": "https://mediacopilot.io/problems#page-not-found",
                  "title": "Page not found",
                  "status": 404,
                  "detail": "No page exists at this path. mediacopilot.io serves pages under /features, /use-cases and /blog (also under /es), plus a few top-level pages. /llms.txt and /v1/pages.json list every published page.",
                  "instance": "/some-path-that-does-not-exist",
                  "code": "page_not_found",
                  "docs": "https://mediacopilot.io/problems"
                }
              }
            }
          },
          "429": {
            "description": "Throttled at the CDN. No per-client quota is enforced here, so no RateLimit headers are emitted; honour `Retry-After` and back off exponentially with jitter. Policy: https://mediacopilot.io/v1/site.json (`api.rate_limits`).",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/Retry-After"
              }
            },
            "content": {
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              }
            }
          },
          "5XX": {
            "description": "CDN or origin failure. The body is generated by CloudFront, so it is HTML with no problem+json envelope. Honour `Retry-After` when present and retry with backoff.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/Retry-After"
              }
            },
            "content": {
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              }
            }
          }
        }
      }
    },
    "/es/features/{slug}": {
      "get": {
        "tags": [
          "features"
        ],
        "operationId": "getEsFeaturesSlug",
        "summary": "A single feature page (Spanish)",
        "description": "One of 16 features pages. The `slug` enum lists every published page.",
        "parameters": [
          {
            "$ref": "#/components/parameters/EsFeaturesSlug"
          },
          {
            "$ref": "#/components/parameters/Accept"
          }
        ],
        "responses": {
          "200": {
            "description": "The page, as HTML or markdown depending on the Accept header. The markdown representation is also addressable by appending `.md` to the path.",
            "headers": {
              "Vary": {
                "$ref": "#/components/headers/Vary"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              }
            },
            "content": {
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              },
              "text/markdown": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              }
            }
          },
          "403": {
            "description": "Preview environment restricted — returned only by the UAT preview and *.cloudfront.net hosts; the public origin never gates. Problem code `preview_restricted`.",
            "headers": {
              "Vary": {
                "$ref": "#/components/headers/Vary"
              }
            },
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "404": {
            "description": "No page at this path. Problem code `page_not_found`; the body is markdown or problem+json when the path provably has no page and the request asked for one of them, and otherwise the HTML 404 document, which embeds the same markdown recovery guide (https://mediacopilot.io/problems#page-not-found explains why).",
            "x-problem": {
              "code": "page_not_found",
              "type": "https://mediacopilot.io/problems#page-not-found",
              "docs": "https://mediacopilot.io/problems"
            },
            "content": {
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              },
              "text/markdown": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                },
                "example": {
                  "type": "https://mediacopilot.io/problems#page-not-found",
                  "title": "Page not found",
                  "status": 404,
                  "detail": "No page exists at this path. mediacopilot.io serves pages under /features, /use-cases and /blog (also under /es), plus a few top-level pages. /llms.txt and /v1/pages.json list every published page.",
                  "instance": "/some-path-that-does-not-exist",
                  "code": "page_not_found",
                  "docs": "https://mediacopilot.io/problems"
                }
              }
            }
          },
          "406": {
            "description": "No acceptable representation — the Accept header of the request excluded every representation this resource has. Problem code `not_acceptable`.",
            "headers": {
              "Vary": {
                "$ref": "#/components/headers/Vary"
              }
            },
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "429": {
            "description": "Throttled at the CDN. No per-client quota is enforced here, so no RateLimit headers are emitted; honour `Retry-After` and back off exponentially with jitter. Policy: https://mediacopilot.io/v1/site.json (`api.rate_limits`).",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/Retry-After"
              }
            },
            "content": {
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              }
            }
          },
          "5XX": {
            "description": "CDN or origin failure. The body is generated by CloudFront, so it is HTML with no problem+json envelope. Honour `Retry-After` when present and retry with backoff.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/Retry-After"
              }
            },
            "content": {
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              }
            }
          }
        }
      }
    },
    "/es/features/{slug}.md": {
      "get": {
        "tags": [
          "features"
        ],
        "operationId": "getEsFeaturesSlugMarkdown",
        "summary": "A single feature page (Spanish) (markdown)",
        "description": "Markdown twin of the page above. Identical content, no Accept header required.",
        "parameters": [
          {
            "$ref": "#/components/parameters/EsFeaturesSlug"
          }
        ],
        "responses": {
          "200": {
            "description": "The markdown representation of the page.",
            "headers": {
              "Vary": {
                "$ref": "#/components/headers/Vary"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              }
            },
            "content": {
              "text/markdown": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              }
            }
          },
          "403": {
            "description": "Preview environment restricted. Problem code `preview_restricted`.",
            "headers": {
              "Vary": {
                "$ref": "#/components/headers/Vary"
              }
            },
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "404": {
            "description": "No page at this path. Problem code `page_not_found`; the body is markdown or problem+json when the path provably has no page and the request asked for one of them, and otherwise the HTML 404 document, which embeds the same markdown recovery guide (https://mediacopilot.io/problems#page-not-found explains why).",
            "x-problem": {
              "code": "page_not_found",
              "type": "https://mediacopilot.io/problems#page-not-found",
              "docs": "https://mediacopilot.io/problems"
            },
            "content": {
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              },
              "text/markdown": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                },
                "example": {
                  "type": "https://mediacopilot.io/problems#page-not-found",
                  "title": "Page not found",
                  "status": 404,
                  "detail": "No page exists at this path. mediacopilot.io serves pages under /features, /use-cases and /blog (also under /es), plus a few top-level pages. /llms.txt and /v1/pages.json list every published page.",
                  "instance": "/some-path-that-does-not-exist",
                  "code": "page_not_found",
                  "docs": "https://mediacopilot.io/problems"
                }
              }
            }
          },
          "429": {
            "description": "Throttled at the CDN. No per-client quota is enforced here, so no RateLimit headers are emitted; honour `Retry-After` and back off exponentially with jitter. Policy: https://mediacopilot.io/v1/site.json (`api.rate_limits`).",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/Retry-After"
              }
            },
            "content": {
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              }
            }
          },
          "5XX": {
            "description": "CDN or origin failure. The body is generated by CloudFront, so it is HTML with no problem+json envelope. Honour `Retry-After` when present and retry with backoff.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/Retry-After"
              }
            },
            "content": {
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              }
            }
          }
        }
      }
    },
    "/es/use-cases": {
      "get": {
        "tags": [
          "use-cases"
        ],
        "operationId": "getEsUseCases",
        "summary": "Use cases index (Spanish)",
        "description": "Descubre cómo los broadcasters y las empresas de medios usan MediaCopilot para automatizar la reutilización de vídeo, el subtitulado, el doblaje, los destacados y más con IA.",
        "parameters": [
          {
            "$ref": "#/components/parameters/Accept"
          }
        ],
        "responses": {
          "200": {
            "description": "The page, as HTML or markdown depending on the Accept header. The markdown representation is also addressable by appending `.md` to the path.",
            "headers": {
              "Vary": {
                "$ref": "#/components/headers/Vary"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              }
            },
            "content": {
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              },
              "text/markdown": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              }
            }
          },
          "403": {
            "description": "Preview environment restricted — returned only by the UAT preview and *.cloudfront.net hosts; the public origin never gates. Problem code `preview_restricted`.",
            "headers": {
              "Vary": {
                "$ref": "#/components/headers/Vary"
              }
            },
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "404": {
            "description": "No page at this path. Problem code `page_not_found`; the body is markdown or problem+json when the path provably has no page and the request asked for one of them, and otherwise the HTML 404 document, which embeds the same markdown recovery guide (https://mediacopilot.io/problems#page-not-found explains why).",
            "x-problem": {
              "code": "page_not_found",
              "type": "https://mediacopilot.io/problems#page-not-found",
              "docs": "https://mediacopilot.io/problems"
            },
            "content": {
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              },
              "text/markdown": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                },
                "example": {
                  "type": "https://mediacopilot.io/problems#page-not-found",
                  "title": "Page not found",
                  "status": 404,
                  "detail": "No page exists at this path. mediacopilot.io serves pages under /features, /use-cases and /blog (also under /es), plus a few top-level pages. /llms.txt and /v1/pages.json list every published page.",
                  "instance": "/some-path-that-does-not-exist",
                  "code": "page_not_found",
                  "docs": "https://mediacopilot.io/problems"
                }
              }
            }
          },
          "406": {
            "description": "No acceptable representation — the Accept header of the request excluded every representation this resource has. Problem code `not_acceptable`.",
            "headers": {
              "Vary": {
                "$ref": "#/components/headers/Vary"
              }
            },
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "429": {
            "description": "Throttled at the CDN. No per-client quota is enforced here, so no RateLimit headers are emitted; honour `Retry-After` and back off exponentially with jitter. Policy: https://mediacopilot.io/v1/site.json (`api.rate_limits`).",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/Retry-After"
              }
            },
            "content": {
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              }
            }
          },
          "5XX": {
            "description": "CDN or origin failure. The body is generated by CloudFront, so it is HTML with no problem+json envelope. Honour `Retry-After` when present and retry with backoff.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/Retry-After"
              }
            },
            "content": {
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              }
            }
          }
        }
      }
    },
    "/es/use-cases.md": {
      "get": {
        "tags": [
          "use-cases"
        ],
        "operationId": "getEsUseCasesMarkdown",
        "summary": "Use cases index (Spanish) (markdown)",
        "description": "Markdown twin of the page above. Identical content, no Accept header required.",
        "parameters": [],
        "responses": {
          "200": {
            "description": "The markdown representation of the page.",
            "headers": {
              "Vary": {
                "$ref": "#/components/headers/Vary"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              }
            },
            "content": {
              "text/markdown": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              }
            }
          },
          "403": {
            "description": "Preview environment restricted. Problem code `preview_restricted`.",
            "headers": {
              "Vary": {
                "$ref": "#/components/headers/Vary"
              }
            },
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "404": {
            "description": "No page at this path. Problem code `page_not_found`; the body is markdown or problem+json when the path provably has no page and the request asked for one of them, and otherwise the HTML 404 document, which embeds the same markdown recovery guide (https://mediacopilot.io/problems#page-not-found explains why).",
            "x-problem": {
              "code": "page_not_found",
              "type": "https://mediacopilot.io/problems#page-not-found",
              "docs": "https://mediacopilot.io/problems"
            },
            "content": {
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              },
              "text/markdown": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                },
                "example": {
                  "type": "https://mediacopilot.io/problems#page-not-found",
                  "title": "Page not found",
                  "status": 404,
                  "detail": "No page exists at this path. mediacopilot.io serves pages under /features, /use-cases and /blog (also under /es), plus a few top-level pages. /llms.txt and /v1/pages.json list every published page.",
                  "instance": "/some-path-that-does-not-exist",
                  "code": "page_not_found",
                  "docs": "https://mediacopilot.io/problems"
                }
              }
            }
          },
          "429": {
            "description": "Throttled at the CDN. No per-client quota is enforced here, so no RateLimit headers are emitted; honour `Retry-After` and back off exponentially with jitter. Policy: https://mediacopilot.io/v1/site.json (`api.rate_limits`).",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/Retry-After"
              }
            },
            "content": {
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              }
            }
          },
          "5XX": {
            "description": "CDN or origin failure. The body is generated by CloudFront, so it is HTML with no problem+json envelope. Honour `Retry-After` when present and retry with backoff.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/Retry-After"
              }
            },
            "content": {
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              }
            }
          }
        }
      }
    },
    "/es/use-cases/{slug}": {
      "get": {
        "tags": [
          "use-cases"
        ],
        "operationId": "getEsUseCasesSlug",
        "summary": "A single use case page (Spanish)",
        "description": "One of 9 use-cases pages. The `slug` enum lists every published page.",
        "parameters": [
          {
            "$ref": "#/components/parameters/EsUseCasesSlug"
          },
          {
            "$ref": "#/components/parameters/Accept"
          }
        ],
        "responses": {
          "200": {
            "description": "The page, as HTML or markdown depending on the Accept header. The markdown representation is also addressable by appending `.md` to the path.",
            "headers": {
              "Vary": {
                "$ref": "#/components/headers/Vary"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              }
            },
            "content": {
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              },
              "text/markdown": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              }
            }
          },
          "403": {
            "description": "Preview environment restricted — returned only by the UAT preview and *.cloudfront.net hosts; the public origin never gates. Problem code `preview_restricted`.",
            "headers": {
              "Vary": {
                "$ref": "#/components/headers/Vary"
              }
            },
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "404": {
            "description": "No page at this path. Problem code `page_not_found`; the body is markdown or problem+json when the path provably has no page and the request asked for one of them, and otherwise the HTML 404 document, which embeds the same markdown recovery guide (https://mediacopilot.io/problems#page-not-found explains why).",
            "x-problem": {
              "code": "page_not_found",
              "type": "https://mediacopilot.io/problems#page-not-found",
              "docs": "https://mediacopilot.io/problems"
            },
            "content": {
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              },
              "text/markdown": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                },
                "example": {
                  "type": "https://mediacopilot.io/problems#page-not-found",
                  "title": "Page not found",
                  "status": 404,
                  "detail": "No page exists at this path. mediacopilot.io serves pages under /features, /use-cases and /blog (also under /es), plus a few top-level pages. /llms.txt and /v1/pages.json list every published page.",
                  "instance": "/some-path-that-does-not-exist",
                  "code": "page_not_found",
                  "docs": "https://mediacopilot.io/problems"
                }
              }
            }
          },
          "406": {
            "description": "No acceptable representation — the Accept header of the request excluded every representation this resource has. Problem code `not_acceptable`.",
            "headers": {
              "Vary": {
                "$ref": "#/components/headers/Vary"
              }
            },
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "429": {
            "description": "Throttled at the CDN. No per-client quota is enforced here, so no RateLimit headers are emitted; honour `Retry-After` and back off exponentially with jitter. Policy: https://mediacopilot.io/v1/site.json (`api.rate_limits`).",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/Retry-After"
              }
            },
            "content": {
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              }
            }
          },
          "5XX": {
            "description": "CDN or origin failure. The body is generated by CloudFront, so it is HTML with no problem+json envelope. Honour `Retry-After` when present and retry with backoff.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/Retry-After"
              }
            },
            "content": {
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              }
            }
          }
        }
      }
    },
    "/es/use-cases/{slug}.md": {
      "get": {
        "tags": [
          "use-cases"
        ],
        "operationId": "getEsUseCasesSlugMarkdown",
        "summary": "A single use case page (Spanish) (markdown)",
        "description": "Markdown twin of the page above. Identical content, no Accept header required.",
        "parameters": [
          {
            "$ref": "#/components/parameters/EsUseCasesSlug"
          }
        ],
        "responses": {
          "200": {
            "description": "The markdown representation of the page.",
            "headers": {
              "Vary": {
                "$ref": "#/components/headers/Vary"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              }
            },
            "content": {
              "text/markdown": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              }
            }
          },
          "403": {
            "description": "Preview environment restricted. Problem code `preview_restricted`.",
            "headers": {
              "Vary": {
                "$ref": "#/components/headers/Vary"
              }
            },
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "404": {
            "description": "No page at this path. Problem code `page_not_found`; the body is markdown or problem+json when the path provably has no page and the request asked for one of them, and otherwise the HTML 404 document, which embeds the same markdown recovery guide (https://mediacopilot.io/problems#page-not-found explains why).",
            "x-problem": {
              "code": "page_not_found",
              "type": "https://mediacopilot.io/problems#page-not-found",
              "docs": "https://mediacopilot.io/problems"
            },
            "content": {
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              },
              "text/markdown": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                },
                "example": {
                  "type": "https://mediacopilot.io/problems#page-not-found",
                  "title": "Page not found",
                  "status": 404,
                  "detail": "No page exists at this path. mediacopilot.io serves pages under /features, /use-cases and /blog (also under /es), plus a few top-level pages. /llms.txt and /v1/pages.json list every published page.",
                  "instance": "/some-path-that-does-not-exist",
                  "code": "page_not_found",
                  "docs": "https://mediacopilot.io/problems"
                }
              }
            }
          },
          "429": {
            "description": "Throttled at the CDN. No per-client quota is enforced here, so no RateLimit headers are emitted; honour `Retry-After` and back off exponentially with jitter. Policy: https://mediacopilot.io/v1/site.json (`api.rate_limits`).",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/Retry-After"
              }
            },
            "content": {
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              }
            }
          },
          "5XX": {
            "description": "CDN or origin failure. The body is generated by CloudFront, so it is HTML with no problem+json envelope. Honour `Retry-After` when present and retry with backoff.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/Retry-After"
              }
            },
            "content": {
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              }
            }
          }
        }
      }
    },
    "/features": {
      "get": {
        "tags": [
          "features"
        ],
        "operationId": "getFeatures",
        "summary": "Features index",
        "description": "Explore all MediaCopilot features: AI transcription, automatic subtitling, video clipping, dubbing, highlights, library search, and more for media teams.",
        "parameters": [
          {
            "$ref": "#/components/parameters/Accept"
          }
        ],
        "responses": {
          "200": {
            "description": "The page, as HTML or markdown depending on the Accept header. The markdown representation is also addressable by appending `.md` to the path.",
            "headers": {
              "Vary": {
                "$ref": "#/components/headers/Vary"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              }
            },
            "content": {
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              },
              "text/markdown": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              }
            }
          },
          "403": {
            "description": "Preview environment restricted — returned only by the UAT preview and *.cloudfront.net hosts; the public origin never gates. Problem code `preview_restricted`.",
            "headers": {
              "Vary": {
                "$ref": "#/components/headers/Vary"
              }
            },
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "404": {
            "description": "No page at this path. Problem code `page_not_found`; the body is markdown or problem+json when the path provably has no page and the request asked for one of them, and otherwise the HTML 404 document, which embeds the same markdown recovery guide (https://mediacopilot.io/problems#page-not-found explains why).",
            "x-problem": {
              "code": "page_not_found",
              "type": "https://mediacopilot.io/problems#page-not-found",
              "docs": "https://mediacopilot.io/problems"
            },
            "content": {
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              },
              "text/markdown": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                },
                "example": {
                  "type": "https://mediacopilot.io/problems#page-not-found",
                  "title": "Page not found",
                  "status": 404,
                  "detail": "No page exists at this path. mediacopilot.io serves pages under /features, /use-cases and /blog (also under /es), plus a few top-level pages. /llms.txt and /v1/pages.json list every published page.",
                  "instance": "/some-path-that-does-not-exist",
                  "code": "page_not_found",
                  "docs": "https://mediacopilot.io/problems"
                }
              }
            }
          },
          "406": {
            "description": "No acceptable representation — the Accept header of the request excluded every representation this resource has. Problem code `not_acceptable`.",
            "headers": {
              "Vary": {
                "$ref": "#/components/headers/Vary"
              }
            },
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "429": {
            "description": "Throttled at the CDN. No per-client quota is enforced here, so no RateLimit headers are emitted; honour `Retry-After` and back off exponentially with jitter. Policy: https://mediacopilot.io/v1/site.json (`api.rate_limits`).",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/Retry-After"
              }
            },
            "content": {
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              }
            }
          },
          "5XX": {
            "description": "CDN or origin failure. The body is generated by CloudFront, so it is HTML with no problem+json envelope. Honour `Retry-After` when present and retry with backoff.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/Retry-After"
              }
            },
            "content": {
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              }
            }
          }
        }
      }
    },
    "/features.md": {
      "get": {
        "tags": [
          "features"
        ],
        "operationId": "getFeaturesMarkdown",
        "summary": "Features index (markdown)",
        "description": "Markdown twin of the page above. Identical content, no Accept header required.",
        "parameters": [],
        "responses": {
          "200": {
            "description": "The markdown representation of the page.",
            "headers": {
              "Vary": {
                "$ref": "#/components/headers/Vary"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              }
            },
            "content": {
              "text/markdown": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              }
            }
          },
          "403": {
            "description": "Preview environment restricted. Problem code `preview_restricted`.",
            "headers": {
              "Vary": {
                "$ref": "#/components/headers/Vary"
              }
            },
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "404": {
            "description": "No page at this path. Problem code `page_not_found`; the body is markdown or problem+json when the path provably has no page and the request asked for one of them, and otherwise the HTML 404 document, which embeds the same markdown recovery guide (https://mediacopilot.io/problems#page-not-found explains why).",
            "x-problem": {
              "code": "page_not_found",
              "type": "https://mediacopilot.io/problems#page-not-found",
              "docs": "https://mediacopilot.io/problems"
            },
            "content": {
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              },
              "text/markdown": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                },
                "example": {
                  "type": "https://mediacopilot.io/problems#page-not-found",
                  "title": "Page not found",
                  "status": 404,
                  "detail": "No page exists at this path. mediacopilot.io serves pages under /features, /use-cases and /blog (also under /es), plus a few top-level pages. /llms.txt and /v1/pages.json list every published page.",
                  "instance": "/some-path-that-does-not-exist",
                  "code": "page_not_found",
                  "docs": "https://mediacopilot.io/problems"
                }
              }
            }
          },
          "429": {
            "description": "Throttled at the CDN. No per-client quota is enforced here, so no RateLimit headers are emitted; honour `Retry-After` and back off exponentially with jitter. Policy: https://mediacopilot.io/v1/site.json (`api.rate_limits`).",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/Retry-After"
              }
            },
            "content": {
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              }
            }
          },
          "5XX": {
            "description": "CDN or origin failure. The body is generated by CloudFront, so it is HTML with no problem+json envelope. Honour `Retry-After` when present and retry with backoff.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/Retry-After"
              }
            },
            "content": {
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              }
            }
          }
        }
      }
    },
    "/features/{slug}": {
      "get": {
        "tags": [
          "features"
        ],
        "operationId": "getFeaturesSlug",
        "summary": "A single feature page",
        "description": "One of 16 features pages. The `slug` enum lists every published page.",
        "parameters": [
          {
            "$ref": "#/components/parameters/FeaturesSlug"
          },
          {
            "$ref": "#/components/parameters/Accept"
          }
        ],
        "responses": {
          "200": {
            "description": "The page, as HTML or markdown depending on the Accept header. The markdown representation is also addressable by appending `.md` to the path.",
            "headers": {
              "Vary": {
                "$ref": "#/components/headers/Vary"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              }
            },
            "content": {
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              },
              "text/markdown": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              }
            }
          },
          "403": {
            "description": "Preview environment restricted — returned only by the UAT preview and *.cloudfront.net hosts; the public origin never gates. Problem code `preview_restricted`.",
            "headers": {
              "Vary": {
                "$ref": "#/components/headers/Vary"
              }
            },
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "404": {
            "description": "No page at this path. Problem code `page_not_found`; the body is markdown or problem+json when the path provably has no page and the request asked for one of them, and otherwise the HTML 404 document, which embeds the same markdown recovery guide (https://mediacopilot.io/problems#page-not-found explains why).",
            "x-problem": {
              "code": "page_not_found",
              "type": "https://mediacopilot.io/problems#page-not-found",
              "docs": "https://mediacopilot.io/problems"
            },
            "content": {
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              },
              "text/markdown": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                },
                "example": {
                  "type": "https://mediacopilot.io/problems#page-not-found",
                  "title": "Page not found",
                  "status": 404,
                  "detail": "No page exists at this path. mediacopilot.io serves pages under /features, /use-cases and /blog (also under /es), plus a few top-level pages. /llms.txt and /v1/pages.json list every published page.",
                  "instance": "/some-path-that-does-not-exist",
                  "code": "page_not_found",
                  "docs": "https://mediacopilot.io/problems"
                }
              }
            }
          },
          "406": {
            "description": "No acceptable representation — the Accept header of the request excluded every representation this resource has. Problem code `not_acceptable`.",
            "headers": {
              "Vary": {
                "$ref": "#/components/headers/Vary"
              }
            },
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "429": {
            "description": "Throttled at the CDN. No per-client quota is enforced here, so no RateLimit headers are emitted; honour `Retry-After` and back off exponentially with jitter. Policy: https://mediacopilot.io/v1/site.json (`api.rate_limits`).",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/Retry-After"
              }
            },
            "content": {
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              }
            }
          },
          "5XX": {
            "description": "CDN or origin failure. The body is generated by CloudFront, so it is HTML with no problem+json envelope. Honour `Retry-After` when present and retry with backoff.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/Retry-After"
              }
            },
            "content": {
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              }
            }
          }
        }
      }
    },
    "/features/{slug}.md": {
      "get": {
        "tags": [
          "features"
        ],
        "operationId": "getFeaturesSlugMarkdown",
        "summary": "A single feature page (markdown)",
        "description": "Markdown twin of the page above. Identical content, no Accept header required.",
        "parameters": [
          {
            "$ref": "#/components/parameters/FeaturesSlug"
          }
        ],
        "responses": {
          "200": {
            "description": "The markdown representation of the page.",
            "headers": {
              "Vary": {
                "$ref": "#/components/headers/Vary"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              }
            },
            "content": {
              "text/markdown": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              }
            }
          },
          "403": {
            "description": "Preview environment restricted. Problem code `preview_restricted`.",
            "headers": {
              "Vary": {
                "$ref": "#/components/headers/Vary"
              }
            },
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "404": {
            "description": "No page at this path. Problem code `page_not_found`; the body is markdown or problem+json when the path provably has no page and the request asked for one of them, and otherwise the HTML 404 document, which embeds the same markdown recovery guide (https://mediacopilot.io/problems#page-not-found explains why).",
            "x-problem": {
              "code": "page_not_found",
              "type": "https://mediacopilot.io/problems#page-not-found",
              "docs": "https://mediacopilot.io/problems"
            },
            "content": {
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              },
              "text/markdown": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                },
                "example": {
                  "type": "https://mediacopilot.io/problems#page-not-found",
                  "title": "Page not found",
                  "status": 404,
                  "detail": "No page exists at this path. mediacopilot.io serves pages under /features, /use-cases and /blog (also under /es), plus a few top-level pages. /llms.txt and /v1/pages.json list every published page.",
                  "instance": "/some-path-that-does-not-exist",
                  "code": "page_not_found",
                  "docs": "https://mediacopilot.io/problems"
                }
              }
            }
          },
          "429": {
            "description": "Throttled at the CDN. No per-client quota is enforced here, so no RateLimit headers are emitted; honour `Retry-After` and back off exponentially with jitter. Policy: https://mediacopilot.io/v1/site.json (`api.rate_limits`).",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/Retry-After"
              }
            },
            "content": {
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              }
            }
          },
          "5XX": {
            "description": "CDN or origin failure. The body is generated by CloudFront, so it is HTML with no problem+json envelope. Honour `Retry-After` when present and retry with backoff.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/Retry-After"
              }
            },
            "content": {
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              }
            }
          }
        }
      }
    },
    "/index.md": {
      "get": {
        "tags": [
          "pages"
        ],
        "operationId": "getIndexMarkdown",
        "summary": "Homepage (markdown)",
        "description": "Markdown twin of the page above. Identical content, no Accept header required.",
        "parameters": [],
        "responses": {
          "200": {
            "description": "The markdown representation of the page.",
            "headers": {
              "Vary": {
                "$ref": "#/components/headers/Vary"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              }
            },
            "content": {
              "text/markdown": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              }
            }
          },
          "403": {
            "description": "Preview environment restricted. Problem code `preview_restricted`.",
            "headers": {
              "Vary": {
                "$ref": "#/components/headers/Vary"
              }
            },
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "404": {
            "description": "No page at this path. Problem code `page_not_found`; the body is markdown or problem+json when the path provably has no page and the request asked for one of them, and otherwise the HTML 404 document, which embeds the same markdown recovery guide (https://mediacopilot.io/problems#page-not-found explains why).",
            "x-problem": {
              "code": "page_not_found",
              "type": "https://mediacopilot.io/problems#page-not-found",
              "docs": "https://mediacopilot.io/problems"
            },
            "content": {
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              },
              "text/markdown": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                },
                "example": {
                  "type": "https://mediacopilot.io/problems#page-not-found",
                  "title": "Page not found",
                  "status": 404,
                  "detail": "No page exists at this path. mediacopilot.io serves pages under /features, /use-cases and /blog (also under /es), plus a few top-level pages. /llms.txt and /v1/pages.json list every published page.",
                  "instance": "/some-path-that-does-not-exist",
                  "code": "page_not_found",
                  "docs": "https://mediacopilot.io/problems"
                }
              }
            }
          },
          "429": {
            "description": "Throttled at the CDN. No per-client quota is enforced here, so no RateLimit headers are emitted; honour `Retry-After` and back off exponentially with jitter. Policy: https://mediacopilot.io/v1/site.json (`api.rate_limits`).",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/Retry-After"
              }
            },
            "content": {
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              }
            }
          },
          "5XX": {
            "description": "CDN or origin failure. The body is generated by CloudFront, so it is HTML with no problem+json envelope. Honour `Retry-After` when present and retry with backoff.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/Retry-After"
              }
            },
            "content": {
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              }
            }
          }
        }
      }
    },
    "/llms.txt": {
      "get": {
        "tags": [
          "agents"
        ],
        "operationId": "getLlmsTxt",
        "summary": "llmstxt.org index of the site",
        "description": "Curated map of the site for LLM agents: sections, one line per page, links pointing at the markdown twins.",
        "responses": {
          "200": {
            "description": "llmstxt.org index.",
            "headers": {
              "Vary": {
                "$ref": "#/components/headers/Vary"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              }
            },
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              }
            }
          },
          "404": {
            "description": "No page at this path. Problem code `page_not_found`; the body is markdown or problem+json when the path provably has no page and the request asked for one of them, and otherwise the HTML 404 document, which embeds the same markdown recovery guide (https://mediacopilot.io/problems#page-not-found explains why).",
            "x-problem": {
              "code": "page_not_found",
              "type": "https://mediacopilot.io/problems#page-not-found",
              "docs": "https://mediacopilot.io/problems"
            },
            "content": {
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              },
              "text/markdown": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                },
                "example": {
                  "type": "https://mediacopilot.io/problems#page-not-found",
                  "title": "Page not found",
                  "status": 404,
                  "detail": "No page exists at this path. mediacopilot.io serves pages under /features, /use-cases and /blog (also under /es), plus a few top-level pages. /llms.txt and /v1/pages.json list every published page.",
                  "instance": "/some-path-that-does-not-exist",
                  "code": "page_not_found",
                  "docs": "https://mediacopilot.io/problems"
                }
              }
            }
          },
          "429": {
            "description": "Throttled at the CDN. No per-client quota is enforced here, so no RateLimit headers are emitted; honour `Retry-After` and back off exponentially with jitter. Policy: https://mediacopilot.io/v1/site.json (`api.rate_limits`).",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/Retry-After"
              }
            },
            "content": {
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              }
            }
          },
          "5XX": {
            "description": "CDN or origin failure. The body is generated by CloudFront, so it is HTML with no problem+json envelope. Honour `Retry-After` when present and retry with backoff.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/Retry-After"
              }
            },
            "content": {
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              }
            }
          }
        }
      }
    },
    "/openapi.json": {
      "get": {
        "tags": [
          "agents"
        ],
        "operationId": "getOpenApi",
        "summary": "This description",
        "description": "Also published at /v1/openapi.json.",
        "responses": {
          "200": {
            "description": "OpenAPI 3.1 description of this site.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OpenApiDocument"
                }
              }
            }
          },
          "404": {
            "description": "No page at this path. Problem code `page_not_found`; the body is markdown or problem+json when the path provably has no page and the request asked for one of them, and otherwise the HTML 404 document, which embeds the same markdown recovery guide (https://mediacopilot.io/problems#page-not-found explains why).",
            "x-problem": {
              "code": "page_not_found",
              "type": "https://mediacopilot.io/problems#page-not-found",
              "docs": "https://mediacopilot.io/problems"
            },
            "content": {
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              },
              "text/markdown": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                },
                "example": {
                  "type": "https://mediacopilot.io/problems#page-not-found",
                  "title": "Page not found",
                  "status": 404,
                  "detail": "No page exists at this path. mediacopilot.io serves pages under /features, /use-cases and /blog (also under /es), plus a few top-level pages. /llms.txt and /v1/pages.json list every published page.",
                  "instance": "/some-path-that-does-not-exist",
                  "code": "page_not_found",
                  "docs": "https://mediacopilot.io/problems"
                }
              }
            }
          },
          "429": {
            "description": "Throttled at the CDN. No per-client quota is enforced here, so no RateLimit headers are emitted; honour `Retry-After` and back off exponentially with jitter. Policy: https://mediacopilot.io/v1/site.json (`api.rate_limits`).",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/Retry-After"
              }
            },
            "content": {
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              }
            }
          },
          "5XX": {
            "description": "CDN or origin failure. The body is generated by CloudFront, so it is HTML with no problem+json envelope. Honour `Retry-After` when present and retry with backoff.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/Retry-After"
              }
            },
            "content": {
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              }
            }
          }
        }
      }
    },
    "/privacy-policy": {
      "get": {
        "tags": [
          "legal"
        ],
        "operationId": "getPrivacyPolicy",
        "summary": "Privacy Policy — MediaCopilot",
        "description": "Learn how MediaCopilot and Cires21 protect your personal data in accordance with GDPR.",
        "parameters": [
          {
            "$ref": "#/components/parameters/Accept"
          }
        ],
        "responses": {
          "200": {
            "description": "The page, as HTML or markdown depending on the Accept header. The markdown representation is also addressable by appending `.md` to the path.",
            "headers": {
              "Vary": {
                "$ref": "#/components/headers/Vary"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              }
            },
            "content": {
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              },
              "text/markdown": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              }
            }
          },
          "403": {
            "description": "Preview environment restricted — returned only by the UAT preview and *.cloudfront.net hosts; the public origin never gates. Problem code `preview_restricted`.",
            "headers": {
              "Vary": {
                "$ref": "#/components/headers/Vary"
              }
            },
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "404": {
            "description": "No page at this path. Problem code `page_not_found`; the body is markdown or problem+json when the path provably has no page and the request asked for one of them, and otherwise the HTML 404 document, which embeds the same markdown recovery guide (https://mediacopilot.io/problems#page-not-found explains why).",
            "x-problem": {
              "code": "page_not_found",
              "type": "https://mediacopilot.io/problems#page-not-found",
              "docs": "https://mediacopilot.io/problems"
            },
            "content": {
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              },
              "text/markdown": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                },
                "example": {
                  "type": "https://mediacopilot.io/problems#page-not-found",
                  "title": "Page not found",
                  "status": 404,
                  "detail": "No page exists at this path. mediacopilot.io serves pages under /features, /use-cases and /blog (also under /es), plus a few top-level pages. /llms.txt and /v1/pages.json list every published page.",
                  "instance": "/some-path-that-does-not-exist",
                  "code": "page_not_found",
                  "docs": "https://mediacopilot.io/problems"
                }
              }
            }
          },
          "406": {
            "description": "No acceptable representation — the Accept header of the request excluded every representation this resource has. Problem code `not_acceptable`.",
            "headers": {
              "Vary": {
                "$ref": "#/components/headers/Vary"
              }
            },
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "429": {
            "description": "Throttled at the CDN. No per-client quota is enforced here, so no RateLimit headers are emitted; honour `Retry-After` and back off exponentially with jitter. Policy: https://mediacopilot.io/v1/site.json (`api.rate_limits`).",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/Retry-After"
              }
            },
            "content": {
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              }
            }
          },
          "5XX": {
            "description": "CDN or origin failure. The body is generated by CloudFront, so it is HTML with no problem+json envelope. Honour `Retry-After` when present and retry with backoff.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/Retry-After"
              }
            },
            "content": {
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              }
            }
          }
        }
      }
    },
    "/privacy-policy.md": {
      "get": {
        "tags": [
          "legal"
        ],
        "operationId": "getPrivacyPolicyMarkdown",
        "summary": "Privacy Policy — MediaCopilot (markdown)",
        "description": "Markdown twin of the page above. Identical content, no Accept header required.",
        "parameters": [],
        "responses": {
          "200": {
            "description": "The markdown representation of the page.",
            "headers": {
              "Vary": {
                "$ref": "#/components/headers/Vary"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              }
            },
            "content": {
              "text/markdown": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              }
            }
          },
          "403": {
            "description": "Preview environment restricted. Problem code `preview_restricted`.",
            "headers": {
              "Vary": {
                "$ref": "#/components/headers/Vary"
              }
            },
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "404": {
            "description": "No page at this path. Problem code `page_not_found`; the body is markdown or problem+json when the path provably has no page and the request asked for one of them, and otherwise the HTML 404 document, which embeds the same markdown recovery guide (https://mediacopilot.io/problems#page-not-found explains why).",
            "x-problem": {
              "code": "page_not_found",
              "type": "https://mediacopilot.io/problems#page-not-found",
              "docs": "https://mediacopilot.io/problems"
            },
            "content": {
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              },
              "text/markdown": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                },
                "example": {
                  "type": "https://mediacopilot.io/problems#page-not-found",
                  "title": "Page not found",
                  "status": 404,
                  "detail": "No page exists at this path. mediacopilot.io serves pages under /features, /use-cases and /blog (also under /es), plus a few top-level pages. /llms.txt and /v1/pages.json list every published page.",
                  "instance": "/some-path-that-does-not-exist",
                  "code": "page_not_found",
                  "docs": "https://mediacopilot.io/problems"
                }
              }
            }
          },
          "429": {
            "description": "Throttled at the CDN. No per-client quota is enforced here, so no RateLimit headers are emitted; honour `Retry-After` and back off exponentially with jitter. Policy: https://mediacopilot.io/v1/site.json (`api.rate_limits`).",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/Retry-After"
              }
            },
            "content": {
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              }
            }
          },
          "5XX": {
            "description": "CDN or origin failure. The body is generated by CloudFront, so it is HTML with no problem+json envelope. Honour `Retry-After` when present and retry with backoff.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/Retry-After"
              }
            },
            "content": {
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              }
            }
          }
        }
      }
    },
    "/problems": {
      "get": {
        "tags": [
          "agents"
        ],
        "operationId": "getProblems",
        "summary": "Error reference (RFC 9457 problem types)",
        "description": "The typed error model of this site: every problem `code`, its HTTP status, what emits it and how to recover. The `type` URIs in problem+json bodies dereference to anchors on this page. `/v1/problems.json` is the same catalogue as JSON.",
        "parameters": [
          {
            "$ref": "#/components/parameters/Accept"
          }
        ],
        "responses": {
          "200": {
            "description": "The page, as HTML or markdown depending on the Accept header. The markdown representation is also addressable by appending `.md` to the path.",
            "headers": {
              "Vary": {
                "$ref": "#/components/headers/Vary"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              }
            },
            "content": {
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              },
              "text/markdown": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              }
            }
          },
          "403": {
            "description": "Preview environment restricted — returned only by the UAT preview and *.cloudfront.net hosts; the public origin never gates. Problem code `preview_restricted`.",
            "headers": {
              "Vary": {
                "$ref": "#/components/headers/Vary"
              }
            },
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "406": {
            "description": "No acceptable representation — the Accept header of the request excluded every representation this resource has. Problem code `not_acceptable`.",
            "headers": {
              "Vary": {
                "$ref": "#/components/headers/Vary"
              }
            },
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "429": {
            "description": "Throttled at the CDN. No per-client quota is enforced here, so no RateLimit headers are emitted; honour `Retry-After` and back off exponentially with jitter. Policy: https://mediacopilot.io/v1/site.json (`api.rate_limits`).",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/Retry-After"
              }
            },
            "content": {
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              }
            }
          },
          "5XX": {
            "description": "CDN or origin failure. The body is generated by CloudFront, so it is HTML with no problem+json envelope. Honour `Retry-After` when present and retry with backoff.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/Retry-After"
              }
            },
            "content": {
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              }
            }
          }
        }
      }
    },
    "/problems.md": {
      "get": {
        "tags": [
          "agents"
        ],
        "operationId": "getProblemsMarkdown",
        "summary": "Error reference (RFC 9457 problem types) (markdown)",
        "description": "Markdown twin of the page above. Identical content, no Accept header required.",
        "parameters": [],
        "responses": {
          "200": {
            "description": "The markdown representation of the page.",
            "headers": {
              "Vary": {
                "$ref": "#/components/headers/Vary"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              }
            },
            "content": {
              "text/markdown": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              }
            }
          },
          "403": {
            "description": "Preview environment restricted. Problem code `preview_restricted`.",
            "headers": {
              "Vary": {
                "$ref": "#/components/headers/Vary"
              }
            },
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "404": {
            "description": "No page at this path. Problem code `page_not_found`; the body is markdown or problem+json when the path provably has no page and the request asked for one of them, and otherwise the HTML 404 document, which embeds the same markdown recovery guide (https://mediacopilot.io/problems#page-not-found explains why).",
            "x-problem": {
              "code": "page_not_found",
              "type": "https://mediacopilot.io/problems#page-not-found",
              "docs": "https://mediacopilot.io/problems"
            },
            "content": {
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              },
              "text/markdown": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                },
                "example": {
                  "type": "https://mediacopilot.io/problems#page-not-found",
                  "title": "Page not found",
                  "status": 404,
                  "detail": "No page exists at this path. mediacopilot.io serves pages under /features, /use-cases and /blog (also under /es), plus a few top-level pages. /llms.txt and /v1/pages.json list every published page.",
                  "instance": "/some-path-that-does-not-exist",
                  "code": "page_not_found",
                  "docs": "https://mediacopilot.io/problems"
                }
              }
            }
          },
          "429": {
            "description": "Throttled at the CDN. No per-client quota is enforced here, so no RateLimit headers are emitted; honour `Retry-After` and back off exponentially with jitter. Policy: https://mediacopilot.io/v1/site.json (`api.rate_limits`).",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/Retry-After"
              }
            },
            "content": {
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              }
            }
          },
          "5XX": {
            "description": "CDN or origin failure. The body is generated by CloudFront, so it is HTML with no problem+json envelope. Honour `Retry-After` when present and retry with backoff.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/Retry-After"
              }
            },
            "content": {
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              }
            }
          }
        }
      }
    },
    "/robots.txt": {
      "get": {
        "tags": [
          "agents"
        ],
        "operationId": "getRobotsTxt",
        "summary": "Crawl rules",
        "responses": {
          "200": {
            "description": "Crawl rules.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              }
            }
          },
          "404": {
            "description": "No page at this path. Problem code `page_not_found`; the body is markdown or problem+json when the path provably has no page and the request asked for one of them, and otherwise the HTML 404 document, which embeds the same markdown recovery guide (https://mediacopilot.io/problems#page-not-found explains why).",
            "x-problem": {
              "code": "page_not_found",
              "type": "https://mediacopilot.io/problems#page-not-found",
              "docs": "https://mediacopilot.io/problems"
            },
            "content": {
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              },
              "text/markdown": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                },
                "example": {
                  "type": "https://mediacopilot.io/problems#page-not-found",
                  "title": "Page not found",
                  "status": 404,
                  "detail": "No page exists at this path. mediacopilot.io serves pages under /features, /use-cases and /blog (also under /es), plus a few top-level pages. /llms.txt and /v1/pages.json list every published page.",
                  "instance": "/some-path-that-does-not-exist",
                  "code": "page_not_found",
                  "docs": "https://mediacopilot.io/problems"
                }
              }
            }
          },
          "429": {
            "description": "Throttled at the CDN. No per-client quota is enforced here, so no RateLimit headers are emitted; honour `Retry-After` and back off exponentially with jitter. Policy: https://mediacopilot.io/v1/site.json (`api.rate_limits`).",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/Retry-After"
              }
            },
            "content": {
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              }
            }
          },
          "5XX": {
            "description": "CDN or origin failure. The body is generated by CloudFront, so it is HTML with no problem+json envelope. Honour `Retry-After` when present and retry with backoff.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/Retry-After"
              }
            },
            "content": {
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              }
            }
          }
        }
      }
    },
    "/sitemap.xml": {
      "get": {
        "tags": [
          "agents"
        ],
        "operationId": "getSitemap",
        "summary": "XML sitemap with hreflang alternates",
        "responses": {
          "200": {
            "description": "Sitemap of every indexable URL.",
            "content": {
              "application/xml": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              }
            }
          },
          "404": {
            "description": "No page at this path. Problem code `page_not_found`; the body is markdown or problem+json when the path provably has no page and the request asked for one of them, and otherwise the HTML 404 document, which embeds the same markdown recovery guide (https://mediacopilot.io/problems#page-not-found explains why).",
            "x-problem": {
              "code": "page_not_found",
              "type": "https://mediacopilot.io/problems#page-not-found",
              "docs": "https://mediacopilot.io/problems"
            },
            "content": {
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              },
              "text/markdown": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                },
                "example": {
                  "type": "https://mediacopilot.io/problems#page-not-found",
                  "title": "Page not found",
                  "status": 404,
                  "detail": "No page exists at this path. mediacopilot.io serves pages under /features, /use-cases and /blog (also under /es), plus a few top-level pages. /llms.txt and /v1/pages.json list every published page.",
                  "instance": "/some-path-that-does-not-exist",
                  "code": "page_not_found",
                  "docs": "https://mediacopilot.io/problems"
                }
              }
            }
          },
          "429": {
            "description": "Throttled at the CDN. No per-client quota is enforced here, so no RateLimit headers are emitted; honour `Retry-After` and back off exponentially with jitter. Policy: https://mediacopilot.io/v1/site.json (`api.rate_limits`).",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/Retry-After"
              }
            },
            "content": {
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              }
            }
          },
          "5XX": {
            "description": "CDN or origin failure. The body is generated by CloudFront, so it is HTML with no problem+json envelope. Honour `Retry-After` when present and retry with backoff.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/Retry-After"
              }
            },
            "content": {
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              }
            }
          }
        }
      }
    },
    "/use-cases": {
      "get": {
        "tags": [
          "use-cases"
        ],
        "operationId": "getUseCases",
        "summary": "Use cases index",
        "description": "Discover how broadcasters and media companies use MediaCopilot to automate video repurposing, subtitling, dubbing, highlights, and more with AI.",
        "parameters": [
          {
            "$ref": "#/components/parameters/Accept"
          }
        ],
        "responses": {
          "200": {
            "description": "The page, as HTML or markdown depending on the Accept header. The markdown representation is also addressable by appending `.md` to the path.",
            "headers": {
              "Vary": {
                "$ref": "#/components/headers/Vary"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              }
            },
            "content": {
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              },
              "text/markdown": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              }
            }
          },
          "403": {
            "description": "Preview environment restricted — returned only by the UAT preview and *.cloudfront.net hosts; the public origin never gates. Problem code `preview_restricted`.",
            "headers": {
              "Vary": {
                "$ref": "#/components/headers/Vary"
              }
            },
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "404": {
            "description": "No page at this path. Problem code `page_not_found`; the body is markdown or problem+json when the path provably has no page and the request asked for one of them, and otherwise the HTML 404 document, which embeds the same markdown recovery guide (https://mediacopilot.io/problems#page-not-found explains why).",
            "x-problem": {
              "code": "page_not_found",
              "type": "https://mediacopilot.io/problems#page-not-found",
              "docs": "https://mediacopilot.io/problems"
            },
            "content": {
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              },
              "text/markdown": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                },
                "example": {
                  "type": "https://mediacopilot.io/problems#page-not-found",
                  "title": "Page not found",
                  "status": 404,
                  "detail": "No page exists at this path. mediacopilot.io serves pages under /features, /use-cases and /blog (also under /es), plus a few top-level pages. /llms.txt and /v1/pages.json list every published page.",
                  "instance": "/some-path-that-does-not-exist",
                  "code": "page_not_found",
                  "docs": "https://mediacopilot.io/problems"
                }
              }
            }
          },
          "406": {
            "description": "No acceptable representation — the Accept header of the request excluded every representation this resource has. Problem code `not_acceptable`.",
            "headers": {
              "Vary": {
                "$ref": "#/components/headers/Vary"
              }
            },
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "429": {
            "description": "Throttled at the CDN. No per-client quota is enforced here, so no RateLimit headers are emitted; honour `Retry-After` and back off exponentially with jitter. Policy: https://mediacopilot.io/v1/site.json (`api.rate_limits`).",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/Retry-After"
              }
            },
            "content": {
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              }
            }
          },
          "5XX": {
            "description": "CDN or origin failure. The body is generated by CloudFront, so it is HTML with no problem+json envelope. Honour `Retry-After` when present and retry with backoff.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/Retry-After"
              }
            },
            "content": {
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              }
            }
          }
        }
      }
    },
    "/use-cases.md": {
      "get": {
        "tags": [
          "use-cases"
        ],
        "operationId": "getUseCasesMarkdown",
        "summary": "Use cases index (markdown)",
        "description": "Markdown twin of the page above. Identical content, no Accept header required.",
        "parameters": [],
        "responses": {
          "200": {
            "description": "The markdown representation of the page.",
            "headers": {
              "Vary": {
                "$ref": "#/components/headers/Vary"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              }
            },
            "content": {
              "text/markdown": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              }
            }
          },
          "403": {
            "description": "Preview environment restricted. Problem code `preview_restricted`.",
            "headers": {
              "Vary": {
                "$ref": "#/components/headers/Vary"
              }
            },
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "404": {
            "description": "No page at this path. Problem code `page_not_found`; the body is markdown or problem+json when the path provably has no page and the request asked for one of them, and otherwise the HTML 404 document, which embeds the same markdown recovery guide (https://mediacopilot.io/problems#page-not-found explains why).",
            "x-problem": {
              "code": "page_not_found",
              "type": "https://mediacopilot.io/problems#page-not-found",
              "docs": "https://mediacopilot.io/problems"
            },
            "content": {
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              },
              "text/markdown": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                },
                "example": {
                  "type": "https://mediacopilot.io/problems#page-not-found",
                  "title": "Page not found",
                  "status": 404,
                  "detail": "No page exists at this path. mediacopilot.io serves pages under /features, /use-cases and /blog (also under /es), plus a few top-level pages. /llms.txt and /v1/pages.json list every published page.",
                  "instance": "/some-path-that-does-not-exist",
                  "code": "page_not_found",
                  "docs": "https://mediacopilot.io/problems"
                }
              }
            }
          },
          "429": {
            "description": "Throttled at the CDN. No per-client quota is enforced here, so no RateLimit headers are emitted; honour `Retry-After` and back off exponentially with jitter. Policy: https://mediacopilot.io/v1/site.json (`api.rate_limits`).",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/Retry-After"
              }
            },
            "content": {
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              }
            }
          },
          "5XX": {
            "description": "CDN or origin failure. The body is generated by CloudFront, so it is HTML with no problem+json envelope. Honour `Retry-After` when present and retry with backoff.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/Retry-After"
              }
            },
            "content": {
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              }
            }
          }
        }
      }
    },
    "/use-cases/{slug}": {
      "get": {
        "tags": [
          "use-cases"
        ],
        "operationId": "getUseCasesSlug",
        "summary": "A single use case page",
        "description": "One of 9 use-cases pages. The `slug` enum lists every published page.",
        "parameters": [
          {
            "$ref": "#/components/parameters/UseCasesSlug"
          },
          {
            "$ref": "#/components/parameters/Accept"
          }
        ],
        "responses": {
          "200": {
            "description": "The page, as HTML or markdown depending on the Accept header. The markdown representation is also addressable by appending `.md` to the path.",
            "headers": {
              "Vary": {
                "$ref": "#/components/headers/Vary"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              }
            },
            "content": {
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              },
              "text/markdown": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              }
            }
          },
          "403": {
            "description": "Preview environment restricted — returned only by the UAT preview and *.cloudfront.net hosts; the public origin never gates. Problem code `preview_restricted`.",
            "headers": {
              "Vary": {
                "$ref": "#/components/headers/Vary"
              }
            },
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "404": {
            "description": "No page at this path. Problem code `page_not_found`; the body is markdown or problem+json when the path provably has no page and the request asked for one of them, and otherwise the HTML 404 document, which embeds the same markdown recovery guide (https://mediacopilot.io/problems#page-not-found explains why).",
            "x-problem": {
              "code": "page_not_found",
              "type": "https://mediacopilot.io/problems#page-not-found",
              "docs": "https://mediacopilot.io/problems"
            },
            "content": {
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              },
              "text/markdown": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                },
                "example": {
                  "type": "https://mediacopilot.io/problems#page-not-found",
                  "title": "Page not found",
                  "status": 404,
                  "detail": "No page exists at this path. mediacopilot.io serves pages under /features, /use-cases and /blog (also under /es), plus a few top-level pages. /llms.txt and /v1/pages.json list every published page.",
                  "instance": "/some-path-that-does-not-exist",
                  "code": "page_not_found",
                  "docs": "https://mediacopilot.io/problems"
                }
              }
            }
          },
          "406": {
            "description": "No acceptable representation — the Accept header of the request excluded every representation this resource has. Problem code `not_acceptable`.",
            "headers": {
              "Vary": {
                "$ref": "#/components/headers/Vary"
              }
            },
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "429": {
            "description": "Throttled at the CDN. No per-client quota is enforced here, so no RateLimit headers are emitted; honour `Retry-After` and back off exponentially with jitter. Policy: https://mediacopilot.io/v1/site.json (`api.rate_limits`).",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/Retry-After"
              }
            },
            "content": {
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              }
            }
          },
          "5XX": {
            "description": "CDN or origin failure. The body is generated by CloudFront, so it is HTML with no problem+json envelope. Honour `Retry-After` when present and retry with backoff.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/Retry-After"
              }
            },
            "content": {
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              }
            }
          }
        }
      }
    },
    "/use-cases/{slug}.md": {
      "get": {
        "tags": [
          "use-cases"
        ],
        "operationId": "getUseCasesSlugMarkdown",
        "summary": "A single use case page (markdown)",
        "description": "Markdown twin of the page above. Identical content, no Accept header required.",
        "parameters": [
          {
            "$ref": "#/components/parameters/UseCasesSlug"
          }
        ],
        "responses": {
          "200": {
            "description": "The markdown representation of the page.",
            "headers": {
              "Vary": {
                "$ref": "#/components/headers/Vary"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              }
            },
            "content": {
              "text/markdown": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              }
            }
          },
          "403": {
            "description": "Preview environment restricted. Problem code `preview_restricted`.",
            "headers": {
              "Vary": {
                "$ref": "#/components/headers/Vary"
              }
            },
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "404": {
            "description": "No page at this path. Problem code `page_not_found`; the body is markdown or problem+json when the path provably has no page and the request asked for one of them, and otherwise the HTML 404 document, which embeds the same markdown recovery guide (https://mediacopilot.io/problems#page-not-found explains why).",
            "x-problem": {
              "code": "page_not_found",
              "type": "https://mediacopilot.io/problems#page-not-found",
              "docs": "https://mediacopilot.io/problems"
            },
            "content": {
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              },
              "text/markdown": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                },
                "example": {
                  "type": "https://mediacopilot.io/problems#page-not-found",
                  "title": "Page not found",
                  "status": 404,
                  "detail": "No page exists at this path. mediacopilot.io serves pages under /features, /use-cases and /blog (also under /es), plus a few top-level pages. /llms.txt and /v1/pages.json list every published page.",
                  "instance": "/some-path-that-does-not-exist",
                  "code": "page_not_found",
                  "docs": "https://mediacopilot.io/problems"
                }
              }
            }
          },
          "429": {
            "description": "Throttled at the CDN. No per-client quota is enforced here, so no RateLimit headers are emitted; honour `Retry-After` and back off exponentially with jitter. Policy: https://mediacopilot.io/v1/site.json (`api.rate_limits`).",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/Retry-After"
              }
            },
            "content": {
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              }
            }
          },
          "5XX": {
            "description": "CDN or origin failure. The body is generated by CloudFront, so it is HTML with no problem+json envelope. Honour `Retry-After` when present and retry with backoff.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/Retry-After"
              }
            },
            "content": {
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              }
            }
          }
        }
      }
    },
    "/v1/openapi.json": {
      "get": {
        "tags": [
          "v1"
        ],
        "operationId": "getVersionedOpenApi",
        "summary": "This description, under the versioned prefix",
        "description": "Byte-identical to /openapi.json. Published under /v1 as well so a client that pins the version prefix has one stable base URL for the whole surface.",
        "responses": {
          "200": {
            "description": "This description, under the versioned prefix",
            "headers": {
              "Vary": {
                "$ref": "#/components/headers/Vary"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OpenApiDocument"
                }
              }
            }
          },
          "404": {
            "description": "No page at this path. Problem code `page_not_found`; the body is markdown or problem+json when the path provably has no page and the request asked for one of them, and otherwise the HTML 404 document, which embeds the same markdown recovery guide (https://mediacopilot.io/problems#page-not-found explains why).",
            "x-problem": {
              "code": "page_not_found",
              "type": "https://mediacopilot.io/problems#page-not-found",
              "docs": "https://mediacopilot.io/problems"
            },
            "content": {
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              },
              "text/markdown": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                },
                "example": {
                  "type": "https://mediacopilot.io/problems#page-not-found",
                  "title": "Page not found",
                  "status": 404,
                  "detail": "No page exists at this path. mediacopilot.io serves pages under /features, /use-cases and /blog (also under /es), plus a few top-level pages. /llms.txt and /v1/pages.json list every published page.",
                  "instance": "/some-path-that-does-not-exist",
                  "code": "page_not_found",
                  "docs": "https://mediacopilot.io/problems"
                }
              }
            }
          },
          "429": {
            "description": "Throttled at the CDN. No per-client quota is enforced here, so no RateLimit headers are emitted; honour `Retry-After` and back off exponentially with jitter. Policy: https://mediacopilot.io/v1/site.json (`api.rate_limits`).",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/Retry-After"
              }
            },
            "content": {
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              }
            }
          },
          "5XX": {
            "description": "CDN or origin failure. The body is generated by CloudFront, so it is HTML with no problem+json envelope. Honour `Retry-After` when present and retry with backoff.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/Retry-After"
              }
            },
            "content": {
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              }
            }
          }
        }
      }
    },
    "/v1/pages.json": {
      "get": {
        "tags": [
          "v1"
        ],
        "operationId": "getPageIndex",
        "summary": "Every page of the site, with its markdown URL",
        "description": "The site index as data: path, absolute URL, markdown twin, title, description, language and section for every page. Generated from the build, so it cannot list a page that is not published.",
        "responses": {
          "200": {
            "description": "Every page of the site, with its markdown URL",
            "headers": {
              "Vary": {
                "$ref": "#/components/headers/Vary"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PageIndex"
                }
              }
            }
          },
          "404": {
            "description": "No page at this path. Problem code `page_not_found`; the body is markdown or problem+json when the path provably has no page and the request asked for one of them, and otherwise the HTML 404 document, which embeds the same markdown recovery guide (https://mediacopilot.io/problems#page-not-found explains why).",
            "x-problem": {
              "code": "page_not_found",
              "type": "https://mediacopilot.io/problems#page-not-found",
              "docs": "https://mediacopilot.io/problems"
            },
            "content": {
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              },
              "text/markdown": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                },
                "example": {
                  "type": "https://mediacopilot.io/problems#page-not-found",
                  "title": "Page not found",
                  "status": 404,
                  "detail": "No page exists at this path. mediacopilot.io serves pages under /features, /use-cases and /blog (also under /es), plus a few top-level pages. /llms.txt and /v1/pages.json list every published page.",
                  "instance": "/some-path-that-does-not-exist",
                  "code": "page_not_found",
                  "docs": "https://mediacopilot.io/problems"
                }
              }
            }
          },
          "429": {
            "description": "Throttled at the CDN. No per-client quota is enforced here, so no RateLimit headers are emitted; honour `Retry-After` and back off exponentially with jitter. Policy: https://mediacopilot.io/v1/site.json (`api.rate_limits`).",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/Retry-After"
              }
            },
            "content": {
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              }
            }
          },
          "5XX": {
            "description": "CDN or origin failure. The body is generated by CloudFront, so it is HTML with no problem+json envelope. Honour `Retry-After` when present and retry with backoff.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/Retry-After"
              }
            },
            "content": {
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              }
            }
          }
        }
      }
    },
    "/v1/problems.json": {
      "get": {
        "tags": [
          "v1"
        ],
        "operationId": "getProblemCatalog",
        "summary": "Machine-readable catalogue of the problem types this host returns",
        "description": "The same error model as /problems, as JSON: code, status, title, detail, recovery hint, the layer that emits it and a full example body.",
        "responses": {
          "200": {
            "description": "Machine-readable catalogue of the problem types this host returns",
            "headers": {
              "Vary": {
                "$ref": "#/components/headers/Vary"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemCatalog"
                }
              }
            }
          },
          "404": {
            "description": "No page at this path. Problem code `page_not_found`; the body is markdown or problem+json when the path provably has no page and the request asked for one of them, and otherwise the HTML 404 document, which embeds the same markdown recovery guide (https://mediacopilot.io/problems#page-not-found explains why).",
            "x-problem": {
              "code": "page_not_found",
              "type": "https://mediacopilot.io/problems#page-not-found",
              "docs": "https://mediacopilot.io/problems"
            },
            "content": {
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              },
              "text/markdown": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                },
                "example": {
                  "type": "https://mediacopilot.io/problems#page-not-found",
                  "title": "Page not found",
                  "status": 404,
                  "detail": "No page exists at this path. mediacopilot.io serves pages under /features, /use-cases and /blog (also under /es), plus a few top-level pages. /llms.txt and /v1/pages.json list every published page.",
                  "instance": "/some-path-that-does-not-exist",
                  "code": "page_not_found",
                  "docs": "https://mediacopilot.io/problems"
                }
              }
            }
          },
          "429": {
            "description": "Throttled at the CDN. No per-client quota is enforced here, so no RateLimit headers are emitted; honour `Retry-After` and back off exponentially with jitter. Policy: https://mediacopilot.io/v1/site.json (`api.rate_limits`).",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/Retry-After"
              }
            },
            "content": {
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              }
            }
          },
          "5XX": {
            "description": "CDN or origin failure. The body is generated by CloudFront, so it is HTML with no problem+json envelope. Honour `Retry-After` when present and retry with backoff.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/Retry-After"
              }
            },
            "content": {
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              }
            }
          }
        }
      }
    },
    "/v1/site.json": {
      "get": {
        "tags": [
          "v1"
        ],
        "operationId": "getSiteInfo",
        "summary": "Organization, contacts, developer endpoints and the policies of this host",
        "description": "Start here. Identity and contact details of the business, the trust-anchor pages, this host's JSON surface, the credentialed product API and MCP Server (with their authentication models), the versioning and deprecation policy, and every machine-readable document published here.",
        "responses": {
          "200": {
            "description": "Organization, contacts, developer endpoints and the policies of this host",
            "headers": {
              "Vary": {
                "$ref": "#/components/headers/Vary"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SiteInfo"
                }
              }
            }
          },
          "404": {
            "description": "No page at this path. Problem code `page_not_found`; the body is markdown or problem+json when the path provably has no page and the request asked for one of them, and otherwise the HTML 404 document, which embeds the same markdown recovery guide (https://mediacopilot.io/problems#page-not-found explains why).",
            "x-problem": {
              "code": "page_not_found",
              "type": "https://mediacopilot.io/problems#page-not-found",
              "docs": "https://mediacopilot.io/problems"
            },
            "content": {
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              },
              "text/markdown": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                },
                "example": {
                  "type": "https://mediacopilot.io/problems#page-not-found",
                  "title": "Page not found",
                  "status": 404,
                  "detail": "No page exists at this path. mediacopilot.io serves pages under /features, /use-cases and /blog (also under /es), plus a few top-level pages. /llms.txt and /v1/pages.json list every published page.",
                  "instance": "/some-path-that-does-not-exist",
                  "code": "page_not_found",
                  "docs": "https://mediacopilot.io/problems"
                }
              }
            }
          },
          "429": {
            "description": "Throttled at the CDN. No per-client quota is enforced here, so no RateLimit headers are emitted; honour `Retry-After` and back off exponentially with jitter. Policy: https://mediacopilot.io/v1/site.json (`api.rate_limits`).",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/Retry-After"
              }
            },
            "content": {
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              }
            }
          },
          "5XX": {
            "description": "CDN or origin failure. The body is generated by CloudFront, so it is HTML with no problem+json envelope. Honour `Retry-After` when present and retry with backoff.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/Retry-After"
              }
            },
            "content": {
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/TextDocument"
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "parameters": {
      "Accept": {
        "name": "Accept",
        "in": "header",
        "required": false,
        "description": "Proactive content negotiation (RFC 9110 §12.5.1). `text/markdown` returns the markdown representation, `text/html` (or `*/*`, or no Accept header) returns the rendered page. q-values are honoured, and the most specific media range wins. An Accept header that excludes both media types gets a 406 with a problem+json body.",
        "schema": {
          "type": "string",
          "examples": [
            "text/markdown",
            "text/html",
            "text/markdown;q=1.0, text/html;q=0.5",
            "*/*"
          ]
        }
      },
      "BlogSlug": {
        "name": "slug",
        "in": "path",
        "required": true,
        "description": "Blog page slug.",
        "schema": {
          "type": "string",
          "enum": [
            "how-to-put-video-clips-together",
            "introducing-mediacopilot-agents",
            "limitless-video-workflows-introducing-mediacopilot-mcp-server",
            "making-accessibility-native-to-ai-driven-subtitling-workflows-mediacopilot-embraces-une-153010",
            "publishing-at-the-speed-of-the-moment",
            "what-is-video-clipping"
          ]
        }
      },
      "EsBlogSlug": {
        "name": "slug",
        "in": "path",
        "required": true,
        "description": "Blog page slug.",
        "schema": {
          "type": "string",
          "enum": [
            "how-to-put-video-clips-together",
            "introducing-mediacopilot-agents",
            "limitless-video-workflows-introducing-mediacopilot-mcp-server",
            "making-accessibility-native-to-ai-driven-subtitling-workflows-mediacopilot-embraces-une-153010",
            "publishing-at-the-speed-of-the-moment",
            "what-is-video-clipping"
          ]
        }
      },
      "EsFeaturesSlug": {
        "name": "slug",
        "in": "path",
        "required": true,
        "description": "Features page slug.",
        "schema": {
          "type": "string",
          "enum": [
            "ad-targeting-monetization",
            "agents-mcp-video-editing-api-ai",
            "ai-video-search",
            "automatic-highlight-video",
            "automatic-subtitle-generator",
            "dubbing-tool",
            "live-clipping",
            "real-time-analysis",
            "social-media-video-editing",
            "video-clipping-tool",
            "video-editing-for-marketing",
            "video-editing-for-online-teaching",
            "video-editing-software-for-advertising",
            "video-editing-software-for-streaming",
            "video-editor-for-broadcasters",
            "video-transcription"
          ]
        }
      },
      "EsUseCasesSlug": {
        "name": "slug",
        "in": "path",
        "required": true,
        "description": "Use cases page slug.",
        "schema": {
          "type": "string",
          "enum": [
            "live-stream-segmentation",
            "media-archive-search",
            "multilingual-subtitling-localization",
            "news-clip-production",
            "newsroom-sports-transcription",
            "social-first-video-production",
            "sports-highlights-automation",
            "video-dubbing-global-distribution",
            "video-repurposing"
          ]
        }
      },
      "FeaturesSlug": {
        "name": "slug",
        "in": "path",
        "required": true,
        "description": "Features page slug.",
        "schema": {
          "type": "string",
          "enum": [
            "ad-targeting-monetization",
            "agents-mcp-video-editing-api-ai",
            "ai-video-search",
            "automatic-highlight-video",
            "automatic-subtitle-generator",
            "dubbing-tool",
            "live-clipping",
            "real-time-analysis",
            "social-media-video-editing",
            "video-clipping-tool",
            "video-editing-for-marketing",
            "video-editing-for-online-teaching",
            "video-editing-software-for-advertising",
            "video-editing-software-for-streaming",
            "video-editor-for-broadcasters",
            "video-transcription"
          ]
        }
      },
      "UseCasesSlug": {
        "name": "slug",
        "in": "path",
        "required": true,
        "description": "Use cases page slug.",
        "schema": {
          "type": "string",
          "enum": [
            "live-stream-segmentation",
            "media-archive-search",
            "multilingual-subtitling-localization",
            "news-clip-production",
            "newsroom-sports-transcription",
            "social-first-video-production",
            "sports-highlights-automation",
            "video-dubbing-global-distribution",
            "video-repurposing"
          ]
        }
      }
    },
    "schemas": {
      "Problem": {
        "title": "Problem",
        "description": "RFC 9457 Problem Details. `code` and `docs` are extension members: `code` is the stable machine-readable identifier to branch on, `docs` dereferences to the human-readable problems reference. Unknown members may be added over time, so ignore what you do not recognise rather than failing.",
        "type": "object",
        "required": [
          "type",
          "title",
          "status",
          "code"
        ],
        "properties": {
          "type": {
            "type": "string",
            "format": "uri",
            "description": "URI identifying the problem type. Dereferences to the section of https://mediacopilot.io/problems documenting it.",
            "enum": [
              "https://mediacopilot.io/problems#no-api-on-this-host",
              "https://mediacopilot.io/problems#not-acceptable",
              "https://mediacopilot.io/problems#preview-restricted",
              "https://mediacopilot.io/problems#page-not-found"
            ]
          },
          "title": {
            "type": "string",
            "description": "Short, human-readable summary. Stable per type."
          },
          "status": {
            "type": "integer",
            "minimum": 400,
            "maximum": 599,
            "description": "HTTP status code, duplicated for convenience."
          },
          "detail": {
            "type": "string",
            "description": "Human-readable explanation specific to this occurrence."
          },
          "instance": {
            "type": "string",
            "format": "uri-reference",
            "description": "Path of the request that produced the problem."
          },
          "code": {
            "$ref": "#/components/schemas/ProblemCode"
          },
          "docs": {
            "type": "string",
            "format": "uri",
            "description": "Problems reference URL."
          },
          "available": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "On 406 only: media types this resource can actually serve."
          }
        },
        "additionalProperties": true
      },
      "ProblemCode": {
        "title": "ProblemCode",
        "type": "string",
        "description": "Machine-readable error code. Branch on this, not on the message.",
        "enum": [
          "no_api_on_this_host",
          "not_acceptable",
          "preview_restricted",
          "page_not_found"
        ]
      },
      "TextDocument": {
        "title": "TextDocument",
        "type": "string",
        "description": "A text document (HTML, markdown, plain text or XML, per the media type of the response). Not JSON: read it as text."
      },
      "SiteInfo": {
        "title": "SiteInfo",
        "description": "Everything an agent needs to decide whether and how to integrate with MediaCopilot: who the business is, how to reach it, where the product API and MCP Server live, and the policies of this host.",
        "type": "object",
        "required": [
          "version",
          "site",
          "organization",
          "trust",
          "api",
          "product_api",
          "mcp",
          "cli",
          "machine_readable"
        ],
        "properties": {
          "version": {
            "type": "string",
            "const": "v1"
          },
          "site": {
            "type": "object",
            "required": [
              "name",
              "url",
              "description",
              "languages"
            ],
            "properties": {
              "name": {
                "type": "string"
              },
              "url": {
                "type": "string",
                "format": "uri",
                "description": "Canonical origin."
              },
              "description": {
                "type": "string"
              },
              "languages": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "content_version": {
                "type": "string",
                "description": "Version of the published content build."
              },
              "kind": {
                "type": "string",
                "const": "marketing-website"
              }
            }
          },
          "organization": {
            "type": "object",
            "required": [
              "name",
              "legal_name",
              "url",
              "email",
              "address",
              "contact_points"
            ],
            "properties": {
              "name": {
                "type": "string"
              },
              "legal_name": {
                "type": "string"
              },
              "url": {
                "type": "string",
                "format": "uri",
                "description": "Organization home page."
              },
              "logo": {
                "type": "string",
                "format": "uri",
                "description": "Logo image."
              },
              "email": {
                "type": "string",
                "format": "email"
              },
              "description": {
                "type": "string"
              },
              "same_as": {
                "type": "array",
                "items": {
                  "type": "string",
                  "format": "uri",
                  "description": "Authoritative profile of the same organization."
                }
              },
              "address": {
                "title": "PostalAddress",
                "type": "object",
                "required": [
                  "street_address",
                  "postal_code",
                  "locality",
                  "country"
                ],
                "properties": {
                  "street_address": {
                    "type": "string"
                  },
                  "postal_code": {
                    "type": "string"
                  },
                  "locality": {
                    "type": "string"
                  },
                  "region": {
                    "type": "string"
                  },
                  "country": {
                    "type": "string",
                    "description": "ISO 3166-1 alpha-2 country code."
                  }
                }
              },
              "contact_points": {
                "type": "array",
                "items": {
                  "title": "ContactPoint",
                  "type": "object",
                  "required": [
                    "contact_type",
                    "email"
                  ],
                  "properties": {
                    "contact_type": {
                      "type": "string",
                      "examples": [
                        "sales",
                        "technical support",
                        "privacy"
                      ]
                    },
                    "email": {
                      "type": "string",
                      "format": "email"
                    },
                    "available_language": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "area_served": {
                      "type": "string"
                    },
                    "description": {
                      "type": "string"
                    }
                  }
                }
              },
              "schema_org": {
                "type": "string",
                "format": "uri",
                "description": "Page carrying the equivalent schema.org markup."
              }
            }
          },
          "trust": {
            "type": "object",
            "description": "Pages that establish the legitimacy of the business.",
            "required": [
              "contact",
              "privacy_policy"
            ],
            "properties": {
              "contact": {
                "type": "string",
                "format": "uri",
                "description": ""
              },
              "privacy_policy": {
                "type": "string",
                "format": "uri",
                "description": ""
              },
              "cookie_policy": {
                "type": "string",
                "format": "uri",
                "description": ""
              },
              "developers": {
                "type": "string",
                "format": "uri",
                "description": ""
              }
            }
          },
          "api": {
            "type": "object",
            "description": "The public JSON surface of this host.",
            "required": [
              "name",
              "base_url",
              "path_prefix",
              "endpoints",
              "versioning",
              "rate_limits",
              "error_model"
            ],
            "properties": {
              "name": {
                "type": "string"
              },
              "base_url": {
                "type": "string",
                "format": "uri",
                "description": ""
              },
              "path_prefix": {
                "type": "string",
                "const": "/v1"
              },
              "authentication": {
                "title": "Authentication",
                "description": "Credential scheme of an API. `null` means the surface is public.",
                "type": [
                  "object",
                  "null"
                ],
                "required": [
                  "type",
                  "scheme"
                ],
                "properties": {
                  "type": {
                    "type": "string",
                    "examples": [
                      "http"
                    ]
                  },
                  "scheme": {
                    "type": "string",
                    "examples": [
                      "bearer"
                    ]
                  },
                  "header": {
                    "type": "string",
                    "examples": [
                      "Authorization"
                    ]
                  },
                  "format": {
                    "type": "string",
                    "examples": [
                      "Bearer <YOUR_API_KEY>"
                    ]
                  },
                  "documentation": {
                    "type": "string",
                    "format": "uri",
                    "description": "Where the credential model is documented."
                  }
                }
              },
              "openapi": {
                "type": "string",
                "format": "uri",
                "description": "OpenAPI description of this surface."
              },
              "endpoints": {
                "type": "array",
                "items": {
                  "type": "object",
                  "required": [
                    "path",
                    "media_type",
                    "summary"
                  ],
                  "properties": {
                    "path": {
                      "type": "string"
                    },
                    "media_type": {
                      "type": "string"
                    },
                    "summary": {
                      "type": "string"
                    }
                  }
                }
              },
              "versioning": {
                "title": "VersioningPolicy",
                "description": "How this surface is versioned and how a retirement is announced. Read this before integrating.",
                "type": "object",
                "required": [
                  "strategy",
                  "current",
                  "supported",
                  "compatibility",
                  "deprecation"
                ],
                "properties": {
                  "strategy": {
                    "type": "string",
                    "const": "url-path"
                  },
                  "current": {
                    "type": "string",
                    "examples": [
                      "v1"
                    ]
                  },
                  "supported": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "compatibility": {
                    "type": "string",
                    "const": "additive-within-version"
                  },
                  "compatibility_note": {
                    "type": "string"
                  },
                  "breaking_changes": {
                    "type": "string"
                  },
                  "deprecation": {
                    "type": "object",
                    "required": [
                      "signals",
                      "minimum_notice_days",
                      "policy_url"
                    ],
                    "properties": {
                      "signals": {
                        "type": "array",
                        "description": "Response headers and link relations that announce a retirement.",
                        "items": {
                          "type": "object",
                          "required": [
                            "specification"
                          ],
                          "properties": {
                            "header": {
                              "type": "string",
                              "examples": [
                                "Deprecation",
                                "Sunset"
                              ]
                            },
                            "link_relation": {
                              "type": "string",
                              "examples": [
                                "deprecation"
                              ]
                            },
                            "specification": {
                              "type": "string",
                              "format": "uri",
                              "description": "The RFC defining the signal."
                            }
                          }
                        }
                      },
                      "minimum_notice_days": {
                        "type": "integer",
                        "minimum": 0
                      },
                      "policy_url": {
                        "type": "string",
                        "format": "uri",
                        "description": "Human-readable statement of this policy."
                      }
                    }
                  }
                }
              },
              "rate_limits": {
                "title": "RateLimitPolicy",
                "description": "Quota policy of this host. `enforced: false` means no RateLimit headers are emitted because no per-client quota exists — not that abuse is unmetered at the CDN layer.",
                "type": "object",
                "required": [
                  "enforced",
                  "quota",
                  "headers",
                  "on_throttled"
                ],
                "properties": {
                  "enforced": {
                    "type": "boolean"
                  },
                  "quota": {
                    "type": [
                      "object",
                      "null"
                    ]
                  },
                  "headers": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "RateLimit header fields emitted on responses. Empty when no quota is enforced."
                  },
                  "note": {
                    "type": "string"
                  },
                  "on_throttled": {
                    "type": "object",
                    "description": "What a client should do if it is ever throttled.",
                    "required": [
                      "statuses",
                      "honour_header",
                      "strategy"
                    ],
                    "properties": {
                      "statuses": {
                        "type": "array",
                        "items": {
                          "type": "integer"
                        }
                      },
                      "honour_header": {
                        "type": "string",
                        "const": "Retry-After"
                      },
                      "strategy": {
                        "type": "string"
                      },
                      "max_recommended_attempts": {
                        "type": "integer",
                        "minimum": 1
                      }
                    }
                  }
                }
              },
              "error_model": {
                "type": "object",
                "required": [
                  "media_type",
                  "specification",
                  "catalog",
                  "branch_on"
                ],
                "properties": {
                  "media_type": {
                    "type": "string",
                    "const": "application/problem+json"
                  },
                  "specification": {
                    "type": "string",
                    "format": "uri",
                    "description": "RFC 9457."
                  },
                  "catalog": {
                    "type": "string",
                    "format": "uri",
                    "description": "Machine-readable catalogue of problem types."
                  },
                  "documentation": {
                    "type": "string",
                    "format": "uri",
                    "description": "Human-readable error reference."
                  },
                  "branch_on": {
                    "type": "string",
                    "const": "code"
                  }
                }
              }
            }
          },
          "product_api": {
            "type": "object",
            "description": "The credentialed MediaCopilot product API — a different host to this one. Described here so agents stop probing the website for it.",
            "required": [
              "name",
              "base_url",
              "path_prefix",
              "openapi",
              "access",
              "authentication"
            ],
            "properties": {
              "name": {
                "type": "string"
              },
              "summary": {
                "type": "string"
              },
              "base_url": {
                "type": "string",
                "format": "uri",
                "description": "Origin of the product API."
              },
              "path_prefix": {
                "type": "string",
                "const": "/v1"
              },
              "openapi": {
                "type": "string",
                "format": "uri",
                "description": "OpenAPI 3.1 description of the product API."
              },
              "interactive_reference": {
                "type": "string",
                "format": "uri",
                "description": "Human-browsable API reference."
              },
              "documentation": {
                "type": "string",
                "format": "uri",
                "description": "Integration guides."
              },
              "access": {
                "type": "string",
                "enum": [
                  "public",
                  "credentialed"
                ]
              },
              "request_access": {
                "type": "string",
                "description": "mailto: URI to request credentials."
              },
              "authentication": {
                "title": "Authentication",
                "description": "Credential scheme of an API. `null` means the surface is public.",
                "type": [
                  "object",
                  "null"
                ],
                "required": [
                  "type",
                  "scheme"
                ],
                "properties": {
                  "type": {
                    "type": "string",
                    "examples": [
                      "http"
                    ]
                  },
                  "scheme": {
                    "type": "string",
                    "examples": [
                      "bearer"
                    ]
                  },
                  "header": {
                    "type": "string",
                    "examples": [
                      "Authorization"
                    ]
                  },
                  "format": {
                    "type": "string",
                    "examples": [
                      "Bearer <YOUR_API_KEY>"
                    ]
                  },
                  "documentation": {
                    "type": "string",
                    "format": "uri",
                    "description": "Where the credential model is documented."
                  }
                }
              },
              "versioning": {
                "type": "object",
                "properties": {
                  "strategy": {
                    "type": "string"
                  },
                  "current": {
                    "type": "string"
                  }
                }
              }
            }
          },
          "mcp": {
            "type": "object",
            "description": "MediaCopilot MCP Server. `endpoint` is null while access is granted per customer.",
            "required": [
              "name",
              "status",
              "endpoint",
              "documentation"
            ],
            "properties": {
              "name": {
                "type": "string"
              },
              "summary": {
                "type": "string"
              },
              "status": {
                "type": "string",
                "enum": [
                  "public",
                  "available-on-request",
                  "unavailable"
                ]
              },
              "endpoint": {
                "type": [
                  "string",
                  "null"
                ],
                "format": "uri",
                "description": "Streamable HTTP endpoint, when one is published."
              },
              "transport": {
                "type": [
                  "string",
                  "null"
                ],
                "enum": [
                  "streamable-http",
                  "sse",
                  "stdio",
                  null
                ]
              },
              "documentation": {
                "type": "string",
                "format": "uri",
                "description": ""
              },
              "request_access": {
                "type": "string"
              },
              "tools": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            }
          },
          "cli": {
            "type": "object",
            "description": "Official command-line tool, if any.",
            "required": [
              "available"
            ],
            "properties": {
              "available": {
                "type": "boolean"
              },
              "note": {
                "type": "string"
              }
            }
          },
          "markdown_negotiation": {
            "type": "object",
            "required": [
              "specification",
              "convention",
              "vary"
            ],
            "properties": {
              "specification": {
                "type": "string",
                "format": "uri",
                "description": "acceptmarkdown.com."
              },
              "convention": {
                "type": "string"
              },
              "vary": {
                "type": "string",
                "const": "Accept, Accept-Encoding"
              },
              "link_relations": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            }
          },
          "machine_readable": {
            "type": "object",
            "description": "Every machine-readable document this host publishes.",
            "required": [
              "llms_txt",
              "openapi",
              "api_catalog",
              "pages",
              "problems",
              "sitemap",
              "robots"
            ],
            "properties": {
              "llms_txt": {
                "type": "string",
                "format": "uri",
                "description": ""
              },
              "openapi": {
                "type": "string",
                "format": "uri",
                "description": ""
              },
              "openapi_versioned": {
                "type": "string",
                "format": "uri",
                "description": ""
              },
              "api_catalog": {
                "type": "string",
                "format": "uri",
                "description": "RFC 9727 API catalog."
              },
              "pages": {
                "type": "string",
                "format": "uri",
                "description": ""
              },
              "problems": {
                "type": "string",
                "format": "uri",
                "description": ""
              },
              "problems_documentation": {
                "type": "string",
                "format": "uri",
                "description": ""
              },
              "sitemap": {
                "type": "string",
                "format": "uri",
                "description": ""
              },
              "robots": {
                "type": "string",
                "format": "uri",
                "description": ""
              }
            }
          }
        }
      },
      "PageIndex": {
        "title": "PageIndex",
        "description": "Every page of the site, with the URL of its markdown representation.",
        "type": "object",
        "required": [
          "version",
          "count",
          "pages"
        ],
        "properties": {
          "version": {
            "type": "string",
            "const": "v1"
          },
          "count": {
            "type": "integer",
            "minimum": 0,
            "description": "Number of entries in `pages`."
          },
          "languages": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "negotiation": {
            "type": "object",
            "properties": {
              "convention": {
                "type": "string"
              },
              "specification": {
                "type": "string",
                "format": "uri",
                "description": ""
              }
            }
          },
          "pages": {
            "type": "array",
            "items": {
              "title": "PageEntry",
              "type": "object",
              "required": [
                "path",
                "url",
                "markdown_path",
                "markdown_url",
                "title",
                "language",
                "section"
              ],
              "properties": {
                "path": {
                  "type": "string",
                  "description": "Path the HTML page is served at."
                },
                "url": {
                  "type": "string",
                  "format": "uri",
                  "description": "Absolute URL of the HTML page."
                },
                "markdown_path": {
                  "type": "string"
                },
                "markdown_url": {
                  "type": "string",
                  "format": "uri",
                  "description": "Absolute URL of the markdown twin."
                },
                "canonical": {
                  "type": "string",
                  "format": "uri",
                  "description": "Canonical URL declared by the page."
                },
                "title": {
                  "type": "string"
                },
                "description": {
                  "type": "string"
                },
                "language": {
                  "type": "string",
                  "enum": [
                    "en",
                    "es"
                  ]
                },
                "section": {
                  "type": "string",
                  "description": "First path segment, or `home` for the site root."
                },
                "slug": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "description": "Path within the section, if any."
                }
              }
            }
          }
        }
      },
      "ProblemCatalog": {
        "title": "ProblemCatalog",
        "description": "Every error this host can return, as data: the code to branch on, the status, what emits it and how to recover.",
        "type": "object",
        "required": [
          "version",
          "media_type",
          "specification",
          "branch_on",
          "problems"
        ],
        "properties": {
          "version": {
            "type": "string",
            "const": "v1"
          },
          "media_type": {
            "type": "string",
            "const": "application/problem+json"
          },
          "specification": {
            "type": "string",
            "format": "uri",
            "description": "RFC 9457."
          },
          "documentation": {
            "type": "string",
            "format": "uri",
            "description": "Human-readable reference."
          },
          "branch_on": {
            "type": "string",
            "const": "code"
          },
          "problems": {
            "type": "array",
            "items": {
              "title": "ProblemCatalogEntry",
              "type": "object",
              "required": [
                "code",
                "type",
                "status",
                "title",
                "detail",
                "hint",
                "media_type",
                "emitted_by",
                "example"
              ],
              "properties": {
                "code": {
                  "$ref": "#/components/schemas/ProblemCode"
                },
                "type": {
                  "type": "string",
                  "format": "uri",
                  "description": "Problem type URI, dereferences to the reference page."
                },
                "status": {
                  "type": "integer",
                  "minimum": 400,
                  "maximum": 599
                },
                "title": {
                  "type": "string"
                },
                "detail": {
                  "type": "string"
                },
                "hint": {
                  "type": "string",
                  "description": "What a client should do next."
                },
                "media_type": {
                  "type": "string",
                  "description": "Media type this problem is actually delivered as."
                },
                "emitted_by": {
                  "type": "string",
                  "description": "Layer that produces the response."
                },
                "example": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          }
        }
      },
      "Linkset": {
        "title": "Linkset",
        "description": "RFC 9264 set of links. Used here for the RFC 9727 API catalog: one link context object per API surface, keyed by link relation.",
        "type": "object",
        "required": [
          "linkset"
        ],
        "properties": {
          "linkset": {
            "type": "array",
            "items": {
              "title": "LinkContextObject",
              "type": "object",
              "required": [
                "anchor"
              ],
              "description": "Links sharing one context. `anchor` is the API surface; relation members hold arrays of link target objects.",
              "properties": {
                "anchor": {
                  "type": "string",
                  "format": "uri"
                },
                "service-desc": {
                  "$ref": "#/components/schemas/LinkTargets"
                },
                "service-doc": {
                  "$ref": "#/components/schemas/LinkTargets"
                },
                "service-meta": {
                  "$ref": "#/components/schemas/LinkTargets"
                },
                "describedby": {
                  "$ref": "#/components/schemas/LinkTargets"
                },
                "item": {
                  "$ref": "#/components/schemas/LinkTargets"
                }
              },
              "additionalProperties": true
            }
          }
        }
      },
      "LinkTargets": {
        "title": "LinkTargets",
        "type": "array",
        "description": "RFC 9264 link target objects.",
        "items": {
          "type": "object",
          "required": [
            "href"
          ],
          "properties": {
            "href": {
              "type": "string",
              "format": "uri"
            },
            "type": {
              "type": "string",
              "description": "Media type of the target."
            },
            "title": {
              "type": "string"
            }
          }
        }
      },
      "OpenApiDocument": {
        "title": "OpenApiDocument",
        "type": "object",
        "description": "An OpenAPI 3.1 document.",
        "required": [
          "openapi",
          "info",
          "paths"
        ],
        "properties": {
          "openapi": {
            "type": "string",
            "examples": [
              "3.1.0"
            ]
          },
          "info": {
            "type": "object"
          },
          "paths": {
            "type": "object"
          }
        },
        "additionalProperties": true
      }
    },
    "headers": {
      "Vary": {
        "description": "Always `Accept, Accept-Encoding` on negotiated responses, so shared caches key the markdown and HTML variants separately.",
        "schema": {
          "type": "string",
          "const": "Accept, Accept-Encoding"
        }
      },
      "Link": {
        "description": "RFC 8288 web links: `rel=\"alternate\"` to the other representation, `rel=\"service-desc\"` to this OpenAPI description, `rel=\"describedby\"` to /llms.txt, `rel=\"api-catalog\"` to the RFC 9727 API catalog. Markdown responses also carry `rel=\"canonical\"` pointing at the HTML URL.",
        "schema": {
          "type": "string"
        }
      },
      "Retry-After": {
        "description": "Seconds to wait before retrying. Present on 429 and on 503 responses generated by the CDN.",
        "schema": {
          "type": "integer",
          "minimum": 0
        }
      }
    }
  },
  "x-rate-limits": {
    "enforced": false,
    "quota": null,
    "headers": [],
    "note": "No per-client quota is enforced on the public surface of mediacopilot.io, so responses carry no RateLimit headers. Rate limits on the credentialed MediaCopilot API are agreed per account.",
    "on_throttled": {
      "statuses": [
        429,
        503
      ],
      "honour_header": "Retry-After",
      "strategy": "exponential-backoff-with-jitter",
      "max_recommended_attempts": 5
    }
  },
  "x-versioning": {
    "strategy": "url-path",
    "current": "v1",
    "supported": [
      "v1"
    ],
    "compatibility": "additive-within-version",
    "compatibility_note": "Within a version, members and endpoints may be added but never removed or retyped. Ignore members you do not recognise instead of failing.",
    "breaking_changes": "A breaking change ships under a new path prefix (/v2/...); the previous prefix keeps serving during the notice period.",
    "deprecation": {
      "signals": [
        {
          "header": "Deprecation",
          "specification": "https://www.rfc-editor.org/info/rfc9745"
        },
        {
          "header": "Sunset",
          "specification": "https://www.rfc-editor.org/info/rfc8594"
        },
        {
          "link_relation": "deprecation",
          "specification": "https://www.rfc-editor.org/info/rfc8288"
        }
      ],
      "minimum_notice_days": 180,
      "policy_url": "https://mediacopilot.io/developers#versioning-and-deprecation"
    }
  }
}
