DEV Community

Cover image for Como Instalar e Usar o Resend CLI: Guia Completo
Lucas
Lucas

Posted on • Originally published at apidog.com

Como Instalar e Usar o Resend CLI: Guia Completo

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.

Experimente o Apidog hoje

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&amp;utm_medium=wanda&amp;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.
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

Baixa o binário pré-compilado e adiciona ao PATH. Não precisa de Node.js.

Via npm

npm install -g resend-cli
Enter fullscreen mode Exit fullscreen mode

Requer Node.js 20+. Após instalar, teste:

resend --version
Enter fullscreen mode Exit fullscreen mode

Via Homebrew (macOS e Linux)

brew install resend/cli/resend
Enter fullscreen mode Exit fullscreen mode

O método mais limpo no macOS. O Homebrew cuida das atualizações.

Via PowerShell (Windows)

irm https://resend.com/install.ps1 | iex
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

Autenticando sua conta

Execute o comando para conectar sua conta Resend ao CLI:

resend login
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

A ordem de prioridade para autenticação:

  1. Flag --api-key
  2. Variável de ambiente RESEND_API_KEY
  3. 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."
Enter fullscreen mode Exit fullscreen mode

Múltiplas contas

Para alternar entre perfis:

resend auth switch
Enter fullscreen mode Exit fullscreen mode

Ou use um perfil específico em um comando:

resend <comando> --profile production
Enter fullscreen mode Exit fullscreen mode

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."
Enter fullscreen mode Exit fullscreen mode

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>"
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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"
Enter fullscreen mode Exit fullscreen mode

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"
Enter fullscreen mode Exit fullscreen mode

Cancelar ou atualizar envio agendado

resend emails cancel $EMAIL_ID
resend emails update $EMAIL_ID --schedule "próxima Segunda às 10am"
Enter fullscreen mode Exit fullscreen mode

Listar e-mails recentes

resend emails list
Enter fullscreen mode Exit fullscreen mode

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á!" }
]
Enter fullscreen mode Exit fullscreen mode

Envie todos de uma vez:

resend emails send-batch --file emails.json
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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>
Enter fullscreen mode Exit fullscreen mode

Verifique o status:

resend domains get --id <domain-id>
Enter fullscreen mode Exit fullscreen mode

Configurar rastreamento e TLS

resend domains configure --id <domain-id>
Enter fullscreen mode Exit fullscreen mode

Permite ativar rastreamento de aberturas, cliques e DKIM personalizado.

Listar domínios

resend domains list
Enter fullscreen mode Exit fullscreen mode

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>
Enter fullscreen mode Exit fullscreen mode

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"
Enter fullscreen mode Exit fullscreen mode

Webhooks

Registre endpoints para eventos em tempo real:

resend webhooks create
resend webhooks list
Enter fullscreen mode Exit fullscreen mode

Para desenvolvimento local, faça proxy para localhost:

resend webhooks listen --forward-to http://localhost:3000/webhooks/resend
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

Diagnóstico do ambiente

Verifique o setup com:

resend doctor
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

--quiet suprime tudo exceto JSON:

resend emails list --quiet | jq '.[0].id'
Enter fullscreen mode Exit fullscreen mode

Confirmar operações destrutivas automaticamente

Use --yes para pular prompts:

resend api-keys delete --id <key-id> --yes
Enter fullscreen mode Exit fullscreen mode

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."
Enter fullscreen mode Exit fullscreen mode

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_KEY como 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).

Recursos adicionais

Top comments (0)