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. A caixa expira sozinha depois do TTL (padrão 60 min) e é
apagada do servidor. 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
Início rápido
Três chamadas: criar o endereço, esperar a mensagem chegar, ler.
BASE=https://api.impulsionantegroup.online KEY=tmk_live_SUA_CHAVE # 1. cria um e-mail temporário (TTL de 30 min) RESP=$(curl -s -X POST $BASE/v1/mailboxes \ -H "X-API-Key: $KEY" -H "content-type: application/json" \ -d '{"ttl_minutes": 30}') 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", json={"ttl_minutes": 30}, 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. |
Além disso, cada plano tem um teto de caixas ativas ao mesmo tempo. Apague as caixas
que já não usa (DELETE) para liberar espaço antes do TTL.
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 60, máximo 1440 (24 h). |
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", "ttl_minutes": 30}'
{
"token": "8H4JSMrsuxzJbTjiEDO7lD9NEKrNBaju",
"email": "p8ezpb2cte@impulsionantegroup.shop",
"domain": "impulsionantegroup.shop",
"created_at": "2026-09-06T01:28:06Z",
"expires_at": "2026-09-06T01:58:06Z",
"expires_in_seconds": 1800,
"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.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.Apagar a caixa
Remove o mailbox do servidor na hora e libera uma vaga na sua cota de caixas ativas.
Responde 204 sem corpo. Boa prática: apague assim que terminar de usar.
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, "max_active_mailboxes": 50 },
"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, ou IP fora da allowlist | Assinatura expirada. Renove para continuar usando. |
| 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 do TTL | Mailbox expirado |
| 429 | Rate limit, cota do mês, ou teto de caixas ativas | Rate limit excedido. Aguarde e tente de novo. · Limite de 50 mailboxes ativos atingido. |
| 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 (mais caixas, cota maior, domínio dedicado) são combinados no suporte.
| Plano | Req/min | Req/mês | Caixas ativas | Validade |
|---|---|---|---|---|
| trial | 10 | 300 | 3 | 3 dias |
| basic | 60 | 20.000 | 50 | 30 dias |
| pro | 240 | 200.000 | 300 | 30 dias |
| unlimited | — | — | — | 365 dias |
Renovação: pagou de novo, a validade é estendida na mesma chave — sem trocar nada no seu código.
Boas práticas
DELETE libera vaga na cota de caixas ativas antes do TTL.Retry-After. Paralelizar sem isso só queima cota.