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
| Endpoint | Method | Notes |
|---|---|---|
/in.php | POST | Submit captcha task |
/res.php | GET / POST | Get result or userinfo |
ShortLinks
Skip shortlink pages. Use method=shortlink.
Parameters
| Parameter | Type | Req | Notes |
|---|---|---|---|
| key | string | yes | API key |
| method | string | yes | shortlink |
| pageurl | string | yes | Target URL |
| json | int | no | 1 = JSON |
Example PHP
$apiKey = 'YOUR_API_KEY';
$pageUrl = 'https://example.com/shortlink';
// 1. Submit task
$post = [
'key' => $apiKey,
'method' => 'shortlink',
'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'];
echo "Task ID: $taskId\n";
// 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 "Solved: " . $res['request'] . "\n";
break;
}
if (($res['request'] ?? '') === 'CAPCHA_NOT_READY') {
continue;
}
die('Error: ' . print_r($res, true));
}
hCaptcha
Solve hCaptcha token. Use method=hcaptcha.
Parameters
| Parameter | Type | Req | Notes |
|---|---|---|---|
| key | string | yes | API key |
| method | string | yes | hcaptcha |
| sitekey | string | yes | Sitekey |
| pageurl | string | yes | Page URL |
| proxy | string | no | login:pass@ip:port |
| json | int | no | 1 = 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
Parameters
| Parameter | Type | Req | Notes |
|---|---|---|---|
| key | string | yes | API key |
| method | string | yes | userrecaptcha |
| googlekey | string | yes | Site key |
| pageurl | string | yes | Page URL |
| invisible | int | no | 1 = invisible |
| proxy | string | no | login:pass@ip:port |
| json | int | no | 1 = 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
Parameters
| Parameter | Type | Req | Notes |
|---|---|---|---|
| key | string | yes | API key |
| method | string | yes | userrecaptcha |
| googlekey | string | yes | Site key |
| pageurl | string | yes | Page URL |
| version | string | yes | v3 |
| action | string | yes | e.g. verify |
| json | int | no | 1 = 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
Parameters
| Parameter | Type | Req | Notes |
|---|---|---|---|
| key | string | yes | API key |
| method | string | yes | turnstile |
| sitekey | string | yes | Sitekey |
| pageurl | string | yes | Page URL |
| action | string | no | action |
| cdata | string | no | cdata |
| json | int | no | 1 = 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
Parameters
| Parameter | Type | Req | Notes |
|---|---|---|---|
| key | string | yes | API key |
| method | string | yes | cloudflare |
| pageurl | string | yes | Page URL |
| proxy | string | yes | login:pass@ip:port |
| json | int | no | 1 = 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=...
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
Common Parameters
| Parameter | Type | Req | Notes |
|---|---|---|---|
| key | string | yes | API key |
| request | string | yes | iconcaptcha |
| method | string | yes | sub-type |
| body | Base64 | yes | Captcha image (raw base64) |
| json | int | no | 1 = JSON |
IconCaptcha → size_order
Order icons by size. Response: order coordinate
Parameters
| Parameter | Type | Req | Notes |
|---|---|---|---|
| key | string | yes | API key |
| request | string | yes | iconcaptcha |
| method | string | yes | size_order |
| body | Base64 | yes | Captcha image (raw base64) |
| task | string | yes | CLICK SMALLEST TO LARGEST |
| json | int | no | 1 = 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
Parameters
| Parameter | Type | Req | Notes |
|---|---|---|---|
| key | string | yes | API key |
| request | string | yes | iconcaptcha |
| method | string | yes | number_order |
| body | Base64 | yes | Captcha image (raw base64) |
| task | string | yes | click low to high |
| json | int | no | 1 = 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
Parameters
| Parameter | Type | Req | Notes |
|---|---|---|---|
| key | string | yes | API key |
| request | string | yes | iconcaptcha |
| method | string | yes | icon_order |
| body | Base64 | yes | Captcha image (raw base64) |
| json | int | no | 1 = 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
Parameters
| Parameter | Type | Req | Notes |
|---|---|---|---|
| key | string | yes | API key |
| request | string | yes | iconcaptcha |
| method | string | yes | rscaptcha |
| body | Base64 | yes | Captcha image (raw base64) |
| json | int | no | 1 = 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
Parameters
| Parameter | Type | Req | Notes |
|---|---|---|---|
| key | string | yes | API key |
| request | string | yes | iconcaptcha |
| method | string | yes | upside |
| body | Base64 | yes | Captcha image (raw base64) |
| json | int | no | 1 = 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.
Parameters
| Parameter | Type | Req | Notes |
|---|---|---|---|
| key | string | yes | API key |
| request | string | yes | iconcaptcha |
| method | string | yes | iconfinder |
| body | Base64 | yes | Captcha image (raw base64) |
| json | int | no | 1 = 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.
Parameters
| Parameter | Type | Req | Notes |
|---|---|---|---|
| key | string | yes | API key |
| request | string | yes | iconcaptcha |
| method | string | yes | iconflip |
| body | Base64 | yes | Captcha image (raw base64) |
| json | int | no | 1 = 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
Parameters
| Parameter | Type | Req | Notes |
|---|---|---|---|
| key | string | yes | API key |
| request | string | yes | iconcaptcha |
| method | string | yes | fontawesome |
| body | Base64 | yes | Captcha image (raw base64) |
| json | int | no | 1 = 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
Parameters
| Parameter | Type | Req | Notes |
|---|---|---|---|
| key | string | yes | API key |
| request | string | yes | iconcaptcha |
| method | string | yes | anticap |
| body | Base64 | yes | Captcha image (raw base64) |
| json | int | no | 1 = 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.
Parameters
| Parameter | Type | Req | Notes |
|---|---|---|---|
| key | string | yes | API key |
| request | string | yes | iconcaptcha |
| method | string | yes | bitcotask |
| body | Base64 | yes | Captcha image (raw base64) |
| json | int | no | 1 = 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...)
Parameters
| Parameter | Type | Req |
|---|---|---|
| key | string | yes |
| method | string | antibot |
| main | Base64 | yes |
| 1 / 2 / 3 | Base64 | yes |
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
Parameters
| Parameter | Type | Req |
|---|---|---|
| key | string | yes |
| method | string | sliders |
| pageurl | string | yes |
| body | Base64 | yes |
| thumb_width / thumb_height | string | yes |
| display_x / display_y | string | yes |
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));
}
Universal OCR
method=universal — returns recognized text
Parameters
| Parameter | Type | Req | Notes |
|---|---|---|---|
| key | string | yes | |
| method | string | yes | universal |
| body | Base64 | yes | |
| phrase | int | no | 1 = ≥2 words |
| numeric | int | no | 0-4 preference |
| calc | int | no | 1 = calculation |
| lang | string | no | en, 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
| Error | Description | Action |
|---|---|---|
CAPCHA_NOT_READY | Not solved yet | Wait 5-10s, retry |
ERROR_REQUEST_COOLDOWN | API cooldown | Retry after 5s |
ERROR_CAPTCHA_UNSOLVABLE | Too hard / unsupported | Retry or check type |
ERROR_CAPTCHA_TIMEOUT | Timeout 5 min | Create new task |
ERROR_WRONG_USER_KEY | Key format invalid | Check key (32 chars) |
ERROR_KEY_DOES_NOT_EXIST | Key not found | Check key |
ERROR_ZERO_BALANCE | No balance | Top up |
ERROR_INVALID_IMAGE | Bad image | Send valid base64 |
ERROR_INVALID_METHOD | Unknown method | Check method name |
ERROR_NO_SLOT_AVAILABLE | No solver slot | Wait & retry |
ERROR_PROXY_CONNECTION_FAILED | Proxy fail | Change proxy |
ERROR_INTERNAL_SERVER | Server error | Retry 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;
}