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 URL | https://api.impulsionantegroup.online |
|---|---|
| Formato | JSON em todas as respostas. Corpo de requisição em JSON. |
| Auth | Header 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_.
GET /v1/domains HTTP/1.1 Host: api.impulsionantegroup.online X-API-Key: tmk_live_SUA_CHAVE
POST /v1/activate). Só
aquele(s) IP(s) conseguem usá-la — 1 chave = 1 ambiente, não dá para compartilhar.
Ativação por IP
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.
curl -s -X POST https://api.impulsionantegroup.online/v1/activate \
-H "X-API-Key: tmk_live_SUA_CHAVE"
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"]}'
{
"ip_allowlist": ["203.0.113.10"],
"changed": true,
"activations_used": 1,
"activations_limit": 5
}
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).
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.
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"
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.
| Header | Significado |
|---|---|
X-RateLimit-Limit | Requisições permitidas por minuto no seu plano. |
X-RateLimit-Remaining | Quantas restam na janela atual de 60 s. |
X-Quota-Limit | Cota de requisições do mês. |
X-Quota-Remaining | Quantas restam neste mês (zera no dia 1º). |
Retry-After | Segundos 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
Domínios liberados para a sua chave. Use um deles no campo domain ao criar,
ou deixe a API sortear.
{
"domains": ["impulsionantegroup.online", "impulsionantegroup.shop"]
}
Criar e-mail temporário
Provisiona uma caixa nova. Corpo JSON — todos os campos são opcionais.
| Campo | Descrição | |
|---|---|---|
domain | opcional | Domínio específico. Omitido = sorteado entre os seus. |
prefix | opcional | Parte antes do @. Omitido = aleatória (10 chars). |
ttl_minutes | opcional | Validade em minutos. Padrão e mínimo 10080 (7 dias); valores menores sobem para o mínimo. Máximo 43200 (30 dias). |
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"}'
{
"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"
}
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
Metadados e quanto falta para expirar. Devolve o mesmo formato do POST.
410 quando a caixa já expirou.
Listar mensagens
Lê INBOX + Junk via IMAP, mais recentes primeiro.
Parâmetro ?limit= (1–100, padrão 25).
{
"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
A mensagem completa. Além dos campos da lista, inclui:
{filename, content_type, size}{
"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": []
}
text/subject no seu lado — a API entrega o conteúdo cru, sem interpretar.Renovar / reativar
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": truee opassword. Conta como uma criação na sua cota.
- Caixa ativa → estende a validade por mais 7 dias. Resposta com
curl -s -X POST https://api.impulsionantegroup.online/v1/mailboxes/$TOKEN/renew \ -H "X-API-Key: tmk_live_SUA_CHAVE"
Apagar a caixa
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
Consulta o próprio plano, validade e uso do mês.
{
"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.
| Status | Quando | Mensagem (exemplo) |
|---|---|---|
| 400 | Domínio pedido não está liberado para a chave | Dominio nao permitido. Use um de: […] |
| 401 | Header ausente ou chave inexistente | X-API-Key ausente · X-API-Key invalida |
| 403 | Chave suspensa/vencida, não ativada, ou IP fora da allowlist | Chave nao ativada. Rode POST /v1/activate… · IP x.x.x.x nao autorizado para esta chave. |
| 404 | Token ou id de mensagem não encontrado | Token nao encontrado |
| 409 | Mailcow recusou a criação (prefixo em uso, etc.) | Nao foi possivel criar o mailbox: … |
| 410 | A caixa já passou dos 7 dias | Mailbox expirado |
| 429 | Rate limit ou cota do mês | Rate limit excedido. Aguarde e tente de novo. · Cota mensal esgotada |
| 502 | Falha temporária falando com o servidor de correio | Erro 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.
| Plano | Req/min | Req/mês | Validade da chave |
|---|---|---|---|
| trial | 10 | 5.000 | 3 dias |
| basic | 60 | 20.000 | 30 dias |
| pro | 240 | 200.000 | 30 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
DELETE remove a caixa na hora se você já não precisa dela — não é obrigatório.Retry-After. Paralelizar sem isso só queima cota.