API operacional
REST · JSON
Anti Reteste
API
Documentação da API
Integre verificações anti-reteste em bots, painéis ou scripts com uma única chamada HTTP.
3
endpoints
JSON
entrada e saída
2.0.0
versão da API
14.438.362
registros na base
Visão geral
Todas as rotas respondem JSON. Use HTTPS em produção.
Base URL
http://antiretest.com
Envie um lote de linhas para /api/check: números inéditos entram na base e os já conhecidos voltam com a data do primeiro registro e o total de consultas.
Formato das linhas
Cada item de lines representa um cartão.
Cartão completo
4111111111111111|12|2028|123
número|mês|ano|cvv — ano com 2 ou 4 dígitos.
Hash SHA-256
9f86d081884c7d65…0f00a08
Fingerprint com 64 caracteres hexadecimais.
Separadores aceitos
| ; , : / \ tab
Espaços, pontos e hífens dentro do número são ignorados.
American Express
371449635398431|07|2030|1234
15 dígitos (34 ou 37) com CVV de 4 dígitos.
POST
/api/check
Verifica um lote de linhas
Com record: true (padrão), grava os números novos e incrementa as tentativas dos já existentes. Use record: false para apenas consultar.
| Campo | Tipo | Descrição |
|---|---|---|
vulgoobrigatório | string · 1–40 | Store ou vulgo de quem consulta. |
linesobrigatório | string[] | Linhas número|mês|ano|cvv ou hash SHA-256. |
recordopcional | boolean | Gravar novos e incrementar tentativas. Padrão true. |
{
"vulgo": "Minha Store",
"lines": [
"4111111111111111|12|2028|123",
"5555555555554444|03|2029|456"
],
"record": true
}
{
"total": 2,
"new": 1,
"known": 1,
"duplicated": 0,
"invalid": 0,
"items": [
{
"line": 1,
"status": "new",
"masked": "411111******1111",
"cc_full": "4111111111111111|12|2028|123",
"is_retest": false,
"attempts": 1,
"expiry": "12/2028",
"expired": false,
"vulgo": "Minha Store"
},
{
"line": 2,
"status": "known",
"masked": "555555******4444",
"is_retest": true,
"added_on": "2026-09-20",
"days_since_added": 3,
"attempts": 4,
"vulgo": "Ou**"
}
]
}
newNúmero inédito — gravado agora.Já existia na base; traz
added_on e attempts.duplicatedRepetido dentro do próprio lote; traz first_line.invalidLinha rejeitada; o motivo vem em reason.
GET
/api/stats
Estatísticas agregadas da base
| Campo | Descrição |
|---|---|
total | Registros na base. |
attempts | Soma de todas as consultas. |
repetidos | Consultas além da primeira (retestes). |
retested | Registros consultados mais de uma vez. |
first_day | Data do primeiro registro. |
last_day | Data do registro mais recente. |
{
"total": 11466068,
"attempts": 11473832,
"repetidos": 7764,
"retested": 5393,
"first_day": "2026-09-19",
"last_day": "2026-09-23"
}
GET
/health
Health check do serviço
{ "status": "ok" }
Exemplos
Chamada a /api/check nas linguagens mais comuns.
curl -s -X POST http://antiretest.com/api/check \
-H "Content-Type: application/json" \
-d '{
"vulgo": "Bot Telegram",
"lines": ["4111111111111111|12|2028|123"],
"record": true
}'
import requests
resp = requests.post(
"http://antiretest.com/api/check",
json={
"vulgo": "Bot Telegram",
"lines": ["4111111111111111|12|2028|123"],
"record": True,
},
timeout=120,
)
resp.raise_for_status()
for item in resp.json()["items"]:
print(item["line"], item["status"], item.get("reason"))
const resp = await fetch("http://antiretest.com/api/check", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
vulgo: "Painel Web",
lines: ["4111111111111111|12|2028|123"],
record: true,
}),
});
const data = await resp.json();
console.log(data.items);
Erros HTTP
Erros retornam { "detail": "..." }.
Requisição inválida
vulgo vazio ou lines sem linhas úteis.Schema incorretoJSON fora do formato esperado.
500Falha internaBanco indisponível ou erro inesperado.