Dokumentasi

Pasang agen di halaman pendaftaran, panggil satu endpoint dari server Anda, lalu bertindak sesuai keputusan.

Mulai cepat

1. Pasang agen di halaman pendaftaran

Agen mengumpulkan sinyal perangkat dan memasukkan token pengunjung berumur pendek ke kolom tersembunyi bernama attrelix_visitor di setiap formulir pada halaman. Untuk aplikasi satu halaman tersedia window.attrelix.token().

<script src="https://attrelix.com/v1.js?v=0bbe74b52d" data-key="pk_live_…" async></script>

// single-page apps: wait for the token before you submit
const visitor = await window.attrelix.token();

2. Periksa pendaftaran dari server Anda

Kirim email, IP klien, dan token pengunjung dengan kunci rahasia Anda. Opsional: external_id (id pengguna Anda), user_agent, dan card_fingerprint (misalnya card.fingerprint dari Stripe).

curl https://attrelix.com/v1/check \
  -H "Authorization: Bearer $ATTRELIX_SECRET" \
  -H "Content-Type: application/json" \
  -d '{"email":"jdoe+7@gmail.com","ip":"203.0.113.9","visitor":"vt1.…"}'
# Python
r = requests.post("https://attrelix.com/v1/check", timeout=3,
    headers={"Authorization": f"Bearer {SECRET}"},
    json={"email": email, "ip": ip, "visitor": form["attrelix_visitor"]})
decision = r.json().get("decision", "allow") if r.ok else "allow"

3. Bertindak sesuai keputusan

allow: berikan kredit gratis. review: minta sesuatu yang membuat peternakan keluar uang — kartu, nomor telepon — atau berikan kredit lebih sedikit. block: tolak akun atau kreditnya. Jika panggilan gagal, izinkan: jangan pernah mengunci pengguna asli karena kami.

Kunci dan token

  • Kunci publik (pk_live_…): memang publik. Ada di halaman Anda dan hanya bisa mengumpulkan sinyal, dari origin yang Anda izinkan di dasbor.
  • Kunci rahasia (sk_live_…): hanya di server. Menjalankan pemeriksaan dan membaca hasil. Kami hanya menyimpan hash-nya: salin saat Anda membuatnya.
  • Token pengunjung: ditandatangani oleh kami, berlaku 15 menit dan untuk satu pemeriksaan, terikat pada proyek Anda. Token yang dipakai dua kali, atau dari jaringan berbeda dengan pendaftaran, menaikkan skor.

POST /v1/check

Body permintaan (JSON). Kirim minimal salah satu dari email, ip, atau visitor.

emailAlamat yang diketik pengguna.
ipIP klien pada permintaan pendaftaran (bukan IP server Anda).
visitorNilai attrelix_visitor dari formulir.
user_agentHeader User-Agent pada permintaan pendaftaran.
external_idId akun di sistem Anda, jika sudah ada.
card_fingerprintSidik jari kartu, jika kartu ditambahkan saat mendaftar.

Respons

decision bernilai allow, review, atau block. score 0–100: jumlah poin alasan, dengan batas atas. Setiap alasan punya kode tetap yang bisa Anda catat atau tampilkan.

{
  "id": "chk_3fJ8kQ2mN7pX1aZb",
  "decision": "block",
  "score": 100,
  "reasons": [
    { "code": "linked_accounts_10", "points": 45, "detail": "14" },
    { "code": "alias_of_existing", "points": 30, "detail": "3 variants of jdoe@gmail.com" },
    { "code": "datacenter_ip", "points": 25, "detail": "aws" }
  ],
  "email":   { "normalized": "jdoe@gmail.com", "disposable": false, "relay": false, "mx": "yes", … },
  "network": { "ip": "3.88.0.1", "type": "datacenter", "provider": "aws", "signups_24h": 2 },
  "device":  { "id": "dev_9c1e…", "token": "valid", "browser": "Firefox 144", "flags": ["canvas_noise"] },
  "linked":  { "accounts": 14, "by_device": 12, "by_card": 0, "cluster": "cl_7q2f…" },
  "latency_ms": 38
}

