Como Instalar e Usar o Resend CLI: Guia Completo

Herve Kom

Herve Kom

17 março 2026

Como Instalar e Usar o Resend CLI: Guia Completo

Apidog para empresas

Implantação local

SSO & RBAC

Conforme SOC 2

Explorar Apidog Enterprise

O Resend CLI é a ferramenta de linha de comando oficial para Resend, uma plataforma de e-mail construída para desenvolvedores. Você o instala com npm install -g resend-cli ou brew install resend/cli/resend, autentica com resend login e, em seguida, envia e-mails, gerencia domínios e automatiza sua infraestrutura de e-mail a partir de qualquer terminal ou pipeline de CI/CD.

O que é Resend?

Resend é uma API de e-mail para desenvolvedores. Você conecta seu domínio, obtém uma chave de API e começa a enviar e-mails transacionais de sua aplicação: redefinições de senha, confirmações de pedido, sequências de integração (onboarding), tudo o que dispara programaticamente.

Em 13 de março de 2026, o fundador da Resend, Zeno Rocha, lançou o Resend CLI, trazendo essa mesma infraestrutura para o terminal. O CLI tem 53 comandos em 13 recursos. Ele é escrito em TypeScript, totalmente de código aberto sob licença MIT e funciona para três públicos diferentes:

💡
Se você está construindo aplicativos que enviam e-mails, você vai querer uma maneira de testar essas chamadas de API de e-mail antes que elas cheguem à produção. O Apidog oferece uma interface visual gratuita para testar APIs REST, incluindo a API de e-mail da Resend, sem escrever nenhum código extra. Você pode importar a especificação OpenAPI da Resend, configurar seus ambientes e executar suítes de teste organizadas, tudo em um só lugar.
button

Instalando o Resend CLI

Existem quatro maneiras de instalar o CLI. Escolha a que melhor se adapta à sua configuração.

Via cURL (binário autônomo, não requer Node.js)

curl -fsSL https://resend.com/install.sh | bash

Isso baixa um binário pré-compilado para o seu sistema operacional e o adiciona ao seu PATH. Não é necessário Node.js.

Via npm

npm install -g resend-cli

Requer Node.js 20 ou posterior. Após a instalação, confirme se funciona:

resend --version

Via Homebrew (macOS e Linux)

brew install resend/cli/resend

Esta é a opção mais limpa no macOS. O Homebrew lida com as atualizações automaticamente.

Via PowerShell (Windows)

irm https://resend.com/install.ps1 | iex

Você também pode baixar binários .exe diretamente da página de Releases do GitHub.

Para desenvolvimento local

Se você deseja contribuir para o CLI ou construir a partir do código-fonte, precisará do 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 resend login para conectar o CLI à sua conta Resend:

resend login

Isso abre seu navegador, guia você pela criação de uma chave de API no painel da Resend e armazena suas credenciais localmente em ~/.config/resend/credentials.json com permissões restritas 0600.

Para ambientes não interativos (CI/CD, scripts), pule o fluxo do navegador e passe uma chave diretamente:

resend login --key re_xxxxxxxxxxxxx

Uma vez armazenada, você não precisa se autenticar novamente para cada comando. O CLI resolve sua chave de API nesta ordem:

  1. Flag --api-key (sobrescreve tudo)
  2. Variável de ambiente RESEND_API_KEY
  3. O arquivo de credenciais armazenado

Para pipelines de CI, definir RESEND_API_KEY como uma variável de ambiente secreta é a abordagem padrão:

RESEND_API_KEY=re_xxx resend emails send --from builds@yourco.com --to dev@yourco.com --subject "Build passed" --text "All tests green."

Suporte a múltiplas contas

Se você trabalha com várias organizações ou equipes Resend, o CLI também lida com isso. Alterne entre perfis armazenados sem fazer logout:

resend auth switch

Ou passe um perfil específico para um único comando:

resend <comando> --profile production

Enviando seu primeiro e-mail

O comando principal para envio é resend emails send. No mínimo, você precisa de um endereço de remetente (de um domínio verificado), um destinatário, um assunto e um corpo.

Enviar um e-mail em 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 um 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 aponte para um arquivo HTML local:

resend emails send \
  --from "equipe@suaempresa.com" \
  --to usuario@example.com \
  --subject "Bem-vindo a bordo" \
  --html-file ./templates/welcome.html

Agendar entrega

O CLI analisa datas em linguagem natural, juntamente com timestamps 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"

Funciona com frases como "em 1 hora", "próxima segunda-feira às 15h" ou um timestamp ISO completo.

Capturar o ID do e-mail

