Overview
SMMSMSCAPTCHA
Clario Service: one wallet, one API key (clario…), three products.
https://clario.my.id
clario + 48 hex
Dashboard → API
$5 USDT BEP20/ERC20
| Product | How | Path |
|---|---|---|
| SMM | API key or web Order/Batch | POST /api/v2 |
| SMS | API key or web SMS tab | /api/sms/* |
| Captcha | API key or web quick test | /api/v1/captcha/* |
Quick start
clario… key from API tab.Auth and account
| Surface | Auth |
|---|---|
| Web dashboard | Session cookie after login (Turnstile on register/login only) |
| SMM API | Form field key=clario… |
| Captcha API | JSON/form key=clario… or header Authorization: Bearer clario… |
| SMS | API key clario… or logged-in session |
Website Turnstile is NOT your captcha product key.
Dashboard guide
| Menu | Purpose |
|---|---|
| Dashboard | Balance, quick order, key preview |
| SMM | Service catalog |
| Order | Single SMM order |
| Batch | Mass orders |
| SMS | Rent number + code |
| Captcha | Integration guide + quick test |
| History | SMM history |
| Top Up | Crypto deposit |
| API | Full key |
| Docs | This page |
API key
clario + 48 hex. One key for SMM + Captcha.
curl -X POST https://clario.my.id/api/v2 -d "key=clarioYOUR_KEY&action=balance" curl "https://clario.my.id/api/v1/captcha/types?key=clarioYOUR_KEY"
SMM
Endpoint POST https://clario.my.id/api/v2. Rate per 1000. Charge = rate × qty / 1000.
| action | params | result |
|---|---|---|
| balance | key | balance + currency |
| services | key | service list |
| add | service, link, quantity | order id |
| status | order / orders | status |
SMM · Python
import requests
BASE = "https://clario.my.id/api/v2"
KEY = "clarioYOUR_KEY"
def api(**f):
r = requests.post(BASE, data={"key": KEY, **f}, timeout=60)
r.raise_for_status(); return r.json()
print(api(action="balance"))
# order = api(action="add", service="105853", link="https://…", quantity="100")
SMM · JavaScript
const BASE = "https://clario.my.id/api/v2", KEY = "clarioYOUR_KEY";
async function api(fields) {
const body = new URLSearchParams({ key: KEY, ...fields });
const r = await fetch(BASE, { method: "POST", body });
return r.json();
}
console.log(await api({ action: "balance" }));
SMM · cURL
curl -X POST https://clario.my.id/api/v2 -d "key=clarioYOUR_KEY&action=balance" curl -X POST https://clario.my.id/api/v2 -d "key=clarioYOUR_KEY&action=services" curl -X POST https://clario.my.id/api/v2 -d "key=clarioYOUR_KEY&action=add&service=ID&link=URL&quantity=100" curl -X POST https://clario.my.id/api/v2 -d "key=clarioYOUR_KEY&action=status&order=12"
SMM · Batch
Dashboard Batch tab or session POST /api/orders/batch (max 50).
{"orders":[{"service":105853,"link":"https://…","quantity":100}]}SMS
Same clario… API key as SMM/Captcha (one key per account). Web dashboard still works with login session.
SMS · Web flow
| Endpoint | Use |
|---|---|
GET /api/sms/services?key=… | list |
GET /api/sms/countries?service=907&key=… | countries + flag_url |
POST /api/sms/order | order number |
GET /api/sms/orders/{id}?key=… | poll code |
POST /api/sms/orders/{id}/cancel?key=… | cancel |
Auth: query/body key=clarioYOUR_KEY or header Authorization: Bearer clarioYOUR_KEY / X-Api-Key.
SMS · API examples
curl -sS "https://clario.my.id/api/sms/services?key=clarioYOUR_KEY&limit=20"
curl -sS "https://clario.my.id/api/sms/countries?service=telegram&key=clarioYOUR_KEY"
curl -sS -X POST https://clario.my.id/api/sms/order -H 'Content-Type: application/json' \
-d '{"key":"clarioYOUR_KEY","service":"telegram","country":"ID"}'
curl -sS "https://clario.my.id/api/sms/orders/12?key=clarioYOUR_KEY"
import requests
BASE, KEY = "https://clario.my.id", "clarioYOUR_KEY"
print(requests.get(f"{BASE}/api/sms/services", params={"key": KEY, "limit": 5}, timeout=30).json())
# order = requests.post(f"{BASE}/api/sms/order", json={"key": KEY, "service": "telegram", "country": "ID"}, timeout=60).json()
Captcha
Each type has its own Python / JavaScript section. Click a card, then copy that type only.
POST /api/v1/captcha/create
GET /api/v1/captcha/result
Also: /api/v1/captcha/types · /api/v1/captcha/in.php · /api/v1/captcha/res.php
Captcha · Create and poll
| status | meaning |
|---|---|
0 CAPCHA_NOT_READY | poll every 3s |
1 + token | ready in request |
| error string | fail + refund |
Captcha · Pick a type
Click a card for dedicated integration examples.
Cloudflare Turnstile
turnstilePass widget sitekey + full page URL.
Required: sitekey, pageurl · Optional: action, data, useragent
import time, requests
BASE = "https://clario.my.id"
KEY = "clarioYOUR_KEY"
def solve():
r = requests.post(f"{BASE}/api/v1/captcha/create", json={"key": KEY, "type": "turnstile", "sitekey":"0x4AAAAA...","pageurl":"https://example.com/login"}, timeout=60).json()
tid = r["task_id"]
for _ in range(40):
time.sleep(3)
j = requests.get(f"{BASE}/api/v1/captcha/result", params={"key": KEY, "task_id": tid}, timeout=30).json()
if j.get("status") == 1:
return j["request"]
if j.get("request") not in (None, "CAPCHA_NOT_READY"):
raise RuntimeError(j)
raise TimeoutError("timeout")
print(solve())
const BASE = "https://clario.my.id";
const KEY = "clarioYOUR_KEY";
async function solve() {
const create = await fetch(`${BASE}/api/v1/captcha/create`, {
method: "POST",
headers: {"Content-Type":"application/json", Authorization: `Bearer ${KEY}`},
body: JSON.stringify({ type: "turnstile", sitekey:"0x4AAAAA...",pageurl:"https://example.com/login" }),
}).then(r => r.json());
const tid = create.task_id;
for (let i = 0; i < 40; i++) {
await new Promise(r => setTimeout(r, 3000));
const j = await fetch(`${BASE}/api/v1/captcha/result?task_id=${tid}`, {
headers: { Authorization: `Bearer ${KEY}` }
}).then(r => r.json());
if (j.status === 1) return j.request;
if (j.request && j.request !== "CAPCHA_NOT_READY") throw new Error(j.request);
}
throw new Error("timeout");
}
solve().then(console.log).catch(console.error);
curl -sS -X POST https://clario.my.id/api/v1/captcha/create -H 'Content-Type: application/json' -d '{"key":"clarioYOUR_KEY","type":"turnstile","sitekey":"0x4AAAAA...","pageurl":"https://example.com/login"}'
curl -sS "https://clario.my.id/api/v1/captcha/result?key=clarioYOUR_KEY&task_id=TASK_ID"
reCAPTCHA v2 Checkbox
recaptcha_v2Public Google sitekey from data-sitekey.
Required: sitekey, pageurl · Optional: data-s, useragent
import time, requests
BASE = "https://clario.my.id"
KEY = "clarioYOUR_KEY"
def solve():
r = requests.post(f"{BASE}/api/v1/captcha/create", json={"key": KEY, "type": "recaptcha_v2", "sitekey":"6Le...","pageurl":"https://example.com/login"}, timeout=60).json()
tid = r["task_id"]
for _ in range(40):
time.sleep(3)
j = requests.get(f"{BASE}/api/v1/captcha/result", params={"key": KEY, "task_id": tid}, timeout=30).json()
if j.get("status") == 1:
return j["request"]
if j.get("request") not in (None, "CAPCHA_NOT_READY"):
raise RuntimeError(j)
raise TimeoutError("timeout")
print(solve())
const BASE = "https://clario.my.id";
const KEY = "clarioYOUR_KEY";
async function solve() {
const create = await fetch(`${BASE}/api/v1/captcha/create`, {
method: "POST",
headers: {"Content-Type":"application/json", Authorization: `Bearer ${KEY}`},
body: JSON.stringify({ type: "recaptcha_v2", sitekey:"6Le...",pageurl:"https://example.com/login" }),
}).then(r => r.json());
const tid = create.task_id;
for (let i = 0; i < 40; i++) {
await new Promise(r => setTimeout(r, 3000));
const j = await fetch(`${BASE}/api/v1/captcha/result?task_id=${tid}`, {
headers: { Authorization: `Bearer ${KEY}` }
}).then(r => r.json());
if (j.status === 1) return j.request;
if (j.request && j.request !== "CAPCHA_NOT_READY") throw new Error(j.request);
}
throw new Error("timeout");
}
solve().then(console.log).catch(console.error);
curl -sS -X POST https://clario.my.id/api/v1/captcha/create -H 'Content-Type: application/json' -d '{"key":"clarioYOUR_KEY","type":"recaptcha_v2","sitekey":"6Le...","pageurl":"https://example.com/login"}'
curl -sS "https://clario.my.id/api/v1/captcha/result?key=clarioYOUR_KEY&task_id=TASK_ID"
reCAPTCHA v2 Invisible
recaptcha_v2_invisibleSame fields as v2; type forces invisible.
Required: sitekey, pageurl · Optional: data-s, useragent
import time, requests
BASE = "https://clario.my.id"
KEY = "clarioYOUR_KEY"
def solve():
r = requests.post(f"{BASE}/api/v1/captcha/create", json={"key": KEY, "type": "recaptcha_v2_invisible", "sitekey":"6Le...","pageurl":"https://example.com"}, timeout=60).json()
tid = r["task_id"]
for _ in range(40):
time.sleep(3)
j = requests.get(f"{BASE}/api/v1/captcha/result", params={"key": KEY, "task_id": tid}, timeout=30).json()
if j.get("status") == 1:
return j["request"]
if j.get("request") not in (None, "CAPCHA_NOT_READY"):
raise RuntimeError(j)
raise TimeoutError("timeout")
print(solve())
const BASE = "https://clario.my.id";
const KEY = "clarioYOUR_KEY";
async function solve() {
const create = await fetch(`${BASE}/api/v1/captcha/create`, {
method: "POST",
headers: {"Content-Type":"application/json", Authorization: `Bearer ${KEY}`},
body: JSON.stringify({ type: "recaptcha_v2_invisible", sitekey:"6Le...",pageurl:"https://example.com" }),
}).then(r => r.json());
const tid = create.task_id;
for (let i = 0; i < 40; i++) {
await new Promise(r => setTimeout(r, 3000));
const j = await fetch(`${BASE}/api/v1/captcha/result?task_id=${tid}`, {
headers: { Authorization: `Bearer ${KEY}` }
}).then(r => r.json());
if (j.status === 1) return j.request;
if (j.request && j.request !== "CAPCHA_NOT_READY") throw new Error(j.request);
}
throw new Error("timeout");
}
solve().then(console.log).catch(console.error);
curl -sS -X POST https://clario.my.id/api/v1/captcha/create -H 'Content-Type: application/json' -d '{"key":"clarioYOUR_KEY","type":"recaptcha_v2_invisible","sitekey":"6Le...","pageurl":"https://example.com"}'
curl -sS "https://clario.my.id/api/v1/captcha/result?key=clarioYOUR_KEY&task_id=TASK_ID"
reCAPTCHA v3
recaptcha_v3Optional action + min_score (default 0.3).
Required: sitekey, pageurl · Optional: action, min_score, useragent
import time, requests
BASE = "https://clario.my.id"
KEY = "clarioYOUR_KEY"
def solve():
r = requests.post(f"{BASE}/api/v1/captcha/create", json={"key": KEY, "type": "recaptcha_v3", "sitekey":"6Le...","pageurl":"https://example.com","action":"login","min_score":0.7}, timeout=60).json()
tid = r["task_id"]
for _ in range(40):
time.sleep(3)
j = requests.get(f"{BASE}/api/v1/captcha/result", params={"key": KEY, "task_id": tid}, timeout=30).json()
if j.get("status") == 1:
return j["request"]
if j.get("request") not in (None, "CAPCHA_NOT_READY"):
raise RuntimeError(j)
raise TimeoutError("timeout")
print(solve())
const BASE = "https://clario.my.id";
const KEY = "clarioYOUR_KEY";
async function solve() {
const create = await fetch(`${BASE}/api/v1/captcha/create`, {
method: "POST",
headers: {"Content-Type":"application/json", Authorization: `Bearer ${KEY}`},
body: JSON.stringify({ type: "recaptcha_v3", sitekey:"6Le...",pageurl:"https://example.com",action:"login",min_score:0.7 }),
}).then(r => r.json());
const tid = create.task_id;
for (let i = 0; i < 40; i++) {
await new Promise(r => setTimeout(r, 3000));
const j = await fetch(`${BASE}/api/v1/captcha/result?task_id=${tid}`, {
headers: { Authorization: `Bearer ${KEY}` }
}).then(r => r.json());
if (j.status === 1) return j.request;
if (j.request && j.request !== "CAPCHA_NOT_READY") throw new Error(j.request);
}
throw new Error("timeout");
}
solve().then(console.log).catch(console.error);
curl -sS -X POST https://clario.my.id/api/v1/captcha/create -H 'Content-Type: application/json' -d '{"key":"clarioYOUR_KEY","type":"recaptcha_v3","sitekey":"6Le...","pageurl":"https://example.com","action":"login","min_score":0.7}'
curl -sS "https://clario.my.id/api/v1/captcha/result?key=clarioYOUR_KEY&task_id=TASK_ID"
reCAPTCHA Enterprise
recaptcha_enterpriseUse enterprise site key.
Required: sitekey, pageurl · Optional: action, min_score, useragent
import time, requests
BASE = "https://clario.my.id"
KEY = "clarioYOUR_KEY"
def solve():
r = requests.post(f"{BASE}/api/v1/captcha/create", json={"key": KEY, "type": "recaptcha_enterprise", "sitekey":"6L...","pageurl":"https://example.com"}, timeout=60).json()
tid = r["task_id"]
for _ in range(40):
time.sleep(3)
j = requests.get(f"{BASE}/api/v1/captcha/result", params={"key": KEY, "task_id": tid}, timeout=30).json()
if j.get("status") == 1:
return j["request"]
if j.get("request") not in (None, "CAPCHA_NOT_READY"):
raise RuntimeError(j)
raise TimeoutError("timeout")
print(solve())
const BASE = "https://clario.my.id";
const KEY = "clarioYOUR_KEY";
async function solve() {
const create = await fetch(`${BASE}/api/v1/captcha/create`, {
method: "POST",
headers: {"Content-Type":"application/json", Authorization: `Bearer ${KEY}`},
body: JSON.stringify({ type: "recaptcha_enterprise", sitekey:"6L...",pageurl:"https://example.com" }),
}).then(r => r.json());
const tid = create.task_id;
for (let i = 0; i < 40; i++) {
await new Promise(r => setTimeout(r, 3000));
const j = await fetch(`${BASE}/api/v1/captcha/result?task_id=${tid}`, {
headers: { Authorization: `Bearer ${KEY}` }
}).then(r => r.json());
if (j.status === 1) return j.request;
if (j.request && j.request !== "CAPCHA_NOT_READY") throw new Error(j.request);
}
throw new Error("timeout");
}
solve().then(console.log).catch(console.error);
curl -sS -X POST https://clario.my.id/api/v1/captcha/create -H 'Content-Type: application/json' -d '{"key":"clarioYOUR_KEY","type":"recaptcha_enterprise","sitekey":"6L...","pageurl":"https://example.com"}'
curl -sS "https://clario.my.id/api/v1/captcha/result?key=clarioYOUR_KEY&task_id=TASK_ID"
hCaptcha
hcaptchasitekey from page data-sitekey.
Required: sitekey, pageurl · Optional: data, rqdata, useragent
import time, requests
BASE = "https://clario.my.id"
KEY = "clarioYOUR_KEY"
def solve():
r = requests.post(f"{BASE}/api/v1/captcha/create", json={"key": KEY, "type": "hcaptcha", "sitekey":"10000000-ffff-ffff-ffff-000000000001","pageurl":"https://example.com"}, timeout=60).json()
tid = r["task_id"]
for _ in range(40):
time.sleep(3)
j = requests.get(f"{BASE}/api/v1/captcha/result", params={"key": KEY, "task_id": tid}, timeout=30).json()
if j.get("status") == 1:
return j["request"]
if j.get("request") not in (None, "CAPCHA_NOT_READY"):
raise RuntimeError(j)
raise TimeoutError("timeout")
print(solve())
const BASE = "https://clario.my.id";
const KEY = "clarioYOUR_KEY";
async function solve() {
const create = await fetch(`${BASE}/api/v1/captcha/create`, {
method: "POST",
headers: {"Content-Type":"application/json", Authorization: `Bearer ${KEY}`},
body: JSON.stringify({ type: "hcaptcha", sitekey:"10000000-ffff-ffff-ffff-000000000001",pageurl:"https://example.com" }),
}).then(r => r.json());
const tid = create.task_id;
for (let i = 0; i < 40; i++) {
await new Promise(r => setTimeout(r, 3000));
const j = await fetch(`${BASE}/api/v1/captcha/result?task_id=${tid}`, {
headers: { Authorization: `Bearer ${KEY}` }
}).then(r => r.json());
if (j.status === 1) return j.request;
if (j.request && j.request !== "CAPCHA_NOT_READY") throw new Error(j.request);
}
throw new Error("timeout");
}
solve().then(console.log).catch(console.error);
curl -sS -X POST https://clario.my.id/api/v1/captcha/create -H 'Content-Type: application/json' -d '{"key":"clarioYOUR_KEY","type":"hcaptcha","sitekey":"10000000-ffff-ffff-ffff-000000000001","pageurl":"https://example.com"}'
curl -sS "https://clario.my.id/api/v1/captcha/result?key=clarioYOUR_KEY&task_id=TASK_ID"
FunCaptcha / Arkose
funcaptchasitekey = public key; optional surl.
Required: sitekey, pageurl · Optional: surl, data, useragent
import time, requests
BASE = "https://clario.my.id"
KEY = "clarioYOUR_KEY"
def solve():
r = requests.post(f"{BASE}/api/v1/captcha/create", json={"key": KEY, "type": "funcaptcha", "sitekey":"PUBLIC_KEY","pageurl":"https://example.com","surl":"https://client-api.arkoselabs.com"}, timeout=60).json()
tid = r["task_id"]
for _ in range(40):
time.sleep(3)
j = requests.get(f"{BASE}/api/v1/captcha/result", params={"key": KEY, "task_id": tid}, timeout=30).json()
if j.get("status") == 1:
return j["request"]
if j.get("request") not in (None, "CAPCHA_NOT_READY"):
raise RuntimeError(j)
raise TimeoutError("timeout")
print(solve())
const BASE = "https://clario.my.id";
const KEY = "clarioYOUR_KEY";
async function solve() {
const create = await fetch(`${BASE}/api/v1/captcha/create`, {
method: "POST",
headers: {"Content-Type":"application/json", Authorization: `Bearer ${KEY}`},
body: JSON.stringify({ type: "funcaptcha", sitekey:"PUBLIC_KEY",pageurl:"https://example.com",surl:"https://client-api.arkoselabs.com" }),
}).then(r => r.json());
const tid = create.task_id;
for (let i = 0; i < 40; i++) {
await new Promise(r => setTimeout(r, 3000));
const j = await fetch(`${BASE}/api/v1/captcha/result?task_id=${tid}`, {
headers: { Authorization: `Bearer ${KEY}` }
}).then(r => r.json());
if (j.status === 1) return j.request;
if (j.request && j.request !== "CAPCHA_NOT_READY") throw new Error(j.request);
}
throw new Error("timeout");
}
solve().then(console.log).catch(console.error);
curl -sS -X POST https://clario.my.id/api/v1/captcha/create -H 'Content-Type: application/json' -d '{"key":"clarioYOUR_KEY","type":"funcaptcha","sitekey":"PUBLIC_KEY","pageurl":"https://example.com","surl":"https://client-api.arkoselabs.com"}'
curl -sS "https://clario.my.id/api/v1/captcha/result?key=clarioYOUR_KEY&task_id=TASK_ID"
GeeTest v3
geetestgt + challenge required from init.
Required: gt, challenge, pageurl · Optional: api_server, useragent
import time, requests
BASE = "https://clario.my.id"
KEY = "clarioYOUR_KEY"
def solve():
r = requests.post(f"{BASE}/api/v1/captcha/create", json={"key": KEY, "type": "geetest", "gt":"gt_value","challenge":"challenge_value","pageurl":"https://example.com"}, timeout=60).json()
tid = r["task_id"]
for _ in range(40):
time.sleep(3)
j = requests.get(f"{BASE}/api/v1/captcha/result", params={"key": KEY, "task_id": tid}, timeout=30).json()
if j.get("status") == 1:
return j["request"]
if j.get("request") not in (None, "CAPCHA_NOT_READY"):
raise RuntimeError(j)
raise TimeoutError("timeout")
print(solve())
const BASE = "https://clario.my.id";
const KEY = "clarioYOUR_KEY";
async function solve() {
const create = await fetch(`${BASE}/api/v1/captcha/create`, {
method: "POST",
headers: {"Content-Type":"application/json", Authorization: `Bearer ${KEY}`},
body: JSON.stringify({ type: "geetest", gt:"gt_value",challenge:"challenge_value",pageurl:"https://example.com" }),
}).then(r => r.json());
const tid = create.task_id;
for (let i = 0; i < 40; i++) {
await new Promise(r => setTimeout(r, 3000));
const j = await fetch(`${BASE}/api/v1/captcha/result?task_id=${tid}`, {
headers: { Authorization: `Bearer ${KEY}` }
}).then(r => r.json());
if (j.status === 1) return j.request;
if (j.request && j.request !== "CAPCHA_NOT_READY") throw new Error(j.request);
}
throw new Error("timeout");
}
solve().then(console.log).catch(console.error);
curl -sS -X POST https://clario.my.id/api/v1/captcha/create -H 'Content-Type: application/json' -d '{"key":"clarioYOUR_KEY","type":"geetest","gt":"gt_value","challenge":"challenge_value","pageurl":"https://example.com"}'
curl -sS "https://clario.my.id/api/v1/captcha/result?key=clarioYOUR_KEY&task_id=TASK_ID"
GeeTest v4
geetest_v4captcha_id from page.
Required: captcha_id, pageurl · Optional: useragent
import time, requests
BASE = "https://clario.my.id"
KEY = "clarioYOUR_KEY"
def solve():
r = requests.post(f"{BASE}/api/v1/captcha/create", json={"key": KEY, "type": "geetest_v4", "captcha_id":"ID","pageurl":"https://example.com"}, timeout=60).json()
tid = r["task_id"]
for _ in range(40):
time.sleep(3)
j = requests.get(f"{BASE}/api/v1/captcha/result", params={"key": KEY, "task_id": tid}, timeout=30).json()
if j.get("status") == 1:
return j["request"]
if j.get("request") not in (None, "CAPCHA_NOT_READY"):
raise RuntimeError(j)
raise TimeoutError("timeout")
print(solve())
const BASE = "https://clario.my.id";
const KEY = "clarioYOUR_KEY";
async function solve() {
const create = await fetch(`${BASE}/api/v1/captcha/create`, {
method: "POST",
headers: {"Content-Type":"application/json", Authorization: `Bearer ${KEY}`},
body: JSON.stringify({ type: "geetest_v4", captcha_id:"ID",pageurl:"https://example.com" }),
}).then(r => r.json());
const tid = create.task_id;
for (let i = 0; i < 40; i++) {
await new Promise(r => setTimeout(r, 3000));
const j = await fetch(`${BASE}/api/v1/captcha/result?task_id=${tid}`, {
headers: { Authorization: `Bearer ${KEY}` }
}).then(r => r.json());
if (j.status === 1) return j.request;
if (j.request && j.request !== "CAPCHA_NOT_READY") throw new Error(j.request);
}
throw new Error("timeout");
}
solve().then(console.log).catch(console.error);
curl -sS -X POST https://clario.my.id/api/v1/captcha/create -H 'Content-Type: application/json' -d '{"key":"clarioYOUR_KEY","type":"geetest_v4","captcha_id":"ID","pageurl":"https://example.com"}'
curl -sS "https://clario.my.id/api/v1/captcha/result?key=clarioYOUR_KEY&task_id=TASK_ID"
Amazon WAF
amazon_wafcontext + iv from challenge payload.
Required: sitekey, pageurl, context, iv · Optional: useragent
import time, requests
BASE = "https://clario.my.id"
KEY = "clarioYOUR_KEY"
def solve():
r = requests.post(f"{BASE}/api/v1/captcha/create", json={"key": KEY, "type": "amazon_waf", "sitekey":"...","pageurl":"https://example.com","context":"...","iv":"..."}, timeout=60).json()
tid = r["task_id"]
for _ in range(40):
time.sleep(3)
j = requests.get(f"{BASE}/api/v1/captcha/result", params={"key": KEY, "task_id": tid}, timeout=30).json()
if j.get("status") == 1:
return j["request"]
if j.get("request") not in (None, "CAPCHA_NOT_READY"):
raise RuntimeError(j)
raise TimeoutError("timeout")
print(solve())
const BASE = "https://clario.my.id";
const KEY = "clarioYOUR_KEY";
async function solve() {
const create = await fetch(`${BASE}/api/v1/captcha/create`, {
method: "POST",
headers: {"Content-Type":"application/json", Authorization: `Bearer ${KEY}`},
body: JSON.stringify({ type: "amazon_waf", sitekey:"...",pageurl:"https://example.com",context:"...",iv:"..." }),
}).then(r => r.json());
const tid = create.task_id;
for (let i = 0; i < 40; i++) {
await new Promise(r => setTimeout(r, 3000));
const j = await fetch(`${BASE}/api/v1/captcha/result?task_id=${tid}`, {
headers: { Authorization: `Bearer ${KEY}` }
}).then(r => r.json());
if (j.status === 1) return j.request;
if (j.request && j.request !== "CAPCHA_NOT_READY") throw new Error(j.request);
}
throw new Error("timeout");
}
solve().then(console.log).catch(console.error);
curl -sS -X POST https://clario.my.id/api/v1/captcha/create -H 'Content-Type: application/json' -d '{"key":"clarioYOUR_KEY","type":"amazon_waf","sitekey":"...","pageurl":"https://example.com","context":"...","iv":"..."}'
curl -sS "https://clario.my.id/api/v1/captcha/result?key=clarioYOUR_KEY&task_id=TASK_ID"
DataDome
datadomeuseragent must match browser session.
Required: captcha_url, pageurl, useragent · Optional: proxy
import time, requests
BASE = "https://clario.my.id"
KEY = "clarioYOUR_KEY"
def solve():
r = requests.post(f"{BASE}/api/v1/captcha/create", json={"key": KEY, "type": "datadome", "captcha_url":"https://geo.captcha-delivery.com/...","pageurl":"https://example.com","useragent":"Mozilla/5.0"}, timeout=60).json()
tid = r["task_id"]
for _ in range(40):
time.sleep(3)
j = requests.get(f"{BASE}/api/v1/captcha/result", params={"key": KEY, "task_id": tid}, timeout=30).json()
if j.get("status") == 1:
return j["request"]
if j.get("request") not in (None, "CAPCHA_NOT_READY"):
raise RuntimeError(j)
raise TimeoutError("timeout")
print(solve())
const BASE = "https://clario.my.id";
const KEY = "clarioYOUR_KEY";
async function solve() {
const create = await fetch(`${BASE}/api/v1/captcha/create`, {
method: "POST",
headers: {"Content-Type":"application/json", Authorization: `Bearer ${KEY}`},
body: JSON.stringify({ type: "datadome", captcha_url:"https://geo.captcha-delivery.com/...",pageurl:"https://example.com",useragent:"Mozilla/5.0" }),
}).then(r => r.json());
const tid = create.task_id;
for (let i = 0; i < 40; i++) {
await new Promise(r => setTimeout(r, 3000));
const j = await fetch(`${BASE}/api/v1/captcha/result?task_id=${tid}`, {
headers: { Authorization: `Bearer ${KEY}` }
}).then(r => r.json());
if (j.status === 1) return j.request;
if (j.request && j.request !== "CAPCHA_NOT_READY") throw new Error(j.request);
}
throw new Error("timeout");
}
solve().then(console.log).catch(console.error);
curl -sS -X POST https://clario.my.id/api/v1/captcha/create -H 'Content-Type: application/json' -d '{"key":"clarioYOUR_KEY","type":"datadome","captcha_url":"https://geo.captcha-delivery.com/...","pageurl":"https://example.com","useragent":"Mozilla/5.0"}'
curl -sS "https://clario.my.id/api/v1/captcha/result?key=clarioYOUR_KEY&task_id=TASK_ID"
Image captcha
imagebody = base64 without data:image prefix.
Required: body · Optional: textinstructions, numeric, calc
import time, requests
BASE = "https://clario.my.id"
KEY = "clarioYOUR_KEY"
def solve():
r = requests.post(f"{BASE}/api/v1/captcha/create", json={"key": KEY, "type": "image", "body":"iVBORw0KGgoAAA..."}, timeout=60).json()
tid = r["task_id"]
for _ in range(40):
time.sleep(3)
j = requests.get(f"{BASE}/api/v1/captcha/result", params={"key": KEY, "task_id": tid}, timeout=30).json()
if j.get("status") == 1:
return j["request"]
if j.get("request") not in (None, "CAPCHA_NOT_READY"):
raise RuntimeError(j)
raise TimeoutError("timeout")
print(solve())
const BASE = "https://clario.my.id";
const KEY = "clarioYOUR_KEY";
async function solve() {
const create = await fetch(`${BASE}/api/v1/captcha/create`, {
method: "POST",
headers: {"Content-Type":"application/json", Authorization: `Bearer ${KEY}`},
body: JSON.stringify({ type: "image", body:"iVBORw0KGgoAAA..." }),
}).then(r => r.json());
const tid = create.task_id;
for (let i = 0; i < 40; i++) {
await new Promise(r => setTimeout(r, 3000));
const j = await fetch(`${BASE}/api/v1/captcha/result?task_id=${tid}`, {
headers: { Authorization: `Bearer ${KEY}` }
}).then(r => r.json());
if (j.status === 1) return j.request;
if (j.request && j.request !== "CAPCHA_NOT_READY") throw new Error(j.request);
}
throw new Error("timeout");
}
solve().then(console.log).catch(console.error);
curl -sS -X POST https://clario.my.id/api/v1/captcha/create -H 'Content-Type: application/json' -d '{"key":"clarioYOUR_KEY","type":"image","body":"iVBORw0KGgoAAA..."}'
curl -sS "https://clario.my.id/api/v1/captcha/result?key=clarioYOUR_KEY&task_id=TASK_ID"
Text / question
textSend question in text field.
Required: text · Optional: lang
import time, requests
BASE = "https://clario.my.id"
KEY = "clarioYOUR_KEY"
def solve():
r = requests.post(f"{BASE}/api/v1/captcha/create", json={"key": KEY, "type": "text", "text":"What is 2 + 2?"}, timeout=60).json()
tid = r["task_id"]
for _ in range(40):
time.sleep(3)
j = requests.get(f"{BASE}/api/v1/captcha/result", params={"key": KEY, "task_id": tid}, timeout=30).json()
if j.get("status") == 1:
return j["request"]
if j.get("request") not in (None, "CAPCHA_NOT_READY"):
raise RuntimeError(j)
raise TimeoutError("timeout")
print(solve())
const BASE = "https://clario.my.id";
const KEY = "clarioYOUR_KEY";
async function solve() {
const create = await fetch(`${BASE}/api/v1/captcha/create`, {
method: "POST",
headers: {"Content-Type":"application/json", Authorization: `Bearer ${KEY}`},
body: JSON.stringify({ type: "text", text:"What is 2 + 2?" }),
}).then(r => r.json());
const tid = create.task_id;
for (let i = 0; i < 40; i++) {
await new Promise(r => setTimeout(r, 3000));
const j = await fetch(`${BASE}/api/v1/captcha/result?task_id=${tid}`, {
headers: { Authorization: `Bearer ${KEY}` }
}).then(r => r.json());
if (j.status === 1) return j.request;
if (j.request && j.request !== "CAPCHA_NOT_READY") throw new Error(j.request);
}
throw new Error("timeout");
}
solve().then(console.log).catch(console.error);
curl -sS -X POST https://clario.my.id/api/v1/captcha/create -H 'Content-Type: application/json' -d '{"key":"clarioYOUR_KEY","type":"text","text":"What is 2 + 2?"}'
curl -sS "https://clario.my.id/api/v1/captcha/result?key=clarioYOUR_KEY&task_id=TASK_ID"
Click coordinates
coordinatesReturns coordinate token.
Required: body · Optional: textinstructions
import time, requests
BASE = "https://clario.my.id"
KEY = "clarioYOUR_KEY"
def solve():
r = requests.post(f"{BASE}/api/v1/captcha/create", json={"key": KEY, "type": "coordinates", "body":"iVBORw0KGgo...","textinstructions":"Click the cats"}, timeout=60).json()
tid = r["task_id"]
for _ in range(40):
time.sleep(3)
j = requests.get(f"{BASE}/api/v1/captcha/result", params={"key": KEY, "task_id": tid}, timeout=30).json()
if j.get("status") == 1:
return j["request"]
if j.get("request") not in (None, "CAPCHA_NOT_READY"):
raise RuntimeError(j)
raise TimeoutError("timeout")
print(solve())
const BASE = "https://clario.my.id";
const KEY = "clarioYOUR_KEY";
async function solve() {
const create = await fetch(`${BASE}/api/v1/captcha/create`, {
method: "POST",
headers: {"Content-Type":"application/json", Authorization: `Bearer ${KEY}`},
body: JSON.stringify({ type: "coordinates", body:"iVBORw0KGgo...",textinstructions:"Click the cats" }),
}).then(r => r.json());
const tid = create.task_id;
for (let i = 0; i < 40; i++) {
await new Promise(r => setTimeout(r, 3000));
const j = await fetch(`${BASE}/api/v1/captcha/result?task_id=${tid}`, {
headers: { Authorization: `Bearer ${KEY}` }
}).then(r => r.json());
if (j.status === 1) return j.request;
if (j.request && j.request !== "CAPCHA_NOT_READY") throw new Error(j.request);
}
throw new Error("timeout");
}
solve().then(console.log).catch(console.error);
curl -sS -X POST https://clario.my.id/api/v1/captcha/create -H 'Content-Type: application/json' -d '{"key":"clarioYOUR_KEY","type":"coordinates","body":"iVBORw0KGgo...","textinstructions":"Click the cats"}'
curl -sS "https://clario.my.id/api/v1/captcha/result?key=clarioYOUR_KEY&task_id=TASK_ID"
Cloudflare challenge
cloudflareSame shape as Turnstile when sitekey exists.
Required: sitekey, pageurl · Optional: data, action, useragent
import time, requests
BASE = "https://clario.my.id"
KEY = "clarioYOUR_KEY"
def solve():
r = requests.post(f"{BASE}/api/v1/captcha/create", json={"key": KEY, "type": "cloudflare", "sitekey":"0x4AAAAA...","pageurl":"https://example.com"}, timeout=60).json()
tid = r["task_id"]
for _ in range(40):
time.sleep(3)
j = requests.get(f"{BASE}/api/v1/captcha/result", params={"key": KEY, "task_id": tid}, timeout=30).json()
if j.get("status") == 1:
return j["request"]
if j.get("request") not in (None, "CAPCHA_NOT_READY"):
raise RuntimeError(j)
raise TimeoutError("timeout")
print(solve())
const BASE = "https://clario.my.id";
const KEY = "clarioYOUR_KEY";
async function solve() {
const create = await fetch(`${BASE}/api/v1/captcha/create`, {
method: "POST",
headers: {"Content-Type":"application/json", Authorization: `Bearer ${KEY}`},
body: JSON.stringify({ type: "cloudflare", sitekey:"0x4AAAAA...",pageurl:"https://example.com" }),
}).then(r => r.json());
const tid = create.task_id;
for (let i = 0; i < 40; i++) {
await new Promise(r => setTimeout(r, 3000));
const j = await fetch(`${BASE}/api/v1/captcha/result?task_id=${tid}`, {
headers: { Authorization: `Bearer ${KEY}` }
}).then(r => r.json());
if (j.status === 1) return j.request;
if (j.request && j.request !== "CAPCHA_NOT_READY") throw new Error(j.request);
}
throw new Error("timeout");
}
solve().then(console.log).catch(console.error);
curl -sS -X POST https://clario.my.id/api/v1/captcha/create -H 'Content-Type: application/json' -d '{"key":"clarioYOUR_KEY","type":"cloudflare","sitekey":"0x4AAAAA...","pageurl":"https://example.com"}'
curl -sS "https://clario.my.id/api/v1/captcha/result?key=clarioYOUR_KEY&task_id=TASK_ID"
More captcha types
| type | name | required |
|---|---|---|
lemin | Lemin | captcha_id, div_id, pageurl |
mtcaptcha | MTCaptcha | sitekey, pageurl |
friendly_captcha | Friendly Captcha | sitekey, pageurl |
capy | Capy Puzzle | sitekey, pageurl |
keycaptcha | KeyCaptcha | s_s_c_* , pageurl |
yandex | Yandex SmartCaptcha | sitekey, pageurl |
tencent | Tencent Captcha | app_id, pageurl |
grid | Grid image | body |
rotate | Rotate | body |
audio | Audio | body |
cutcaptcha | CutCaptcha | misery_key, api_key, pageurl |
atb_captcha | AtbCAPTCHA | app_id, api_server, pageurl |
cyber_siara | CyberSiARA | master_url_id, pageurl |
Live fields/prices: GET /api/v1/captcha/types.
Deposit / Top up
- Min $5
- Auto USDT BEP20 + ERC20
- Fake TXID cannot credit
POST /api/deposit/create {"chain_id":"bsc_usdt","amount_usd":10}
POST /api/deposit/check
POST /api/deposit/confirm {"deposit_id":1,"txid":"0x..."}
Errors and refunds
| Case | Behavior |
|---|---|
| Bad key | 401 |
| Missing fields | 400 no debit |
| Low balance | 400 no debit |
| Upstream fail | 502 + refund |
| CAPCHA_NOT_READY | keep polling |
Security
- Only your
clario…key in customer responses - No upstream keys/balances exposed
- Turnstile only for website login/register
- Public URL:
https://clario.my.id
FAQ
Website Turnstile vs captcha product?
Login protection vs paid solve API with your key.
One key for SMM + SMS + captcha?
Yes — unique per account.
SMS API key?
Yes — same clario… key as SMM/Captcha (unique per account).