API 05 · Runs on Vercel

Website Intelligence

Fetches one page and applies about 50 deterministic fingerprints to HTML, script sources, the generator meta tag and response headers. Each technology carries a combined confidence and the exact evidence that matched. TLS details (subject, issuer, validity, SANs, protocol and cipher) come from a verified handshake to the same validated address.

GET https://dev.itsozy.lol/api/v1/intelligence
Runs on Vercel. Fully served by the Rust function on Vercel.

Authentication

Send Authorization: Bearer ozy_… with an API key that includes the intelligence permission (or *). Signed-in dashboard sessions work in the playground. Each call costs 1 unit.

Parameters

NameTypeDescription
urlquery stringrequiredPublic http(s) URL

Example request

curl "https://dev.itsozy.lol/api/v1/intelligence?url=https://vercel.com" \
  -H "Authorization: Bearer $OZY_KEY"

Example response (illustrative)

{
  "technologies": [
    {
      "category": "Frontend framework",
      "confidence": 1.0,
      "evidence": [
        {
          "key": "/_next/",
          "source": "html"
        }
      ],
      "name": "Next.js"
    },
    {
      "category": "Hosting",
      "confidence": 1.0,
      "evidence": [
        {
          "key": "x-vercel-id",
          "source": "header"
        }
      ],
      "name": "Vercel"
    }
  ],
  "tls": {
    "certificate": {
      "days_remaining": 61,
      "issuer": "C=US, O=Let's Encrypt, CN=R11",
      "protocol": "TLSv1_3"
    },
    "https": true
  },
  "url": "https://vercel.com/"
}

Errors

Errors use one envelope: {"error": {"code": "…", "message": "…"}}.

StatusCodeMeaning
403destination_blockedURL resolves to a private, loopback, metadata or non-standard-port destination
403robots_deniedThe site's robots.txt disallows OzyScrape
413response_too_largeUpstream response exceeded 2 MiB
429domain_rate_limitedWait one second between requests to the same host
502upstream_failedThe site could not be reached
504upstream_timeoutThe site did not respond in time
400invalid_inputA parameter is missing or invalid
401unauthorizedNo valid API key or session
403permission_deniedThe key does not include this API's permission
429quota_exceededFree-tier quota reached (20 units/min, 100 units/day)
503database_unavailablePersistent storage is temporarily unavailable

Rate limits

20 units per minute and 100 units per day per account; outbound fetches to the same host are spaced at least one second apart. Exceeding a limit returns 429.