API Reference

Two steps to solve a challenge

1. Send a domain, get a clearance cookie + User-Agent + proxy. 2.Attach those to your own requests. That's the whole API.

RaptorWayzis browser-automation infrastructure, it solves the challenge; your client makes the request. Use it lawfully and follow each site's terms; how you use it is your responsibility.
STEP 1

Solve a domain

POST /v1/solve with your key. We solve the Cloudflare challenge on a real browser and real IP, and return the clearance triple.

request
curl -X POST https://raptorwayz.com/v1/solve \
  -H "Authorization: Bearer <YOUR_KEY>" \
  -H "Content-Type: application/json" \
  -d '{"domain":"site.com"}'
200 OK
{
  "cf_clearance": "hK9f…",
  "user_agent":  "Mozilla/5.0 … Chrome/149.0.0.0 Safari/537.36",
  "proxy":       "http://<YOUR_KEY>:x@raptorwayz.com:8080",
  "expires_at":  1814453571,
  "seconds_until_next": 1500,
  "cached": false,
  "plan": "paid"
}
STEP 2

Use it with your data

Attach the cf_clearance cookie + User-Agent to your own request and route it through the returned proxy.

If Cloudflare re-challenges you, it's the IP. The clearance is only valid from the exit IP it was solved on, so send every request through the returned proxy (and keep the same User-Agent). Route from any other IP and Cloudflare invalidates the cookie and re-challenges, whatever the challenge type.

your request
import requests

# The three values from step 1, they are bound together.
cf_clearance = "hK9f…"
user_agent   = "Mozilla/5.0 … Chrome/149.0.0.0 Safari/537.36"
proxy        = "http://<YOUR_KEY>:x@raptorwayz.com:8080"

resp = requests.get(
    "https://site.com/whatever",
    headers={"User-Agent": user_agent},
    cookies={"cf_clearance": cf_clearance},
    proxies={"https": proxy},
)
print(resp.status_code)  # 200, you're through

Authentication

The solve API uses an API key (one key = one solve / 25 min), passed as a bearer token. Keep keys server-side.

header
Authorization: Bearer <YOUR_KEY>
# or
X-Api-Key: <YOUR_KEY>

Response fields

FieldTypeDescription
cf_clearancestringThe Cloudflare clearance cookie value. Send it as the cf_clearance cookie.
user_agentstringThe exact User-Agent to send. The clearance is bound to it.
proxystringThe proxy to route through. The clearance is bound to this exit IP.
expires_atnumberUnix seconds for the cookie's nominal expiry (Cloudflare-set). Real validity is shorter, re-solve on the 25-min cadence.
seconds_until_nextnumberSeconds until this key may solve a fresh domain again. 0 for trial keys.
cachedbooleantrue when served from the warm cache or the idempotent window.
planstring"trial" or "paid".
free_calls_remainingnumber | nullRemaining trial calls; null for paid keys.

Quotas & billing

  • Paid key: one fresh solve per 25-minute window. Repeat calls inside the window replay the same response with seconds_until_next counting down, no extra charge. Add keys for more throughput.
  • Trial key: 3 free solves, no time window. Each success spends one; watch free_calls_remaining.
  • Failed solves cost nothing, a 502 solve_failed consumes no quota.

Errors

Every non-200 returns { "error", "message", "seconds_until_next" }.

StatuserrorMeaning
400invalid_domainThe domain was missing or malformed.
401missing_api_keyNo key supplied. Send Authorization: Bearer <key> or X-Api-Key.
401invalid_api_keyThe key is unknown.
402trial_exhaustedFree trial calls used up. Buy a key to continue.
403key_disabledThe key has been disabled.
429rate_limitedToo many requests in a short burst (abuse limiter).
502solve_failedCould not obtain a clearance. No quota consumed, retry shortly.

Manage your account and API keys in the dashboard.