The Pins API allows you to retrieve scan results for your own pins programmatically. Useful for building Discord bots, automation tools, and custom integrations. To track scan progress in real-time, see the Pin Status API.
Base URL: https://api.anticheat.ac/v1
Authentication: API Key required with pins:results permission
Retrieve the scan results for a specific pin. You can only access results for pins that you own (created by your account). Returns detection data including detections, suspicious items, warnings, integrity checks, and basic scan metadata.
/v1/pins/:pinCode/results| Name | Type | Description |
|---|---|---|
| pinCode | string | The 8-character pin code (e.g. 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"
}| Status | Code | Description |
|---|---|---|
400 | Bad Request | Pin code is empty or invalid |
403 | Forbidden | The pin does not belong to your account |
404 | Not Found | Pin code does not exist |
| Field | Type | Description |
|---|---|---|
| cheating | string | null | Overall cheating verdict |
| detections | array | List of confirmed cheat detections |
| suspicious | array | List of suspicious findings |
| warnings | array | List of warning flags |
| untrusted | array | List of untrusted items |
| integrity | array | List of integrity check results |
| customSuspicious | array | Custom suspicious detections from your configured keywords |
| vpn | string | null | VPN detection status |
| country | string | null | Country of the scanned user |
| logon | string | null | System logon/uptime duration |
| scantime | string | null | How long the scan took |
| windows | string | null | Windows version information |
| discord | array | Discord accounts detected on the scanned system. Each entry has id (Discord user ID) and username |
You can only retrieve results for pins created by your own account. Attempting to access another user's pin will return a 403 Forbidden error.
Sensitive information such as HWID, server IP, alt accounts, and internal identifiers are never exposed through this endpoint to protect user privacy.
| Status | Description |
|---|---|
pending | Pin created, waiting for the scan to start |
scanning | Scan is currently in progress |
finished | Scan completed, results available |
expired | Pin expired before scan was completed |
error | An error occurred during scanning |
curl -X GET "https://api.anticheat.ac/v1/pins/A7K3M2P9/results" \ -H "x-api-key: your_api_key_here"
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);
}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', '')}")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);