VexSolver

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.com

With 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