Tertuyul Captcha API

v1.0

Overview

Flow: submit task → get taskId → poll result. All /in.php submits must use POST multipart/form-data. Results from /res.php.

Submit Task

POST http://api.tertuyul.my.id/in.php

Get Result

GET/POST http://api.tertuyul.my.id/res.php

Endpoints

EndpointMethodNotes
/in.phpPOSTSubmit captcha task
/res.phpGET / POSTGet result or userinfo

hCaptcha

Solve hCaptcha token. Use method=hcaptcha.

hcaptcha

Parameters

ParameterTypeReqNotes
keystringyesAPI key
methodstringyeshcaptcha
sitekeystringyesSitekey
pageurlstringyesPage URL
proxystringnologin:pass@ip:port
jsonintno1 = JSON

Example PHP

$apiKey  = 'YOUR_API_KEY';
$siteKey = 'your-hcaptcha-sitekey';
$pageUrl = 'https://example.com/page';

// 1. Submit task
$post = [
  'key'     => $apiKey,
  'method'  => 'hcaptcha',
  'sitekey' => $siteKey,
  'pageurl' => $pageUrl,
  // 'proxy' => 'login:pass@ip:port', // optional
  'json'    => '1'
];
$ch = curl_init('http://api.tertuyul.my.id/in.php');
curl_setopt_array($ch, [
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_POST           => true,
  CURLOPT_POSTFIELDS     => $post
]);
$resp = curl_exec($ch);
curl_close($ch);
$task = json_decode($resp, true);

if (($task['status'] ?? 0) != 1) {
  die('Submit error: ' . print_r($task, true));
}
$taskId = $task['request'];

// 2. Poll result (same pattern for all methods)
while (true) {
  sleep(5);
  $post = ['key'=>$apiKey, 'action'=>'get', 'id'=>$taskId, 'json'=>'1'];
  $ch = curl_init('http://api.tertuyul.my.id/res.php');
  curl_setopt_array($ch, [CURLOPT_RETURNTRANSFER=>true, CURLOPT_POST=>true, CURLOPT_POSTFIELDS=>$post]);
  $res = json_decode(curl_exec($ch), true);
  curl_close($ch);

  if (($res['status'] ?? 0) == 1) {
    echo "Token: " . $res['request'] . "\n"; // use this token
    break;
  }
  if (($res['request'] ?? '') === 'CAPCHA_NOT_READY') continue;
  die('Error: ' . print_r($res, true));
}

reCAPTCHA V2

method=userrecaptcha

recaptchav2

Parameters

ParameterTypeReqNotes
keystringyesAPI key
methodstringyesuserrecaptcha
googlekeystringyesSite key
pageurlstringyesPage URL
invisibleintno1 = invisible
proxystringnologin:pass@ip:port
jsonintno1 = JSON

Example PHP

$apiKey  = 'YOUR_API_KEY';
$siteKey = 'your-recaptcha-v2-sitekey';
$pageUrl = 'https://example.com/page';

// 1. Submit task
$post = [
  'key'       => $apiKey,
  'method'    => 'userrecaptcha',
  'googlekey' => $siteKey,
  'pageurl'   => $pageUrl,
  // 'invisible' => '1', // if invisible
  // 'proxy'     => 'login:pass@ip:port',
  'json'      => '1'
];
$ch = curl_init('http://api.tertuyul.my.id/in.php');
curl_setopt_array($ch, [
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_POST           => true,
  CURLOPT_POSTFIELDS     => $post
]);
$resp = curl_exec($ch);
curl_close($ch);
$task = json_decode($resp, true);

if (($task['status'] ?? 0) != 1) {
  die('Submit error: ' . print_r($task, true));
}
$taskId = $task['request'];

// 2. Poll result
while (true) {
  sleep(5);
  $post = ['key'=>$apiKey, 'action'=>'get', 'id'=>$taskId, 'json'=>'1'];
  $ch = curl_init('http://api.tertuyul.my.id/res.php');
  curl_setopt_array($ch, [CURLOPT_RETURNTRANSFER=>true, CURLOPT_POST=>true, CURLOPT_POSTFIELDS=>$post]);
  $res = json_decode(curl_exec($ch), true);
  curl_close($ch);

  if (($res['status'] ?? 0) == 1) {
    echo "Token: " . $res['request'] . "\n";
    break;
  }
  if (($res['request'] ?? '') === 'CAPCHA_NOT_READY') continue;
  die('Error: ' . print_r($res, true));
}

reCAPTCHA V3

method=userrecaptcha + version=v3 + action

recaptchav3

Parameters

ParameterTypeReqNotes
keystringyesAPI key
methodstringyesuserrecaptcha
googlekeystringyesSite key
pageurlstringyesPage URL
versionstringyesv3
actionstringyese.g. verify
jsonintno1 = JSON

Example PHP

