API

Documentação da API

Crie caixas, consulte domínios e leia mensagens por HTTP. Todos os endpoints aceitam e devolvem JSON.

Base: http://localhost:3000 no ar

GET /api/stats

Retorna quantos e-mails já foram criados, quantas mensagens foram recebidas e quantos domínios estão disponíveis no momento.

Resposta

json
{
  "emailsCreated": 128,
  "messagesReceived": 41,
  "domainsAvailable": 4
}
GET /api/domains

Lista todos os domínios disponíveis para criar caixas, com o ID de cada um e o total. Use o id no POST /api/inbox/create para escolher o domínio pelo ID.

Resposta

json
{
  "domains": [
    { "id": 1, "name": "anarchygmail.com" },
    { "id": 2, "name": "warkadasoutlook.com" },
    { "id": 3, "name": "warkadashotmail.com" },
    { "id": 4, "name": "resultsyahoo.com" }
  ],
  "total": 4
}
POST /api/inbox/create

Cria uma caixa nova. O prefixo pode ser escolhido por você ou gerado aleatório (12–25 caracteres). O domínio pode vir pelo nome, pelo ID ou ser sorteado entre os disponíveis.

Corpo (JSON)

CampoTipoObrigatórioDescrição
prefixstringnãoPrefixo do e-mail. Vazio gera um hash aleatório único.
domainstringnão*Domínio pelo nome (ex.: anarchygmail.com).
domain_idnumbernão*Domínio pelo ID retornado em GET /api/domains.

* Significa "não obrigatório, mas com regra": se nem domain nem domain_id forem enviados, o sistema escolhe um domínio aleatório entre os disponíveis.

Exemplos

Para usar um ID específico de domínio com um prefixo escolhido: consulte GET /api/domains, anote o id do domínio desejado e envie prefix + domain_id no corpo.

curl -X POST http://localhost:3000/api/inbox/create \
  -H "Content-Type: application/json" \
  -d '{}'

Resposta (201)

json
{
  "email": "meuteste@resultsyahoo.com",
  "domain": "resultsyahoo.com",
  "domain_id": 4
}

Erros: 400 domínio inválido ou indisponível · 409 endereço já existe

GET /api/messages?email=…

Lista as mensagens recebidas no e-mail informado (resumo: remetente, assunto e data), com o total. Para abrir uma mensagem inteira, use GET /api/message/{id}.

Parâmetro (query)

CampoTipoObrigatórioDescrição
emailstringsimEndereço completo da caixa (ex.: meuteste@anarchygmail.com).

Exemplo

curl
curl "http://localhost:3000/api/messages?email=meuteste@anarchygmail.com"

Resposta

json
{
  "messages": [
    {
      "id": 7,
      "sender": "remetente@teste.com",
      "subject": "Assunto da mensagem",
      "created_at": "2026-09-08 19:15:47"
    }
  ],
  "total": 1
}

Erros: 404 caixa não encontrada

GET /api/message/{id}?email=…

Abre a mensagem de ID informado, pertencente à caixa do e-mail passado — o JSON completo, incluindo o corpo. O email e o id da mensagem andam juntos.

Parâmetros

CampoTipoObrigatórioDescrição
idnumbersimID da mensagem (na URL, retornado por GET /api/messages).
emailstringsimEndereço completo da caixa dona da mensagem (ex.: meuteste@anarchygmail.com).

Exemplo

curl
curl "http://localhost:3000/api/message/7?email=meuteste@anarchygmail.com"

Resposta

json
{
  "message": {
    "id": 7,
    "inbox_id": 12,
    "sender": "remetente@teste.com",
    "subject": "Assunto da mensagem",
    "body": "Conteúdo completo da mensagem…",
    "created_at": "2026-09-08 19:15:47",
    "email": "meuteste@anarchygmail.com"
  }
}

Erros: 400 e-mail não informado · 404 caixa não encontrada · 404 mensagem não encontrada nesta caixa

GET /api/events

Stream Server-Sent Events que empurra os contadores de /api/stats toda vez que algo muda — um e-mail criado, uma mensagem recebida ou um domínio adicionado.

Exemplo

curl
curl -N "http://localhost:3000/api/events"

Evento

sse
event: stats
data: {"emailsCreated":129,"messagesReceived":41,"domainsAvailable":4}
Códigos de erro
400corpo inválido ou domínio indisponível
404caixa ou mensagem não encontrada
409endereço já existe
500erro interno
json
{ "error": "caixa não encontrada" }