O Resend CLI é a ferramenta oficial de linha de comando para Resend, uma plataforma de e-mail desenvolvida para quem constrói aplicações. Instale com npm install -g resend-cli ou brew install resend/cli/resend, autentique usando resend login e comece a enviar e-mails, gerenciar domínios e automatizar fluxos de e-mail direto do terminal ou de pipelines CI/CD.
O que é Resend?
Resend é uma API de e-mail pensada para desenvolvedores. Basta conectar seu domínio, gerar uma chave de API e começar a disparar e-mails transacionais: redefinição de senha, confirmação de pedidos, onboarding e qualquer outro fluxo programático.
Em 13 de março de 2026, Zeno Rocha (fundador da Resend) lançou o Resend CLI, trazendo toda a infraestrutura da plataforma para o terminal. O CLI oferece 53 comandos cobrindo 13 recursos. Implementado em TypeScript, código aberto (MIT), atende três cenários principais:
- Humanos: prompts interativos, saída em tabela, agendamento em linguagem natural (ex: "amanhã às 9h")
- Agentes de IA: saída JSON, chaves de idempotência, detecção automática de agente
- Pipelines CI/CD: autenticação via variável de ambiente, flags scriptáveis, códigos de saída consistentes
💡
Se você desenvolve apps que enviam e-mails, precisa testar chamadas de API antes da produção. O <a href="https://apidog.com/?utm_source=dev.to&utm_medium=wanda&utm_content=n8n-post-automation">Apidog</a> oferece interface visual gratuita para testar APIs REST (incluindo a Resend), sem escrever código. Importe a especificação OpenAPI da Resend, configure ambientes e rode suítes de teste organizadas, tudo em um só lugar.
Instalando o Resend CLI
Escolha uma das quatro formas abaixo para instalar o CLI conforme seu ambiente:
Via cURL (binário autônomo, não requer Node.js)
curl -fsSL https://resend.com/install.sh | bash
Baixa o binário pré-compilado e adiciona ao PATH. Não precisa de Node.js.
Via npm
npm install -g resend-cli
Requer Node.js 20+. Após instalar, teste:
resend --version
Via Homebrew (macOS e Linux)
brew install resend/cli/resend
O método mais limpo no macOS. O Homebrew cuida das atualizações.
Via PowerShell (Windows)
irm https://resend.com/install.ps1 | iex
Ou baixe o .exe diretamente da página de releases no GitHub.
Para desenvolvimento local
Se quiser contribuir ou compilar do fonte, precisa de Node.js 20+ e pnpm:
git clone https://github.com/resend/resend-cli.git
cd resend-cli
pnpm install
pnpm build # gera ./dist/cli.cjs
pnpm build:bin # binário nativo em ./dist/resend
Autenticando sua conta
Execute o comando para conectar sua conta Resend ao CLI:
resend login
O navegador será aberto, guiando para criar a chave de API e armazenar credenciais localmente em ~/.config/resend/credentials.json com permissão 0600.
Para ambientes automatizados (CI/CD), passe a chave diretamente:
resend login --key re_xxxxxxxxxxxxx
A ordem de prioridade para autenticação:
- Flag
--api-key - Variável de ambiente
RESEND_API_KEY - Arquivo de credenciais local
Em pipelines CI, defina a variável de ambiente:
RESEND_API_KEY=re_xxx resend emails send --from builds@yourco.com --to dev@yourco.com --subject "Build passed" --text "All tests green."
Múltiplas contas
Para alternar entre perfis:
resend auth switch
Ou use um perfil específico em um comando:
resend <comando> --profile production
Enviando seu primeiro e-mail
O comando principal é resend emails send. Você precisa de remetente (domínio verificado), destinatário, assunto e corpo.
Enviar texto simples
resend emails send \
--from "voce@seudominio.com" \
--to destinatario@example.com \
--subject "Olá do CLI" \
--text "Este é um e-mail de teste enviado do Resend CLI."
Enviar e-mail HTML
resend emails send \
--from "equipe@suaempresa.com" \
--to usuario@example.com \
--subject "Seu pedido está confirmado" \
--html "<h1>Pedido confirmado</h1><p>Obrigado pela sua compra.</p>"
Ou referencie um arquivo HTML:
resend emails send \
--from "equipe@suaempresa.com" \
--to usuario@example.com \
--subject "Bem-vindo a bordo" \
--html-file ./templates/welcome.html
Agendar envio
O CLI entende datas em linguagem natural e ISO 8601:
resend emails send \
--from "voce@suaempresa.com" \
--to usuario@example.com \
--subject "Check-in agendado" \
--text "Apenas um check-in." \
--schedule "amanhã às 9am"
Aceita frases como "em 1 hora", "próxima segunda-feira às 15h" ou timestamp ISO.
Capturar o ID do e-mail
Para automação:
EMAIL_ID=$(resend emails send \
--from a@acme.com \
--to b@acme.com \
--subject "Teste" \
--text "Olá" | jq -r '.data.id')
echo "E-mail enviado: $EMAIL_ID"
Cancelar ou atualizar envio agendado
resend emails cancel $EMAIL_ID
resend emails update $EMAIL_ID --schedule "próxima Segunda às 10am"
Listar e-mails recentes
resend emails list
Envio em lote (até 100 e-mails)
Monte um arquivo JSON:
[
{ "from": "voce@suaempresa.com", "to": "alice@example.com", "subject": "Olá Alice", "text": "Olá!" },
{ "from": "voce@suaempresa.com", "to": "bob@example.com", "subject": "Olá Bob", "text": "Olá!" }
]
Envie todos de uma vez:
resend emails send-batch --file emails.json
Cada chamada de lote conta para o limite de taxa.
Gerenciando domínios e chaves de API
Antes de enviar e-mails, adicione e verifique um domínio.
Adicionar domínio
resend domains create --name seudominio.com --region us-east-1
Regiões: us-east-1, eu-west-1, sa-east-1, ap-northeast-1.
Verificar registros DNS
Após criar, adicione registros SPF, DKIM, DMARC e execute:
resend domains verify --id <domain-id>
Verifique o status:
resend domains get --id <domain-id>
Configurar rastreamento e TLS
resend domains configure --id <domain-id>
Permite ativar rastreamento de aberturas, cliques e DKIM personalizado.
Listar domínios
resend domains list
Gerenciar chaves de API
Crie chaves com escopo por serviço ou ambiente:
resend api-keys create
resend api-keys list
resend api-keys delete --id <key-id>
Chaves com escopo limitam acessos por domínio.
Recursos avançados: broadcasts, webhooks e templates
Broadcasts
Envie e-mails em massa:
resend broadcasts create # Criação de rascunho interativo
resend broadcasts send --id <broadcast-id>
resend broadcasts schedule --id <broadcast-id> --date "próxima Segunda às 10am"
Webhooks
Registre endpoints para eventos em tempo real:
resend webhooks create
resend webhooks list
Para desenvolvimento local, faça proxy para localhost:
resend webhooks listen --forward-to http://localhost:3000/webhooks/resend
Suporta 17 tipos de eventos, incluindo email.sent, email.delivered, email.bounced, email.opened e email.clicked.
Templates
Gerencie HTML reutilizável com variáveis:
resend templates create
Use {{nome_da_variavel}} com valores de fallback. Ao enviar, referencie o template por ID.
Contatos e públicos
Gerencie contatos para campanhas:
resend contacts create --audience-id <id> --email usuario@example.com --first-name "Alice"
resend contacts list --audience-id <id>
resend contacts update --id <contact-id> --unsubscribed false
Diagnóstico do ambiente
Verifique o setup com:
resend doctor
Checa versão, chave, domínios e detecta agentes de IA.
Usando o Resend CLI em pipelines de CI/CD
Saída para automação
Ao redirecionar ou usar --json, a saída é JSON estruturado:
resend emails send --from a@co.com --to b@co.com --subject "Deploy" --text "Feito" --json
--quiet suprime tudo exceto JSON:
resend emails list --quiet | jq '.[0].id'
Confirmar operações destrutivas automaticamente
Use --yes para pular prompts:
resend api-keys delete --id <key-id> --yes
Exemplo GitHub Actions
- name: Send deployment notification
env:
RESEND_API_KEY: ${{ secrets.RESEND_API_KEY }}
run: |
resend emails send \
--from deploys@yourco.com \
--to team@yourco.com \
--subject "Deploy para produção: ${{ github.sha }}" \
--text "Commit ${{ github.sha }} implantado em produção."
Limites de taxa
O limite é de 2 requisições/segundo (por equipe, todas as chaves). Para alto volume, prefira send-batch ao invés de loops.
Testando sua API de e-mail com Apidog
O Resend CLI é ótimo para uso manual e scripts. Se você vai integrar diretamente com a API REST, precisa explorar e testar endpoints antes de codificar.
O Apidog resolve isso. Com ele você:
- Envia requisições HTTP, inspeciona respostas, organiza testes e configura ambientes para múltiplas chaves de API.
- Importa a especificação da API Resend (resend.com/docs) e navega pelos endpoints, schemas e exemplos.
- Cria ambientes (ex: dev/prod), armazena
RESEND_API_KEYcomo variável e alterna entre ambientes facilmente. - Testa envios usando o endpoint
POST /emails, verifica retorno de IDs, comportamento em erros, etc. - Automatiza testes: encadeie chamadas e faça asserções nas respostas, tudo sem código de teste manual.
Isso identifica bugs de integração antes de chegar à produção. Combinando o Resend CLI e o Apidog, você cobre tanto terminal quanto testes visuais e automatizados.
Preços da Resend
O CLI é gratuito e open source. Os preços referem-se à plataforma Resend:
| Plano | Preço | E-mails mensais | Limite diário | Retenção de logs |
|---|---|---|---|---|
| Grátis | $0/mês | 3.000 | 100/dia | 1 dia |
| Pro | $20/mês | 50.000 | Sem limite | 3 dias |
| Scale | $90/mês | 100.000 | Sem limite | 7 dias |
| Enterprise | Personalizado | Personalizado | Personalizado | Personalizado |
Pontos do plano gratuito:
- Limite de 100/dia: ideal para testes e projetos pequenos, não produção
- Análises (rastreamento) disponíveis só em planos pagos
- Retenção de logs de apenas 1 dia
- Limite de taxa de 2 req/s para todos os planos (compartilhado)
- Excesso controlado: até 5x a cota mensal
IPs dedicados: $30/mês no plano Scale para quem envia mais de 500 e-mails/dia.
FAQ
Preciso de Node.js para instalar o Resend CLI?
Não para cURL ou Homebrew (binários autônomos). Apenas via npm requer Node.js 20+.
Por que não consigo enviar de qualquer endereço?
É obrigatório ter domínio verificado via DNS (SPF, DKIM, DMARC). Não é possível usar Gmail/outros provedores gratuitos como remetente.
Posso enviar para qualquer e-mail no plano gratuito?
Sim. O limite é 3.000/mês (100/dia), mas sem restrição de destinatário.
Como funciona o agendamento em linguagem natural?
O CLI interpreta frases como "amanhã às 9h", "próxima sexta às 15h" ou timestamps ISO 8601, no fuso horário local.
O que acontece ao redirecionar a saída?
O CLI detecta pipes e converte a saída para JSON puro (sem prompts ou spinners).
É possível usar múltiplas contas?
Sim. Armazene vários perfis via resend login e alterne com resend auth switch ou --profile.
O Resend CLI é open source?
Sim, sob licença MIT em github.com/resend/resend-cli.
Qual a diferença entre --quiet e --json?
Ambos geram JSON. --json força JSON; --quiet também remove qualquer saída extra (spinners, progresso).
Top comments (0)