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

CategoriaDescrição
PornConteúdo pornográfico explícito real
HentaiAnime/ilustração explícita
SexyConteúdo sugestivo, não explícito
NeutralConteúdo normal, seguro
DrawingIlustraçã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).

Header de autenticação
x-api-key: por-suachaveaqui

Erros

StatusCódigoDescrição
400Bad RequestParâmetros ausentes ou inválidos
401UnauthorizedAPI Key inválida
403ForbiddenAPI Key expirada
429Too Many RequestsLimite diário atingido
500Internal ErrorErro 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)

CampoTipoObrigatórioDescrição
urlstringurl ou base64URL pública da imagem/vídeo
base64stringurl ou base64Imagem codificada em base64
tipostringNão"video" para analisar vídeo via base64

Exemplo — URL

curl
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

JavaScript
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

JSON
{
  "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
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.

Resposta
{ "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.

Iniciar Por-api
# Na pasta Por-api
npm install
node src/server.js
Ativar antiporn no grupo
# No chat do grupo
-antiporn 1   # só apaga
-antiporn 2   # apaga + bane o usuário
-antiporn 0   # desativa

Tipos de mídia suportados

TipoSuporteObservação
imageMessage✅ CompletoJPEG, PNG, GIF, WebP
videoMessage✅ CompletoAnalisa frame inicial
stickerMessage✅ CompletoWebP → JPEG via sharp
viewOnceMessageV2✅ CompletoExtrai imagem/vídeo interno

Planos e limites

PlanoRequests/diaAPI KeyVídeo
Free50 (por IP)Não
Basic500Sim
PremiumIlimitadoSim

O limite reseta à meia-noite no horário de Brasília (UTC-3). Gerenciar keys via CLI: node Por-api/scripts/genkey.js