Наша собственная статистика посещений включена всегда. Google Analytics помогает нам понять, как пользуются нашими публичными страницами (но не вашим рабочим пространством после входа), и включается только с вашего разрешения. См. нашу политику конфиденциальности.

API Cloudflare Turnstile solver

POST

Состояние API

Состояние за 24 ч
Норма
Среднее время за 24 ч
—
  • Стабильно / норма
  • Доступно
  • Ограничено
  • Почти недоступно
Норма

API EverySolve для Cloudflare Turnstile возвращает токен для вашего сценария прохождения проверки. Отправьте POST /api/v1/captcha, указав в type значение turnstile, и передайте входные данные, перечисленные ниже.Cloudflare Turnstile — встроенный виджет, настроенный ключом сайта Turnstile. Он может работать в управляемом, неинтерактивном или невидимом режиме. Возвращает токен для cf-turnstile-response. Страница проверки Cloudflare, напротив, блокирует переход и возвращает данные cookie для доступа к странице.

$1.53 за 1 000 успешных решений ($0.001528 за каждое успешное решение). Неудачные решения не оплачиваются.

Промпт для ИИ

Помогите мне написать скрипт, который вызывает API EveryInfra «Cloudflare Turnstile».

Контракт API:
- Запрос: POST https://api.everyinfra.com/api/v1/captcha с заголовком Authorization: Bearer <API Key>. Берите ключ из переменной окружения EVERYINFRA_API_KEY, не указывайте его в коде.
- В теле запроса задайте для type значение turnstile, а параметры укажите рядом, на том же уровне.
- Обязательные параметры:
  - website_url: Точный адрес страницы, на которой появляется проверка, включая нужный путь, а не только главную страницу сайта.
  - website_key: Публичный ключ сайта или виджета, скопированный именно из этой интеграции на целевом сайте; это не секретный ключ.
- Необязательные параметры:
  - action: Название действия, которое использует этот экземпляр виджета; скопируйте его из интеграции целевого сайта, а не придумывайте универсальное название действия.
  - cdata: Пользовательское значение данных виджета из того же экземпляра проверки, если страница его передаёт.
  - page_data: Сериализованные данные страницы, привязанные к этому экземпляру виджета, если целевой сайт их предоставляет.
- Пример тела запроса:
{
  "type": "turnstile",
  "website_url": "https://demo.turnstile.workers.dev/",
  "website_key": "1x00000000000000000000AA"
}
- Оплата: $1.53 за 1 000 успешных решений ($0.001528 за каждое успешное решение). Неудачные решения не оплачиваются.
- При ошибке 422 исправьте параметры по подсказкам и допустимым значениям из ошибки. При 429 или 503 дождитесь истечения Retry-After и повторите попытку.

Прежде чем писать код, спросите меня, сколько записей нужно обработать и в каком формате сохранить результаты, затем согласуйте со мной план и примерную стоимость.

Параметры запроса

ИмяРасположениеТипОбязательныйПо умолчаниюОписание
AuthorizationheaderstringДа-Укажите Bearer, а после него — ваш API-ключ. Создайте ключ в консоли; никогда не указывайте его в URL и не храните в репозитории кода.
typebodystringДаturnstileТип капчи, фиксированное значение.
website_urlbodystringДа-Точный адрес страницы, на которой появляется проверка, включая нужный путь, а не только главную страницу сайта.
website_keybodystringДа-Публичный ключ сайта или виджета, скопированный именно из этой интеграции на целевом сайте; это не секретный ключ.
actionbodystringНет-Название действия, которое использует этот экземпляр виджета; скопируйте его из интеграции целевого сайта, а не придумывайте универсальное название действия.
cdatabodystringНет-Пользовательское значение данных виджета из того же экземпляра проверки, если страница его передаёт.
page_databodystringНет-Сериализованные данные страницы, привязанные к этому экземпляру виджета, если целевой сайт их предоставляет.

Примеры кода

bash
curl -X POST 'https://api.everyinfra.com/api/v1/captcha' \
  -H "Authorization: Bearer $EVERYINFRA_API_KEY" \
  -H 'Content-Type: application/json' \
  --data-raw '{
  "type": "turnstile",
  "website_url": "https://demo.turnstile.workers.dev/",
  "website_key": "1x00000000000000000000AA"
}'

Спецификация OpenAPI (JSON)Примеры читают ключ из переменной окружения EVERYINFRA_API_KEY; скопированный код никогда не содержит ваш ключ.

Пример ответа

Реальный ответ