$apiKey  = 'YOUR_API_KEY';
$siteKey = 'your-recaptcha-v3-sitekey';
$pageUrl = 'https://example.com/page';

// 1. Submit task
$post = [
  'key'       => $apiKey,
  'method'    => 'userrecaptcha',
  'googlekey' => $siteKey,
  'pageurl'   => $pageUrl,
  'version'   => 'v3',
  'action'    => 'verify',
  'json'      => '1'
];
$ch = curl_init('http://api.tertuyul.my.id/in.php');
curl_setopt_array($ch, [
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_POST           => true,
  CURLOPT_POSTFIELDS     => $post
]);
$resp = curl_exec($ch);
curl_close($ch);
$task = json_decode($resp, true);

if (($task['status'] ?? 0) != 1) {
  die('Submit error: ' . print_r($task, true));
}
$taskId = $task['request'];

// 2. Poll result
while (true) {
  sleep(5);
  $post = ['key'=>$apiKey, 'action'=>'get', 'id'=>$taskId, 'json'=>'1'];
  $ch = curl_init('http://api.tertuyul.my.id/res.php');
  curl_setopt_array($ch, [CURLOPT_RETURNTRANSFER=>true, CURLOPT_POST=>true, CURLOPT_POSTFIELDS=>$post]);
  $res = json_decode(curl_exec($ch), true);
  curl_close($ch);

  if (($res['status'] ?? 0) == 1) {
    echo "Token: " . $res['request'] . "\n";
    break;
  }
  if (($res['request'] ?? '') === 'CAPCHA_NOT_READY') continue;
  die('Error: ' . print_r($res, true));
}

Cloudflare Turnstile

method=turnstile

turnstile

Parameters

ParameterTypeReqNotes
keystringyesAPI key
methodstringyesturnstile
sitekeystringyesSitekey
pageurlstringyesPage URL
actionstringnoaction
cdatastringnocdata
jsonintno1 = JSON

Example PHP

$apiKey  = 'YOUR_API_KEY';
$siteKey = 'your-turnstile-sitekey';
$pageUrl = 'https://example.com/page';

// 1. Submit task
$post = [
  'key'     => $apiKey,
  'method'  => 'turnstile',
  'sitekey' => $siteKey,
  'pageurl' => $pageUrl,
  'json'    => '1'
];
$ch = curl_init('http://api.tertuyul.my.id/in.php');
curl_setopt_array($ch, [
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_POST           => true,
  CURLOPT_POSTFIELDS     => $post
]);
$resp = curl_exec($ch);
curl_close($ch);
$task = json_decode($resp, true);

if (($task['status'] ?? 0) != 1) {
  die('Submit error: ' . print_r($task, true));
}
$taskId = $task['request'];

// 2. Poll result
while (true) {
  sleep(5);
  $post = ['key'=>$apiKey, 'action'=>'get', 'id'=>$taskId, 'json'=>'1'];
  $ch = curl_init('http://api.tertuyul.my.id/res.php');
  curl_setopt_array($ch, [CURLOPT_RETURNTRANSFER=>true, CURLOPT_POST=>true, CURLOPT_POSTFIELDS=>$post]);
  $res = json_decode(curl_exec($ch), true);
  curl_close($ch);

  if (($res['status'] ?? 0) == 1) {
    echo "Token: " . $res['request'] . "\n";
    break;
  }
  if (($res['request'] ?? '') === 'CAPCHA_NOT_READY') continue;
  die('Error: ' . print_r($res, true));
}

Cloudflare cf_clearance

method=cloudflare — returns cf_clearance + user-agent

cloudflare

Parameters

ParameterTypeReqNotes
keystringyesAPI key
methodstringyescloudflare
pageurlstringyesPage URL
proxystringyeslogin:pass@ip:port
jsonintno1 = JSON

Example PHP

$apiKey  = 'YOUR_API_KEY';
$pageUrl = 'https://example.com/page';
$proxy   = 'login:pass@ip:port'; // required

// 1. Submit task
$post = [
  'key'     => $apiKey,
  'method'  => 'cloudflare',
  'pageurl' => $pageUrl,
  'proxy'   => $proxy,
  'json'    => '1'
];
$ch = curl_init('http://api.tertuyul.my.id/in.php');
curl_setopt_array($ch, [
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_POST           => true,
  CURLOPT_POSTFIELDS     => $post
]);
$resp = curl_exec($ch);
curl_close($ch);
$task = json_decode($resp, true);

if (($task['status'] ?? 0) != 1) {
  die('Submit error: ' . print_r($task, true));
}
$taskId = $task['request'];

