Response & error codes
On success, WyndPath returns the target's raw content with its original HTTP status code, enriched with diagnostic headers. On a WyndPath-side error, an explicit JSON payload.
Diagnostic headers
Every successful response carries X-WyndPath-* headers that describe the route taken:
| Header | Content |
|---|---|
X-WyndPath-Credits | Credits charged for this request. |
X-WyndPath-Proxy-Type | IP type used (datacenter, residential…). |
X-WyndPath-Route | Route taken (lightweight or browser). |
X-WyndPath-Escalated | 1 if WyndPath had to escalate to a stronger route. |
X-WyndPath-Attempts | Number of internal attempts made. They are not billed separately (see Credits). |
X-WyndPath-Final-Status | HTTP status code returned by the target. |
Error codes
WyndPath errors are returned as JSON: {"error": "code", ...}.
| Status | Code | Cause |
|---|---|---|
| 401 | invalid_api_key | Key missing, invalid, disabled, or account blocked. |
| 403 | domain_not_allowed | The target is not in your account's allowlist. |
| 403 | domain_blocked | Target banned globally (illicit/abusive use). |
| 403 | unsafe_target | URL not allowed (internal / non-public address). |
| 402 | quota_exceeded | Your plan's monthly credit quota has been reached. Upgrade to a higher plan, or wait for next month. The response includes limit and used. |
| 402 | cost_exceeded | The request's estimated cost exceeds your max_cost cap. |
| 413 | body_too_large | POST request body too large. |
| 422 | invalid_url | url parameter missing or scheme not http(s). |
| 428 | profile_data_required | The target requires credentials that your account did not provide. |
| 429 | too_many_concurrent | Your plan's concurrent-request limit has been reached. |
| 429 | rate_limited | The target is rate-limiting; try again later. |
| 502 | no_provider_available | No route available to serve this target. |