API Reference
Resolve short URLs, follow redirect chains, detect phishing risks
Base URL https://peek.zillies.dev/api
Tier
Limit
Reset
User
500
requests / day
Rolling 24h
GET /resolve Resolve a shortened URL
ParameterTypeRequiredDescription
url string required URL to resolve. https:// is auto-prepended if missing.

Query string: /api/resolve?url=https://bit.ly/example

inputstringThe original URL submitted
finalstringThe resolved final destination URL
hopsnumberNumber of redirects followed
chainarrayEach hop: url, status, contentType, redirectsTo, suspiciousFlags
flagsobjectsuspicious, phishing, malware booleans + warning items array
resolvedAtstringISO 8601 timestamp of resolution
200Successfully resolved
400Invalid or missing url parameter
429Rate limit exceeded
502Failed to resolve (network error)

Request

GET /api/resolve?url=https://bit.ly/example

Response

{
  "input": "https://bit.ly/example",
  "final": "https://vignettinglife.com/",
  "hops": 3,
  "chain": [
    {
      "url": "https://bit.ly/example",
      "status": 301,
      "contentType": "text/html; charset=utf-8",
      "redirectsTo": "http://vignettinglife.com/",
      "suspiciousFlags": []
    },
    {
      "url": "http://vignettinglife.com/",
      "status": 301,
      "contentType": "text/html",
      "redirectsTo": "https://vignettinglife.com/",
      "suspiciousFlags": []
    },
    {
      "url": "https://vignettinglife.com/",
      "status": 200,
      "contentType": "text/html; charset=UTF-8",
      "isFinal": true,
      "suspiciousFlags": []
    }
  ],
  "flags": {
    "suspicious": false,
    "phishing": false,
    "malware": false,
    "items": []
  },
  "resolvedAt": "2026-05-24T05:46:14.360Z"
}
POST /resolve/batch Resolve up to 20 URLs
Body fieldTypeRequiredDescription
urls string[] required Array of URLs to resolve. Max 20. Each URL costs 1 quota slot.

Content-Type: application/json

Request

POST /api/resolve/batch
Content-Type: application/json

{
  "urls": [
    "https://bit.ly/abc",
    "https://t.co/xyz"
  ]
}

Response

{
  "results": [ /* array of resolve objects */ ],
  "count": 2
}
GET /preview Fetch Open Graph metadata
ParameterTypeRequiredDescription
url string required URL to fetch Open Graph / meta tags from
inputstringOriginal URL submitted
titlestringPage or OG title
descriptionstringMeta or OG description
imagestringOG image URL
faviconstringFavicon URL
siteNamestringOG site name
finalUrlstringResolved URL after following redirects
GET /status API health + your rate limit
{
  "status": "ok",
  "remaining": 238,
  "limit": 500,
  "resetAt": "2026-05-25T00:00:00.000Z"
}