// 2. Poll result
while (true) {
  sleep(8); // cloudflare can take longer
  $post = ['key'=>$apiKey, 'action'=>'get', 'id'=>$taskId, 'json'=>'1'];
  $ch = curl_init('http://api.tertuyul.my.id/res.php');
  curl_setopt_array($ch, [CURLOPT_RETURNTRANSFER=>true, CURLOPT_POST=>true, CURLOPT_POSTFIELDS=>$post]);
  $res = json_decode(curl_exec($ch), true);
  curl_close($ch);

  if (($res['status'] ?? 0) == 1) {
    // usually returns cf_clearance cookie + user-agent
    print_r($res['request']);
    break;
  }
  if (($res['request'] ?? '') === 'CAPCHA_NOT_READY') continue;
  die('Error: ' . print_r($res, true));
}

IconCaptcha SPECIAL

Different parameter structure. Use request=iconcaptcha + method=...

⚠ Special Format
All icon challenges use request=iconcaptcha. Change the method value according to the challenge type. Click a method on the left to see its details.

Supported Methods

size_order
number_order
icon_order
rscaptcha
upside
fontawesome
anticap
iconflip
bitcotask

Common Parameters

ParameterTypeReqNotes
keystringyesAPI key
requeststringyesiconcaptcha
methodstringyessub-type
bodyBase64yesCaptcha image (raw base64)
jsonintno1 = JSON

IconCaptcha → size_order

Order icons by size. Response: order coordinate

size_order

Parameters

ParameterTypeReqNotes
keystringyesAPI key
requeststringyesiconcaptcha
methodstringyessize_order
bodyBase64yesCaptcha image (raw base64)
taskstringyesCLICK SMALLEST TO LARGEST
jsonintno1 = JSON

Example PHP

$apiKey = 'YOUR_API_KEY';
$img    = base64_encode(file_get_contents('images/size_order.png'));

// 1. Submit task
$post = [
  'key'     => $apiKey,
  'request' => 'iconcaptcha',
  'method'  => 'size_order',
  'body'    => $img,
  'task'    => 'CLICK SMALLEST TO LARGEST',
  'json'    => '1'
];
$ch = curl_init('http://api.tertuyul.my.id/in.php');
curl_setopt_array($ch, [
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_POST           => true,
  CURLOPT_POSTFIELDS     => $post
]);
$resp = curl_exec($ch);
curl_close($ch);
$task = json_decode($resp, true);

if (($task['status'] ?? 0) != 1) {
  die('Submit error: ' . print_r($task, true));
}
$taskId = $task['request'];

// 2. Poll result
while (true) {
  sleep(3);
  $post = ['key'=>$apiKey, 'action'=>'get', 'id'=>$taskId, 'json'=>'1'];
  $ch = curl_init('http://api.tertuyul.my.id/res.php');
  curl_setopt_array($ch, [CURLOPT_RETURNTRANSFER=>true, CURLOPT_POST=>true, CURLOPT_POSTFIELDS=>$post]);
  $res = json_decode(curl_exec($ch), true);
  curl_close($ch);

  if (($res['status'] ?? 0) == 1) {
    echo "Order: " . $res['request'] . "\n"; // e.g. 2,0,1,3
    break;
  }
  if (($res['request'] ?? '') === 'CAPCHA_NOT_READY') continue;
  die('Error: ' . print_r($res, true));
}

IconCaptcha → number_order

Order icons. Response: order coordinate

number_order

Parameters

ParameterTypeReqNotes
keystringyesAPI key
requeststringyesiconcaptcha
methodstringyesnumber_order
bodyBase64yesCaptcha image (raw base64)
taskstringyesclick low to high
jsonintno1 = JSON

Example PHP

$apiKey = 'YOUR_API_KEY';
$img    = base64_encode(file_get_contents('images/number_order.png'));

// 1. Submit task
$post = [
  'key'     => $apiKey,
  'request' => 'iconcaptcha',
  'method'  => 'number_order',
  'body'    => $img,
  'task'    => 'click low to high',
  'json'    => '1'
];
$ch = curl_init('http://api.tertuyul.my.id/in.php');
curl_setopt_array($ch, [
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_POST           => true,
  CURLOPT_POSTFIELDS     => $post
]);
$resp = curl_exec($ch);
curl_close($ch);
$task = json_decode($resp, true);

if (($task['status'] ?? 0) != 1) {
  die('Submit error: ' . print_r($task, true));
}
$taskId = $task['request'];

// 2. Poll result
while (true) {
  sleep(3);
  $post = ['key'=>$apiKey, 'action'=>'get', 'id'=>$taskId, 'json'=>'1'];
  $ch = curl_init('http://api.tertuyul.my.id/res.php');
  curl_setopt_array($ch, [CURLOPT_RETURNTRANSFER=>true, CURLOPT_POST=>true, CURLOPT_POSTFIELDS=>$post]);
  $res = json_decode(curl_exec($ch), true);
  curl_close($ch);

  if (($res['status'] ?? 0) == 1) {
    echo "Order: " . $res['request'] . "\n"; // e.g. 2,0,1,3
    break;
  }
  if (($res['request'] ?? '') === 'CAPCHA_NOT_READY') continue;
  die('Error: ' . print_r($res, true));
}

IconCaptcha → icon_order