Получено October 24, 2026 at 22:37 (UTC) вызовом этого API с параметрами из примера кода выше. token и solution взяты из реального ответа этого вызова. id, billing и quota меняются при каждом вызове, поэтому показана только их структура.

json
{
  "id": "req_…",
  "type": "turnstile",
  "token": "XXXX.DUMMY.TOKEN.XXXX",
  "solution": {
    "token": "XXXX.DUMMY.TOKEN.XXXX"
  },
  "billing": {
    "charged": …,
    "charged_usd": …,
    "balance_after_usd": …,
    …
  },
  "quota": { … }
}

Откуда брать параметры для Cloudflare Turnstile

Скопируйте website_key из data-sitekey или turnstile.render; если action, cdata и page_data указаны, скопируйте их из того же экземпляра виджета.

Код для поиска этих значений на странице

turnstile-1.html
<div class="cf-turnstile" data-sitekey="<YOUR-SITE-KEY>" data-theme="light"
     data-size="normal" data-callback="onSuccess"></div>
turnstile-2.js
const widgetId = turnstile.render("#turnstile-container", {
  sitekey: "<YOUR-SITE-KEY>", callback: function (token) { … },
});
turnstile-3.html
<input type="hidden" name="cf-turnstile-response" value="TOKEN_VALUE" />

Как определить Cloudflare Turnstile

Cloudflare Turnstile — встроенный виджет, настроенный ключом сайта Turnstile. Он может работать в управляемом, неинтерактивном или невидимом режиме.

Чем Cloudflare Turnstile отличается от других проверок

Возвращает токен для cf-turnstile-response. Страница проверки Cloudflare, напротив, блокирует переход и возвращает данные cookie для доступа к странице.

Как использовать API для Cloudflare Turnstile

API возвращает токен. Вставьте его в скрытое поле cf-turnstile-response. Токен действует 300 секунд и может быть использован только один раз.

  1. 01Выполните запрос GET /api/v1/captcha/types и выберите запись turnstile.
  2. 02Выполните POST /api/v1/captcha, передав type: "turnstile" и обязательные параметры.
  3. 03Получите токен из token.
  4. 04Вставьте полученный токен в скрытое поле cf-turnstile-response и отправьте форму в течение 300 секунд, пока токен действителен. Токен можно использовать только один раз.

Оплата и доступность EverySolve списывает средства только при успешном предоставлении решения. За неудачную попытку итоговое списание не производится, а зарезервированная сумма возвращается автоматически. Получайте available и поля с ценами из GET /api/v1/captcha/types при отправке запроса, а не воспринимайте их как статические данные страницы.

Вопросы об интеграции Cloudflare Turnstile

Как определить Cloudflare Turnstile перед выбором типа?

Cloudflare Turnstile — встроенный виджет, настроенный ключом сайта Turnstile. Он может работать в управляемом, неинтерактивном или невидимом режиме. Используйте turnstile, только если эти признаки соответствуют целевой проверке.

Какие значения с целевой страницы нужны в запросе для Cloudflare Turnstile?

Скопируйте website_key из data-sitekey или turnstile.render; если action, cdata и page_data указаны, скопируйте их из того же экземпляра виджета. Передайте website_url и website_key. Необязательные параметры: action, cdata и page_data.

Что возвращает Cloudflare Turnstile и с чем это не следует путать?

API Cloudflare Turnstile возвращает токен в token. Формат решения: token. Возвращает токен для cf-turnstile-response. Страница проверки Cloudflare, напротив, блокирует переход и возвращает данные cookie для доступа к странице.

Какой внешний источник описывает интеграцию Cloudflare Turnstile?

Cloudflare описывает в документации отображение Turnstile, режимы виджета, обратные вызовы и обработку токенов. [Открыть справку по Cloudflare Turnstile](https://developers.cloudflare.com/turnstile/). Специфичные для EverySolve поля и текущую доступность по-прежнему смотрите в каталоге типов.

Справка по Cloudflare Turnstile

Все типы капчи

Ошибки и оплата

401
Ключ отсутствует или недействителен.
402
Недостаточно средств на балансе. Сначала пополните баланс.
422
Недопустимое имя или значение параметра. Исправьте запрос по подсказкам в сообщении об ошибке. Без списания.
429
Достигнут лимит запросов в минуту. Подождите указанное в Retry-After время, затем повторите попытку.
503
Не удалось выполнить. Зарезервированная сумма возвращается на баланс. Если результат неизвестен, проверьте его перед повторной попыткой.
200 (пусто)
Нет данных. Без списания.

Ошибки