Tempmail API Impulsionante Group api.impulsionantegroup.online

Referência da API · v1

E-mail temporário por API, num servidor de correio próprio

Você cria um endereço descartável, ele recebe mensagens de verdade e você lê o conteúdo — assunto, corpo, links e anexos — por HTTP. Nada de tela, nada de captcha.

Cada endereço é uma caixa postal real criada sob demanda num dos domínios da Impulsionante Group (impulsionantegroup.online e impulsionantegroup.shop), hospedados num Mailcow dedicado. Toda caixa dura 7 dias; ao expirar é apagada do servidor, mas o mesmo endereço volta na hora em que o usuário fizer login no webmail (caixa nova, vazia). Você só guarda o token que a API devolve.

Base URLhttps://api.impulsionantegroup.online
FormatoJSON em todas as respostas. Corpo de requisição em JSON.
AuthHeader X-API-Key em toda rota /v1/*
Playground/docs (OpenAPI interativo)

Autenticação

Toda chamada a /v1/* exige o header X-API-Key com a chave que você recebeu na contratação. As chaves têm o prefixo tmk_live_.

requisição
GET /v1/domains HTTP/1.1
Host: api.impulsionantegroup.online
X-API-Key: tmk_live_SUA_CHAVE
Fica só no seu navegador (localStorage). Não é enviada a lugar nenhum.
Guarde a chave como uma senha. Ela vale pelo seu plano e período contratado. Se vazar, peça a rotação no suporte — a chave antiga para de funcionar na hora.
A chave nasce travada por IP. Antes do primeiro uso você ativa a chave no servidor onde ela vai rodar (POST /v1/activate). Só aquele(s) IP(s) conseguem usá-la — 1 chave = 1 ambiente, não dá para compartilhar.

Ativação por IP

POST/v1/activate

Trava a chave no IP de onde a chamada partiu (ou nos IPs/CIDRs que você mandar no corpo). Enquanto a chave não tiver nenhum IP liberado, as rotas /v1/* respondem 403 “Chave não ativada”.

  • Rode a partir do servidor / VPS que vai consumir a API — ele detecta o IP sozinho.
  • Até 3 IPs liberados ao mesmo tempo. Até 5 trocas por mês.
  • Toda ativação fica registrada. Uso da chave a partir de IP não liberado gera alerta.
ativar no IP atual
curl -s -X POST https://api.impulsionantegroup.online/v1/activate \
  -H "X-API-Key: tmk_live_SUA_CHAVE"
ativar em IPs específicos
curl -s -X POST https://api.impulsionantegroup.online/v1/activate \
  -H "X-API-Key: tmk_live_SUA_CHAVE" \
  -H "content-type: application/json" \
  -d '{"ips": ["203.0.113.10", "198.51.100.0/29"]}'
200 · resposta
{
  "ip_allowlist": ["203.0.113.10"],
  "changed": true,
  "activations_used": 1,
  "activations_limit": 5
}
IP dinâmico? Rode o activate de novo quando ele mudar (dentro do limite mensal), ou peça ao suporte um bloco /CIDR fixo.

App atrás de proxy rotativo

Se cada request sua sai de um IP diferente (pool de proxy), a trava por IP não serve. Ligue o modo proxy — a trava por IP sai e, no lugar dela, toda request passa a exigir o header X-Client-Instance (um id fixo por worker/instância da sua aplicação, ex.: gen-worker-03).

ligar modo proxy
curl -s -X POST https://api.impulsionantegroup.online/v1/activate \
  -H "X-API-Key: tmk_live_SUA_CHAVE" \
  -H "content-type: application/json" -d '{"mode": "proxy"}'

# depois disso, TODA chamada precisa do header:
curl -s -X POST https://api.impulsionantegroup.online/v1/mailboxes \
  -H "X-API-Key: tmk_live_SUA_CHAVE" \
  -H "X-Client-Instance: gen-worker-03"

Voltar pra trava por IP: {"mode": "strict"}. A troca de modo também conta no limite mensal e fica registrada. Modo proxy é monitorado por volume e por número de instâncias distintas.

Início rápido

Uma vez por servidor: ative a chave. Depois: criar o endereço, esperar a mensagem, ler.

bash
BASE=https://api.impulsionantegroup.online
KEY=tmk_live_SUA_CHAVE

# 0. uma vez, no servidor que vai usar a chave: trava a chave neste IP
curl -s -X POST $BASE/v1/activate -H "X-API-Key: $KEY"

# 1. cria um e-mail temporário (dura 7 dias)
RESP=$(curl -s -X POST $BASE/v1/mailboxes -H "X-API-Key: $KEY")
EMAIL=$(echo "$RESP" | jq -r .email)
TOKEN=$(echo "$RESP" | jq -r .token)
echo "$EMAIL"        # ex.: qx9gskhxoh@impulsionantegroup.shop

# 2. use o EMAIL no cadastro/serviço alvo, então consulte a caixa
curl -s "$BASE/v1/mailboxes/$TOKEN/messages" -H "X-API-Key: $KEY"

# 3. abra a mensagem (id vem da lista, ex. "INBOX:1")
curl -s "$BASE/v1/mailboxes/$TOKEN/messages/INBOX:1" -H "X-API-Key: $KEY"
python
import time, requests

BASE = "https://api.impulsionantegroup.online"
H = {"X-API-Key": "tmk_live_SUA_CHAVE"}

mb = requests.post(f"{BASE}/v1/mailboxes", headers=H).json()
print(mb["email"])

for _ in range(20):                       # poll ~100s
    msgs = requests.get(f"{BASE}/v1/mailboxes/{mb['token']}/messages", headers=H).json()
    if msgs["count"]:
        msg = requests.get(
            f"{BASE}/v1/mailboxes/{mb['token']}/messages/{msgs['messages'][0]['id']}",
            headers=H).json()
        print(msg["subject"], msg["links"])
        break
    time.sleep(5)

Limites & headers

Cada resposta autenticada traz o estado da sua chave. Consulte antes de paralelizar.

HeaderSignificado
X-RateLimit-LimitRequisições permitidas por minuto no seu plano.
X-RateLimit-RemainingQuantas restam na janela atual de 60 s.
X-Quota-LimitCota de requisições do mês.
X-Quota-RemainingQuantas restam neste mês (zera no dia 1º).
Retry-AfterSegundos a aguardar — presente junto do 429 de rate limit.

Não há limite de caixas simultâneas — só a cota de requisições do mês. Cada criação de caixa também conta uma requisição.

Listar domínios

GET/v1/domains

Domínios liberados para a sua chave. Use um deles no campo domain ao criar, ou deixe a API sortear.

200 · resposta
{
  "domains": ["impulsionantegroup.online", "impulsionantegroup.shop"]
}

Criar e-mail temporário

POST/v1/mailboxes

Provisiona uma caixa nova. Corpo JSON — todos os campos são opcionais.

CampoDescrição
domainopcionalDomínio específico. Omitido = sorteado entre os seus.
prefixopcionalParte antes do @. Omitido = aleatória (10 chars).
ttl_minutesopcionalValidade em minutos. Padrão e mínimo 10080 (7 dias); valores menores sobem para o mínimo. Máximo 43200 (30 dias).
requisição
curl -s -X POST https://api.impulsionantegroup.online/v1/mailboxes \
  -H "X-API-Key: tmk_live_SUA_CHAVE" \
  -H "content-type: application/json" \
  -d '{"domain": "impulsionantegroup.shop"}'
201 · resposta
{
  "token": "8H4JSMrsuxzJbTjiEDO7lD9NEKrNBaju",
  "email": "p8ezpb2cte@impulsionantegroup.shop",
  "domain": "impulsionantegroup.shop",
  "created_at": "2026-09-06T01:28:06Z",
  "expires_at": "2026-09-13T01:28:06Z",
  "expires_in_seconds": 604800,
  "password": "pEODv@6CH3wnVZ#zftc5",
  "webmail_url": "https://webmail.impulsionantegroup.online"
}
Guarde o token. É o único jeito de acessar a caixa pela API — não há como listar caixas depois. O password só aparece aqui: com ele o usuário final pode entrar no webmail (webmail_url) e ler a caixa numa interface. Ignore os dois campos se for consumir só pela API.

Depois de 7 dias a caixa expira. Fazer login no webmail com esse e-mail + senha recria o mesmo endereço na hora (caixa vazia) — sem nova chamada à API.

Consultar a caixa

GET/v1/mailboxes/:token

Metadados e quanto falta para expirar. Devolve o mesmo formato do POST. 410 quando a caixa já expirou.

Listar mensagens

GET/v1/mailboxes/:token/messages

Lê INBOX + Junk via IMAP, mais recentes primeiro. Parâmetro ?limit= (1–100, padrão 25).

200 · resposta
{
  "email": "p8ezpb2cte@impulsionantegroup.shop",
  "count": 1,
  "messages": [
    {
      "id": "INBOX:1",
      "from_addr": "noreply@discord.com",
      "from_name": "",
      "to": "p8ezpb2cte@impulsionantegroup.shop",
      "subject": "Verify Email Address for Discord",
      "date": "2026-09-06T01:28:10Z",
      "seen": false,
      "preview": "Click https://click.discord.com/… to verify"
    }
  ]
}

Use o id ("INBOX:1") para abrir a mensagem inteira.

Ler uma mensagem

GET/v1/mailboxes/:token/messages/:id

A mensagem completa. Além dos campos da lista, inclui:

text
Corpo em texto puro
html
Corpo em HTML (string vazia se não houver)
links
Todas as URLs achadas no corpo, deduplicadas
attachments
Lista de {filename, content_type, size}
200 · trecho
{
  "id": "INBOX:1",
  "subject": "Verify Email Address for Discord",
  "text": "Click the link below…",
  "html": "<html>…</html>",
  "links": ["https://click.discord.com/ls/click?upn=…"],
  "attachments": []
}
Precisa do código, não do link? Faça um regex simples sobre text/subject no seu lado — a API entrega o conteúdo cru, sem interpretar.

Renovar / reativar

POST/v1/mailboxes/:token/renew

Duas formas de trazer a caixa de volta depois dos 7 dias:

  • Pelo webmail (automático): o usuário final entra em webmail.impulsionantegroup.online com o e-mail + senha. Se a caixa expirou, aparece o botão Reativar minha caixa — recria o mesmo endereço na hora, vazio. Não precisa de nenhuma chamada à API.
  • Por esta rota: chame quando o cliente renovar o acesso.
    • Caixa ativa → estende a validade por mais 7 dias. Resposta com "recreated": false.
    • Caixa expirada → recria o mesmo endereço, com a mesma senha, caixa vazia. Resposta com "recreated": true e o password. Conta como uma criação na sua cota.
requisição
curl -s -X POST https://api.impulsionantegroup.online/v1/mailboxes/$TOKEN/renew \
  -H "X-API-Key: tmk_live_SUA_CHAVE"
Mensagens que a caixa recebeu antes de expirar não voltam — a reativação cria uma caixa nova, só reaproveita o endereço e a senha.

Apagar a caixa

DELETE/v1/mailboxes/:token

Remove o mailbox do servidor na hora, antes dos 7 dias. Responde 204 sem corpo. Opcional — a caixa some sozinha no vencimento.

Seu plano e consumo

GET/v1/me

Consulta o próprio plano, validade e uso do mês.

200 · resposta
{
  "id": "cli_87b1acd07373",
  "plan": "basic",
  "active": true,
  "expired": false,
  "expires_at": "2026-10-06T00:00:00Z",
  "limits": { "rate_per_min": 60, "monthly_quota": 20000 },
  "usage":  { "period": "2026-09", "requests": 1240, "mailboxes": 310 }
}

Erros

Erros vêm como {"detail": "…"} com o status HTTP correspondente.

StatusQuandoMensagem (exemplo)
400Domínio pedido não está liberado para a chaveDominio nao permitido. Use um de: […]
401Header ausente ou chave inexistenteX-API-Key ausente · X-API-Key invalida
403Chave suspensa/vencida, não ativada, ou IP fora da allowlistChave nao ativada. Rode POST /v1/activate… · IP x.x.x.x nao autorizado para esta chave.
404Token ou id de mensagem não encontradoToken nao encontrado
409Mailcow recusou a criação (prefixo em uso, etc.)Nao foi possivel criar o mailbox: …
410A caixa já passou dos 7 diasMailbox expirado
429Rate limit ou cota do mêsRate limit excedido. Aguarde e tente de novo. · Cota mensal esgotada
502Falha temporária falando com o servidor de correioErro ao ler inbox via IMAP: …

Em 429 por rate limit, respeite o Retry-After. Em 502, tente de novo com backoff — costuma ser transitório.

Planos

Os números abaixo são os presets. Limites sob medida (cota maior, rate maior, domínio dedicado) são combinados no suporte. A Validade é da chave/assinatura — não da caixa.

PlanoReq/minReq/mêsValidade da chave
trial105.0003 dias
basic6020.00030 dias
pro240200.00030 dias
unlimited——365 dias

Em todos os planos, cada caixa criada dura 7 dias. Expirou? O usuário reativa o mesmo endereço fazendo login no webmail (caixa nova, vazia), ou você usa POST /…/renew.

Renovação: pagou de novo, a validade é estendida na mesma chave — sem trocar nada no seu código.

Boas práticas

Faça poll com intervalo
5 s entre consultas à caixa é suficiente. E-mail de verificação chega em segundos, mas não instantaneamente.
Apague ao terminar
DELETE remove a caixa na hora se você já não precisa dela — não é obrigatório.
A caixa dura 7 dias
Expirou? Login no webmail traz o mesmo endereço de volta (vazio).
Trate o 429
Backoff exponencial + honre Retry-After. Paralelizar sem isso só queima cota.
Uma chave por ambiente
Não compartilhe a mesma chave entre projetos — se um vazar, a rotação derruba todos.
Nada de spam
A caixa é só para receber. Uso para envio/abuso derruba a chave sem reembolso.