Security & delivery
/api/v1/redirect-checkPacketFlo Redirect Chain Checker API
Trace every HTTP redirect, status code, destination and response time from PacketFlo's server.
| Parameter | Type | Required | Description |
|---|---|---|---|
url | string | Yes | Public domain or HTTP/HTTPS URL. Bare domains start at HTTPS. |
Direct Destination (No Redirects)
Target URL responds directly with a 200 OK without intermediate hops.
Example request
curl "https://packetflo.io/api/v1/redirect-check?url=https://example.com&api_key=YOUR_API_KEY"
Example response
{ "ok": true, "data": { "input": "https://example.com", "redirects": 0, "finalUrl": "https://example.com/", "finalStatus": 200, "totalTimeMs": 184, "chainStatus": "Healthy", "chain": [ { "hop": 1, "url": "https://example.com/", "hostname": "example.com", "status": 200, "statusText": "OK", "location": null, "redirectType": null, "responseTimeMs": 184, "upgradedToHttps": false } ], "warnings": [] }, "meta": { "tool": "redirect-check", "version": "v1" } }
Multi-Hop Redirect Chain (HTTP to HTTPS)
Traces 301/302 redirects through intermediate hops to the final landing URL.
Example request
curl "https://packetflo.io/api/v1/redirect-check?url=http://github.com&api_key=YOUR_API_KEY"
Example response
{ "ok": true, "data": { "input": "http://github.com", "redirects": 1, "finalUrl": "https://github.com/", "finalStatus": 200, "totalTimeMs": 197, "chainStatus": "Redirects detected", "chain": [ { "hop": 1, "url": "http://github.com/", "hostname": "github.com", "status": 301, "statusText": "Moved Permanently", "location": "https://github.com/", "redirectType": "301 Moved Permanently", "responseTimeMs": 54, "upgradedToHttps": true }, { "hop": 2, "url": "https://github.com/", "hostname": "github.com", "status": 200, "statusText": "OK", "location": null, "redirectType": null, "responseTimeMs": 111, "upgradedToHttps": false } ], "warnings": [] }, "meta": { "tool": "redirect-check", "version": "v1" } }
Reading the result
Healthy and Redirects detected are normal outcomes. Investigate Redirect loop, Too many redirects, Request failed and Timeout, and read the warnings for context.
Response fields
| Field | What it tells you |
|---|---|
chainStatus / warnings | Overall outcome and issues observed. Redirects alone are not a failure. |
chain | Ordered responses with URL, status, Location, redirect type and per-hop response time in milliseconds. |
redirects / totalTimeMs | Redirect count and total server-side elapsed time. |
finalUrl / finalStatus | Final destination and status. An interrupted chain can point to an unvisited destination with a null status. |
Scope and limits
Follows HTTP redirects with HEAD, falling back to GET when needed. Bare domains start at HTTPS; explicit HTTP URLs can show an HTTP-to-HTTPS upgrade. Limited to public targets on ports 80/443, 20 redirects, three-second request waits and a 30-second overall budget. Partial chains are returned when possible. JavaScript and meta-refresh redirects are not followed.
Authentication and errors
Send your key in the x-api-key header, or the supported api_key query parameter. Each request uses 5 credits from the key's shared 300-credit rolling 24-hour budget. Credits are charged before parameter validation. Successful responses and quota errors include usage headers; GET and OPTIONS support CORS.
| API status | Meaning |
|---|---|
200 | The diagnostic returned a result in data, with ok: true and version information in meta. Read the diagnostic fields to determine the target's condition. |
400 | Invalid or blocked input, or a lookup/check failure that could not be returned as a diagnostic result. Read error for details. |
401 | Missing, invalid or revoked API key. |
429 | The request would exceed the key's available credit budget. |