PIN Oluşturma API'si, Enterprise sahiplerinin tarama PIN'lerini programatik olarak oluşturmasını sağlar. Screenshare akışlarını, Discord bot entegrasyonlarını ve turnuva yönetim sistemlerini otomatikleştirmek için idealdir.
Temel URL: https://api.anticheat.ac/v1
Kimlik doğrulama: Şu izne sahip bir API anahtarı gerekir: pins:create
Bu uç nokta yalnızca Enterprise sahiplerine açıktır. Ücretli lisansı olan kullanıcılar veya Enterprise üyeleri bu özelliği kullanamaz. pins:create iznine sahip API anahtarları oluşturmak için aktif bir Enterprise'ın sahibi olmalısın.
Belirli bir oyun türü için yeni bir tarama PIN'i oluşturur. PIN yaklaşık 3 saat geçerlidir. PIN'i isteğe bağlı olarak özel (yalnızca sen) veya herkese açık (kuruluşunda görünür) yapabilirsin.
/v1/pins/createx-api-key: your_api_key_hereContent-Type: application/json| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
| type | string | Evet | Taramanın oyun türü |
| pinName | string | Hayır | PIN için özel ad (en fazla 50 karakter) |
| ramDump | boolean | Hayır | RAM dökümü analizini açar (varsayılan: false) |
| private | boolean | Hayır | PIN'i özel yapar (varsayılan: false). Özel PIN'ler yalnızca sana görünür. |
JavaBedrockFiveMRedMRageMPAltVRobloxSanAndreasCodRust{
"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-11T18:35:00.000Z",
"createdAt": "2026-02-11T15:25:00.000Z",
"enterprise": "My Organization"
}| Alan | Tür | Açıklama |
|---|---|---|
| pin | string | Oluşturulan 8 karakterlik PIN kodu |
| type | string | Oyun türü |
| status | string | Başlangıç durumu (her zaman "pending") |
| pinName | string | null | PIN'e atanan özel ad |
| ramDump | boolean | RAM dökümünün açık olup olmadığı |
| private | boolean | PIN'in özel olup olmadığı |
| expiresAt | string | PIN'in sona erdiği ISO 8601 zaman damgası (~3 saat) |
| createdAt | string | PIN'in oluşturulduğu ISO 8601 zaman damgası |
| enterprise | string | PIN'in ait olduğu Enterprise'ın adı |
| Durum | Kod | Açıklama |
|---|---|---|
400 | Geçersiz istek | Geçersiz oyun türü |
403 | Yasak | Hesap yasaklı veya kullanıcı bir Enterprise sahibi değil |
404 | Bulunamadı | API anahtarına bağlı kullanıcı bulunamadı |
private true ise PIN ve sonuçları yalnızca sana görünür. false ise (varsayılan) Enterprise'ındaki diğer üyeler PIN'i kuruluş panelinde görebilir.
Bir PIN oluşturduktan sonra tarama ilerlemesini izlemek için PIN Durumu API'sini, tarama bitince tam tespit ayrıntılarını almak için PIN Sonuçları API'sini kullan. PIN durumu · PIN'ler
| Sınır | Değer |
|---|---|
| Aynı anda aktif PIN | 3 (pending + scanning) |
| PIN süresi | Oluşturulduktan ~3 saat sonra |
| PIN adı uzunluğu | En fazla 50 karakter |
| API hız sınırı | Saatte 1.000 istek (tüm uç noktalarla paylaşılır) |
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}'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);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']}")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);