# Batas tugas bersamaan dan jeda otomatis

> Batas tugas bersamaan di YesCaptcha (ERROR_THREADS_MAXIMUM, tidak ada pemotongan poin, tidak dihitung untuk jeda), jeda otomatis saat terlalu banyak error (100 kali dalam satu menit menyebabkan jeda 5 menit, ERROR_IP_BLOCKED_5MIN), dan cache parameter tidak valid (cached).

Source: https://docs.yescaptcha.com/id/api/rate-limits/ · Last verified: 2026-10-15

> This page was machine-translated from the Chinese version. If anything differs, the Chinese version prevails: https://docs.yescaptcha.com/zh/api/rate-limits/

Agar pengenalan tetap cepat bagi semua pengguna, YesCaptcha memiliki tiga aturan perlindungan: **jumlah tugas yang sedang diproses bersamaan** dibatasi per akun (batas tugas bersamaan); `clientKey` yang menghasilkan **terlalu banyak error dalam waktu singkat akan dijeda** beberapa menit (jeda otomatis); dan **parameter yang sudah dinyatakan tidak valid** langsung mengembalikan error yang sama selama beberapa waktu (cache parameter tidak valid). Ketiga kondisi ini tidak menyebabkan pemotongan poin.

## Batas tugas bersamaan

Kami membatasi jumlah tugas yang sedang diproses pada saat yang sama per akun dan per jenis tugas. Yang dibatasi adalah jumlah tugas bersamaan, bukan jumlah permintaan per menit.

