Clario

Clario Service Docs

SMM · SMS · Captcha
PanelGet API key

Overview

SMMSMSCAPTCHA

Clario Service: one wallet, one API key (clario…), three products.

Base URL

https://clario.my.id

API key

clario + 48 hex
Dashboard → API

Min top-up

$5 USDT BEP20/ERC20

Upstream provider keys are never shown. You only use your Clario key and balance.
ProductHowPath
SMMAPI key or web Order/BatchPOST /api/v2
SMSAPI key or web SMS tab/api/sms/*
CaptchaAPI key or web quick test/api/v1/captcha/*

Quick start

1
Register on the panel and verify email.
2
Top up crypto (min $5).
3
Copy clario… key from API tab.
4
Integrate SMM and/or Captcha. SMS from SMS tab.

Auth and account

SurfaceAuth
Web dashboardSession cookie after login (Turnstile on register/login only)
SMM APIForm field key=clario…
Captcha APIJSON/form key=clario… or header Authorization: Bearer clario…
SMSAPI key clario… or logged-in session

Website Turnstile is NOT your captcha product key.

Dashboard guide

MenuPurpose
DashboardBalance, quick order, key preview
SMMService catalog
OrderSingle SMM order
BatchMass orders
SMSRent number + code
CaptchaIntegration guide + quick test
HistorySMM history
Top UpCrypto deposit
APIFull key
DocsThis 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.

actionparamsresult
balancekeybalance + currency
serviceskeyservice list
addservice, link, quantityorder id
statusorder / ordersstatus

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

1
Pick service
2
Pick country (flags + search)
3
Order number
4
Refresh code / cancel unused
EndpointUse
GET /api/sms/services?key=…list
GET /api/sms/countries?service=907&key=…countries + flag_url
POST /api/sms/orderorder 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.

Create

POST /api/v1/captcha/create

Result

GET /api/v1/captcha/result

Also: /api/v1/captcha/types · /api/v1/captcha/in.php · /api/v1/captcha/res.php

Captcha · Create and poll

statusmeaning
0 CAPCHA_NOT_READYpoll every 3s
1 + tokenready in request
error stringfail + refund

Captcha · Pick a type

Click a card for dedicated integration examples.

Cloudflare Turnstile

CF
turnstile
Cloudflare Turnstile widget.

Pass 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

V2
recaptcha_v2
Classic checkbox reCAPTCHA v2.

Public 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

IV
recaptcha_v2_invisible
Invisible reCAPTCHA v2.

Same 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

V3
recaptcha_v3
Score-based reCAPTCHA v3.

Optional 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

EN
recaptcha_enterprise
reCAPTCHA Enterprise.

Use 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

HC
hcaptcha
hCaptcha widget.

sitekey 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

FK
funcaptcha
Arkose FunCaptcha.

sitekey = 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

G3
geetest
GeeTest v3.

gt + 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

G4
geetest_v4
GeeTest v4.

captcha_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

AW
amazon_waf
Amazon WAF captcha.

context + 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

DD
datadome
DataDome interstitial.

useragent 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

IMG
image
Image OCR captcha.

body = 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

TXT
text
Text question captcha.

Send 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

XY
coordinates
Click points on image.

Returns 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

5S
cloudflare
CF challenge with sitekey.

Same 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

typenamerequired
leminLemincaptcha_id, div_id, pageurl
mtcaptchaMTCaptchasitekey, pageurl
friendly_captchaFriendly Captchasitekey, pageurl
capyCapy Puzzlesitekey, pageurl
keycaptchaKeyCaptchas_s_c_* , pageurl
yandexYandex SmartCaptchasitekey, pageurl
tencentTencent Captchaapp_id, pageurl
gridGrid imagebody
rotateRotatebody
audioAudiobody
cutcaptchaCutCaptchamisery_key, api_key, pageurl
atb_captchaAtbCAPTCHAapp_id, api_server, pageurl
cyber_siaraCyberSiARAmaster_url_id, pageurl

Live fields/prices: GET /api/v1/captcha/types.


Deposit / Top up

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

CaseBehavior
Bad key401
Missing fields400 no debit
Low balance400 no debit
Upstream fail502 + refund
CAPCHA_NOT_READYkeep polling

Security

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).

Back to panel