Quando redirecionado (piped), o CLI muda automaticamente para a saída JSON. Redirecione através de jq para capturar o ID do e-mail para operações de acompanhamento:

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 um e-mail agendado

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

Listar e-mails recentes

resend emails list

Enviar em lote até 100 de uma vez

Crie um arquivo JSON com um array de objetos de e-mail:

[
  { "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á!" }
]

Então envie o lote:

resend emails send-batch --file emails.json

Cada requisição em lote conta como uma chamada de API contra seu limite de taxa, mesmo que envie até 100 e-mails.

Gerenciando domínios e chaves de API

Antes de poder enviar e-mail, você precisa de um domínio verificado. O CLI o guia por todo o ciclo de vida do domínio.

Adicionar um domínio

resend domains create --name seudominio.com --region us-east-1

Regiões suportadas: us-east-1, eu-west-1, sa-east-1, ap-northeast-1. Escolha a região mais próxima de seus usuários para minimizar a latência.

Verificar registros DNS

Após criar o domínio, a Resend lhe dá registros DNS para adicionar (SPF, DKIM, DMARC). Depois de adicioná-los ao seu provedor de DNS, execute:

resend domains verify --id <domain-id>

Consulte o status até que retorne "verificado":

resend domains get --id <domain-id>

Configurar rastreamento e TLS

resend domains configure --id <domain-id>  # Configuração interativa

Você pode habilitar o rastreamento de aberturas, rastreamento de cliques e DKIM personalizado através deste comando.

Listar todos os domínios

resend domains list

Gerenciar chaves de API

Para segurança, crie chaves de API com escopo para cada serviço ou ambiente, em vez de compartilhar uma única chave em todos os lugares:

resend api-keys create  # Interativo, permite definir escopo por domínio
resend api-keys list
resend api-keys delete --id <key-id>

Chaves com escopo limitam o que cada integração pode fazer. Uma chave com escopo para um domínio não pode acessar seus outros domínios ou configurações de conta.

Recursos avançados: broadcasts, webhooks e templates

Além de enviar e-mails individuais, o Resend CLI lida com mais três casos de uso importantes: broadcasts em massa, gerenciamento de webhooks e templates reutilizáveis.

Broadcasts

Broadcasts permitem que você envie o mesmo e-mail para uma grande lista de contatos. Você primeiro rascunha e depois envia ou agenda:

resend broadcasts create   # Criação de rascunho interativa
resend broadcasts send --id <broadcast-id>
resend broadcasts schedule --id <broadcast-id> --date "próxima Segunda às 10am"

Webhooks

Webhooks fornecem eventos de entrega em tempo real: bounces, aberturas, cliques, relatórios de spam. O CLI lida com o ciclo de vida completo:

resend webhooks create   # Registrar um novo endpoint
resend webhooks list

Para desenvolvimento local, use o comando webhooks listen para fazer proxy de eventos de webhook para seu localhost:

resend webhooks listen --forward-to http://localhost:3000/webhooks/resend

Isso evita que você precise configurar ngrok ou ferramentas de tunelamento semelhantes. O CLI suporta 17 tipos de eventos, incluindo email.sent, email.delivered, email.bounced, email.opened e email.clicked.

Templates

Templates permitem que você crie HTML de e-mail reutilizável com variáveis dinâmicas:

resend templates create  # Construtor de templates interativo

Variáveis usam a sintaxe {{nome_da_variavel}} com valores de fallback. Uma vez criados, faça referência aos templates por ID ao enviar e-mails.

Contatos e públicos

A Resend possui gerenciamento de contatos integrado para e-mails de marketing:

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

Executar diagnósticos

O comando doctor verifica seu ambiente e sinaliza problemas:

resend doctor

Ele verifica a versão do seu CLI, a validade da chave de API, domínios verificados e até detecta agentes de codificação de IA (Cursor, Claude Desktop, VS Code, OpenClaw).

Usando o Resend CLI em pipelines de CI/CD

O CLI é construído para funcionar bem em ambientes automatizados. Alguns padrões a serem conhecidos:

Saída legível por máquina

Sempre que você redireciona a saída (pipe) ou passa --json, o CLI muda para JSON estruturado. Sem spinners, sem prompts interativos:

resend emails send --from a@co.com --to b@co.com --subject "Deploy" --text "Feito" --json

A flag --quiet também suprime toda a saída, exceto JSON:

resend emails list --quiet | jq '.[0].id'

Confirmar automaticamente operações destrutivas

Use --yes para pular os prompts de confirmação em scripts:

resend api-keys delete --id <key-id> --yes

Exemplo de 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 taxa da API Resend é de 2 requisições por segundo, compartilhado entre todas as chaves de API da sua equipe. Ao enviar lotes, use send-batch (até 100 e-mails por chamada) em vez de fazer um loop para envios individuais.

