API Fire Mail

Integre e-mails temporários em suas aplicações de forma simples e rápida

GitHub - @firemailoficial/firemail-api

Introdução

A API do Fire Mail permite que você crie e gerencie e-mails temporários programaticamente. Perfeito para testes automatizados, verificações de e-mail e proteção de privacidade.

Características:

  • Sem autenticação: API aberta e fácil de usar
  • Rate limiting: 300 requisições por hora por IP
  • Respostas JSON: Formato padronizado e fácil de parsear
  • CORS habilitado: Use diretamente do navegador
  • E-mails automáticos: Deletados após 7 dias de inatividade

URL Base:

https://firemail.com.br/api

Rate Limiting

Para garantir a qualidade do serviço, a API possui as seguintes limitações:

  • 300 requisições por hora por endereço IP
  • IPs que excederem o limite serão bloqueados por 1 hora
  • O contador é resetado a cada hora

Headers de resposta: Todas as respostas incluem informações sobre o limite no campo rate_limit do JSON.

Endpoints

POST Criar E-mail Temporário

/api/email/create

Cria um novo endereço de e-mail temporário.

Parâmetros (opcional):
Campo Tipo Descrição
email string Nome do e-mail desejado (sem @dominio). Se não informado, será gerado aleatoriamente.
Exemplo de requisição:
JavaScript
// Criar e-mail aleatório
const response = await fetch('https://firemail.com.br/api/email/create', {
    method: 'POST',
    headers: {
        'Content-Type': 'application/json'
    }
});

const data = await response.json();
console.log(data);

// Criar e-mail específico
const responseCustom = await fetch('https://firemail.com.br/api/email/create', {
    method: 'POST',
    headers: {
        'Content-Type': 'application/json'
    },
    body: JSON.stringify({
        email: 'meuemail123'
    })
});

const dataCustom = await responseCustom.json();
console.log(dataCustom);
PHP
// Criar e-mail aleatório
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://firemail.com.br/api/email/create');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);

$response = curl_exec($ch);
curl_close($ch);

$data = json_decode($response, true);
print_r($data);

// Criar e-mail específico
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://firemail.com.br/api/email/create');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode(['email' => 'meuemail123']));

$response = curl_exec($ch);
curl_close($ch);

$data = json_decode($response, true);
print_r($data);
Resposta de sucesso:
{
    "status": "success",
    "message": "E-mail criado com sucesso",
    "data": {
        "email": "[email protected]",
        "created_at": "2025-06-05 10:30:00",
        "expires_in": "7 dias"
    }
}

GET Verificar Mensagens

/api/email/check/{email}

Lista todas as mensagens recebidas em um endereço de e-mail.

Parâmetros de URL:
Parâmetro Tipo Descrição
{email} string Nome do e-mail (sem @dominio)
Exemplo de requisição:
JavaScript
const email = 'meuemail123';
const response = await fetch(`https://firemail.com.br/api/email/check/${email}`);
const data = await response.json();

console.log(`Total de mensagens: ${data.data.message_count}`);
data.data.messages.forEach(msg => {
    console.log(`De: ${msg.from.email} - Assunto: ${msg.subject}`);
});
PHP
$email = 'meuemail123';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://firemail.com.br/api/email/check/' . $email);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$response = curl_exec($ch);
curl_close($ch);

$data = json_decode($response, true);

echo "Total de mensagens: " . $data['data']['message_count'] . "\n";
foreach($data['data']['messages'] as $msg) {
    echo "De: {$msg['from']['email']} - Assunto: {$msg['subject']}\n";
}
Resposta de sucesso:
{
    "status": "success",
    "data": {
        "email": "[email protected]",
        "message_count": 2,
        "messages": [
            {
                "id": 1,
                "from": {
                    "name": "João Silva",
                    "email": "[email protected]"
                },
                "subject": "Teste de e-mail",
                "date": "2025-06-05 10:35:00",
                "timestamp": 1717590900
            },
            {
                "id": 2,
                "from": {
                    "name": null,
                    "email": "[email protected]"
                },
                "subject": "Confirmação de cadastro",
                "date": "2025-06-05 10:40:00",
                "timestamp": 1717591200
            }
        ]
    }
}

GET Obter Mensagem Específica

/api/email/message/{email}/{id}

Obtém o conteúdo completo de uma mensagem específica.

Parâmetros de URL:
Parâmetro Tipo Descrição
{email} string Nome do e-mail (sem @dominio)
{id} integer ID da mensagem
Exemplo de requisição:
JavaScript
const email = 'meuemail123';
const messageId = 1;

const response = await fetch(`https://firemail.com.br/api/email/message/${email}/${messageId}`);
const data = await response.json();

console.log(`Assunto: ${data.data.subject}`);
console.log(`De: ${data.data.from.email}`);
console.log(`Conteúdo: ${data.data.body}`);
Resposta de sucesso:
{
    "status": "success",
    "data": {
        "id": 1,
        "from": {
            "name": "João Silva",
            "email": "[email protected]"
        },
        "subject": "Teste de e-mail",
        "body": "Olá! Este é um teste de e-mail temporário.",
        "date": "2025-06-05 10:35:00",
        "timestamp": 1717590900
    }
}