Order icons. Response: order coordinate & index

icon_order

Parameters

ParameterTypeReqNotes
keystringyesAPI key
requeststringyesiconcaptcha
methodstringyesicon_order
bodyBase64yesCaptcha image (raw base64)
jsonintno1 = JSON

Example PHP

$apiKey = 'YOUR_API_KEY';
$img    = base64_encode(file_get_contents('images/icon_order.png'));

// 1. Submit task
$post = [
  'key'     => $apiKey,
  'request' => 'iconcaptcha',
  'method'  => 'icon_order',
  'body'    => $img,
  'json'    => '1'
];
$ch = curl_init('http://api.tertuyul.my.id/in.php');
curl_setopt_array($ch, [
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_POST           => true,
  CURLOPT_POSTFIELDS     => $post
]);
$resp = curl_exec($ch);
curl_close($ch);
$task = json_decode($resp, true);

if (($task['status'] ?? 0) != 1) {
  die('Submit error: ' . print_r($task, true));
}
$taskId = $task['request'];

// 2. Poll result
while (true) {
  sleep(3);
  $post = ['key'=>$apiKey, 'action'=>'get', 'id'=>$taskId, 'json'=>'1'];
  $ch = curl_init('http://api.tertuyul.my.id/res.php');
  curl_setopt_array($ch, [CURLOPT_RETURNTRANSFER=>true, CURLOPT_POST=>true, CURLOPT_POSTFIELDS=>$post]);
  $res = json_decode(curl_exec($ch), true);
  curl_close($ch);

  if (($res['status'] ?? 0) == 1) {
    echo "Order: " . $res['request'] . "\n"; // e.g. 2,0,1,3
    break;
  }
  if (($res['request'] ?? '') === 'CAPCHA_NOT_READY') continue;
  die('Error: ' . print_r($res, true));
}

IconCaptcha → rscaptcha

Detect icon position. uniqe / different

rscaptcha

Parameters

ParameterTypeReqNotes
keystringyesAPI key
requeststringyesiconcaptcha
methodstringyesrscaptcha
bodyBase64yesCaptcha image (raw base64)
jsonintno1 = JSON

Example PHP

$apiKey = 'YOUR_API_KEY';
$img    = base64_encode(file_get_contents('images/rscaptcha.png'));

$post = [
  'key'     => $apiKey,
  'request' => 'iconcaptcha',
  'method'  => 'rscaptcha',
  'body'    => $img,
  'json'    => '1'
];
$ch = curl_init('http://api.tertuyul.my.id/in.php');
curl_setopt_array($ch, [
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_POST           => true,
  CURLOPT_POSTFIELDS     => $post
]);
$task = json_decode(curl_exec($ch), true);
curl_close($ch);

if (($task['status'] ?? 0) != 1) die(print_r($task, true));
$taskId = $task['request'];

while (true) {
  sleep(3);
  $post = ['key'=>$apiKey,'action'=>'get','id'=>$taskId,'json'=>'1'];
  $ch = curl_init('http://api.tertuyul.my.id/res.php');
  curl_setopt_array($ch, [CURLOPT_RETURNTRANSFER=>true,CURLOPT_POST=>true,CURLOPT_POSTFIELDS=>$post]);
  $res = json_decode(curl_exec($ch), true);
  curl_close($ch);
  if (($res['status'] ?? 0) == 1) { echo "Coords: ".$res['request']."\n"; break; }
  if (($res['request'] ?? '') === 'CAPCHA_NOT_READY') continue;
  die(print_r($res, true));
}

IconCaptcha → upside

Detect rotated / upside-down icons. response coordinate & index

upside upside2 upside3 upside4 upside5 upside6 upside7 upside8 upside9

Parameters

ParameterTypeReqNotes
keystringyesAPI key
requeststringyesiconcaptcha
methodstringyesupside
bodyBase64yesCaptcha image (raw base64)
jsonintno1 = JSON

Example PHP

$apiKey = 'YOUR_API_KEY';
$img    = base64_encode(file_get_contents('images/upside.png'));

$post = [
  'key'     => $apiKey,
  'request' => 'iconcaptcha',
  'method'  => 'upside',
  'body'    => $img,
  'json'    => '1'
];
$ch = curl_init('http://api.tertuyul.my.id/in.php');
curl_setopt_array($ch, [
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_POST           => true,
  CURLOPT_POSTFIELDS     => $post
]);
$task = json_decode(curl_exec($ch), true);
curl_close($ch);

if (($task['status'] ?? 0) != 1) die(print_r($task, true));
$taskId = $task['request'];