Testando sua API de e-mail com Apidog

O Resend CLI é ótimo para uso interativo e scripts simples. No entanto, quando você está construindo um backend que chama a API REST da Resend diretamente, você precisa de uma maneira de explorar e testar esses endpoints antes de escrever o código da aplicação.

O Apidog cobre isso. É um cliente de API gratuito que permite enviar requisições HTTP, inspecionar respostas, organizar seus casos de teste e configurar ambientes para diferentes chaves de API e configurações.

Veja como o Apidog se encaixa em um fluxo de trabalho típico de integração com a Resend:

Importar a especificação da API Resend. A Resend fornece documentação de referência da API em resend.com/docs. Você pode importar a especificação da API para o Apidog para obter uma visão organizada de cada endpoint, incluindo os esquemas de requisição/resposta.

Configurar ambientes. No Apidog, crie ambientes para desenvolvimento e produção. Armazene sua RESEND_API_KEY como uma variável de ambiente e referencie-a em suas requisições com {{RESEND_API_KEY}}. Alterne entre ambientes com um clique.

Testar sua lógica de envio. Antes de escrever código para enviar e-mails de sua aplicação, execute o endpoint POST /emails no Apidog com seu payload exato. Verifique a resposta, certifique-se de que o ID do e-mail retorne corretamente e confirme o comportamento para casos de borda (campos ausentes, endereços inválidos, etc.).

Automatizar testes. O test runner do Apidog permite encadear chamadas de API e fazer asserções sobre os valores de resposta. Você pode configurar um teste que envia um e-mail de teste, o recupera pelo ID e, em seguida, verifica seu status, tudo sem escrever código de teste.

Isso captura bugs de integração antes que apareçam na produção. Combinado com o Resend CLI para desenvolvimento local, você tem tanto uma ferramenta de terminal rápida quanto um ambiente completo de teste de API.

Preços da Resend

O CLI em si é gratuito e de código aberto. Os preços se aplicam à plataforma Resend:

PlanoPreçoE-mails mensaisLimite diárioRetenção de logs
Grátis$0/mês3.000100/dia1 dia
Pro$20/mês50.000Sem limite3 dias
Scale$90/mês100.000Sem limite7 dias
EnterprisePersonalizadoPersonalizadoPersonalizadoPersonalizado

Algumas coisas que vale a pena saber sobre o plano gratuito:

IPs dedicados são um adicional de $30/mês no plano Scale, disponível quando você envia mais de 500 e-mails/dia.

button

FAQ

Preciso de Node.js para instalar o Resend CLI?

Não para os métodos de instalação via cURL ou Homebrew, que baixam binários autônomos pré-compilados. O caminho de instalação via npm requer Node.js 20+.

Por que não consigo enviar de qualquer endereço de e-mail?

A Resend exige um domínio verificado. Você precisa ser o proprietário do domínio, adicionar os registros DNS que a Resend fornece (SPF, DKIM, DMARC) e passar pela etapa de verificação. Provedores de e-mail gratuitos como o Gmail não são suportados como endereços de remetente.

Posso enviar para qualquer endereço de e-mail no plano gratuito?

Sim. O plano gratuito não restringe os destinatários. Ele limita você a 3.000 e-mails/mês com um limite de 100/dia.

Como funciona o agendamento em linguagem natural?

O CLI analisa frases como "amanhã às 9h", "em 2 horas", "próxima sexta-feira às 15h" ou timestamps ISO 8601 padrão. Os horários são interpretados no fuso horário local do seu sistema, a menos que você especifique o contrário.

O que acontece quando eu redireciono a saída (pipe output)?

O CLI detecta quando está sendo redirecionado e automaticamente muda para a saída apenas em JSON, sem spinners ou prompts. Você não precisa passar --json explicitamente.

Posso usar o CLI com várias contas Resend?

Sim. Use resend login várias vezes para armazenar diferentes perfis, depois resend auth switch para alternar entre eles, ou passe --profile <nome> em qualquer comando para usar um perfil específico.

O Resend CLI é de código aberto?

Sim, ele é licenciado sob MIT e hospedado em github.com/resend/resend-cli.

Qual a diferença entre --quiet e --json?

Ambos produzem saída JSON. --json força a saída JSON. --quiet suprime spinners e indicadores de progresso, o que também implica no modo JSON. Na prática, eles se comportam da mesma forma para o formato de saída; --quiet remove adicionalmente toda a saída que não seja de dados.

Recursos adicionais

Pratique o design de API no Apidog

Descubra uma forma mais fácil de construir e usar APIs