{
  "version": "v1",
  "media_type": "application/problem+json",
  "specification": "https://www.rfc-editor.org/info/rfc9457",
  "documentation": "https://mediacopilot.io/problems",
  "branch_on": "code",
  "problems": [
    {
      "code": "no_api_on_this_host",
      "type": "https://mediacopilot.io/problems#no-api-on-this-host",
      "status": 404,
      "title": "No API on this host",
      "detail": "mediacopilot.io serves the MediaCopilot marketing website. It exposes no JSON API under /api. Read /openapi.json for the endpoints this host does serve, or /llms.txt for a map of the content.",
      "hint": "Stop retrying /api/* on this host. Use /openapi.json to discover the real surface, and contact hello@mediacopilot.io for product API access.",
      "media_type": "application/problem+json",
      "emitted_by": "CloudFront viewer-request function",
      "example": {
        "type": "https://mediacopilot.io/problems#no-api-on-this-host",
        "title": "No API on this host",
        "status": 404,
        "detail": "mediacopilot.io serves the MediaCopilot marketing website. It exposes no JSON API under /api. Read /openapi.json for the endpoints this host does serve, or /llms.txt for a map of the content.",
        "instance": "/api/videos",
        "code": "no_api_on_this_host",
        "docs": "https://mediacopilot.io/problems"
      }
    },
    {
      "code": "not_acceptable",
      "type": "https://mediacopilot.io/problems#not-acceptable",
      "status": 406,
      "title": "No acceptable representation",
      "detail": "This resource is available as text/html and text/markdown only. The Accept header of the request excluded both.",
      "hint": "Retry with `Accept: text/markdown` for the agent-friendly representation, or `Accept: text/html` for the rendered page.",
      "media_type": "application/problem+json",
      "emitted_by": "CloudFront viewer-request function",
      "example": {
        "type": "https://mediacopilot.io/problems#not-acceptable",
        "title": "No acceptable representation",
        "status": 406,
        "detail": "This resource is available as text/html and text/markdown only. The Accept header of the request excluded both.",
        "instance": "/features/dubbing-tool",
        "code": "not_acceptable",
        "docs": "https://mediacopilot.io/problems",
        "available": [
          "text/html",
          "text/markdown"
        ]
      }
    },
    {
      "code": "preview_restricted",
      "type": "https://mediacopilot.io/problems#preview-restricted",
      "status": 403,
      "title": "Preview environment restricted",
      "detail": "The UAT preview host (websitepreview.mediacopilot.io) and the *.cloudfront.net domains are reachable only from the corporate VPN egress IP. The public site is https://mediacopilot.io.",
      "hint": "Request https://mediacopilot.io instead — the public production host is not gated.",
      "media_type": "application/problem+json",
      "emitted_by": "CloudFront viewer-request function (preview hosts only)",
      "example": {
        "type": "https://mediacopilot.io/problems#preview-restricted",
        "title": "Preview environment restricted",
        "status": 403,
        "detail": "The UAT preview host (websitepreview.mediacopilot.io) and the *.cloudfront.net domains are reachable only from the corporate VPN egress IP. The public site is https://mediacopilot.io.",
        "instance": "/",
        "code": "preview_restricted",
        "docs": "https://mediacopilot.io/problems"
      }
    },
    {
      "code": "page_not_found",
      "type": "https://mediacopilot.io/problems#page-not-found",
      "status": 404,
      "title": "Page not found",
      "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.",
      "hint": "Read /llms.txt, /v1/pages.json or /sitemap.xml and match the closest slug; the section indexes are /features, /use-cases and /blog.",
      "media_type": "application/problem+json",
      "emitted_by": "CloudFront viewer-request function when the path cannot be a page; otherwise the CloudFront custom error response, whose body is the HTML 404 document",
      "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"
      }
    }
  ]
}