while (true) {
  sleep(3);
  $post = ['key'=>$apiKey,'action'=>'get','id'=>$taskId,'json'=>'1'];
  $ch = curl_init('http://api.tertuyul.my.id/res.php');
  curl_setopt_array($ch, [CURLOPT_RETURNTRANSFER=>true,CURLOPT_POST=>true,CURLOPT_POSTFIELDS=>$post]);
  $res = json_decode(curl_exec($ch), true);
  curl_close($ch);
  if (($res['status'] ?? 0) == 1) { echo "Result: ".$res['request']."\n"; break; }
  if (($res['request'] ?? '') === 'CAPCHA_NOT_READY') continue;
  die(print_r($res, true));
}

IconCaptcha → iconfinder

Find the least displayed icon.

iconfinder

Parameters

ParameterTypeReqNotes
keystringyesAPI key
requeststringyesiconcaptcha
methodstringyesiconfinder
bodyBase64yesCaptcha image (raw base64)
jsonintno1 = JSON

Example PHP

$apiKey = 'YOUR_API_KEY';
$img    = base64_encode(file_get_contents('images/iconfinder.png'));

$post = [
  'key'     => $apiKey,
  'request' => 'iconcaptcha',
  'method'  => 'iconfinder',
  'body'    => $img,
  'json'    => '1'
];
$ch = curl_init('http://api.tertuyul.my.id/in.php');
curl_setopt_array($ch, [
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_POST           => true,
  CURLOPT_POSTFIELDS     => $post
]);
$task = json_decode(curl_exec($ch), true);
curl_close($ch);

if (($task['status'] ?? 0) != 1) die(print_r($task, true));
$taskId = $task['request'];

while (true) {
  sleep(3);
  $post = ['key'=>$apiKey,'action'=>'get','id'=>$taskId,'json'=>'1'];
  $ch = curl_init('http://api.tertuyul.my.id/res.php');
  curl_setopt_array($ch, [CURLOPT_RETURNTRANSFER=>true,CURLOPT_POST=>true,CURLOPT_POSTFIELDS=>$post]);
  $res = json_decode(curl_exec($ch), true);
  curl_close($ch);
  if (($res['status'] ?? 0) == 1) { echo "Result: ".$res['request']."\n"; break; }
  if (($res['request'] ?? '') === 'CAPCHA_NOT_READY') continue;
  die(print_r($res, true));
}

IconCaptcha → iconflip

Detect flipped icons.

iconflip

Parameters

ParameterTypeReqNotes
keystringyesAPI key
requeststringyesiconcaptcha
methodstringyesiconflip
bodyBase64yesCaptcha image (raw base64)
jsonintno1 = JSON

Example PHP

$apiKey = 'YOUR_API_KEY';
$img    = base64_encode(file_get_contents('images/iconflip.png'));

$post = [
  'key'     => $apiKey,
  'request' => 'iconcaptcha',
  'method'  => 'iconflip',
  'body'    => $img,
  'json'    => '1'
];
$ch = curl_init('http://api.tertuyul.my.id/in.php');
curl_setopt_array($ch, [
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_POST           => true,
  CURLOPT_POSTFIELDS     => $post
]);
$task = json_decode(curl_exec($ch), true);
curl_close($ch);

if (($task['status'] ?? 0) != 1) die(print_r($task, true));
$taskId = $task['request'];

while (true) {
  sleep(3);
  $post = ['key'=>$apiKey,'action'=>'get','id'=>$taskId,'json'=>'1'];
  $ch = curl_init('http://api.tertuyul.my.id/res.php');
  curl_setopt_array($ch, [CURLOPT_RETURNTRANSFER=>true,CURLOPT_POST=>true,CURLOPT_POSTFIELDS=>$post]);
  $res = json_decode(curl_exec($ch), true);
  curl_close($ch);
  if (($res['status'] ?? 0) == 1) { echo "Result: ".$res['request']."\n"; break; }
  if (($res['request'] ?? '') === 'CAPCHA_NOT_READY') continue;
  die(print_r($res, true));
}

IconCaptcha → fontawesome

Returns icon name (FontAwesome), e.g. fa-subway

fontawesome
h1 h2 h3

Parameters

ParameterTypeReqNotes
keystringyesAPI key
requeststringyesiconcaptcha
methodstringyesfontawesome
bodyBase64yesCaptcha image (raw base64)
jsonintno1 = JSON

Example PHP

$apiKey = 'YOUR_API_KEY';
$img    = base64_encode(file_get_contents('images/fontawesomemain.png'));

$post = [
  'key'     => $apiKey,
  'request' => 'iconcaptcha',
  'method'  => 'fontawesome',
  'body'    => $img,
  'json'    => '1'
];
$ch = curl_init('http://api.tertuyul.my.id/in.php');
curl_setopt_array($ch, [
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_POST           => true,
  CURLOPT_POSTFIELDS     => $post
]);
$task = json_decode(curl_exec($ch), true);
curl_close($ch);

if (($task['status'] ?? 0) != 1) die(print_r($task, true));
$taskId = $task['request'];

