Integrations
Plug bypass.so into the stack you already run
Step-by-step guides with complete, copyable code for Python, Node.js, Selenium, Playwright and Puppeteer. Every one of them uses the same plain HTTPS API, so any other language works too.
curl -s https://bypass.so/createTask \
-H "Content-Type: application/json" \
-d '{
"clientKey": "YOUR_API_KEY",
"type": "TurnstileTask",
"websiteURL": "https://example.com/login",
"websiteKey": "0x4AAAAAAA-SITE-KEY"
}'
curl -s "https://bypass.so/getTaskResult/TASK_ID?clientKey=YOUR_API_KEY"import time
import requests
API, KEY = "https://bypass.so", "YOUR_API_KEY"
r = requests.post(f"{API}/createTask", json={
"clientKey": KEY,
"type": "TurnstileTask",
"websiteURL": "https://example.com/login",
"websiteKey": "0x4AAAAAAA-SITE-KEY",
}).json()
task_id = r.get("taskId")
while r.get("status") != "ready" and not r.get("errorId"):
time.sleep(2)
r = requests.get(f"{API}/getTaskResult/{task_id}", params={"clientKey": KEY}).json()
print(r)const API = "https://bypass.so", KEY = "YOUR_API_KEY";
let r = await (await fetch(`${API}/createTask`, {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
clientKey: KEY,
type: "TurnstileTask",
websiteURL: "https://example.com/login",
websiteKey: "0x4AAAAAAA-SITE-KEY",
}),
})).json();
const taskId = r.taskId;
while (r.status !== "ready" && !r.errorId) {
await new Promise((ok) => setTimeout(ok, 2000));
r = await (await fetch(`${API}/getTaskResult/${taskId}?clientKey=${KEY}`)).json();
}
console.log(r);Guides
Pick your stack
Each guide covers setup, a reusable helper, error handling and troubleshooting. The automation guides also show how to read a sitekey and inject the token.
Python
Language · requestsA compact helper with polling, retries, refunds and parallel solving for scripts, backends and data jobs.
Read the guideNode.js
Language · built-in fetchA dependency-free ES module on the built-in fetch, plus a concurrency-limited batch runner.
Read the guideSelenium
Automation · WebDriverRead sitekeys with execute_script, inject tokens into the form and submit, all from Python.
Read the guidePlaywright
Automation · @playwright/testAdd captcha steps to your end-to-end specs, with a pytest version for Python teams.
Read the guidePuppeteer
Automation · ES modulesProbe the widget with page.evaluate, inject the token and turn image captchas into element screenshots.
Read the guide- Any language
Anything that speaks HTTPS
There is no SDK to install. If your stack can send a JSON POST and read the reply, it can use bypass.so: create a task, poll for the result, use the answer.
How it works
Three calls, in every language
The guides differ in syntax, not in shape. Learn the flow once and it carries over to any stack.
- 01
Create a task
Send your key, the task type and its fields. You get a taskId, or the finished answer for fast recognition tasks.
POST /createTask - 02
Poll for the result
Ask every two seconds until the status is ready. Token types usually take a few seconds.
GET /getTaskResult/{taskId} - 03
Use the answer
Type the text or submit the token with your form. Failed tasks are not charged, and a wrong answer can be reported for a refund.
POST /reportBad
Not sure where to start?
Roadmap
More guides on the way
These guides are not published yet. Until they are, the HTTP API above works from all of these languages today.
- Gonet/http helper with context timeoutsComing soon
- PHPcURL and Guzzle helperComing soon
- Javajava.net.http client helperComing soon
- C# / .NETHttpClient helper with async pollingComing soon
- RubyNet::HTTP helperComing soon
- ScrapyDownloader middleware for crawlsComing soon
Want a guide sooner? Tell us what you use.
Use it where you are allowed to
Automate pages you own, test environments you run, or sites whose terms permit automated access. Do not use bypass.so for fraud, account takeover, spam, scalping, evading bans or collecting personal data without a lawful basis. Keep request rates reasonable and stop when a site asks you to. Our acceptable use policy applies to every key, and keys used for abuse are closed.