{
  "openapi": "3.1.0",
  "info": {
    "title": "StickSEO Report API",
    "version": "1.0.0",
    "description": "Live SEO and AI search report for any domain. Every number names its source. No key needed; each address may start 12 new reports and 4 speed tests an hour, and a domain is read live at most once every 6 hours.",
    "contact": {
      "url": "https://stickseo.com"
    }
  },
  "servers": [
    {
      "url": "https://stickseo.com"
    }
  ],
  "paths": {
    "/api/report": {
      "get": {
        "operationId": "domainReport",
        "summary": "SEO and AI search report for a domain",
        "description": "Score out of 100 with every point explained, findings in priority order, home page facts, robots.txt and AI crawler rules, llms.txt, sitemap pages, registry age, Tranco popularity rank, Internet Archive history, DNS and email security. Set speed=1 to add Google PageSpeed on a phone (up to 60 seconds).",
        "parameters": [
          {
            "name": "domain",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "A domain such as example.com"
          },
          {
            "name": "speed",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "1"
              ]
            },
            "description": "Add Google PageSpeed Insights"
          }
        ],
        "responses": {
          "200": {
            "description": "The report",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "domain": {
                      "type": "string"
                    },
                    "at": {
                      "type": "string"
                    },
                    "cached": {
                      "type": "boolean"
                    },
                    "score": {
                      "type": "object",
                      "properties": {
                        "score": {
                          "type": [
                            "integer",
                            "null"
                          ]
                        },
                        "parts": {
                          "type": "array",
                          "items": {
                            "type": "object"
                          }
                        }
                      }
                    },
                    "findings": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "level": {
                            "type": "string"
                          },
                          "area": {
                            "type": "string"
                          },
                          "text": {
                            "type": "string"
                          },
                          "fix": {
                            "type": "string"
                          }
                        }
                      }
                    },
                    "site": {
                      "type": "object"
                    },
                    "robots": {
                      "type": "object"
                    },
                    "sitemap": {
                      "type": "object"
                    },
                    "registry": {
                      "type": "object"
                    },
                    "popularity": {
                      "type": "object"
                    },
                    "archive": {
                      "type": "object"
                    },
                    "dns": {
                      "type": "object"
                    },
                    "speed": {
                      "type": [
                        "object",
                        "null"
                      ]
                    },
                    "sources": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Not a domain, or the site could not be read"
          },
          "429": {
            "description": "Hourly limit reached"
          }
        }
      }
    },
    "/api/report/pdf": {
      "get": {
        "operationId": "domainReportPdf",
        "summary": "The same report as a PDF file (opens in the browser; add dl=1 to download)",
        "parameters": [
          {
            "name": "domain",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "A domain such as example.com"
          },
          {
            "name": "dl",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "1"
              ]
            },
            "description": "Download the file instead of opening it"
          }
        ],
        "responses": {
          "200": {
            "description": "PDF file",
            "content": {
              "application/pdf": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          },
          "400": {
            "description": "Not a domain, or the site could not be read"
          },
          "429": {
            "description": "Hourly limit reached"
          }
        }
      }
    }
  }
}