MTCaptcha Solver NEW

Solve MTCaptcha (image → text) with a single API call. ~98% accuracy, <3s average response.

MTCaptcha presents a distorted text image that the user must type. Send that challenge image to the endpoint below and you get back the predicted text. You can submit the image as a file upload or as a base64 string (handy when you extract the image straight from the page).

Endpoint: POST https://captchakings.com/api/mtcaptcha.php
Cost: $0.001 per successful solve ($1.00 / 1000). Auth: your API key.

Request parameters

ParameterTypeRequiredDescription
imagefileOne of theseMultipart file upload of the captcha image (JPG/PNG/GIF).
image_base64stringOne of theseBase64 image (data URL or raw base64).
api_keystringYes*Your API key. *Can be sent via Authorization: Bearer or X-API-Key header instead.

Response

{
  "success": true,
  "data": {
    "type": "mtcaptcha",
    "prediction": "ab3kf",
    "confidence": "98%",
    "confidence_raw": 0.98,
    "process_time": 1.2
  },
  "billing": { "amount_charged": "0.001000", "balance_remaining": "4.999000", "plan": "starter" },
  "processing_time": "1.2s",
  "message": "MTCaptcha processed successfully"
}

Python

Using our SDK (pip install captchakings):

from captchakings import CaptchaKings

ck = CaptchaKings("ck_your_api_key_here")

# From a file
result = ck.solve_mtcaptcha("mtcaptcha.jpg")
print(result.text, result.confidence)

# From base64 (e.g. extracted from the page)
result = ck.solve_mtcaptcha(image_base64="data:image/jpeg;base64,/9j/4AAQ...")
print(result.text)

Plain requests (no SDK):

import requests

with open("mtcaptcha.jpg", "rb") as f:
    r = requests.post(
        "https://captchakings.com/api/mtcaptcha.php",
        headers={"Authorization": "Bearer ck_your_api_key_here"},
        files={"image": f},
        timeout=60,
    )

data = r.json()
if data["success"]:
    print("Text:", data["data"]["prediction"])
    print("Balance left: $", data["billing"]["balance_remaining"])
else:
    print("Error:", data["error"])

Node.js

Using our SDK (npm install captchakings):

const CaptchaKings = require('captchakings');

const ck = new CaptchaKings('ck_your_api_key_here');

(async () => {
  // From a file
  const result = await ck.solveMtcaptcha({ imagePath: 'mtcaptcha.jpg' });
  console.log(result.text, result.confidence);

  // From base64
  const r2 = await ck.solveMtcaptcha({ imageBase64: 'data:image/jpeg;base64,/9j/4AAQ...' });
  console.log(r2.text);
})();

Plain fetch (Node 18+):

import fs from 'fs';

const fd = new FormData();
fd.append('image', new Blob([fs.readFileSync('mtcaptcha.jpg')]), 'mtcaptcha.jpg');

const res = await fetch('https://captchakings.com/api/mtcaptcha.php', {
  method: 'POST',
  headers: { 'Authorization': 'Bearer ck_your_api_key_here' },
  body: fd,
});

const data = await res.json();
if (data.success) console.log('Text:', data.data.prediction);
else console.error('Error:', data.error);

PHP

<?php
$ch = curl_init('https://captchakings.com/api/mtcaptcha.php');
curl_setopt_array($ch, [
    CURLOPT_POST => true,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER => ['Authorization: Bearer ck_your_api_key_here'],
    CURLOPT_POSTFIELDS => [
        'image' => new CURLFile('/path/to/mtcaptcha.jpg'),
    ],
]);

$response = curl_exec($ch);
curl_close($ch);
$result = json_decode($response, true);

if ($result['success']) {
    echo "Text: " . $result['data']['prediction'] . PHP_EOL;
    echo "Balance left: $" . $result['billing']['balance_remaining'] . PHP_EOL;
} else {
    echo "Error: " . $result['error'];
}

cURL

# File upload
curl -X POST https://captchakings.com/api/mtcaptcha.php \
  -H "Authorization: Bearer ck_your_api_key_here" \
  -F "[email protected]"

# Base64
curl -X POST https://captchakings.com/api/mtcaptcha.php \
  -H "Authorization: Bearer ck_your_api_key_here" \
  --data-urlencode "image_base64=data:image/jpeg;base64,/9j/4AAQ..."
Tip: MTCaptcha refreshes its image on wrong answers. If a solve returns low confidence, fetch the new image and retry. Retries are billed per successful solve.

Need another captcha type? See the full endpoint list or contact support.