API PIN
GET /v1/pins/:pinCode/results
API PIN позволяет программно получать результаты сканирования для ваших собственных PIN. Полезно для создания Discord-ботов, инструментов автоматизации и собственных интеграций. Чтобы отслеживать ход сканирования в реальном времени, см. API статуса PIN.
- Базовый URL
https://api.anticheat.ac/v1- Аутентификация
- Требуется API-ключ с разрешением
pins:results
Получить результаты PIN
Получите результаты сканирования для конкретного PIN. Доступ есть только к результатам PIN, которыми вы владеете (созданным вашим аккаунтом). Возвращает данные обнаружения: детекты, подозрительные элементы, предупреждения, проверки целостности и базовые метаданные сканирования.
GET/v1/pins/:pinCode/results
Параметры
| Название | Тип | Описание |
|---|---|---|
| pinCode | string | 8-символьный код PIN (например, A7K3M2P9P9) |
Заголовки
x-api-key: your_api_key_here
Ответ (сканирование завершено)
{
"pin": "A7K3M2P9P9",
"type": "Java",
"status": "finished",
"result": "cheating",
"pinName": "Tournament Match #42",
"data": {
"cheating": "cheating",
"detections": [
"Generic Cheat Loader - Detection",
"Process Injection - javaw.exe"
],
"suspicious": [
"Modified game files detected"
],
"warnings": [
"Multiple Minecraft instances detected"
],
"untrusted": [],
"integrity": [
"System file tampered: kernel32.dll"
],
"customSuspicious": [],
"vpn": "No",
"country": "US",
"logon": "2h 30m",
"scantime": "45 seconds",
"windows": "Windows 11 Pro 23H2",
"discord": [
{ "id": "123456789012345678", "username": "player123" }
]
},
"createdAt": "2024-01-15T10:30:00.000Z"
}Ответ (ожидание/в процессе)
{
"pin": "A7K3M2P9",
"type": "Java",
"status": "pending",
"result": "none",
"pinName": "Tournament Match #42",
"message": "Pin is waiting for scan to start"
}Ответы с ошибками
| Статус | Код | Описание |
|---|---|---|
400 | Неверный запрос | Код PIN пуст или недействителен |
403 | Доступ запрещён | Этот PIN не принадлежит вашему аккаунту |
404 | Не найдено | Код PIN не существует |
Поля данных
| Поле | Тип | Описание |
|---|---|---|
| cheating | string | null | Общий вердикт о читерстве |
| detections | array | Список подтверждённых детектов читов |
| suspicious | array | Список подозрительных находок |
| warnings | array | Список флагов предупреждений |
| untrusted | array | Список недоверенных элементов |
| integrity | array | Список результатов проверок целостности |
| customSuspicious | array | Собственные подозрительные детекты по настроенным вами ключевым словам |
| vpn | string | null | Статус обнаружения VPN |
| country | string | null | Страна проверяемого пользователя |
| logon | string | null | Продолжительность сеанса/аптайм системы |
| scantime | string | null | Сколько длилось сканирование |
| windows | string | null | Информация о версии Windows |
| discord | array | Аккаунты Discord, обнаруженные в проверяемой системе. Каждая запись содержит id (Discord ID пользователя) и username |
Нужно быть владельцем
Вы можете получать результаты только для PIN, созданных вашим аккаунтом. При попытке получить доступ к PIN другого пользователя API вернёт ошибку 403 Forbidden.
Защита конфиденциальности
Чувствительные данные, такие как HWID, IP сервера, альт-аккаунты и внутренние идентификаторы, никогда не передаются через этот эндпоинт — это защищает конфиденциальность пользователей.
Статусы PIN
| Статус | Описание |
|---|---|
pending | PIN создан, ожидает начала сканирования |
scanning | Сканирование выполняется |
finished | Сканирование завершено, результаты доступны |
expired | PIN истёк до завершения сканирования |
error | Во время сканирования произошла ошибка |
Пример использования
cURL
curl -X GET "https://api.anticheat.ac/v1/pins/A7K3M2P9/results" \ -H "x-api-key: your_api_key_here"
JavaScript / Node.js
const response = await fetch('https://api.anticheat.ac/v1/pins/A7K3M2P9/results', {
headers: { 'x-api-key': 'your_api_key_here' }
});
const data = await response.json();
if (data.status === 'finished') {
console.log('Result:', data.result);
console.log('Detections:', data.data.detections);
console.log('Suspicious:', data.data.suspicious);
} else {
console.log('Status:', data.status, '-', data.message);
}Python
import requests
response = requests.get(
'https://api.anticheat.ac/v1/pins/A7K3M2P9/results',
headers={'x-api-key': 'your_api_key_here'}
)
data = response.json()
if data['status'] == 'finished':
print(f"Result: {data['result']}")
print(f"Detections: {data['data']['detections']}")
else:
print(f"Status: {data['status']} - {data.get('message', '')}")Опрос до завершения (JavaScript)
async function waitForResults(pinCode, apiKey) {
const url = 'https://api.anticheat.ac/v1/pins/' + pinCode + '/results';
const headers = { 'x-api-key': apiKey };
while (true) {
const res = await fetch(url, { headers });
const data = await res.json();
if (data.status === 'finished') return data;
if (data.status === 'expired' || data.status === 'error') {
throw new Error('Scan ' + data.status + ': ' + (data.message || ''));
}
await new Promise(r => setTimeout(r, 5000));
}
}
const results = await waitForResults('A7K3M2P9', 'your_api_key_here');
console.log(results.data);