while (true) {
  sleep(3);
  $post = ['key'=>$apiKey,'action'=>'get','id'=>$taskId,'json'=>'1'];
  $ch = curl_init('http://api.tertuyul.my.id/res.php');
  curl_setopt_array($ch, [CURLOPT_RETURNTRANSFER=>true,CURLOPT_POST=>true,CURLOPT_POSTFIELDS=>$post]);
  $res = json_decode(curl_exec($ch), true);
  curl_close($ch);
  if (($res['status'] ?? 0) == 1) { echo "Icon: ".$res['request']."\n"; break; }
  if (($res['request'] ?? '') === 'CAPCHA_NOT_READY') continue;
  die(print_r($res, true));
}

IconCaptcha → anticap

Returns icon name (AntiCap style), e.g. dragon

anticap

Parameters

ParameterTypeReqNotes
keystringyesAPI key
requeststringyesiconcaptcha
methodstringyesanticap
bodyBase64yesCaptcha image (raw base64)
jsonintno1 = JSON

Example PHP

$apiKey = 'YOUR_API_KEY';
$img    = base64_encode(file_get_contents('images/anticap.png'));

$post = [
  'key'     => $apiKey,
  'request' => 'iconcaptcha',
  'method'  => 'anticap',
  'body'    => $img,
  'json'    => '1'
];
$ch = curl_init('http://api.tertuyul.my.id/in.php');
curl_setopt_array($ch, [
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_POST           => true,
  CURLOPT_POSTFIELDS     => $post
]);
$task = json_decode(curl_exec($ch), true);
curl_close($ch);

if (($task['status'] ?? 0) != 1) die(print_r($task, true));
$taskId = $task['request'];

while (true) {
  sleep(3);
  $post = ['key'=>$apiKey,'action'=>'get','id'=>$taskId,'json'=>'1'];
  $ch = curl_init('http://api.tertuyul.my.id/res.php');
  curl_setopt_array($ch, [CURLOPT_RETURNTRANSFER=>true,CURLOPT_POST=>true,CURLOPT_POSTFIELDS=>$post]);
  $res = json_decode(curl_exec($ch), true);
  curl_close($ch);
  if (($res['status'] ?? 0) == 1) { echo "Icon: ".$res['request']."\n"; break; }
  if (($res['request'] ?? '') === 'CAPCHA_NOT_READY') continue;
  die(print_r($res, true));
}

IconCaptcha → bitcotask

Detect icons move.

bitcotask

Parameters

ParameterTypeReqNotes
keystringyesAPI key
requeststringyesiconcaptcha
methodstringyesbitcotask
bodyBase64yesCaptcha image (raw base64)
jsonintno1 = JSON

Example PHP

$apiKey = 'YOUR_API_KEY';
$img    = base64_encode(file_get_contents('images/bitcotask.gif'));

$post = [
  'key'     => $apiKey,
  'request' => 'iconcaptcha',
  'method'  => 'bitcotask',
  'body'    => $img,
  'json'    => '1'
];
$ch = curl_init('http://api.tertuyul.my.id/in.php');
curl_setopt_array($ch, [
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_POST           => true,
  CURLOPT_POSTFIELDS     => $post
]);
$task = json_decode(curl_exec($ch), true);
curl_close($ch);

if (($task['status'] ?? 0) != 1) die(print_r($task, true));
$taskId = $task['request'];

while (true) {
  sleep(3);
  $post = ['key'=>$apiKey,'action'=>'get','id'=>$taskId,'json'=>'1'];
  $ch = curl_init('http://api.tertuyul.my.id/res.php');
  curl_setopt_array($ch, [CURLOPT_RETURNTRANSFER=>true,CURLOPT_POST=>true,CURLOPT_POSTFIELDS=>$post]);
  $res = json_decode(curl_exec($ch), true);
  curl_close($ch);
  if (($res['status'] ?? 0) == 1) { echo "Result: ".$res['request']."\n"; break; }
  if (($res['request'] ?? '') === 'CAPCHA_NOT_READY') continue;
  die(print_r($res, true));
}

AntiBot

Image order. Submit main + numbered images (1,2,3...)

antibot
a1 a2 a3 a4

Parameters

ParameterTypeReq
keystringyes
methodstringantibot
mainBase64yes
1 / 2 / 3Base64yes

Example PHP

$apiKey = 'YOUR_API_KEY';

$post = [
  'key'    => $apiKey,
  'method' => 'antibot',
  'main'   => base64_encode(file_get_contents('main.png')),
  '1'      => base64_encode(file_get_contents('1.png')),
  '2'      => base64_encode(file_get_contents('2.png')),
  '3'      => base64_encode(file_get_contents('3.png')),
  'json'   => '1'
];
$ch = curl_init('http://api.tertuyul.my.id/in.php');
curl_setopt_array($ch, [
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_POST           => true,
  CURLOPT_POSTFIELDS     => $post
]);
$task = json_decode(curl_exec($ch), true);
curl_close($ch);

if (($task['status'] ?? 0) != 1) die(print_r($task, true));
$taskId = $task['request'];

