High-performance automated solvers for Rotational Captchas and 2 Similar Objects Matching Captchas with 1–5ms execution latency.
Pass your API key in either an HTTP header or query parameter for all endpoints:
Solves Rotational Captchas (Outer Ring & Inner Disc) using OpenCV seam cross-correlation. Returns exact rotation target angle, slider drag angle, correction angle, and peak confidence score.
Evaluates matching similarity between 2 candidate objects/images for "Select 2 Similar Objects" captchas using OpenCV ORB feature keypoints and HSV color histogram correlation.
import requests
import base64
API_URL = "http://localhost:8000"
API_KEY = "rk_your_api_key_here"
def get_base64(path):
with open(path, "rb") as f:
return base64.b64encode(f.read()).decode("utf-8")
# 1. Rotational Captcha Solve
response = requests.post(
f"{API_URL}/api/predict/rotational",
json={
"outer_image": get_base64("outer.png"),
"inner_image": get_base64("inner.png")
},
headers={"X-API-Key": API_KEY}
)
print("Rotational Result:", response.json())
# 2. Similar Objects Match Solve
match_res = requests.post(
f"{API_URL}/api/predict/similar-objects",
json={
"image_a": get_base64("obj1.png"),
"image_b": get_base64("obj2.png")
},
headers={"X-API-Key": API_KEY}
)
print("Similar Objects Result:", match_res.json())
const fs = require('fs');
const API_URL = 'http://localhost:8000';
const API_KEY = 'rk_your_api_key_here';
function getBase64(path) {
return fs.readFileSync(path, { encoding: 'base64' });
}
async function runSolver() {
// Rotational Captcha
const res = await fetch(`${API_URL}/api/predict/rotational`, {
method: 'POST',
headers: {
'X-API-Key': API_KEY,
'Content-Type': 'application/json'
},
body: JSON.stringify({
outer_image: getBase64('outer.png'),
inner_image: getBase64('inner.png')
})
});
console.log('Rotational Angle:', await res.json());
}
runSolver();
curl -X POST "http://localhost:8000/api/predict/rotational" \
-H "X-API-Key: rk_your_api_key_here" \
-H "Content-Type: application/json" \
-d '{
"outer_image": "iVBORw0KGgoAAAANSUhEUgAA...",
"inner_image": "iVBORw0KGgoAAAANSUhEUgAA..."
}'