Altcha
Solve Altcha — open-source self-hostable PoW captcha
Price: $0.10 / 1k solves · Speed: ~0.2s
Altcha is an open-source proof-of-work captcha. It supports four solve modes depending on what information you have available.
Mode 1 — Auto-fetch from page (recommended)
Pass the page URL and the solver will fetch the challenge automatically.
{ "type": "AltchaProxyless", "site_url": "https://example.com/contact" }
The solver scrapes the page, finds the <altcha-widget> element, and fetches the challenge from its challengeurl attribute.
Mode 2 — Direct challenge URL
If you know the challenge endpoint URL directly:
{ "type": "AltchaProxyless", "challenge_url": "https://example.com/api/altcha/challenge" }
Mode 3 — Inline challenge object
If you already fetched the challenge JSON yourself:
{ "type": "AltchaProxyless", "challenge": { "algorithm": "SHA-256", "challenge": "abc123...", "salt": "randomsalt", "signature": "sig...", "maxnumber": 1000000 } }
Mode 4 — Metadata object
{ "type": "AltchaProxyless", "metadata": { "algorithm": "SHA-256", "challenge": "abc123...", "salt": "randomsalt", "signature": "sig..." } }
Response
{ "success": true, "token": "eyJhbGdvcml0aG0iOiJTSEEtMjU2...", "took_ms": 180, "cost": 0.0001 }
The token is a base64-encoded JSON payload. Submit it as the altcha form field value.
Finding the challenge URL
Look in the page HTML for the widget:
<altcha-widget challengeurl="https://example.com/api/altcha/challenge"></altcha-widget>The challengeurl attribute is the endpoint to use with Mode 2.
cURL example
curl -s -X POST https://api.solver.lol/solve \ -H "X-API-Key: sk_your_key_here" \ -H "Content-Type: application/json" \ -d '{ "type": "AltchaProxyless", "site_url": "https://example.com/contact" }'
Parameters
| Field | Required | Description |
|---|---|---|
type | ✓ | AltchaProxyless |
site_url | Mode 1 | Page URL — solver auto-fetches challenge |
challenge_url | Mode 2 | Direct challenge endpoint URL |
challenge | Mode 3 | Inline challenge JSON object |
metadata | Mode 4 | Inline metadata JSON object |
proxy | — | http://user:pass@host:port |