{
  "openapi": "3.1.0",
  "info": {
    "title": "8x API",
    "version": "1.0.0",
    "summary": "The public HTTP surface of 8x.sale: its pages as Markdown and its discovery documents.",
    "description": "8x is a campaign-based managed sales force. Companies brief 8x once on what they sell; 8x builds the campaign, certified reps cold-call it, and every real conversation is scored by an AI evaluator with human review.\n\nThis document describes every public endpoint on https://8x.sale. None needs credentials, and 8x issues no API keys. Every other path under /api is internal to the 8x app. A path under /api that no endpoint serves answers 404 with an RFC 9457 problem document (application/problem+json), whatever the request accepts. Outside /api, a 406 is a problem document when the request ranks JSON first, and so is the 404 for most addresses no route serves, such as /nope; some 404s outside /api, such as /u or a missing file like /nope.json, are HTML pages whatever the request accepts.",
    "contact": {
      "name": "8x Social, Inc.",
      "url": "https://8x.sale/contact",
      "email": "legal@8x.social"
    }
  },
  "servers": [
    {
      "url": "https://8x.sale"
    }
  ],
  "security": [],
  "externalDocs": {
    "description": "Developer and AI-agent resources",
    "url": "https://8x.sale/developers"
  },
  "tags": [
    {
      "name": "Content",
      "description": "Every public page, as Markdown and as llms.txt."
    },
    {
      "name": "Discovery",
      "description": "Documents that describe what 8x publishes."
    }
  ],
  "paths": {
    "/llms.txt": {
      "get": {
        "operationId": "getLlmsTxt",
        "tags": [
          "Content"
        ],
        "summary": "What 8x is, in the llms.txt format",
        "description": "What 8x is, when to use it, and a link to every public page, in the llmstxt.org format.",
        "responses": {
          "200": {
            "description": "The llms.txt document.",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    },
    "/developers/llms.txt": {
      "get": {
        "operationId": "getDevelopersLlmsTxt",
        "tags": [
          "Content"
        ],
        "summary": "The developer section's llms.txt",
        "description": "The llms.txt for this section: the API and the discovery documents.",
        "responses": {
          "200": {
            "description": "The developer section's llms.txt document.",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    },
    "/llms-full.txt": {
      "get": {
        "operationId": "getLlmsFullTxt",
        "tags": [
          "Content"
        ],
        "summary": "Every public page as one Markdown document",
        "description": "Every public page, concatenated as Markdown.",
        "responses": {
          "200": {
            "description": "Every public page, concatenated as Markdown.",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    },
    "/sitemap.xml": {
      "get": {
        "operationId": "getSitemapXml",
        "tags": [
          "Content"
        ],
        "summary": "Every indexable URL, as an XML sitemap",
        "description": "Every indexable URL, with the day each last changed.",
        "responses": {
          "200": {
            "description": "The sitemap, in the sitemaps.org format.",
            "content": {
              "application/xml": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    },
    "/robots.txt": {
      "get": {
        "operationId": "getRobotsTxt",
        "tags": [
          "Content"
        ],
        "summary": "The crawler policy, as robots.txt",
        "description": "The AI crawlers 8x allows by name, and the signed-in app it keeps out.",
        "responses": {
          "200": {
            "description": "The robots.txt document.",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    },
    "/index.md": {
      "get": {
        "operationId": "getHomeMarkdown",
        "tags": [
          "Content"
        ],
        "summary": "The page https://8x.sale/ as Markdown",
        "description": "Returns the public page at https://8x.sale/ as Markdown, rendered from the same source as the HTML page. The same body answers a GET of / sent with `Accept: text/markdown`. Needs no credentials.",
        "responses": {
          "200": {
            "description": "The page as Markdown, opening with YAML frontmatter: its title, canonical url and last_updated.",
            "content": {
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    },
    "/reps.md": {
      "get": {
        "operationId": "getRepsMarkdown",
        "tags": [
          "Content"
        ],
        "summary": "The page https://8x.sale/reps as Markdown",
        "description": "Returns the public page at https://8x.sale/reps as Markdown, rendered from the same source as the HTML page. The same body answers a GET of /reps sent with `Accept: text/markdown`. Needs no credentials.",
        "responses": {
          "200": {
            "description": "The page as Markdown, opening with YAML frontmatter: its title, canonical url and last_updated.",
            "content": {
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    },
    "/pt-BR.md": {
      "get": {
        "operationId": "getPtBrMarkdown",
        "tags": [
          "Content"
        ],
        "summary": "The page https://8x.sale/pt-BR as Markdown",
        "description": "Returns the public page at https://8x.sale/pt-BR as Markdown, rendered from the same source as the HTML page. The same body answers a GET of /pt-BR sent with `Accept: text/markdown`. Needs no credentials.",
        "responses": {
          "200": {
            "description": "The page as Markdown, opening with YAML frontmatter: its title, canonical url and last_updated.",
            "content": {
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    },
    "/es-MX.md": {
      "get": {
        "operationId": "getEsMxMarkdown",
        "tags": [
          "Content"
        ],
        "summary": "The page https://8x.sale/es-MX as Markdown",
        "description": "Returns the public page at https://8x.sale/es-MX as Markdown, rendered from the same source as the HTML page. The same body answers a GET of /es-MX sent with `Accept: text/markdown`. Needs no credentials.",
        "responses": {
          "200": {
            "description": "The page as Markdown, opening with YAML frontmatter: its title, canonical url and last_updated.",
            "content": {
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    },
    "/hi-IN.md": {
      "get": {
        "operationId": "getHiInMarkdown",
        "tags": [
          "Content"
        ],
        "summary": "The page https://8x.sale/hi-IN as Markdown",
        "description": "Returns the public page at https://8x.sale/hi-IN as Markdown, rendered from the same source as the HTML page. The same body answers a GET of /hi-IN sent with `Accept: text/markdown`. Needs no credentials.",
        "responses": {
          "200": {
            "description": "The page as Markdown, opening with YAML frontmatter: its title, canonical url and last_updated.",
            "content": {
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    },
    "/tr-TR.md": {
      "get": {
        "operationId": "getTrTrMarkdown",
        "tags": [
          "Content"
        ],
        "summary": "The page https://8x.sale/tr-TR as Markdown",
        "description": "Returns the public page at https://8x.sale/tr-TR as Markdown, rendered from the same source as the HTML page. The same body answers a GET of /tr-TR sent with `Accept: text/markdown`. Needs no credentials.",
        "responses": {
          "200": {
            "description": "The page as Markdown, opening with YAML frontmatter: its title, canonical url and last_updated.",
            "content": {
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    },
    "/developers.md": {
      "get": {
        "operationId": "getDevelopersMarkdown",
        "tags": [
          "Content"
        ],
        "summary": "The page https://8x.sale/developers as Markdown",
        "description": "Returns the public page at https://8x.sale/developers as Markdown, rendered from the same source as the HTML page. The same body answers a GET of /developers sent with `Accept: text/markdown`. Needs no credentials.",
        "responses": {
          "200": {
            "description": "The page as Markdown, opening with YAML frontmatter: its title, canonical url and last_updated.",
            "content": {
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    },
    "/about.md": {
      "get": {
        "operationId": "getAboutMarkdown",
        "tags": [
          "Content"
        ],
        "summary": "The page https://8x.sale/about as Markdown",
        "description": "Returns the public page at https://8x.sale/about as Markdown, rendered from the same source as the HTML page. The same body answers a GET of /about sent with `Accept: text/markdown`. Needs no credentials.",
        "responses": {
          "200": {
            "description": "The page as Markdown, opening with YAML frontmatter: its title, canonical url and last_updated.",
            "content": {
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    },
    "/contact.md": {
      "get": {
        "operationId": "getContactMarkdown",
        "tags": [
          "Content"
        ],
        "summary": "The page https://8x.sale/contact as Markdown",
        "description": "Returns the public page at https://8x.sale/contact as Markdown, rendered from the same source as the HTML page. The same body answers a GET of /contact sent with `Accept: text/markdown`. Needs no credentials.",
        "responses": {
          "200": {
            "description": "The page as Markdown, opening with YAML frontmatter: its title, canonical url and last_updated.",
            "content": {
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    },
    "/pricing.md": {
      "get": {
        "operationId": "getPricingMarkdown",
        "tags": [
          "Content"
        ],
        "summary": "The page https://8x.sale/pricing as Markdown",
        "description": "Returns the public page at https://8x.sale/pricing as Markdown, rendered from the same source as the HTML page. The same body answers a GET of /pricing sent with `Accept: text/markdown`. Needs no credentials.",
        "responses": {
          "200": {
            "description": "The page as Markdown, opening with YAML frontmatter: its title, canonical url and last_updated.",
            "content": {
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    },
    "/dialer.md": {
      "get": {
        "operationId": "getDialerMarkdown",
        "tags": [
          "Content"
        ],
        "summary": "The page https://8x.sale/dialer as Markdown",
        "description": "Returns the public page at https://8x.sale/dialer as Markdown, rendered from the same source as the HTML page. The same body answers a GET of /dialer sent with `Accept: text/markdown`. Needs no credentials.",
        "responses": {
          "200": {
            "description": "The page as Markdown, opening with YAML frontmatter: its title, canonical url and last_updated.",
            "content": {
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    },
    "/dialer/parallel-dialer.md": {
      "get": {
        "operationId": "getDialerParallelDialerMarkdown",
        "tags": [
          "Content"
        ],
        "summary": "The page https://8x.sale/dialer/parallel-dialer as Markdown",
        "description": "Returns the public page at https://8x.sale/dialer/parallel-dialer as Markdown, rendered from the same source as the HTML page. The same body answers a GET of /dialer/parallel-dialer sent with `Accept: text/markdown`. Needs no credentials.",
        "responses": {
          "200": {
            "description": "The page as Markdown, opening with YAML frontmatter: its title, canonical url and last_updated.",
            "content": {
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    },
    "/dialer/agent.md": {
      "get": {
        "operationId": "getDialerAgentMarkdown",
        "tags": [
          "Content"
        ],
        "summary": "The page https://8x.sale/dialer/agent as Markdown",
        "description": "Returns the public page at https://8x.sale/dialer/agent as Markdown, rendered from the same source as the HTML page. The same body answers a GET of /dialer/agent sent with `Accept: text/markdown`. Needs no credentials.",
        "responses": {
          "200": {
            "description": "The page as Markdown, opening with YAML frontmatter: its title, canonical url and last_updated.",
            "content": {
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    },
    "/dialer/lead-sourcing.md": {
      "get": {
        "operationId": "getDialerLeadSourcingMarkdown",
        "tags": [
          "Content"
        ],
        "summary": "The page https://8x.sale/dialer/lead-sourcing as Markdown",
        "description": "Returns the public page at https://8x.sale/dialer/lead-sourcing as Markdown, rendered from the same source as the HTML page. The same body answers a GET of /dialer/lead-sourcing sent with `Accept: text/markdown`. Needs no credentials.",
        "responses": {
          "200": {
            "description": "The page as Markdown, opening with YAML frontmatter: its title, canonical url and last_updated.",
            "content": {
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    },
    "/dialer/coaching.md": {
      "get": {
        "operationId": "getDialerCoachingMarkdown",
        "tags": [
          "Content"
        ],
        "summary": "The page https://8x.sale/dialer/coaching as Markdown",
        "description": "Returns the public page at https://8x.sale/dialer/coaching as Markdown, rendered from the same source as the HTML page. The same body answers a GET of /dialer/coaching sent with `Accept: text/markdown`. Needs no credentials.",
        "responses": {
          "200": {
            "description": "The page as Markdown, opening with YAML frontmatter: its title, canonical url and last_updated.",
            "content": {
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    },
    "/dialer/team.md": {
      "get": {
        "operationId": "getDialerTeamMarkdown",
        "tags": [
          "Content"
        ],
        "summary": "The page https://8x.sale/dialer/team as Markdown",
        "description": "Returns the public page at https://8x.sale/dialer/team as Markdown, rendered from the same source as the HTML page. The same body answers a GET of /dialer/team sent with `Accept: text/markdown`. Needs no credentials.",
        "responses": {
          "200": {
            "description": "The page as Markdown, opening with YAML frontmatter: its title, canonical url and last_updated.",
            "content": {
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    },
    "/dialer/integrations.md": {
      "get": {
        "operationId": "getDialerIntegrationsMarkdown",
        "tags": [
          "Content"
        ],
        "summary": "The page https://8x.sale/dialer/integrations as Markdown",
        "description": "Returns the public page at https://8x.sale/dialer/integrations as Markdown, rendered from the same source as the HTML page. The same body answers a GET of /dialer/integrations sent with `Accept: text/markdown`. Needs no credentials.",
        "responses": {
          "200": {
            "description": "The page as Markdown, opening with YAML frontmatter: its title, canonical url and last_updated.",
            "content": {
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    },
    "/legal.md": {
      "get": {
        "operationId": "getLegalMarkdown",
        "tags": [
          "Content"
        ],
        "summary": "The page https://8x.sale/legal as Markdown",
        "description": "Returns the public page at https://8x.sale/legal as Markdown, rendered from the same source as the HTML page. The same body answers a GET of /legal sent with `Accept: text/markdown`. Needs no credentials.",
        "responses": {
          "200": {
            "description": "The page as Markdown, opening with YAML frontmatter: its title, canonical url and last_updated.",
            "content": {
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    },
    "/legal/terms.md": {
      "get": {
        "operationId": "getLegalTermsMarkdown",
        "tags": [
          "Content"
        ],
        "summary": "The page https://8x.sale/legal/terms as Markdown",
        "description": "Returns the public page at https://8x.sale/legal/terms as Markdown, rendered from the same source as the HTML page. The same body answers a GET of /legal/terms sent with `Accept: text/markdown`. Needs no credentials.",
        "responses": {
          "200": {
            "description": "The page as Markdown, opening with YAML frontmatter: its title, canonical url and last_updated.",
            "content": {
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    },
    "/legal/privacy-prospects.md": {
      "get": {
        "operationId": "getLegalPrivacyProspectsMarkdown",
        "tags": [
          "Content"
        ],
        "summary": "The page https://8x.sale/legal/privacy-prospects as Markdown",
        "description": "Returns the public page at https://8x.sale/legal/privacy-prospects as Markdown, rendered from the same source as the HTML page. The same body answers a GET of /legal/privacy-prospects sent with `Accept: text/markdown`. Needs no credentials.",
        "responses": {
          "200": {
            "description": "The page as Markdown, opening with YAML frontmatter: its title, canonical url and last_updated.",
            "content": {
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    },
    "/legal/acceptable-use.md": {
      "get": {
        "operationId": "getLegalAcceptableUseMarkdown",
        "tags": [
          "Content"
        ],
        "summary": "The page https://8x.sale/legal/acceptable-use as Markdown",
        "description": "Returns the public page at https://8x.sale/legal/acceptable-use as Markdown, rendered from the same source as the HTML page. The same body answers a GET of /legal/acceptable-use sent with `Accept: text/markdown`. Needs no credentials.",
        "responses": {
          "200": {
            "description": "The page as Markdown, opening with YAML frontmatter: its title, canonical url and last_updated.",
            "content": {
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    },
    "/legal/cookies.md": {
      "get": {
        "operationId": "getLegalCookiesMarkdown",
        "tags": [
          "Content"
        ],
        "summary": "The page https://8x.sale/legal/cookies as Markdown",
        "description": "Returns the public page at https://8x.sale/legal/cookies as Markdown, rendered from the same source as the HTML page. The same body answers a GET of /legal/cookies sent with `Accept: text/markdown`. Needs no credentials.",
        "responses": {
          "200": {
            "description": "The page as Markdown, opening with YAML frontmatter: its title, canonical url and last_updated.",
            "content": {
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    },
    "/legal/sub-processors.md": {
      "get": {
        "operationId": "getLegalSubProcessorsMarkdown",
        "tags": [
          "Content"
        ],
        "summary": "The page https://8x.sale/legal/sub-processors as Markdown",
        "description": "Returns the public page at https://8x.sale/legal/sub-processors as Markdown, rendered from the same source as the HTML page. The same body answers a GET of /legal/sub-processors sent with `Accept: text/markdown`. Needs no credentials.",
        "responses": {
          "200": {
            "description": "The page as Markdown, opening with YAML frontmatter: its title, canonical url and last_updated.",
            "content": {
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    },
    "/legal/google-calendar.md": {
      "get": {
        "operationId": "getLegalGoogleCalendarMarkdown",
        "tags": [
          "Content"
        ],
        "summary": "The page https://8x.sale/legal/google-calendar as Markdown",
        "description": "Returns the public page at https://8x.sale/legal/google-calendar as Markdown, rendered from the same source as the HTML page. The same body answers a GET of /legal/google-calendar sent with `Accept: text/markdown`. Needs no credentials.",
        "responses": {
          "200": {
            "description": "The page as Markdown, opening with YAML frontmatter: its title, canonical url and last_updated.",
            "content": {
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    },
    "/legal/dialer-customer-terms.md": {
      "get": {
        "operationId": "getLegalDialerCustomerTermsMarkdown",
        "tags": [
          "Content"
        ],
        "summary": "The page https://8x.sale/legal/dialer-customer-terms as Markdown",
        "description": "Returns the public page at https://8x.sale/legal/dialer-customer-terms as Markdown, rendered from the same source as the HTML page. The same body answers a GET of /legal/dialer-customer-terms sent with `Accept: text/markdown`. Needs no credentials.",
        "responses": {
          "200": {
            "description": "The page as Markdown, opening with YAML frontmatter: its title, canonical url and last_updated.",
            "content": {
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    },
    "/legal/dialer-acceptable-use-policy.md": {
      "get": {
        "operationId": "getLegalDialerAcceptableUsePolicyMarkdown",
        "tags": [
          "Content"
        ],
        "summary": "The page https://8x.sale/legal/dialer-acceptable-use-policy as Markdown",
        "description": "Returns the public page at https://8x.sale/legal/dialer-acceptable-use-policy as Markdown, rendered from the same source as the HTML page. The same body answers a GET of /legal/dialer-acceptable-use-policy sent with `Accept: text/markdown`. Needs no credentials.",
        "responses": {
          "200": {
            "description": "The page as Markdown, opening with YAML frontmatter: its title, canonical url and last_updated.",
            "content": {
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    },
    "/legal/dialer-conduct-agreement.md": {
      "get": {
        "operationId": "getLegalDialerConductAgreementMarkdown",
        "tags": [
          "Content"
        ],
        "summary": "The page https://8x.sale/legal/dialer-conduct-agreement as Markdown",
        "description": "Returns the public page at https://8x.sale/legal/dialer-conduct-agreement as Markdown, rendered from the same source as the HTML page. The same body answers a GET of /legal/dialer-conduct-agreement sent with `Accept: text/markdown`. Needs no credentials.",
        "responses": {
          "200": {
            "description": "The page as Markdown, opening with YAML frontmatter: its title, canonical url and last_updated.",
            "content": {
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    },
    "/legal/dialer-data-processing-agreement.md": {
      "get": {
        "operationId": "getLegalDialerDataProcessingAgreementMarkdown",
        "tags": [
          "Content"
        ],
        "summary": "The page https://8x.sale/legal/dialer-data-processing-agreement as Markdown",
        "description": "Returns the public page at https://8x.sale/legal/dialer-data-processing-agreement as Markdown, rendered from the same source as the HTML page. The same body answers a GET of /legal/dialer-data-processing-agreement sent with `Accept: text/markdown`. Needs no credentials.",
        "responses": {
          "200": {
            "description": "The page as Markdown, opening with YAML frontmatter: its title, canonical url and last_updated.",
            "content": {
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    },
    "/legal/dialer-privacy-policy.md": {
      "get": {
        "operationId": "getLegalDialerPrivacyPolicyMarkdown",
        "tags": [
          "Content"
        ],
        "summary": "The page https://8x.sale/legal/dialer-privacy-policy as Markdown",
        "description": "Returns the public page at https://8x.sale/legal/dialer-privacy-policy as Markdown, rendered from the same source as the HTML page. The same body answers a GET of /legal/dialer-privacy-policy sent with `Accept: text/markdown`. Needs no credentials.",
        "responses": {
          "200": {
            "description": "The page as Markdown, opening with YAML frontmatter: its title, canonical url and last_updated.",
            "content": {
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    },
    "/legal/cookies/pt-BR.md": {
      "get": {
        "operationId": "getLegalCookiesPtBrMarkdown",
        "tags": [
          "Content"
        ],
        "summary": "The page https://8x.sale/legal/cookies/pt-BR as Markdown",
        "description": "Returns the public page at https://8x.sale/legal/cookies/pt-BR as Markdown, rendered from the same source as the HTML page. The same body answers a GET of /legal/cookies/pt-BR sent with `Accept: text/markdown`. Needs no credentials.",
        "responses": {
          "200": {
            "description": "The page as Markdown, opening with YAML frontmatter: its title, canonical url and last_updated.",
            "content": {
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    },
    "/legal/cookies/es-MX.md": {
      "get": {
        "operationId": "getLegalCookiesEsMxMarkdown",
        "tags": [
          "Content"
        ],
        "summary": "The page https://8x.sale/legal/cookies/es-MX as Markdown",
        "description": "Returns the public page at https://8x.sale/legal/cookies/es-MX as Markdown, rendered from the same source as the HTML page. The same body answers a GET of /legal/cookies/es-MX sent with `Accept: text/markdown`. Needs no credentials.",
        "responses": {
          "200": {
            "description": "The page as Markdown, opening with YAML frontmatter: its title, canonical url and last_updated.",
            "content": {
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    },
    "/legal/cookies/hi-IN.md": {
      "get": {
        "operationId": "getLegalCookiesHiInMarkdown",
        "tags": [
          "Content"
        ],
        "summary": "The page https://8x.sale/legal/cookies/hi-IN as Markdown",
        "description": "Returns the public page at https://8x.sale/legal/cookies/hi-IN as Markdown, rendered from the same source as the HTML page. The same body answers a GET of /legal/cookies/hi-IN sent with `Accept: text/markdown`. Needs no credentials.",
        "responses": {
          "200": {
            "description": "The page as Markdown, opening with YAML frontmatter: its title, canonical url and last_updated.",
            "content": {
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    },
    "/legal/cookies/tr-TR.md": {
      "get": {
        "operationId": "getLegalCookiesTrTrMarkdown",
        "tags": [
          "Content"
        ],
        "summary": "The page https://8x.sale/legal/cookies/tr-TR as Markdown",
        "description": "Returns the public page at https://8x.sale/legal/cookies/tr-TR as Markdown, rendered from the same source as the HTML page. The same body answers a GET of /legal/cookies/tr-TR sent with `Accept: text/markdown`. Needs no credentials.",
        "responses": {
          "200": {
            "description": "The page as Markdown, opening with YAML frontmatter: its title, canonical url and last_updated.",
            "content": {
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    },
    "/legal/dialer-conduct-agreement/pt-BR.md": {
      "get": {
        "operationId": "getLegalDialerConductAgreementPtBrMarkdown",
        "tags": [
          "Content"
        ],
        "summary": "The page https://8x.sale/legal/dialer-conduct-agreement/pt-BR as Markdown",
        "description": "Returns the public page at https://8x.sale/legal/dialer-conduct-agreement/pt-BR as Markdown, rendered from the same source as the HTML page. The same body answers a GET of /legal/dialer-conduct-agreement/pt-BR sent with `Accept: text/markdown`. Needs no credentials.",
        "responses": {
          "200": {
            "description": "The page as Markdown, opening with YAML frontmatter: its title, canonical url and last_updated.",
            "content": {
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    },
    "/legal/dialer-conduct-agreement/es-MX.md": {
      "get": {
        "operationId": "getLegalDialerConductAgreementEsMxMarkdown",
        "tags": [
          "Content"
        ],
        "summary": "The page https://8x.sale/legal/dialer-conduct-agreement/es-MX as Markdown",
        "description": "Returns the public page at https://8x.sale/legal/dialer-conduct-agreement/es-MX as Markdown, rendered from the same source as the HTML page. The same body answers a GET of /legal/dialer-conduct-agreement/es-MX sent with `Accept: text/markdown`. Needs no credentials.",
        "responses": {
          "200": {
            "description": "The page as Markdown, opening with YAML frontmatter: its title, canonical url and last_updated.",
            "content": {
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    },
    "/legal/dialer-conduct-agreement/hi-IN.md": {
      "get": {
        "operationId": "getLegalDialerConductAgreementHiInMarkdown",
        "tags": [
          "Content"
        ],
        "summary": "The page https://8x.sale/legal/dialer-conduct-agreement/hi-IN as Markdown",
        "description": "Returns the public page at https://8x.sale/legal/dialer-conduct-agreement/hi-IN as Markdown, rendered from the same source as the HTML page. The same body answers a GET of /legal/dialer-conduct-agreement/hi-IN sent with `Accept: text/markdown`. Needs no credentials.",
        "responses": {
          "200": {
            "description": "The page as Markdown, opening with YAML frontmatter: its title, canonical url and last_updated.",
            "content": {
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    },
    "/legal/dialer-conduct-agreement/tr-TR.md": {
      "get": {
        "operationId": "getLegalDialerConductAgreementTrTrMarkdown",
        "tags": [
          "Content"
        ],
        "summary": "The page https://8x.sale/legal/dialer-conduct-agreement/tr-TR as Markdown",
        "description": "Returns the public page at https://8x.sale/legal/dialer-conduct-agreement/tr-TR as Markdown, rendered from the same source as the HTML page. The same body answers a GET of /legal/dialer-conduct-agreement/tr-TR sent with `Accept: text/markdown`. Needs no credentials.",
        "responses": {
          "200": {
            "description": "The page as Markdown, opening with YAML frontmatter: its title, canonical url and last_updated.",
            "content": {
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    },
    "/privacy.md": {
      "get": {
        "operationId": "getPrivacyMarkdown",
        "tags": [
          "Content"
        ],
        "summary": "The page https://8x.sale/privacy as Markdown",
        "description": "Returns the public page at https://8x.sale/privacy as Markdown, rendered from the same source as the HTML page. The same body answers a GET of /privacy sent with `Accept: text/markdown`. Needs no credentials.",
        "responses": {
          "200": {
            "description": "The page as Markdown, opening with YAML frontmatter: its title, canonical url and last_updated.",
            "content": {
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    },
    "/openapi.json": {
      "get": {
        "operationId": "getOpenApiDescription",
        "tags": [
          "Discovery"
        ],
        "summary": "This OpenAPI description",
        "description": "Every public 8x endpoint in OpenAPI 3.1: the Markdown pages, the llms files, the discovery documents and the health check.",
        "responses": {
          "200": {
            "description": "The OpenAPI 3.1 document.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          }
        }
      }
    },
    "/.well-known/api-catalog": {
      "get": {
        "operationId": "getApiCatalog",
        "tags": [
          "Discovery"
        ],
        "summary": "The API catalog (RFC 9727)",
        "description": "Links to the OpenAPI description, this page and the health check. A HEAD request answers with a Link header naming the catalog.",
        "responses": {
          "200": {
            "description": "An RFC 9264 linkset.",
            "content": {
              "application/linkset+json; profile=\"https://www.rfc-editor.org/info/rfc9727\"": {
                "schema": {
                  "$ref": "#/components/schemas/Linkset"
                }
              }
            }
          }
        }
      }
    },
    "/.well-known/ard.json": {
      "get": {
        "operationId": "getAgenticResourceCatalog",
        "tags": [
          "Discovery"
        ],
        "summary": "The agentic resource catalog (ARD)",
        "description": "The OpenAPI description, the agent skill and llms.txt, as one catalog.",
        "responses": {
          "200": {
            "description": "The catalog.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceCatalog"
                }
              }
            }
          }
        }
      }
    },
    "/.well-known/ai-catalog.json": {
      "get": {
        "operationId": "getAiCatalog",
        "tags": [
          "Discovery"
        ],
        "summary": "The AI Catalog",
        "description": "The same catalog at the AI Catalog standard's address.",
        "responses": {
          "200": {
            "description": "The catalog.",
            "content": {
              "application/ai-catalog+json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceCatalog"
                }
              }
            }
          }
        }
      }
    },
    "/.well-known/agent-skills/index.json": {
      "get": {
        "operationId": "getAgentSkillsIndex",
        "tags": [
          "Discovery"
        ],
        "summary": "The Agent Skills discovery index",
        "description": "The 8x agent skill: when to use 8x, where to send each person, and how to read the site.",
        "responses": {
          "200": {
            "description": "The index, with each skill's sha256 digest.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AgentSkillsIndex"
                }
              }
            }
          }
        }
      }
    },
    "/.well-known/agent-skills/8x/SKILL.md": {
      "get": {
        "operationId": "getAgentSkill",
        "tags": [
          "Discovery"
        ],
        "summary": "The 8x agent skill",
        "description": "The 8x agent skill: when to use 8x, where to send each person, and how to read the site. A SKILL.md with YAML frontmatter.",
        "responses": {
          "200": {
            "description": "The SKILL.md.",
            "content": {
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    },
    "/api/health": {
      "get": {
        "operationId": "getHealth",
        "tags": [
          "Discovery"
        ],
        "summary": "Whether 8x is up",
        "description": "Whether the site and its database are up. Answers 200 when every check passes and 503 when one fails.",
        "responses": {
          "200": {
            "description": "Every check passed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Health"
                }
              }
            }
          },
          "503": {
            "description": "A check failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Health"
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "Health": {
        "type": "object",
        "required": [
          "status",
          "checks",
          "commit"
        ],
        "properties": {
          "status": {
            "type": "string",
            "enum": [
              "ok",
              "fail"
            ]
          },
          "checks": {
            "type": "object",
            "additionalProperties": {
              "type": "string",
              "enum": [
                "ok",
                "fail"
              ]
            },
            "description": "Each check by name, such as database."
          },
          "commit": {
            "type": [
              "string",
              "null"
            ],
            "description": "The deployed commit."
          }
        }
      },
      "Linkset": {
        "type": "object",
        "required": [
          "linkset"
        ],
        "properties": {
          "linkset": {
            "type": "array",
            "items": {
              "type": "object",
              "required": [
                "anchor"
              ],
              "properties": {
                "anchor": {
                  "type": "string",
                  "format": "uri"
                }
              },
              "additionalProperties": {
                "type": "array",
                "items": {
                  "type": "object",
                  "required": [
                    "href"
                  ],
                  "properties": {
                    "href": {
                      "type": "string",
                      "format": "uri"
                    },
                    "type": {
                      "type": "string"
                    },
                    "title": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          }
        }
      },
      "ResourceCatalog": {
        "type": "object",
        "required": [
          "specVersion",
          "host",
          "entries"
        ],
        "properties": {
          "specVersion": {
            "type": "string"
          },
          "host": {
            "type": "object",
            "required": [
              "displayName"
            ],
            "properties": {
              "displayName": {
                "type": "string"
              },
              "documentationUrl": {
                "type": "string",
                "format": "uri"
              },
              "logoUrl": {
                "type": "string",
                "format": "uri"
              }
            }
          },
          "entries": {
            "type": "array",
            "items": {
              "type": "object",
              "required": [
                "identifier",
                "displayName",
                "type",
                "url"
              ],
              "properties": {
                "identifier": {
                  "type": "string"
                },
                "displayName": {
                  "type": "string"
                },
                "description": {
                  "type": "string"
                },
                "type": {
                  "type": "string",
                  "description": "A media type."
                },
                "url": {
                  "type": "string",
                  "format": "uri"
                },
                "tags": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                },
                "representativeQueries": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                }
              }
            }
          }
        }
      },
      "AgentSkillsIndex": {
        "type": "object",
        "required": [
          "$schema",
          "skills"
        ],
        "properties": {
          "$schema": {
            "type": "string",
            "format": "uri"
          },
          "skills": {
            "type": "array",
            "items": {
              "type": "object",
              "required": [
                "name",
                "type",
                "description",
                "url",
                "digest"
              ],
              "properties": {
                "name": {
                  "type": "string"
                },
                "type": {
                  "type": "string",
                  "enum": [
                    "skill-md",
                    "archive"
                  ]
                },
                "description": {
                  "type": "string"
                },
                "url": {
                  "type": "string"
                },
                "digest": {
                  "type": "string",
                  "pattern": "^sha256:[0-9a-f]{64}$"
                }
              }
            }
          }
        }
      }
    }
  }
}