cURL One-Liner
Quickest way to test the API from the command line.
Step 1 — Submit a solve
curl -X POST https://api.vexsolver.com/api/solve \
-H "X-API-Key: sk_live_..." \
-H "Content-Type: application/json" \
-d '{"url":"https://example.com"}'
# → { "taskId": "abc123xyz" }Step 2 — Poll for the result
curl -G "https://api.vexsolver.com/api/getTaskResult" \
-H "X-API-Key: sk_live_..." \
--data-urlencode "taskId=abc123xyz"
# While solving: { "status": "pending" }
# When done: { "success": true, "cookies": "...", "user_agent": "...", ... }One-shot solve script (poll until done)
#!/usr/bin/env bash
API="https://api.vexsolver.com"
KEY="sk_live_..."
# Submit
TASK=$(curl -s -X POST "$API/api/solve" \
-H "X-API-Key: $KEY" \
-H "Content-Type: application/json" \
-d '{"url":"https://example.com","proxy":"http://user:pass@your-proxy:8080"}' \
| jq -r '.taskId')
# Poll up to 60 times (2 min)
for i in $(seq 1 60); do
sleep 2
RESULT=$(curl -s -G "$API/api/getTaskResult" \
-H "X-API-Key: $KEY" \
--data-urlencode "taskId=$TASK")
STATUS=$(echo "$RESULT" | jq -r '.status // "done"')
[ "$STATUS" != "pending" ] && break
done
# Use the cookies + UA on your real request
COOKIES=$(echo "$RESULT" | jq -r '.cookies')
UA=$(echo "$RESULT" | jq -r '.user_agent')
curl -H "Cookie: $COOKIES" \
-H "User-Agent: $UA" \
-x http://user:pass@your-proxy:8080 \
https://example.comWith your own proxy + app_id (PerimeterX)
curl -X POST https://api.vexsolver.com/api/solve \
-H "X-API-Key: sk_live_..." \
-H "Content-Type: application/json" \
-d '{
"url": "https://signup.live.com/signup",
"proxy": "http://user:pass@your-proxy:8080",
"app_id": "PXzC5j78di"
}'Force fresh solve (bypass cache)
curl -X POST https://api.vexsolver.com/api/solve \
-H "X-API-Key: sk_live_..." \
-H "Content-Type: application/json" \
-d '{
"url": "https://signup.live.com/signup",
"proxy": "http://user:pass@your-proxy:8080",
"fresh": true
}'Use a webhook instead of polling
Pass callback and we POST the result to your URL when done — no polling required:
curl -X POST https://api.vexsolver.com/api/solve \
-H "X-API-Key: sk_live_..." \
-H "Content-Type: application/json" \
-d '{
"url": "https://example.com",
"callback": "https://your-server.com/vexsolver-webhook"
}'See Webhooks for the payload shape.
Why the User-Agent matters
Every bot-detection vendor (PerimeterX, DataDome, Imperva) binds the issued tokens to the exact User-Agent seen during solve. Pull the user_agent field from the result and use it verbatim on your replay. Mismatched UAs flag the session instantly.PowerShell (Windows)
PowerShell's aliased curl is Invoke-WebRequest. Use curl.exe explicitly and put the JSON body in a file:
'{"url":"https://example.com","proxy":"http://user:pass@your-proxy:8080"}' | Out-File -Encoding ascii -NoNewline body.json
curl.exe -X POST https://api.vexsolver.com/api/solve `
-H "X-API-Key: sk_live_..." `
-H "Content-Type: application/json" `
--data-binary "@body.json"Balance check
curl https://api.vexsolver.com/api/balance \ -H "X-API-Key: sk_live_..."
Health check (no auth)
curl https://api.vexsolver.com/api/health
