Перейти к основному содержимому

API создания PIN

POST /v1/pins/create

API создания PIN позволяет владельцам Enterprise программно создавать PIN-коды сканирования. Подходит для автоматизации процессов screenshare, интеграций с Discord-ботами и систем управления турнирами.

Базовый URL
https://api.anticheat.ac/v1
Аутентификация
Требуется API-ключ с разрешением pins:create

Только для владельцев Enterprise

Этот эндпоинт доступен только владельцам Enterprise. Обычные пользователи с платной лицензией и участники Enterprise не могут им пользоваться. Чтобы создавать API-ключи с разрешением pins:create, нужно быть владельцем активного Enterprise.

Создать PIN

Создаёт новый PIN-код сканирования для конкретного типа игры. Неиспользованный PIN истекает через 24 часа. Можно сделать PIN приватным (доступен только вам) или публичным (виден в вашей организации).

POST/v1/pins/create

Заголовки

x-api-key: your_api_key_here
Content-Type: application/json

Тело запроса

ПолеТипОбязательноеОписание
typestringДаТип игры для сканирования
pinNamestringНетСвоё название PIN (не более 50 символов)
ramDumpbooleanНетВключить анализ дампа RAM (по умолчанию: false)
privatebooleanНетСделать PIN приватным (по умолчанию: false). Приватные PIN видны только вам.

Допустимые типы игр

  • Java
  • Bedrock
  • FiveM
  • RedM
  • RageMP
  • AltV
  • Roblox
  • SanAndreas
  • Cod
  • Rust

Пример запроса

{
  "type": "Java",
  "pinName": "Tournament Match #42",
  "ramDump": false,
  "private": true
}

Ответ (успех)

{
  "pin": "A7K3M2P9",
  "type": "Java",
  "status": "pending",
  "pinName": "Tournament Match #42",
  "ramDump": false,
  "private": true,
  "expiresAt": "2026-02-12T15:25:00.000Z",
  "createdAt": "2026-02-11T15:25:00.000Z",
  "enterprise": "My Organization"
}

Поля ответа

ПолеТипОписание
pinstringСгенерированный 8-символьный код PIN
typestringТип игры
statusstringНачальный статус (всегда "pending")
pinNamestring | nullСвоё название, присвоенное PIN
ramDumpbooleanВключён ли дамп RAM
privatebooleanЯвляется ли PIN приватным
expiresAtstringМетка времени ISO 8601, когда истекает неиспользованный PIN (24 часа)
createdAtstringМетка времени ISO 8601, когда был создан PIN
enterprisestringНазвание Enterprise, которому принадлежит PIN

Ответы с ошибками

СтатусКодОписание
400Неверный запросНедопустимый тип игры
403Доступ запрещёнАккаунт заблокирован, или пользователь не является владельцем Enterprise
404Не найденоПользователь, связанный с API-ключом, не найден

Видимость PIN

Если private равно true, PIN и его результаты видны только вам. Если false (по умолчанию), другие участники вашего Enterprise могут видеть PIN в панели организации.

Совет по работе

После создания PIN используйте API статуса PIN, чтобы следить за ходом сканирования, и API результатов PIN, чтобы получить полные данные об обнаружениях после завершения сканирования. Статус PIN · PIN-коды

Лимиты

ЛимитЗначение
Активных PIN одновременно3 (pending + scanning)
Срок действия PIN24 часа после создания, если не использован
Длина названия PINМаксимум 50 символов
Лимит запросов API1 000 запросов в час (общий для всех эндпоинтов)

Пример использования

cURL

curl -X POST "https://api.anticheat.ac/v1/pins/create" \
  -H "x-api-key: your_api_key_here" \
  -H "Content-Type: application/json" \
  -d '{"type": "Java", "pinName": "Match #42", "private": true}'

JavaScript / Node.js

const response = await fetch('https://api.anticheat.ac/v1/pins/create', {
  method: 'POST',
  headers: {
    'x-api-key': 'your_api_key_here',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    type: 'Java',
    pinName: 'Match #42',
    private: true,
  }),
});

const data = await response.json();
console.log('Pin created:', data.pin);
console.log('Expires at:', data.expiresAt);

Python

import requests

response = requests.post(
    'https://api.anticheat.ac/v1/pins/create',
    headers={
        'x-api-key': 'your_api_key_here',
        'Content-Type': 'application/json',
    },
    json={
        'type': 'Java',
        'pinName': 'Match #42',
        'private': True,
    }
)

data = response.json()
print(f"Pin created: {data['pin']}")
print(f"Expires at: {data['expiresAt']}")

Полный процесс: создание + опрос + результаты (JavaScript)

const API_KEY = 'your_api_key_here';
const headers = {
  'x-api-key': API_KEY,
  'Content-Type': 'application/json',
};

async function createAndTrackPin(gameType, pinName, isPrivate = false) {
  const createRes = await fetch('https://api.anticheat.ac/v1/pins/create', {
    method: 'POST',
    headers,
    body: JSON.stringify({
      type: gameType,
      pinName,
      private: isPrivate,
    }),
  });

  const pin = await createRes.json();
  console.log('Pin created:', pin.pin, '- Share this code with the player');

  while (true) {
    const statusRes = await fetch(
      'https://api.anticheat.ac/v1/pins/' + pin.pin + '/status',
      { headers }
    );
    const status = await statusRes.json();

    console.log('[' + status.progress + '%] ' + (status.statusMessage || 'Waiting...'));

    if (status.isFinished) {
      const resultsRes = await fetch(
        'https://api.anticheat.ac/v1/pins/' + pin.pin + '/results',
        { headers }
      );
      return await resultsRes.json();
    }

    if (status.status === 'expired' || status.status === 'error') {
      throw new Error('Scan ' + status.status);
    }

    await new Promise(r => setTimeout(r, 5000));
  }
}

const results = await createAndTrackPin('Java', 'Tournament Finals', true);
console.log('Verdict:', results.result);
console.log('Detections:', results.data.detections);