while (true) {
  sleep(3);
  $post = ['key'=>$apiKey,'action'=>'get','id'=>$taskId,'json'=>'1'];
  $ch = curl_init('http://api.tertuyul.my.id/res.php');
  curl_setopt_array($ch, [CURLOPT_RETURNTRANSFER=>true,CURLOPT_POST=>true,CURLOPT_POSTFIELDS=>$post]);
  $res = json_decode(curl_exec($ch), true);
  curl_close($ch);
  if (($res['status'] ?? 0) == 1) { echo "Order: ".$res['request']."\n"; break; }
  if (($res['request'] ?? '') === 'CAPCHA_NOT_READY') continue;
  die(print_r($res, true));
}

Sliders

method=sliders

sliders

Parameters

ParameterTypeReq
keystringyes
methodstringsliders
pageurlstringyes
bodyBase64yes
thumb_width / thumb_heightstringyes
display_x / display_ystringyes

Example PHP

$apiKey = 'YOUR_API_KEY';

$post = [
  'key'          => $apiKey,
  'method'       => 'sliders',
  'pageurl'      => 'https://claimtrx.com',
  'body'         => base64_encode(file_get_contents('sliders.png')),
  'thumb_width'  => '111',
  'thumb_height' => '111',
  'display_x'    => '111',
  'display_y'    => '111',
  'json'         => '1'
];
$ch = curl_init('http://api.tertuyul.my.id/in.php');
curl_setopt_array($ch, [
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_POST           => true,
  CURLOPT_POSTFIELDS     => $post
]);
$task = json_decode(curl_exec($ch), true);
curl_close($ch);

if (($task['status'] ?? 0) != 1) die(print_r($task, true));
$taskId = $task['request'];

while (true) {
  sleep(3);
  $post = ['key'=>$apiKey,'action'=>'get','id'=>$taskId,'json'=>'1'];
  $ch = curl_init('http://api.tertuyul.my.id/res.php');
  curl_setopt_array($ch, [CURLOPT_RETURNTRANSFER=>true,CURLOPT_POST=>true,CURLOPT_POSTFIELDS=>$post]);
  $res = json_decode(curl_exec($ch), true);
  curl_close($ch);
  if (($res['status'] ?? 0) == 1) { echo "Result: ".$res['request']."\n"; break; }
  if (($res['request'] ?? '') === 'CAPCHA_NOT_READY') continue;
  die(print_r($res, true));
}

TeaserFast

method=teaserfast

teaserfast

Parameters

ParameterTypeReq
keystringyes
methodstringteaserfast
bodyBase64yes
jsonintno

Example PHP

$apiKey = 'YOUR_API_KEY';

$post = [
  'key'    => $apiKey,
  'method' => 'teaserfast',
  'body'   => base64_encode(file_get_contents('teaserfast.png')),
  'json'   => '1'
];
$ch = curl_init('http://api.tertuyul.my.id/in.php');
curl_setopt_array($ch, [
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_POST           => true,
  CURLOPT_POSTFIELDS     => $post
]);
$task = json_decode(curl_exec($ch), true);
curl_close($ch);

if (($task['status'] ?? 0) != 1) die(print_r($task, true));
$taskId = $task['request'];

while (true) {
  sleep(3);
  $post = ['key'=>$apiKey,'action'=>'get','id'=>$taskId,'json'=>'1'];
  $ch = curl_init('http://api.tertuyul.my.id/res.php');
  curl_setopt_array($ch, [CURLOPT_RETURNTRANSFER=>true,CURLOPT_POST=>true,CURLOPT_POSTFIELDS=>$post]);
  $res = json_decode(curl_exec($ch), true);
  curl_close($ch);
  if (($res['status'] ?? 0) == 1) { echo "Result: ".$res['request']."\n"; break; }
  if (($res['request'] ?? '') === 'CAPCHA_NOT_READY') continue;
  die(print_r($res, true));
}

Universal OCR

method=universal — returns recognized text

universal

Parameters

ParameterTypeReqNotes
keystringyes
methodstringyesuniversal
bodyBase64yes
phraseintno1 = ≥2 words
numericintno0-4 preference
calcintno1 = calculation
langstringnoen, ru, id...

Example PHP

$apiKey = 'YOUR_API_KEY';

$post = [
  'key'    => $apiKey,
  'method' => 'universal',
  'body'   => base64_encode(file_get_contents('universal.png')),
  // 'phrase'  => '1',
  // 'numeric' => '0',
  // 'calc'    => '1',
  // 'lang'    => 'en',
  'json'   => '1'
];
$ch = curl_init('http://api.tertuyul.my.id/in.php');
curl_setopt_array($ch, [
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_POST           => true,
  CURLOPT_POSTFIELDS     => $post
]);
$task = json_decode(curl_exec($ch), true);
curl_close($ch);

if (($task['status'] ?? 0) != 1) die(print_r($task, true));
$taskId = $task['request'];

