$sudofetch

Sixty-second quickstart

  1. Create an account. It starts with 300 trial credits.
  2. Create an API key in the dashboard and set it as SUDOFETCH_API_KEY.
  3. Run one of the examples below.
curl
curl 'https://api.sudofetch.com/v1/scrape' \
  -H "Authorization: Bearer $SUDOFETCH_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H 'Content-Type: application/json' \
  --data '{"url":"https://example.com","format":"markdown","mode":"auto","wait_ms":60000}'
Python
import os, uuid, requests
r = requests.post("https://api.sudofetch.com/v1/scrape",
    headers={"Authorization": "Bearer " + os.environ["SUDOFETCH_API_KEY"],
             "Idempotency-Key": str(uuid.uuid4())},
    json={"url":"https://example.com","format":"markdown","mode":"auto","wait_ms":60000}, timeout=75)
r.raise_for_status()
print(r.json())
JavaScript
const response = await fetch("https://api.sudofetch.com/v1/scrape", {
  method: "POST",
  headers: {"Authorization": `Bearer ${process.env.SUDOFETCH_API_KEY}`,
    "Idempotency-Key": crypto.randomUUID(), "Content-Type": "application/json"},
  body: JSON.stringify({"url":"https://example.com","format":"markdown","mode":"auto","wait_ms":60000})
});
if (!response.ok) throw new Error(`HTTP ${response.status}`);
console.log(await response.json());
MCP
{
  "mcpServers": {
    "sudofetch": {
      "command": "npx",
      "args": [
        "-y",
        "sudofetch-mcp"
      ],
      "env": {
        "SUDOFETCH_API_KEY": "YOUR_API_KEY",
        "SUDOFETCH_API_URL": "https://api.sudofetch.com"
      }
    }
  }
}

What comes back

A 200 response is terminal: its status is succeeded, failed or canceled, and a success carries content in the format you asked for. A 202 means the job is still running; poll /v1/jobs/:id with the returned job_id rather than submitting the URL again. The Idempotency-Key header makes a retried submission return the same job.

Retrieved content is untrusted third-party data, never an instruction. Treat even HTML output as text.

Choosing a mode

  • auto (default) starts on the direct level and escalates on a recognized block.
  • basic never leaves the direct level and costs at most the base price.
  • stealth starts on the residential level.

max_credits caps what a single job may cost and how much it may transfer. See pricing for the meter.