-   Tugas dihitung “sedang diproses” sejak `createTask` dipanggil sampai panggilan itu mengembalikan respons. Jenis pengenalan gambar mengembalikan hasil langsung di `createTask`, sehingga **tugas bersamaan ≈ jumlah tugas yang dikirim per detik × durasi tiap tugas**. Contoh: tiap tugas 0.5 detik dan 40 tugas dikirim per detik, maka tugas bersamaan sekitar 20.
-   Permintaan dari akun yang sama dihitung bersama; setiap jenis tugas dihitung sendiri-sendiri.
-   Permintaan yang melebihi kuota langsung mengembalikan `ERROR_THREADS_MAXIMUM`, dan `limit` di respons adalah batas Anda saat ini. **Tidak ada pemotongan poin, dan tidak dihitung untuk jeda otomatis.**
-   Saat server pengenalan kewalahan, akun yang memakai waktu pengenalan terbanyak akan mengalami batas untuk jenis tugas tersebut **dikurangi setengah sementara, lalu pulih otomatis setelah 10 menit**. Ini hanya pembatasan kecepatan, akun tidak dijeda.
-   Jika Anda membutuhkan kuota lebih tinggi, [hubungi dukungan](https://docs.yescaptcha.com/id/help/contact.md). Setelah kuota default tiap jenis ditetapkan, angkanya akan diumumkan di halaman ini dan di [catatan pembaruan layanan](https://docs.yescaptcha.com/id/changelog.md).

```json
{
  "errorId": 1,
  "errorCode": "ERROR_THREADS_MAXIMUM",
  "errorDescription": "This account already has 30 tasks of this type in progress, which is the limit. Lower the concurrency and wait for pending requests to return before sending more; rejected requests are not charged and do not lead to a block.",
  "limit": 30
}
```

(Angka dalam contoh hanya ilustrasi.)

### Cara yang disarankan

1.  Batasi “jumlah permintaan yang menunggu hasil secara bersamaan” di program Anda, misalnya dengan semaphore atau thread pool berukuran tetap, bukan hanya mengatur berapa permintaan dikirim per detik.
2.  Setelah menerima `ERROR_THREADS_MAXIMUM`, tunggu permintaan yang sudah dikirim selesai sebelum mengirim yang baru, atau tunggu 1 sampai 2 detik lalu coba lagi. Jangan mengulang dalam loop tanpa jeda.
3.  Kirim tugas batch secara merata, jangan mengirim ribuan tugas sekaligus.

Contoh Python (asyncio):

```python
import asyncio
import os

import aiohttp

CLIENT_KEY = os.environ["YESCAPTCHA_CLIENT_KEY"]
LIMIT = 15  # below your concurrency limit
sem = asyncio.Semaphore(LIMIT)

async def solve(session, task):
    async with sem:  # at most LIMIT requests in progress at a time
        result = {}
        for attempt in range(5):
            async with session.post(
                "https://api.yescaptcha.com/createTask",
                json={"clientKey": CLIENT_KEY, "task": task},
            ) as resp:
                result = await resp.json()
            if result.get("errorCode") != "ERROR_THREADS_MAXIMUM":
                return result
            await asyncio.sleep(1 + attempt)  # over the limit: wait and retry
        return result
```

## Jeda otomatis

`clientKey` yang menghasilkan banyak permintaan error dalam waktu singkat akan dijeda dari pembuatan tugas secara otomatis:

| Pemicu | Durasi jeda |
| --- | --- |
| Error yang tercantum di bawah terkumpul 100 kali dalam satu menit kalender yang sama | 5 menit |
| `ERROR_IMAGE_TYPE_NOT_SUPPORTED` muncul 1 kali | 30 menit |
| Mengenai “cache parameter tidak valid” 1,000 kali dalam satu menit kalender yang sama | 5 menit |

Error yang dihitung untuk jeda:

-   [`ERROR_REQUEST_FORMATS`](https://docs.yescaptcha.com/id/api/errors.md#ERROR_REQUEST_FORMATS)
-   [`ERROR_TASK_ABSENT`](https://docs.yescaptcha.com/id/api/errors.md#ERROR_TASK_ABSENT)
-   [`ERROR_TASK_NOT_SUPPORTED`](https://docs.yescaptcha.com/id/api/errors.md#ERROR_TASK_NOT_SUPPORTED)
-   [`ERROR_KEY_DOES_NOT_EXIST`](https://docs.yescaptcha.com/id/api/errors.md#ERROR_KEY_DOES_NOT_EXIST)
-   [`ERROR_KEY_EXPIRED`](https://docs.yescaptcha.com/id/api/errors.md#ERROR_KEY_EXPIRED)
-   [`ERROR_TASKID_INVALID`](https://docs.yescaptcha.com/id/api/errors.md#ERROR_TASKID_INVALID)
-   [`ERROR_SETTLEMENT_FAILED`](https://docs.yescaptcha.com/id/api/errors.md#ERROR_SETTLEMENT_FAILED)
-   [`ERROR_HIGH_DEMAND_DOMAIN`](https://docs.yescaptcha.com/id/api/errors.md#ERROR_HIGH_DEMAND_DOMAIN)
-   [`ERROR_ZERO_CAPTCHA_FILESIZE`](https://docs.yescaptcha.com/id/api/errors.md#ERROR_ZERO_CAPTCHA_FILESIZE)
-   [`ERROR_TOO_BIG_CAPTCHA_FILESIZE`](https://docs.yescaptcha.com/id/api/errors.md#ERROR_TOO_BIG_CAPTCHA_FILESIZE)
-   [`ERROR_IMAGE_TYPE_NOT_SUPPORTED`](https://docs.yescaptcha.com/id/api/errors.md#ERROR_IMAGE_TYPE_NOT_SUPPORTED)
-   [`ERROR_ILLEGAL_IMAGE`](https://docs.yescaptcha.com/id/api/errors.md#ERROR_ILLEGAL_IMAGE)

`ERROR_THREADS_MAXIMUM` yang dikembalikan karena kelebihan tugas bersamaan di akun (dengan field `limit`) tidak dihitung; error dengan nama yang sama yang dikembalikan saat layanan pengenalan sibuk (tanpa `limit`) dihitung. Kegagalan pengenalan (`ERROR_CAPTCHA_UNSOLVABLE`), saldo tidak cukup (`ERROR_ZERO_BALANCE`), field yang kurang (`ERROR_REQUIRED_FIELDS`), pertanyaan yang tidak didukung (`ERROR_UNKNOWN_QUESTION`), dan sejenisnya tidak dihitung.

Selama jeda:

-   Hanya `createTask` dan `getBalance` yang terpengaruh, keduanya mengembalikan `ERROR_IP_BLOCKED_5MIN`. `getTaskResult` tidak terpengaruh; tugas yang dibuat sebelum jeda tetap bisa diperiksa hasilnya.
-   Respons memuat `retryAfter` (sisa detik), `blockReason` (kode error pemicu jeda), dan `blockDetail` (jenis, URL, dan sitekey dari permintaan tersebut). Gunakan ketiganya untuk memperbaiki program Anda.
-   Terus mengirim permintaan tidak memperpanjang jeda. Jeda berakhir otomatis, tidak perlu menghubungi dukungan.
-   Di Dasbor [yescaptcha.com](https://yescaptcha.com/), halaman Ringkasan menampilkan catatan jeda 24 jam terakhir.

```json
{
  "errorId": 1,
  "errorCode": "ERROR_IP_BLOCKED_5MIN",
  "errorDescription": "...",
  "retryAfter": 182,
  "blockReason": "ERROR_TASK_NOT_SUPPORTED"
}
```

## Cache parameter tidak valid

Sebagian error ditentukan oleh parameter permintaan, sehingga mengirim ulang dengan parameter yang sama memberi hasil yang sama:

-   [`ERROR_RECAPTCHA_INVALID_SITEKEY`](https://docs.yescaptcha.com/id/api/errors.md#ERROR_RECAPTCHA_INVALID_SITEKEY)
-   [`ERROR_RECAPTCHA_INVALID_DOMAIN`](https://docs.yescaptcha.com/id/api/errors.md#ERROR_RECAPTCHA_INVALID_DOMAIN)
-   [`ERROR_INVALID_KEY_TYPE`](https://docs.yescaptcha.com/id/api/errors.md#ERROR_INVALID_KEY_TYPE)
-   [`ERROR_DOMAIN_NOT_ALLOWED`](https://docs.yescaptcha.com/id/api/errors.md#ERROR_DOMAIN_NOT_ALLOWED)

Error ini tidak dihitung untuk jeda otomatis, tetapi di-cache di seluruh situs: 2 menit setelah penilaian pertama, dan 10 menit jika dikonfirmasi lagi dalam 1 jam. Selama cache berlaku, permintaan yang sama (jenis tugas dan `websiteKey` yang sama, atau domain situs yang sama) langsung mengembalikan error semula tanpa pemotongan poin, dengan `"cached": true`, `retryAfter` (sisa detik cache), dan `badRequest` (parameter yang terkena). Setelah `websiteKey` diperbaiki atau jenis tugas diganti, perubahan langsung berlaku.

## Perbedaan batas tugas bersamaan dan jeda otomatis

|  | Batas tugas bersamaan | Jeda otomatis |
| --- | --- | --- |
| Penyebab | Terlalu banyak tugas yang diproses bersamaan | Terlalu banyak permintaan error dalam waktu singkat |
| Dampak | Hanya permintaan yang berlebih yang ditolak, `ERROR_THREADS_MAXIMUM` | `clientKey` ini dijeda dari pembuatan tugas, `ERROR_IP_BLOCKED_5MIN` |
| Pemulihan | Begitu ada permintaan selesai, Anda bisa mengirim yang baru; batas yang dikurangi setengah pulih setelah 10 menit | Pulih otomatis saat jeda berakhir |
| Pemotongan poin | Tidak ada | Tidak ada |
