/api/stats
Retorna quantos e-mails já foram criados, quantas mensagens foram recebidas e quantos domínios estão disponíveis no momento.
Resposta
{
"emailsCreated": 128,
"messagesReceived": 41,
"domainsAvailable": 4
}
API
Crie caixas, consulte domínios e leia mensagens por HTTP. Todos os endpoints aceitam e devolvem JSON.
Base: http://localhost:3000 no ar
/api/stats
Retorna quantos e-mails já foram criados, quantas mensagens foram recebidas e quantos domínios estão disponíveis no momento.
{
"emailsCreated": 128,
"messagesReceived": 41,
"domainsAvailable": 4
}
/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.
{
"domains": [
{ "id": 1, "name": "anarchygmail.com" },
{ "id": 2, "name": "warkadasoutlook.com" },
{ "id": 3, "name": "warkadashotmail.com" },
{ "id": 4, "name": "resultsyahoo.com" }
],
"total": 4
}
/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.
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
prefix | string | não | Prefixo do e-mail. Vazio gera um hash aleatório único. |
domain | string | não* | Domínio pelo nome (ex.: anarchygmail.com). |
domain_id | number | nã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.
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 '{}'
curl -X POST http://localhost:3000/api/inbox/create \
-H "Content-Type: application/json" \
-d '{"prefix":"meuteste"}'
curl -X POST http://localhost:3000/api/inbox/create \
-H "Content-Type: application/json" \
-d '{"prefix":"meuteste","domain":"warkadasoutlook.com"}'
curl -X POST http://localhost:3000/api/inbox/create \
-H "Content-Type: application/json" \
-d '{"prefix":"meuteste","domain_id":4}'
curl "http://localhost:3000/api/domains"
curl -X POST http://localhost:3000/api/inbox/create \
-H "Content-Type: application/json" \
-d '{"prefix":"meuteste","domain_id":4}'
const domains = await fetch("http://localhost:3000/api/domains").then((r) => r.json());
const escolhido = domains.domains.find((d) => d.name === "resultsyahoo.com");
const res = await fetch("http://localhost:3000/api/inbox/create", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ prefix: "meuteste", domain_id: escolhido.id })
});
const box = await res.json();
console.log(box.email);
import requests
domains = requests.get("http://localhost:3000/api/domains").json()
escolhido = next(d for d in domains["domains"] if d["name"] == "resultsyahoo.com")
res = requests.post(
"http://localhost:3000/api/inbox/create",
json={"prefix": "meuteste", "domain_id": escolhido["id"]},
)
print(res.json()["email"])
{
"email": "meuteste@resultsyahoo.com",
"domain": "resultsyahoo.com",
"domain_id": 4
}
Erros: 400 domínio inválido ou indisponível · 409 endereço já existe
/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}.
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
email | string | sim | Endereço completo da caixa (ex.: meuteste@anarchygmail.com). |
curl "http://localhost:3000/api/messages?email=meuteste@anarchygmail.com"
{
"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
/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.
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
id | number | sim | ID da mensagem (na URL, retornado por GET /api/messages). |
email | string | sim | Endereço completo da caixa dona da mensagem (ex.: meuteste@anarchygmail.com). |
curl "http://localhost:3000/api/message/7?email=meuteste@anarchygmail.com"
{
"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
/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.
curl -N "http://localhost:3000/api/events"
event: stats
data: {"emailsCreated":129,"messagesReceived":41,"domainsAvailable":4}
400corpo inválido ou domínio indisponível404caixa ou mensagem não encontrada409endereço já existe500erro interno{ "error": "caixa não encontrada" }