O que é a Por-api?
A Por-api é um serviço REST de detecção de conteúdo NSFW (pornográfico/adulto) usando inteligência artificial. Ela analisa imagens e vídeos e retorna um score de probabilidade para cada categoria de conteúdo.
Ideal para bots de WhatsApp, Telegram ou qualquer plataforma que precise filtrar conteúdo automaticamente.
Categorias detectadas
| Categoria | Descrição |
|---|---|
Porn | Conteúdo pornográfico explícito real |
Hentai | Anime/ilustração explícita |
Sexy | Conteúdo sugestivo, não explícito |
Neutral | Conteúdo normal, seguro |
Drawing | Ilustração/arte sem cunho adulto |
Autenticação
Envie sua API Key no header x-api-key em todas as requisições autenticadas. Sem key, a API funciona no plano Free (50 req/dia por IP).
x-api-key: por-suachaveaqui
Erros
| Status | Código | Descrição |
|---|---|---|
400 | Bad Request | Parâmetros ausentes ou inválidos |
401 | Unauthorized | API Key inválida |
403 | Forbidden | API Key expirada |
429 | Too Many Requests | Limite diário atingido |
500 | Internal Error | Erro ao processar a mídia |
POST /v1/check
Analisa uma imagem ou vídeo. Aceita URL pública ou base64. Para vídeos, extrai e analisa o primeiro frame.
Body (JSON)
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
url | string | url ou base64 | URL pública da imagem/vídeo |
base64 | string | url ou base64 | Imagem codificada em base64 |
tipo | string | Não | "video" para analisar vídeo via base64 |
Exemplo — URL
curl -X POST http://localhost:3001/v1/check \
-H "Content-Type: application/json" \
-H "x-api-key: por-suakey" \
-d '{"url": "https://exemplo.com/foto.jpg"}'
Exemplo — base64
const fs = require('fs') const b64 = fs.readFileSync('imagem.jpg').toString('base64') const res = await fetch('http://localhost:3001/v1/check', { method: 'POST', headers: { 'Content-Type': 'application/json', 'x-api-key': 'por-suakey' }, body: JSON.stringify({ base64: b64 }) })
Resposta de sucesso
{
"isNsfw": true,
"score": 0.9821,
"pornScore": 0.9880,
"categoria": "Porn",
"detalhes": {
"Drawing": 0.0001,
"Hentai": 0.0059,
"Neutral": 0.0048,
"Porn": 0.9821,
"Sexy": 0.0071
},
"plano": "basic"
}
GET /v1/me
Retorna informações da API Key autenticada: plano, limite diário e usos.
curl http://localhost:3001/v1/me \ -H "x-api-key: por-suakey"
GET /health
Verifica se o servidor está online. Não requer autenticação.
{ "status": "ok", "modelo": "MobileNetV2Mid", "versao": "1.0.0" }
Integrar no bot Miyamura
O módulo armor/js/antiporn.js já está configurado para chamar a Por-api automaticamente. Certifique-se de que a Por-api está rodando antes de iniciar o bot.
# Na pasta Por-api
npm install
node src/server.js
# No chat do grupo -antiporn 1 # só apaga -antiporn 2 # apaga + bane o usuário -antiporn 0 # desativa
Tipos de mídia suportados
| Tipo | Suporte | Observação |
|---|---|---|
| imageMessage | ✅ Completo | JPEG, PNG, GIF, WebP |
| videoMessage | ✅ Completo | Analisa frame inicial |
| stickerMessage | ✅ Completo | WebP → JPEG via sharp |
| viewOnceMessageV2 | ✅ Completo | Extrai imagem/vídeo interno |
Planos e limites
| Plano | Requests/dia | API Key | Vídeo |
|---|---|---|---|
| Free | 50 (por IP) | Não | ✅ |
| Basic | 500 | Sim | ✅ |
| Premium | Ilimitado | Sim | ✅ |
O limite reseta à meia-noite no horário de Brasília (UTC-3). Gerenciar keys via CLI: node Por-api/scripts/genkey.js