{
  "openapi": "3.1.0",
  "info": {
    "title": "Shipwork checks API",
    "version": "1.1.0",
    "description": "Server-side site checks. A browser cannot fetch a cross-origin page, so the fetch happens here and the result is returned as JSON. Every finding has a level of error, warn or info."
  },
  "servers": [
    {
      "url": "https://api.shipwork.io"
    }
  ],
  "paths": {
    "/api/health": {
      "get": {
        "summary": "Service health",
        "responses": {
          "200": {
            "description": "Service is up"
          }
        }
      }
    },
    "/api/stats": {
      "get": {
        "summary": "Uptime, cache size and rate configuration",
        "responses": {
          "200": {
            "description": "Stats"
          }
        }
      }
    },
    "/api/check": {
      "get": {
        "summary": "List available checks",
        "responses": {
          "200": {
            "description": "List of check paths"
          }
        }
      }
    },
    "/api/check/all": {
      "get": {
        "summary": "Run every check in parallel",
        "parameters": [
          {
            "name": "url",
            "in": "query",
            "required": true,
            "description": "Absolute http or https URL to check.",
            "schema": {
              "type": "string",
              "format": "uri"
            }
          },
          {
            "name": "only",
            "in": "query",
            "required": false,
            "description": "Comma separated subset of checks, for example meta,sitemap.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Summary counts and a results object keyed by check name",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "summary": {
                      "type": "object"
                    },
                    "results": {
                      "type": "object"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/score": {
      "get": {
        "summary": "Run every check and return a single 0 to 100 score",
        "description": "Runs all checks, then weights findings into one score, a letter grade and a tone of good, warn or bad. Powers the embeddable badge at /badge.svg.",
        "parameters": [
          {
            "name": "url",
            "in": "query",
            "required": true,
            "description": "Absolute http or https URL to check.",
            "schema": {
              "type": "string",
              "format": "uri"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Score, grade, tone, per-check breakdown and summary counts",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "score": {
                      "type": "integer",
                      "minimum": 0,
                      "maximum": 100
                    },
                    "grade": {
                      "type": "string",
                      "enum": [
                        "A",
                        "B",
                        "C",
                        "D",
                        "F"
                      ]
                    },
                    "tone": {
                      "type": "string",
                      "enum": [
                        "good",
                        "warn",
                        "bad"
                      ]
                    },
                    "breakdown": {
                      "type": "object"
                    },
                    "summary": {
                      "type": "object"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/check/structured-data": {
      "get": {
        "summary": "Find and validate JSON-LD blocks",
        "parameters": [
          {
            "name": "url",
            "in": "query",
            "required": true,
            "description": "Absolute http or https URL to check.",
            "schema": {
              "type": "string",
              "format": "uri"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Check result",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "ok": {
                      "type": "boolean"
                    },
                    "tookMs": {
                      "type": "integer"
                    },
                    "cached": {
                      "type": "boolean"
                    },
                    "findings": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "level": {
                            "type": "string",
                            "enum": [
                              "error",
                              "warn",
                              "info"
                            ]
                          },
                          "message": {
                            "type": "string"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Missing or unsafe url"
          },
          "429": {
            "description": "Rate limited"
          }
        }
      }
    },
    "/api/check/sitemap": {
      "get": {
        "summary": "Fetch and validate a sitemap or sitemap index",
        "parameters": [
          {
            "name": "url",
            "in": "query",
            "required": true,
            "description": "Absolute http or https URL to check.",
            "schema": {
              "type": "string",
              "format": "uri"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Check result",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "ok": {
                      "type": "boolean"
                    },
                    "tookMs": {
                      "type": "integer"
                    },
                    "cached": {
                      "type": "boolean"
                    },
                    "findings": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "level": {
                            "type": "string",
                            "enum": [
                              "error",
                              "warn",
                              "info"
                            ]
                          },
                          "message": {
                            "type": "string"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Missing or unsafe url"
          },
          "429": {
            "description": "Rate limited"
          }
        }
      }
    },
    "/api/check/robots": {
      "get": {
        "summary": "Parse robots.txt, optional user-agent and path resolution",
        "parameters": [
          {
            "name": "url",
            "in": "query",
            "required": true,
            "description": "Absolute http or https URL to check.",
            "schema": {
              "type": "string",
              "format": "uri"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Check result",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "ok": {
                      "type": "boolean"
                    },
                    "tookMs": {
                      "type": "integer"
                    },
                    "cached": {
                      "type": "boolean"
                    },
                    "findings": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "level": {
                            "type": "string",
                            "enum": [
                              "error",
                              "warn",
                              "info"
                            ]
                          },
                          "message": {
                            "type": "string"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Missing or unsafe url"
          },
          "429": {
            "description": "Rate limited"
          }
        }
      }
    },
    "/api/check/redirect": {
      "get": {
        "summary": "Follow redirects and report the chain",
        "parameters": [
          {
            "name": "url",
            "in": "query",
            "required": true,
            "description": "Absolute http or https URL to check.",
            "schema": {
              "type": "string",
              "format": "uri"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Check result",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "ok": {
                      "type": "boolean"
                    },
                    "tookMs": {
                      "type": "integer"
                    },
                    "cached": {
                      "type": "boolean"
                    },
                    "findings": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "level": {
                            "type": "string",
                            "enum": [
                              "error",
                              "warn",
                              "info"
                            ]
                          },
                          "message": {
                            "type": "string"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Missing or unsafe url"
          },
          "429": {
            "description": "Rate limited"
          }
        }
      }
    },
    "/api/check/meta": {
      "get": {
        "summary": "Title, description, canonical and Open Graph",
        "parameters": [
          {
            "name": "url",
            "in": "query",
            "required": true,
            "description": "Absolute http or https URL to check.",
            "schema": {
              "type": "string",
              "format": "uri"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Check result",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "ok": {
                      "type": "boolean"
                    },
                    "tookMs": {
                      "type": "integer"
                    },
                    "cached": {
                      "type": "boolean"
                    },
                    "findings": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "level": {
                            "type": "string",
                            "enum": [
                              "error",
                              "warn",
                              "info"
                            ]
                          },
                          "message": {
                            "type": "string"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Missing or unsafe url"
          },
          "429": {
            "description": "Rate limited"
          }
        }
      }
    },
    "/api/check/canonical": {
      "get": {
        "summary": "Canonical links and contradictions with noindex",
        "parameters": [
          {
            "name": "url",
            "in": "query",
            "required": true,
            "description": "Absolute http or https URL to check.",
            "schema": {
              "type": "string",
              "format": "uri"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Check result",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "ok": {
                      "type": "boolean"
                    },
                    "tookMs": {
                      "type": "integer"
                    },
                    "cached": {
                      "type": "boolean"
                    },
                    "findings": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "level": {
                            "type": "string",
                            "enum": [
                              "error",
                              "warn",
                              "info"
                            ]
                          },
                          "message": {
                            "type": "string"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Missing or unsafe url"
          },
          "429": {
            "description": "Rate limited"
          }
        }
      }
    },
    "/api/check/headers": {
      "get": {
        "summary": "Security headers and version leaks",
        "parameters": [
          {
            "name": "url",
            "in": "query",
            "required": true,
            "description": "Absolute http or https URL to check.",
            "schema": {
              "type": "string",
              "format": "uri"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Check result",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "ok": {
                      "type": "boolean"
                    },
                    "tookMs": {
                      "type": "integer"
                    },
                    "cached": {
                      "type": "boolean"
                    },
                    "findings": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "level": {
                            "type": "string",
                            "enum": [
                              "error",
                              "warn",
                              "info"
                            ]
                          },
                          "message": {
                            "type": "string"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Missing or unsafe url"
          },
          "429": {
            "description": "Rate limited"
          }
        }
      }
    },
    "/api/check/images": {
      "get": {
        "summary": "Image count, missing alt text, missing dimensions",
        "parameters": [
          {
            "name": "url",
            "in": "query",
            "required": true,
            "description": "Absolute http or https URL to check.",
            "schema": {
              "type": "string",
              "format": "uri"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Check result",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "ok": {
                      "type": "boolean"
                    },
                    "tookMs": {
                      "type": "integer"
                    },
                    "cached": {
                      "type": "boolean"
                    },
                    "findings": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "level": {
                            "type": "string",
                            "enum": [
                              "error",
                              "warn",
                              "info"
                            ]
                          },
                          "message": {
                            "type": "string"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Missing or unsafe url"
          },
          "429": {
            "description": "Rate limited"
          }
        }
      }
    },
    "/api/check/llms": {
      "get": {
        "summary": "llms.txt presence, sections and AI crawler rules",
        "parameters": [
          {
            "name": "url",
            "in": "query",
            "required": true,
            "description": "Absolute http or https URL to check.",
            "schema": {
              "type": "string",
              "format": "uri"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Check result",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "ok": {
                      "type": "boolean"
                    },
                    "tookMs": {
                      "type": "integer"
                    },
                    "cached": {
                      "type": "boolean"
                    },
                    "findings": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "level": {
                            "type": "string",
                            "enum": [
                              "error",
                              "warn",
                              "info"
                            ]
                          },
                          "message": {
                            "type": "string"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Missing or unsafe url"
          },
          "429": {
            "description": "Rate limited"
          }
        }
      }
    },
    "/api/check/hreflang": {
      "get": {
        "summary": "Alternate language tags and x-default",
        "parameters": [
          {
            "name": "url",
            "in": "query",
            "required": true,
            "description": "Absolute http or https URL to check.",
            "schema": {
              "type": "string",
              "format": "uri"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Check result",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "ok": {
                      "type": "boolean"
                    },
                    "tookMs": {
                      "type": "integer"
                    },
                    "cached": {
                      "type": "boolean"
                    },
                    "findings": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "level": {
                            "type": "string",
                            "enum": [
                              "error",
                              "warn",
                              "info"
                            ]
                          },
                          "message": {
                            "type": "string"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Missing or unsafe url"
          },
          "429": {
            "description": "Rate limited"
          }
        }
      }
    },
    "/api/check/mixed-content": {
      "get": {
        "summary": "Insecure http resources on an https page",
        "parameters": [
          {
            "name": "url",
            "in": "query",
            "required": true,
            "description": "Absolute http or https URL to check.",
            "schema": {
              "type": "string",
              "format": "uri"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Check result",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "ok": {
                      "type": "boolean"
                    },
                    "tookMs": {
                      "type": "integer"
                    },
                    "cached": {
                      "type": "boolean"
                    },
                    "findings": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "level": {
                            "type": "string",
                            "enum": [
                              "error",
                              "warn",
                              "info"
                            ]
                          },
                          "message": {
                            "type": "string"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Missing or unsafe url"
          },
          "429": {
            "description": "Rate limited"
          }
        }
      }
    },
    "/api/check/headings": {
      "get": {
        "summary": "Heading structure and H1 usage",
        "parameters": [
          {
            "name": "url",
            "in": "query",
            "required": true,
            "description": "Absolute http or https URL to check.",
            "schema": {
              "type": "string",
              "format": "uri"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Check result",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "ok": {
                      "type": "boolean"
                    },
                    "tookMs": {
                      "type": "integer"
                    },
                    "cached": {
                      "type": "boolean"
                    },
                    "findings": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "level": {
                            "type": "string",
                            "enum": [
                              "error",
                              "warn",
                              "info"
                            ]
                          },
                          "message": {
                            "type": "string"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Missing or unsafe url"
          },
          "429": {
            "description": "Rate limited"
          }
        }
      }
    },
    "/api/check/email-auth": {
      "get": {
        "summary": "SPF, DMARC and MX records for the domain",
        "parameters": [
          {
            "name": "url",
            "in": "query",
            "required": true,
            "description": "Absolute http or https URL to check.",
            "schema": {
              "type": "string",
              "format": "uri"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Check result",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "ok": {
                      "type": "boolean"
                    },
                    "tookMs": {
                      "type": "integer"
                    },
                    "cached": {
                      "type": "boolean"
                    },
                    "findings": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "level": {
                            "type": "string",
                            "enum": [
                              "error",
                              "warn",
                              "info"
                            ]
                          },
                          "message": {
                            "type": "string"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Missing or unsafe url"
          },
          "429": {
            "description": "Rate limited"
          }
        }
      }
    },
    "/api/check/indexability": {
      "get": {
        "summary": "Whether the URL can be indexed, with the reasons",
        "parameters": [
          {
            "name": "url",
            "in": "query",
            "required": true,
            "description": "Absolute http or https URL to check.",
            "schema": {
              "type": "string",
              "format": "uri"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Check result",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "ok": {
                      "type": "boolean"
                    },
                    "tookMs": {
                      "type": "integer"
                    },
                    "cached": {
                      "type": "boolean"
                    },
                    "findings": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "level": {
                            "type": "string",
                            "enum": [
                              "error",
                              "warn",
                              "info"
                            ]
                          },
                          "message": {
                            "type": "string"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Missing or unsafe url"
          },
          "429": {
            "description": "Rate limited"
          }
        }
      }
    },
    "/api/check/broken-links": {
      "get": {
        "summary": "Check the links on a page for broken targets",
        "parameters": [
          {
            "name": "url",
            "in": "query",
            "required": true,
            "description": "Absolute http or https URL to check.",
            "schema": {
              "type": "string",
              "format": "uri"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Check result",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "ok": {
                      "type": "boolean"
                    },
                    "tookMs": {
                      "type": "integer"
                    },
                    "cached": {
                      "type": "boolean"
                    },
                    "findings": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "level": {
                            "type": "string",
                            "enum": [
                              "error",
                              "warn",
                              "info"
                            ]
                          },
                          "message": {
                            "type": "string"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Missing or unsafe url"
          },
          "429": {
            "description": "Rate limited"
          }
        }
      }
    },
    "/api/check/tech": {
      "get": {
        "summary": "Detect platform, analytics and ad pixels",
        "parameters": [
          {
            "name": "url",
            "in": "query",
            "required": true,
            "description": "Absolute http or https URL to check.",
            "schema": {
              "type": "string",
              "format": "uri"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Check result",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "ok": {
                      "type": "boolean"
                    },
                    "tookMs": {
                      "type": "integer"
                    },
                    "cached": {
                      "type": "boolean"
                    },
                    "findings": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "level": {
                            "type": "string",
                            "enum": [
                              "error",
                              "warn",
                              "info"
                            ]
                          },
                          "message": {
                            "type": "string"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Missing or unsafe url"
          },
          "429": {
            "description": "Rate limited"
          }
        }
      }
    },
    "/api/check/site-crawl": {
      "get": {
        "summary": "Sample sitemap pages and report duplicates and dead URLs",
        "parameters": [
          {
            "name": "url",
            "in": "query",
            "required": true,
            "description": "Absolute http or https URL to check.",
            "schema": {
              "type": "string",
              "format": "uri"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Check result",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "ok": {
                      "type": "boolean"
                    },
                    "tookMs": {
                      "type": "integer"
                    },
                    "cached": {
                      "type": "boolean"
                    },
                    "findings": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "level": {
                            "type": "string",
                            "enum": [
                              "error",
                              "warn",
                              "info"
                            ]
                          },
                          "message": {
                            "type": "string"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Missing or unsafe url"
          },
          "429": {
            "description": "Rate limited"
          }
        }
      }
    },
    "/api/check/certificate": {
      "get": {
        "summary": "TLS certificate issuer, expiry and hostname coverage",
        "parameters": [
          {
            "name": "url",
            "in": "query",
            "required": true,
            "description": "Absolute http or https URL to check.",
            "schema": {
              "type": "string",
              "format": "uri"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Check result",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "ok": {
                      "type": "boolean"
                    },
                    "tookMs": {
                      "type": "integer"
                    },
                    "cached": {
                      "type": "boolean"
                    },
                    "findings": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "level": {
                            "type": "string",
                            "enum": [
                              "error",
                              "warn",
                              "info"
                            ]
                          },
                          "message": {
                            "type": "string"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Missing or unsafe url"
          },
          "429": {
            "description": "Rate limited"
          }
        }
      }
    },
    "/api/check/dns": {
      "get": {
        "summary": "A, AAAA, CNAME, MX, NS and TXT records for the host",
        "parameters": [
          {
            "name": "url",
            "in": "query",
            "required": true,
            "description": "Absolute http or https URL to check.",
            "schema": {
              "type": "string",
              "format": "uri"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Check result",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "ok": {
                      "type": "boolean"
                    },
                    "tookMs": {
                      "type": "integer"
                    },
                    "cached": {
                      "type": "boolean"
                    },
                    "findings": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "level": {
                            "type": "string",
                            "enum": [
                              "error",
                              "warn",
                              "info"
                            ]
                          },
                          "message": {
                            "type": "string"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Missing or unsafe url"
          },
          "429": {
            "description": "Rate limited"
          }
        }
      }
    },
    "/api/check/similarity": {
      "get": {
        "summary": "Local embeddings to find pages that are about the same thing",
        "parameters": [
          {
            "name": "url",
            "in": "query",
            "required": true,
            "description": "Absolute http or https URL to check.",
            "schema": {
              "type": "string",
              "format": "uri"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Check result",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "ok": {
                      "type": "boolean"
                    },
                    "tookMs": {
                      "type": "integer"
                    },
                    "cached": {
                      "type": "boolean"
                    },
                    "findings": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "level": {
                            "type": "string",
                            "enum": [
                              "error",
                              "warn",
                              "info"
                            ]
                          },
                          "message": {
                            "type": "string"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Missing or unsafe url"
          },
          "429": {
            "description": "Rate limited"
          }
        }
      }
    },
    "/api/check/classify": {
      "get": {
        "summary": "Page type and site kind from a constrained instruct-model prompt",
        "parameters": [
          {
            "name": "url",
            "in": "query",
            "required": true,
            "description": "Absolute http or https URL to check.",
            "schema": {
              "type": "string",
              "format": "uri"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Check result",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "ok": {
                      "type": "boolean"
                    },
                    "tookMs": {
                      "type": "integer"
                    },
                    "cached": {
                      "type": "boolean"
                    },
                    "findings": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "level": {
                            "type": "string",
                            "enum": [
                              "error",
                              "warn",
                              "info"
                            ]
                          },
                          "message": {
                            "type": "string"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Missing or unsafe url"
          },
          "429": {
            "description": "Rate limited"
          }
        }
      }
    },
    "/api/check/rendered": {
      "get": {
        "summary": "What a headless browser sees against what a plain fetch sees",
        "parameters": [
          {
            "name": "url",
            "in": "query",
            "required": true,
            "description": "Absolute http or https URL to check.",
            "schema": {
              "type": "string",
              "format": "uri"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Check result",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "ok": {
                      "type": "boolean"
                    },
                    "tookMs": {
                      "type": "integer"
                    },
                    "cached": {
                      "type": "boolean"
                    },
                    "findings": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "level": {
                            "type": "string",
                            "enum": [
                              "error",
                              "warn",
                              "info"
                            ]
                          },
                          "message": {
                            "type": "string"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Missing or unsafe url"
          },
          "429": {
            "description": "Rate limited"
          }
        }
      }
    },
    "/api/check/field-data": {
      "get": {
        "summary": "Real-user Core Web Vitals from the Chrome UX Report",
        "parameters": [
          {
            "name": "url",
            "in": "query",
            "required": true,
            "description": "Absolute http or https URL to check.",
            "schema": {
              "type": "string",
              "format": "uri"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Check result",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "ok": {
                      "type": "boolean"
                    },
                    "tookMs": {
                      "type": "integer"
                    },
                    "cached": {
                      "type": "boolean"
                    },
                    "findings": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "level": {
                            "type": "string",
                            "enum": [
                              "error",
                              "warn",
                              "info"
                            ]
                          },
                          "message": {
                            "type": "string"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Missing or unsafe url"
          },
          "429": {
            "description": "Rate limited"
          }
        }
      }
    },
    "/api/check/lighthouse": {
      "get": {
        "summary": "Google's Lighthouse scores from the PageSpeed Insights API",
        "parameters": [
          {
            "name": "url",
            "in": "query",
            "required": true,
            "description": "Absolute http or https URL to check.",
            "schema": {
              "type": "string",
              "format": "uri"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Check result",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "ok": {
                      "type": "boolean"
                    },
                    "tookMs": {
                      "type": "integer"
                    },
                    "cached": {
                      "type": "boolean"
                    },
                    "findings": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "level": {
                            "type": "string",
                            "enum": [
                              "error",
                              "warn",
                              "info"
                            ]
                          },
                          "message": {
                            "type": "string"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Missing or unsafe url"
          },
          "429": {
            "description": "Rate limited"
          }
        }
      }
    },
    "/api/check/search-console": {
      "get": {
        "summary": "Google's own indexing status, queries and sitemap health for a connected property",
        "parameters": [
          {
            "name": "url",
            "in": "query",
            "required": true,
            "description": "Absolute http or https URL to check.",
            "schema": {
              "type": "string",
              "format": "uri"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Check result",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "ok": {
                      "type": "boolean"
                    },
                    "tookMs": {
                      "type": "integer"
                    },
                    "cached": {
                      "type": "boolean"
                    },
                    "findings": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "level": {
                            "type": "string",
                            "enum": [
                              "error",
                              "warn",
                              "info"
                            ]
                          },
                          "message": {
                            "type": "string"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Missing or unsafe url"
          },
          "429": {
            "description": "Rate limited"
          }
        }
      }
    },
    "/api/check/markup": {
      "get": {
        "summary": "Validate the served HTML with the W3C Nu checker",
        "parameters": [
          {
            "name": "url",
            "in": "query",
            "required": true,
            "description": "Absolute http or https URL to check.",
            "schema": {
              "type": "string",
              "format": "uri"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Check result",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "ok": {
                      "type": "boolean"
                    },
                    "tookMs": {
                      "type": "integer"
                    },
                    "cached": {
                      "type": "boolean"
                    },
                    "findings": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "level": {
                            "type": "string",
                            "enum": [
                              "error",
                              "warn",
                              "info"
                            ]
                          },
                          "message": {
                            "type": "string"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Missing or unsafe url"
          },
          "429": {
            "description": "Rate limited"
          }
        }
      }
    },
    "/api/check/well-known": {
      "get": {
        "summary": "Fetch ads.txt, security.txt, sellers.json and other well-known files",
        "parameters": [
          {
            "name": "url",
            "in": "query",
            "required": true,
            "description": "Absolute http or https URL to check.",
            "schema": {
              "type": "string",
              "format": "uri"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Check result",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "ok": {
                      "type": "boolean"
                    },
                    "tookMs": {
                      "type": "integer"
                    },
                    "cached": {
                      "type": "boolean"
                    },
                    "findings": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "level": {
                            "type": "string",
                            "enum": [
                              "error",
                              "warn",
                              "info"
                            ]
                          },
                          "message": {
                            "type": "string"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Missing or unsafe url"
          },
          "429": {
            "description": "Rate limited"
          }
        }
      }
    },
    "/api/check/mail-trust": {
      "get": {
        "summary": "MTA-STS, TLS-RPT, BIMI and CAA records beyond SPF and DMARC",
        "parameters": [
          {
            "name": "url",
            "in": "query",
            "required": true,
            "description": "Absolute http or https URL to check.",
            "schema": {
              "type": "string",
              "format": "uri"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Check result",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "ok": {
                      "type": "boolean"
                    },
                    "tookMs": {
                      "type": "integer"
                    },
                    "cached": {
                      "type": "boolean"
                    },
                    "findings": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "level": {
                            "type": "string",
                            "enum": [
                              "error",
                              "warn",
                              "info"
                            ]
                          },
                          "message": {
                            "type": "string"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Missing or unsafe url"
          },
          "429": {
            "description": "Rate limited"
          }
        }
      }
    },
    "/api/check/indexnow": {
      "get": {
        "summary": "Verify the IndexNow key file and submit the URL when a key is given",
        "parameters": [
          {
            "name": "url",
            "in": "query",
            "required": true,
            "description": "Absolute http or https URL to check.",
            "schema": {
              "type": "string",
              "format": "uri"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Check result",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "ok": {
                      "type": "boolean"
                    },
                    "tookMs": {
                      "type": "integer"
                    },
                    "cached": {
                      "type": "boolean"
                    },
                    "findings": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "level": {
                            "type": "string",
                            "enum": [
                              "error",
                              "warn",
                              "info"
                            ]
                          },
                          "message": {
                            "type": "string"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Missing or unsafe url"
          },
          "429": {
            "description": "Rate limited"
          }
        }
      }
    },
    "/api/check/ct-logs": {
      "get": {
        "summary": "Subdomains and issuers seen in Certificate Transparency logs",
        "parameters": [
          {
            "name": "url",
            "in": "query",
            "required": true,
            "description": "Absolute http or https URL to check.",
            "schema": {
              "type": "string",
              "format": "uri"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Check result",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "ok": {
                      "type": "boolean"
                    },
                    "tookMs": {
                      "type": "integer"
                    },
                    "cached": {
                      "type": "boolean"
                    },
                    "findings": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "level": {
                            "type": "string",
                            "enum": [
                              "error",
                              "warn",
                              "info"
                            ]
                          },
                          "message": {
                            "type": "string"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Missing or unsafe url"
          },
          "429": {
            "description": "Rate limited"
          }
        }
      }
    },
    "/api/check/shadow-inventory": {
      "get": {
        "summary": "Which subdomains from certificate history are live right now",
        "parameters": [
          {
            "name": "url",
            "in": "query",
            "required": true,
            "description": "Absolute http or https URL to check.",
            "schema": {
              "type": "string",
              "format": "uri"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Check result",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "ok": {
                      "type": "boolean"
                    },
                    "tookMs": {
                      "type": "integer"
                    },
                    "cached": {
                      "type": "boolean"
                    },
                    "findings": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "level": {
                            "type": "string",
                            "enum": [
                              "error",
                              "warn",
                              "info"
                            ]
                          },
                          "message": {
                            "type": "string"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Missing or unsafe url"
          },
          "429": {
            "description": "Rate limited"
          }
        }
      }
    },
    "/api/check/transport": {
      "get": {
        "summary": "HSTS, preload status, HTTP/3 and DNSSEC",
        "parameters": [
          {
            "name": "url",
            "in": "query",
            "required": true,
            "description": "Absolute http or https URL to check.",
            "schema": {
              "type": "string",
              "format": "uri"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Check result",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "ok": {
                      "type": "boolean"
                    },
                    "tookMs": {
                      "type": "integer"
                    },
                    "cached": {
                      "type": "boolean"
                    },
                    "findings": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "level": {
                            "type": "string",
                            "enum": [
                              "error",
                              "warn",
                              "info"
                            ]
                          },
                          "message": {
                            "type": "string"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Missing or unsafe url"
          },
          "429": {
            "description": "Rate limited"
          }
        }
      }
    },
    "/api/check/domain-history": {
      "get": {
        "summary": "Domain age, registration and expiry dates, registrar and registry status",
        "parameters": [
          {
            "name": "url",
            "in": "query",
            "required": true,
            "description": "Absolute http or https URL to check.",
            "schema": {
              "type": "string",
              "format": "uri"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Check result",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "ok": {
                      "type": "boolean"
                    },
                    "tookMs": {
                      "type": "integer"
                    },
                    "cached": {
                      "type": "boolean"
                    },
                    "findings": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "level": {
                            "type": "string",
                            "enum": [
                              "error",
                              "warn",
                              "info"
                            ]
                          },
                          "message": {
                            "type": "string"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Missing or unsafe url"
          },
          "429": {
            "description": "Rate limited"
          }
        }
      }
    },
    "/api/check/deep-crawl": {
      "get": {
        "summary": "Crawl every sitemap URL on a deadline and report dead, noindex and duplicate pages",
        "parameters": [
          {
            "name": "url",
            "in": "query",
            "required": true,
            "description": "Absolute http or https URL to check.",
            "schema": {
              "type": "string",
              "format": "uri"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Check result",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "ok": {
                      "type": "boolean"
                    },
                    "tookMs": {
                      "type": "integer"
                    },
                    "cached": {
                      "type": "boolean"
                    },
                    "findings": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "level": {
                            "type": "string",
                            "enum": [
                              "error",
                              "warn",
                              "info"
                            ]
                          },
                          "message": {
                            "type": "string"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Missing or unsafe url"
          },
          "429": {
            "description": "Rate limited"
          }
        }
      }
    },
    "/api/check/rich-results": {
      "get": {
        "summary": "Every rich-result type validated against the fields Google requires, with values the page already states offered for the missing ones",
        "parameters": [
          {
            "name": "url",
            "in": "query",
            "required": true,
            "description": "Absolute http or https URL to check.",
            "schema": {
              "type": "string",
              "format": "uri"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Check result",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "ok": {
                      "type": "boolean"
                    },
                    "tookMs": {
                      "type": "integer"
                    },
                    "cached": {
                      "type": "boolean"
                    },
                    "findings": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "level": {
                            "type": "string",
                            "enum": [
                              "error",
                              "warn",
                              "info"
                            ]
                          },
                          "message": {
                            "type": "string"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Missing or unsafe url"
          },
          "429": {
            "description": "Rate limited"
          }
        }
      }
    },
    "/api/check/sitemap-hygiene": {
      "get": {
        "summary": "Whether the URLs in the sitemap are indexable and belong there",
        "parameters": [
          {
            "name": "url",
            "in": "query",
            "required": true,
            "description": "Absolute http or https URL to check.",
            "schema": {
              "type": "string",
              "format": "uri"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Check result",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "ok": {
                      "type": "boolean"
                    },
                    "tookMs": {
                      "type": "integer"
                    },
                    "cached": {
                      "type": "boolean"
                    },
                    "findings": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "level": {
                            "type": "string",
                            "enum": [
                              "error",
                              "warn",
                              "info"
                            ]
                          },
                          "message": {
                            "type": "string"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Missing or unsafe url"
          },
          "429": {
            "description": "Rate limited"
          }
        }
      }
    },
    "/api/check/sitemap-lastmod": {
      "get": {
        "summary": "Whether sitemap lastmod values are valid, current and real",
        "parameters": [
          {
            "name": "url",
            "in": "query",
            "required": true,
            "description": "Absolute http or https URL to check.",
            "schema": {
              "type": "string",
              "format": "uri"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Check result",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "ok": {
                      "type": "boolean"
                    },
                    "tookMs": {
                      "type": "integer"
                    },
                    "cached": {
                      "type": "boolean"
                    },
                    "findings": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "level": {
                            "type": "string",
                            "enum": [
                              "error",
                              "warn",
                              "info"
                            ]
                          },
                          "message": {
                            "type": "string"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Missing or unsafe url"
          },
          "429": {
            "description": "Rate limited"
          }
        }
      }
    },
    "/api/check/hreflang-sitemap": {
      "get": {
        "summary": "Whether page and sitemap hreflang declarations agree",
        "parameters": [
          {
            "name": "url",
            "in": "query",
            "required": true,
            "description": "Absolute http or https URL to check.",
            "schema": {
              "type": "string",
              "format": "uri"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Check result",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "ok": {
                      "type": "boolean"
                    },
                    "tookMs": {
                      "type": "integer"
                    },
                    "cached": {
                      "type": "boolean"
                    },
                    "findings": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "level": {
                            "type": "string",
                            "enum": [
                              "error",
                              "warn",
                              "info"
                            ]
                          },
                          "message": {
                            "type": "string"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Missing or unsafe url"
          },
          "429": {
            "description": "Rate limited"
          }
        }
      }
    },
    "/api/check/duplicate-meta": {
      "get": {
        "summary": "Duplicate titles and meta descriptions across the site, including reworded duplicates that mean the same thing",
        "parameters": [
          {
            "name": "url",
            "in": "query",
            "required": true,
            "description": "Absolute http or https URL to check.",
            "schema": {
              "type": "string",
              "format": "uri"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Check result",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "ok": {
                      "type": "boolean"
                    },
                    "tookMs": {
                      "type": "integer"
                    },
                    "cached": {
                      "type": "boolean"
                    },
                    "findings": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "level": {
                            "type": "string",
                            "enum": [
                              "error",
                              "warn",
                              "info"
                            ]
                          },
                          "message": {
                            "type": "string"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Missing or unsafe url"
          },
          "429": {
            "description": "Rate limited"
          }
        }
      }
    },
    "/api/check/link-graph": {
      "get": {
        "summary": "Orphan pages and pages buried more than three clicks deep",
        "parameters": [
          {
            "name": "url",
            "in": "query",
            "required": true,
            "description": "Absolute http or https URL to check.",
            "schema": {
              "type": "string",
              "format": "uri"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Check result",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "ok": {
                      "type": "boolean"
                    },
                    "tookMs": {
                      "type": "integer"
                    },
                    "cached": {
                      "type": "boolean"
                    },
                    "findings": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "level": {
                            "type": "string",
                            "enum": [
                              "error",
                              "warn",
                              "info"
                            ]
                          },
                          "message": {
                            "type": "string"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Missing or unsafe url"
          },
          "429": {
            "description": "Rate limited"
          }
        }
      }
    },
    "/api/check/social": {
      "get": {
        "summary": "Open Graph and Twitter card previews, including the shared image",
        "parameters": [
          {
            "name": "url",
            "in": "query",
            "required": true,
            "description": "Absolute http or https URL to check.",
            "schema": {
              "type": "string",
              "format": "uri"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Check result",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "ok": {
                      "type": "boolean"
                    },
                    "tookMs": {
                      "type": "integer"
                    },
                    "cached": {
                      "type": "boolean"
                    },
                    "findings": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "level": {
                            "type": "string",
                            "enum": [
                              "error",
                              "warn",
                              "info"
                            ]
                          },
                          "message": {
                            "type": "string"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Missing or unsafe url"
          },
          "429": {
            "description": "Rate limited"
          }
        }
      }
    },
    "/api/check/image-seo": {
      "get": {
        "summary": "Alt coverage and alt quality, layout shift, oversized files and image formats",
        "parameters": [
          {
            "name": "url",
            "in": "query",
            "required": true,
            "description": "Absolute http or https URL to check.",
            "schema": {
              "type": "string",
              "format": "uri"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Check result",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "ok": {
                      "type": "boolean"
                    },
                    "tookMs": {
                      "type": "integer"
                    },
                    "cached": {
                      "type": "boolean"
                    },
                    "findings": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "level": {
                            "type": "string",
                            "enum": [
                              "error",
                              "warn",
                              "info"
                            ]
                          },
                          "message": {
                            "type": "string"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Missing or unsafe url"
          },
          "429": {
            "description": "Rate limited"
          }
        }
      }
    },
    "/api/check/robots-conflict": {
      "get": {
        "summary": "robots.txt against noindex contradictions, and blocked assets",
        "parameters": [
          {
            "name": "url",
            "in": "query",
            "required": true,
            "description": "Absolute http or https URL to check.",
            "schema": {
              "type": "string",
              "format": "uri"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Check result",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "ok": {
                      "type": "boolean"
                    },
                    "tookMs": {
                      "type": "integer"
                    },
                    "cached": {
                      "type": "boolean"
                    },
                    "findings": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "level": {
                            "type": "string",
                            "enum": [
                              "error",
                              "warn",
                              "info"
                            ]
                          },
                          "message": {
                            "type": "string"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Missing or unsafe url"
          },
          "429": {
            "description": "Rate limited"
          }
        }
      }
    },
    "/api/check/ai-readiness": {
      "get": {
        "summary": "AI crawler policy, llms.txt, extractability and whether content is shaped to be quoted",
        "parameters": [
          {
            "name": "url",
            "in": "query",
            "required": true,
            "description": "Absolute http or https URL to check.",
            "schema": {
              "type": "string",
              "format": "uri"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Check result",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "ok": {
                      "type": "boolean"
                    },
                    "tookMs": {
                      "type": "integer"
                    },
                    "cached": {
                      "type": "boolean"
                    },
                    "findings": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "level": {
                            "type": "string",
                            "enum": [
                              "error",
                              "warn",
                              "info"
                            ]
                          },
                          "message": {
                            "type": "string"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Missing or unsafe url"
          },
          "429": {
            "description": "Rate limited"
          }
        }
      }
    },
    "/api/check/agent-readiness": {
      "get": {
        "summary": "Whether AI agents can use the site: Content Signals, Markdown for agents, API catalog, auth.md, agent skills, MCP and A2A cards",
        "parameters": [
          {
            "name": "url",
            "in": "query",
            "required": true,
            "description": "Absolute http or https URL to check.",
            "schema": {
              "type": "string",
              "format": "uri"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Check result",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "ok": {
                      "type": "boolean"
                    },
                    "tookMs": {
                      "type": "integer"
                    },
                    "cached": {
                      "type": "boolean"
                    },
                    "findings": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "level": {
                            "type": "string",
                            "enum": [
                              "error",
                              "warn",
                              "info"
                            ]
                          },
                          "message": {
                            "type": "string"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Missing or unsafe url"
          },
          "429": {
            "description": "Rate limited"
          }
        }
      }
    },
    "/api/check/merchant": {
      "get": {
        "summary": "Product rich results and shopping listing readiness for a product page",
        "parameters": [
          {
            "name": "url",
            "in": "query",
            "required": true,
            "description": "Absolute http or https URL to check.",
            "schema": {
              "type": "string",
              "format": "uri"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Check result",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "ok": {
                      "type": "boolean"
                    },
                    "tookMs": {
                      "type": "integer"
                    },
                    "cached": {
                      "type": "boolean"
                    },
                    "findings": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "level": {
                            "type": "string",
                            "enum": [
                              "error",
                              "warn",
                              "info"
                            ]
                          },
                          "message": {
                            "type": "string"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Missing or unsafe url"
          },
          "429": {
            "description": "Rate limited"
          }
        }
      }
    },
    "/api/check/accessibility": {
      "get": {
        "summary": "Accessibility problems from PageSpeed Insights audits, with the standard they relate to",
        "parameters": [
          {
            "name": "url",
            "in": "query",
            "required": true,
            "description": "Absolute http or https URL to check.",
            "schema": {
              "type": "string",
              "format": "uri"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Check result",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "ok": {
                      "type": "boolean"
                    },
                    "tookMs": {
                      "type": "integer"
                    },
                    "cached": {
                      "type": "boolean"
                    },
                    "findings": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "level": {
                            "type": "string",
                            "enum": [
                              "error",
                              "warn",
                              "info"
                            ]
                          },
                          "message": {
                            "type": "string"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Missing or unsafe url"
          },
          "429": {
            "description": "Rate limited"
          }
        }
      }
    },
    "/api/check/consolidate": {
      "get": {
        "summary": "A keep, merge or redirect plan for duplicate pages, plus queries two of your own pages compete for (cannibalisation)",
        "parameters": [
          {
            "name": "url",
            "in": "query",
            "required": true,
            "description": "Absolute http or https URL to check.",
            "schema": {
              "type": "string",
              "format": "uri"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Check result",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "ok": {
                      "type": "boolean"
                    },
                    "tookMs": {
                      "type": "integer"
                    },
                    "cached": {
                      "type": "boolean"
                    },
                    "findings": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "level": {
                            "type": "string",
                            "enum": [
                              "error",
                              "warn",
                              "info"
                            ]
                          },
                          "message": {
                            "type": "string"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Missing or unsafe url"
          },
          "429": {
            "description": "Rate limited"
          }
        }
      }
    },
    "/api/check/link-suggest": {
      "get": {
        "summary": "A site-wide ranked plan of which page to link from, with anchor text, for pages that few or no links reach",
        "parameters": [
          {
            "name": "url",
            "in": "query",
            "required": true,
            "description": "Absolute http or https URL to check.",
            "schema": {
              "type": "string",
              "format": "uri"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Check result",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "ok": {
                      "type": "boolean"
                    },
                    "tookMs": {
                      "type": "integer"
                    },
                    "cached": {
                      "type": "boolean"
                    },
                    "findings": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "level": {
                            "type": "string",
                            "enum": [
                              "error",
                              "warn",
                              "info"
                            ]
                          },
                          "message": {
                            "type": "string"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Missing or unsafe url"
          },
          "429": {
            "description": "Rate limited"
          }
        }
      }
    },
    "/api/check/content-gap": {
      "get": {
        "summary": "Subtopics the pages appearing for your query cover that your page does not, with a competitor profile (length, schema)",
        "parameters": [
          {
            "name": "url",
            "in": "query",
            "required": true,
            "description": "Absolute http or https URL to check.",
            "schema": {
              "type": "string",
              "format": "uri"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Check result",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "ok": {
                      "type": "boolean"
                    },
                    "tookMs": {
                      "type": "integer"
                    },
                    "cached": {
                      "type": "boolean"
                    },
                    "findings": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "level": {
                            "type": "string",
                            "enum": [
                              "error",
                              "warn",
                              "info"
                            ]
                          },
                          "message": {
                            "type": "string"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Missing or unsafe url"
          },
          "429": {
            "description": "Rate limited"
          }
        }
      }
    },
    "/api/check/striking-distance": {
      "get": {
        "summary": "Queries just off page one that already have demand, each with the URL it ranks for, plus rank and click decay since the last scan",
        "parameters": [
          {
            "name": "url",
            "in": "query",
            "required": true,
            "description": "Absolute http or https URL to check.",
            "schema": {
              "type": "string",
              "format": "uri"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Check result",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "ok": {
                      "type": "boolean"
                    },
                    "tookMs": {
                      "type": "integer"
                    },
                    "cached": {
                      "type": "boolean"
                    },
                    "findings": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "level": {
                            "type": "string",
                            "enum": [
                              "error",
                              "warn",
                              "info"
                            ]
                          },
                          "message": {
                            "type": "string"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Missing or unsafe url"
          },
          "429": {
            "description": "Rate limited"
          }
        }
      }
    },
    "/api/check/opportunities": {
      "get": {
        "summary": "The highest-impression near-miss queries checked against competitors, with title/H1 alignment, query-intent match and real-user speed",
        "parameters": [
          {
            "name": "url",
            "in": "query",
            "required": true,
            "description": "Absolute http or https URL to check.",
            "schema": {
              "type": "string",
              "format": "uri"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Check result",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "ok": {
                      "type": "boolean"
                    },
                    "tookMs": {
                      "type": "integer"
                    },
                    "cached": {
                      "type": "boolean"
                    },
                    "findings": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "level": {
                            "type": "string",
                            "enum": [
                              "error",
                              "warn",
                              "info"
                            ]
                          },
                          "message": {
                            "type": "string"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Missing or unsafe url"
          },
          "429": {
            "description": "Rate limited"
          }
        }
      }
    },
    "/api/check/serp-features": {
      "get": {
        "summary": "Who ranks for a page topic in live search results, where the page sits, and the questions people also ask",
        "parameters": [
          {
            "name": "url",
            "in": "query",
            "required": true,
            "description": "Absolute http or https URL to check.",
            "schema": {
              "type": "string",
              "format": "uri"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Check result",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "ok": {
                      "type": "boolean"
                    },
                    "tookMs": {
                      "type": "integer"
                    },
                    "cached": {
                      "type": "boolean"
                    },
                    "findings": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "level": {
                            "type": "string",
                            "enum": [
                              "error",
                              "warn",
                              "info"
                            ]
                          },
                          "message": {
                            "type": "string"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Missing or unsafe url"
          },
          "429": {
            "description": "Rate limited"
          }
        }
      }
    },
    "/api/check/backlinks": {
      "get": {
        "summary": "How many domains link to this site in an open web-crawl index, with a few examples",
        "parameters": [
          {
            "name": "url",
            "in": "query",
            "required": true,
            "description": "Absolute http or https URL to check.",
            "schema": {
              "type": "string",
              "format": "uri"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Check result",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "ok": {
                      "type": "boolean"
                    },
                    "tookMs": {
                      "type": "integer"
                    },
                    "cached": {
                      "type": "boolean"
                    },
                    "findings": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "level": {
                            "type": "string",
                            "enum": [
                              "error",
                              "warn",
                              "info"
                            ]
                          },
                          "message": {
                            "type": "string"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Missing or unsafe url"
          },
          "429": {
            "description": "Rate limited"
          }
        }
      }
    },
    "/api/check/priorities": {
      "get": {
        "summary": "One ranked \"fix this page first\" list, merging demand, content gaps, field speed, duplicate pages and cannibalisation, plus a topical map",
        "parameters": [
          {
            "name": "url",
            "in": "query",
            "required": true,
            "description": "Absolute http or https URL to check.",
            "schema": {
              "type": "string",
              "format": "uri"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Check result",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "ok": {
                      "type": "boolean"
                    },
                    "tookMs": {
                      "type": "integer"
                    },
                    "cached": {
                      "type": "boolean"
                    },
                    "findings": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "level": {
                            "type": "string",
                            "enum": [
                              "error",
                              "warn",
                              "info"
                            ]
                          },
                          "message": {
                            "type": "string"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Missing or unsafe url"
          },
          "429": {
            "description": "Rate limited"
          }
        }
      }
    },
    "/api/check/traffic-at-risk": {
      "get": {
        "summary": "Your highest-traffic pages from your own search data, with the faults on them ordered by the clicks at stake",
        "parameters": [
          {
            "name": "url",
            "in": "query",
            "required": true,
            "description": "Absolute http or https URL to check.",
            "schema": {
              "type": "string",
              "format": "uri"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Check result",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "ok": {
                      "type": "boolean"
                    },
                    "tookMs": {
                      "type": "integer"
                    },
                    "cached": {
                      "type": "boolean"
                    },
                    "findings": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "level": {
                            "type": "string",
                            "enum": [
                              "error",
                              "warn",
                              "info"
                            ]
                          },
                          "message": {
                            "type": "string"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Missing or unsafe url"
          },
          "429": {
            "description": "Rate limited"
          }
        }
      }
    }
  }
}