API PIN-ów
GET /v1/pins/:pinCode/results
API PIN-ów pozwala programowo pobierać wyniki skanowania własnych PIN-ów. Przydatne do tworzenia botów Discord, narzędzi automatyzacji i własnych integracji. Aby śledzić postęp skanowania w czasie rzeczywistym, zobacz API statusu PIN-u.
- Bazowy URL
https://api.anticheat.ac/v1- Uwierzytelnianie
- Wymagany klucz API z uprawnieniem
pins:results
Pobierz wyniki PIN-u
Pobierz wyniki skanowania dla konkretnego PIN-u. Masz dostęp tylko do wyników PIN-ów, których jesteś właścicielem (utworzonych przez Twoje konto). Zwraca dane wykryć, w tym wykrycia, podejrzane elementy, ostrzeżenia, kontrole integralności i podstawowe metadane skanowania.
GET/v1/pins/:pinCode/results
Parametry
| Nazwa | Typ | Opis |
|---|---|---|
| pinCode | string | 8-znakowy kod PIN (np. A7K3M2P9P9) |
Nagłówki
x-api-key: your_api_key_here
Odpowiedź (zakończone skanowanie)
{
"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"
}Odpowiedź (oczekujące/w toku)
{
"pin": "A7K3M2P9",
"type": "Java",
"status": "pending",
"result": "none",
"pinName": "Tournament Match #42",
"message": "Pin is waiting for scan to start"
}Odpowiedzi z błędem
| Status | Kod | Opis |
|---|---|---|
400 | Nieprawidłowe żądanie | Kod PIN jest pusty lub nieprawidłowy |
403 | Zabronione | PIN nie należy do Twojego konta |
404 | Nie znaleziono | Kod PIN nie istnieje |
Pola data
| Pole | Typ | Opis |
|---|---|---|
| cheating | string | null | Ogólny werdykt dotyczący oszukiwania |
| detections | array | Lista potwierdzonych wykryć cheatów |
| suspicious | array | Lista podejrzanych znalezisk |
| warnings | array | Lista flag ostrzeżeń |
| untrusted | array | Lista niezaufanych elementów |
| integrity | array | Lista wyników kontroli integralności |
| customSuspicious | array | Własne podejrzane wykrycia z Twoich skonfigurowanych słów kluczowych |
| vpn | string | null | Status wykrycia VPN |
| country | string | null | Kraj przeskanowanego użytkownika |
| logon | string | null | Czas od zalogowania/działania systemu |
| scantime | string | null | Jak długo trwało skanowanie |
| windows | string | null | Informacje o wersji Windows |
| discord | array | Konta Discord wykryte w przeskanowanym systemie. Każdy wpis zawiera id (ID użytkownika Discord) i username |
Wymagane bycie właścicielem
Możesz pobierać wyniki tylko dla PIN-ów utworzonych przez własne konto. Próba dostępu do PIN-u innego użytkownika zwróci błąd 403 Forbidden.
Ochrona prywatności
Informacje wrażliwe, takie jak HWID, IP serwera, konta alt i identyfikatory wewnętrzne, nigdy nie są udostępniane przez ten endpoint, aby chronić prywatność użytkowników.
Statusy PIN-u
| Status | Opis |
|---|---|
pending | PIN utworzony, oczekuje na rozpoczęcie skanowania |
scanning | Skanowanie jest w toku |
finished | Skanowanie zakończone, wyniki dostępne |
expired | PIN wygasł przed zakończeniem skanowania |
error | Podczas skanowania wystąpił błąd |
Przykład użycia
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', '')}")Sprawdzaj do zakończenia (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);