while (true) {
  sleep(3);
  $post = ['key'=>$apiKey,'action'=>'get','id'=>$taskId,'json'=>'1'];
  $ch = curl_init('http://api.tertuyul.my.id/res.php');
  curl_setopt_array($ch, [CURLOPT_RETURNTRANSFER=>true,CURLOPT_POST=>true,CURLOPT_POSTFIELDS=>$post]);
  $res = json_decode(curl_exec($ch), true);
  curl_close($ch);
  if (($res['status'] ?? 0) == 1) { echo "Text: ".$res['request']."\n"; break; }
  if (($res['request'] ?? '') === 'CAPCHA_NOT_READY') continue;
  die(print_r($res, true));
}

User Info

/res.php?action=userinfo&key=...&json=1

Example PHP

$apiKey = 'YOUR_API_KEY';

$post = [
  'key'    => $apiKey,
  'action' => 'userinfo',
  'json'   => '1'
];
$ch = curl_init('http://api.tertuyul.my.id/res.php');
curl_setopt_array($ch, [
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_POST           => true,
  CURLOPT_POSTFIELDS     => $post
]);
$resp = curl_exec($ch);
curl_close($ch);

$data = json_decode($resp, true);
print_r($data);
// Example: {"email":"[email protected]","balance":"10000.00"}

Result Polling

/res.php?action=get&id=TASK_ID&key=...&json=1

Example PHP

function get_result($apiKey, $taskId) {
  $post = [
    'key'    => $apiKey,
    'action' => 'get',
    'id'     => $taskId,
    'json'   => '1'
  ];
  $ch = curl_init('http://api.tertuyul.my.id/res.php');
  curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_POST           => true,
    CURLOPT_POSTFIELDS     => $post
  ]);
  $res = curl_exec($ch);
  curl_close($ch);
  return json_decode($res, true);
}

// Usage after you have $taskId from submit:
while (true) {
  $answer = get_result($apiKey, $taskId);
  if (!empty($answer['status']) && $answer['status'] == 1) {
    echo "Solved: " . $answer['request'] . "\n";
    break;
  }
  if (($answer['request'] ?? '') === 'CAPCHA_NOT_READY') {
    sleep(5);
    continue;
  }
  // other error
  print_r($answer);
  break;
}

Error Codes

ErrorDescriptionAction
CAPCHA_NOT_READYNot solved yetWait 5-10s, retry
ERROR_REQUEST_COOLDOWNAPI cooldownRetry after 5s
ERROR_CAPTCHA_UNSOLVABLEToo hard / unsupportedRetry or check type
ERROR_CAPTCHA_TIMEOUTTimeout 5 minCreate new task
ERROR_WRONG_USER_KEYKey format invalidCheck key (32 chars)
ERROR_KEY_DOES_NOT_EXISTKey not foundCheck key
ERROR_ZERO_BALANCENo balanceTop up
ERROR_INVALID_IMAGEBad imageSend valid base64
ERROR_INVALID_METHODUnknown methodCheck method name
ERROR_NO_SLOT_AVAILABLENo solver slotWait & retry
ERROR_PROXY_CONNECTION_FAILEDProxy failChange proxy
ERROR_INTERNAL_SERVERServer errorRetry later

Full Working Example

function submit_task(array $post) {
  $ch = curl_init('http://api.tertuyul.my.id/in.php');
  curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_POST           => true,
    CURLOPT_POSTFIELDS     => $post
  ]);
  $r = curl_exec($ch);
  curl_close($ch);
  return json_decode($r, true);
}

function get_result($apiKey, $taskId) {
  $post = [
    'key'    => $apiKey,
    'action' => 'get',
    'id'     => $taskId,
    'json'   => '1'
  ];
  $ch = curl_init('http://api.tertuyul.my.id/res.php');
  curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_POST           => true,
    CURLOPT_POSTFIELDS     => $post
  ]);
  $res = curl_exec($ch);
  curl_close($ch);
  return json_decode($res, true);
}

// ===== Example: IconCaptcha size_order =====
$apiKey = 'YOUR_API_KEY';

$post = [
  'key'     => $apiKey,
  'request' => 'iconcaptcha',
  'method'  => 'size_order',
  'body'    => base64_encode(file_get_contents('images/size_order.png')),
  'json'    => '1'
];

$task = submit_task($post);
if (($task['status'] ?? 0) != 1) {
  print_r($task);
  die('Submit failed');
}
$taskId = $task['request'];
echo "Task ID: $taskId\n";

while (true) {
  sleep(3);
  $res = get_result($apiKey, $taskId);
  if (!empty($res['status']) && $res['status'] == 1) {
    echo "Solved: ";
    print_r($res['request']);
    break;
  }
  if (($res['request'] ?? '') === 'CAPCHA_NOT_READY') {
    continue;
  }
  echo "Error: ";
  print_r($res);
  break;
}