Error

Error berupa JSON: {"error": code, "message": text}.

401kunci tidak ada, tidak dikenal, dicabut, atau salah jenis (kunci pk_ di /v1/check).
400body bukan JSON atau tidak berisi email, ip, maupun visitor.
402kuota pemeriksaan bulanan paket sudah habis.
403agen berjalan di origin yang tidak Anda izinkan.
429terlalu banyak permintaan dari satu alamat.

Penilaian

Poin dijumlahkan dengan batas 100. Bawaan: tinjau mulai 50, blokir mulai 80 — keduanya bisa diatur. Kotak surat sekali pakai saja sudah masuk tinjau; tidak ada satu sinyal perangkat atau jaringan yang sendirian sampai ke sana.

KodePoinArti
invalid_email+50Alamat tidak valid
disposable_email+50Domain email sekali pakai
no_mx+35Domain tidak bisa menerima email
alias_of_existing+30Ejaan lain dari kotak surat yang sudah ada
relay_email+10Alamat layanan penerusan
plus_tag+5Tag + atau titik Gmail
tor_exit+35Node keluar Tor
datacenter_ip+25Alamat pusat data atau cloud
vpn_ip+20Alamat VPN
ip_signups_24h+103+ akun dari IP ini dalam 24 jam
ip_signups_24h_high+2510+ akun dari IP ini dalam 24 jam
subnet_burst+1510+ akun dari subnet ini dalam 1 jam
automation_webdriver+40Otomasi WebDriver
headless_browser+40Browser headless
automation_cdp+10Otomasi protokol DevTools (Puppeteer, Playwright)
antidetect_browser+15Browser anti-deteksi (beberapa penyamaran sekaligus)
headless_viewport+15Jendela tanpa bilah atau tab peramban
webgl_os_mismatch+25Kartu grafis milik sistem operasi lain
memory_cpu_mismatch+10Jumlah inti dan memori tidak cocok
no_human_interaction+30Dikirim seketika tanpa mengetik, menggerakkan tetikus, atau menyentuh
instant_signup+25Diisi dan dikirim dalam satu detik setelah halaman dimuat
os_mismatch+20Sistem operasi saling bertentangan
browser_mismatch+20Browser bertentangan dengan user agent-nya
fonts_mismatch+15Font tidak cocok dengan sistem yang diklaim
canvas_noise+15Sidik jari canvas yang diacak
software_renderer+15Grafik perangkat lunak (mesin virtual atau headless)
zero_window+15Jendela tanpa ukuran
permissions_mismatch+15Status izin saling bertentangan
no_plugins+10Chrome desktop tanpa plugin
no_languages+10Browser tanpa bahasa
utc_timezone+5Jam disetel ke UTC
token_missing0–100Tidak ada token pengunjung (agen tidak dimuat atau diblokir)
token_invalid+30Token pengunjung palsu atau milik proyek lain
token_replayed+35Token pengunjung sudah dipakai
token_expired+10Token pengunjung kedaluwarsa
token_ip_mismatch+8Token dikumpulkan di jaringan lain
token_ua_mismatch+15Token dikumpulkan oleh browser lain
linked_accounts+15Tertaut ke akun lain
linked_accounts_3+30Tertaut ke 3+ akun
linked_accounts_10+45Tertaut ke 10+ akun
shared_card+30Kartu dipakai akun lain
device_burst+155+ pemeriksaan dari perangkat ini dalam 1 jam

Sumber data

Domain sekali pakai: proyek disposable-email-domains (CC0) dan disposable/disposable-email-domains (MIT), diperbarui setiap hari. Rentang pusat data: daftar yang dipublikasikan AWS, Google Cloud, Oracle Cloud, DigitalOcean, dan Linode. Tor: daftar node keluar dari Tor Project, diperbarui setiap jam.

Saat ini: 98,644 domain sekali pakai dan 21,665 rentang.