GET Status da API

/api/status

Verifica o status da API e informações sobre rate limit.

Exemplo de requisição:
JavaScript
const response = await fetch('https://firemail.com.br/api/status');
const data = await response.json();

console.log(`Limite por hora: ${data.data.rate_limit.limit_per_hour}`);
console.log(`Uso atual: ${data.data.rate_limit.current_usage}`);
console.log(`Requisições restantes: ${data.data.rate_limit.remaining}`);
Resposta:
{
    "status": "success",
    "data": {
        "api_version": "1.0",
        "rate_limit": {
            "limit_per_hour": 300,
            "current_usage": 15,
            "remaining": 45
        },
        "server_time": "2025-06-05 10:45:00"
    }
}

Códigos de Erro

Código Descrição Exemplo de Resposta
400 Requisição inválida {"status": "error", "message": "E-mail inválido", "code": 400}
404 Recurso não encontrado {"status": "error", "message": "E-mail não encontrado", "code": 404}
429 Limite de requisições excedido {"status": "error", "message": "Limite de requisições excedido", "code": 429}
500 Erro interno do servidor {"status": "error", "message": "Erro ao processar requisição", "code": 500}

Exemplos Práticos

Monitorar e-mail em tempo real (JavaScript)

JavaScript
async function monitorEmail(emailName) {
    console.log(`Monitorando e-mail: ${emailName}@firemail.com.br`);
    
    setInterval(async () => {
        try {
            const response = await fetch(`https://firemail.com.br/api/email/check/${emailName}`);
            const data = await response.json();
            
            if (data.status === 'success' && data.data.message_count > 0) {
                console.log(`Novas mensagens: ${data.data.message_count}`);
                
                // Processar cada mensagem
                for (const msg of data.data.messages) {
                    console.log(`Nova mensagem de ${msg.from.email}: ${msg.subject}`);
                    
                    // Buscar conteúdo completo
                    const msgResponse = await fetch(`https://firemail.com.br/api/email/message/${emailName}/${msg.id}`);
                    const msgData = await msgResponse.json();
                    
                    console.log('Conteúdo:', msgData.data.body);
                }
            }
        } catch (error) {
            console.error('Erro ao verificar e-mail:', error);
        }
    }, 5000); // Verificar a cada 5 segundos
}

// Criar e-mail e começar monitoramento
async function startMonitoring() {
    const response = await fetch('https://firemail.com.br/api/email/create', {
        method: 'POST'
    });
    const data = await response.json();
    
    if (data.status === 'success') {
        const email = data.data.email.split('@')[0];
        monitorEmail(email);
    }
}

startMonitoring();

Sistema de verificação de e-mail (PHP)

PHP
class FireMailVerification {
    private $apiUrl = 'https://firemail.com.br/api';
    
    public function createVerificationEmail($username = null) {
        $data = $username ? ['email' => $username] : [];
        
        $ch = curl_init($this->apiUrl . '/email/create');
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_POST, true);
        curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);
        curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
        
        $response = curl_exec($ch);
        curl_close($ch);
        
        return json_decode($response, true);
    }
    
    public function waitForVerification($email, $expectedSender, $timeout = 300) {
        $emailName = explode('@', $email)[0];
        $startTime = time();
        
        while (time() - $startTime < $timeout) {
            $ch = curl_init($this->apiUrl . '/email/check/' . $emailName);
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
            
            $response = curl_exec($ch);
            curl_close($ch);
            
            $data = json_decode($response, true);
            
            if ($data['status'] === 'success' && $data['data']['message_count'] > 0) {
                foreach ($data['data']['messages'] as $msg) {
                    if (strpos($msg['from']['email'], $expectedSender) !== false) {
                        // Buscar conteúdo da mensagem
                        $ch = curl_init($this->apiUrl . '/email/message/' . $emailName . '/' . $msg['id']);
                        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
                        
                        $msgResponse = curl_exec($ch);
                        curl_close($ch);
                        
                        return json_decode($msgResponse, true);
                    }
                }
            }
            
            sleep(5); // Aguardar 5 segundos antes de verificar novamente
        }
        
        return null; // Timeout
    }
}

// Exemplo de uso
$verifier = new FireMailVerification();

// Criar e-mail de verificação
$result = $verifier->createVerificationEmail('verificacao' . rand(1000, 9999));

if ($result['status'] === 'success') {
    $email = $result['data']['email'];
    echo "Use este e-mail para verificação: $email\n";
    
    // Aguardar e-mail de verificação
    echo "Aguardando e-mail de verificação...\n";
    $verification = $verifier->waitForVerification($email, '[email protected]');
    
    if ($verification) {
        echo "E-mail de verificação recebido!\n";
        echo "Assunto: " . $verification['data']['subject'] . "\n";
        echo "Conteúdo: " . $verification['data']['body'] . "\n";
    } else {
        echo "Tempo limite excedido.\n";
    }
}