Cómo Instalar y Usar la CLI de Resend

Herve Kom

Herve Kom

17 March 2026

Cómo Instalar y Usar la CLI de Resend

Apidog para empresas

Despliegue local

SSO & RBAC

Conforme con SOC 2

Explorar Apidog Enterprise

El CLI de Resend es la herramienta oficial de línea de comandos para Resend, una plataforma de correo electrónico creada para desarrolladores. Lo instalas con npm install -g resend-cli o brew install resend/cli/resend, te autenticas con resend login, y luego envías correos electrónicos, gestionas dominios y automatizas tu infraestructura de correo electrónico desde cualquier terminal o pipeline de CI/CD.

¿Qué es Resend?

Resend es una API de correo electrónico para desarrolladores. Conectas tu dominio, obtienes una clave API y empiezas a enviar correos electrónicos transaccionales desde tu aplicación: restablecimientos de contraseña, confirmaciones de pedidos, secuencias de incorporación, cualquier cosa que se active programáticamente.

El 13 de marzo de 2026, el fundador de Resend, Zeno Rocha, lanzó el CLI de Resend, llevando esa misma infraestructura a la terminal. El CLI tiene 53 comandos en 13 recursos. Está escrito en TypeScript, es completamente de código abierto bajo la licencia MIT y funciona para tres tipos de audiencias:

💡
Si estás construyendo aplicaciones que envían correos electrónicos, querrás una forma de probar esas llamadas a la API de correo electrónico antes de que lleguen a producción. Apidog te ofrece una interfaz visual y gratuita para probar APIs REST, incluyendo la API de correo electrónico de Resend, sin escribir ningún código adicional. Puedes importar la especificación OpenAPI de Resend, configurar tus entornos y ejecutar suites de pruebas organizadas, todo en un solo lugar.
botón

Instalación del CLI de Resend

Hay cuatro formas de instalar el CLI. Elige la que mejor se adapte a tu configuración.

Mediante cURL (binario autónomo, no requiere Node.js)

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

Esto descarga un binario precompilado para tu sistema operativo y lo añade a tu PATH. No se necesita Node.js.

Mediante npm

npm install -g resend-cli

Requiere Node.js 20 o posterior. Después de la instalación, confirma que funciona:

resend --version

Mediante Homebrew (macOS y Linux)

brew install resend/cli/resend

Esta es la opción más limpia en macOS. Homebrew maneja las actualizaciones automáticamente.

Mediante PowerShell (Windows)

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

También puedes descargar binarios .exe directamente desde la página de Lanzamientos de GitHub.

Para desarrollo local

Si quieres contribuir al CLI o compilar desde el código fuente, necesitarás Node.js 20+ y pnpm:

git clone https://github.com/resend/resend-cli.git
cd resend-cli
pnpm install
pnpm build       # genera ./dist/cli.cjs
pnpm build:bin   # binario nativo en ./dist/resend

Autenticando tu cuenta

Ejecuta resend login para conectar el CLI a tu cuenta de Resend:

resend login

Esto abre tu navegador, te guía en la creación de una clave API en el panel de Resend y almacena tus credenciales localmente en ~/.config/resend/credentials.json con permisos restringidos 0600.

Para entornos no interactivos (CI/CD, scripts), omite el flujo del navegador y pasa una clave directamente:

resend login --key re_xxxxxxxxxxxxx

Una vez almacenada, no necesitas volver a autenticarte para cada comando. El CLI resuelve tu clave API en este orden:

  1. La bandera --api-key (sobrescribe todo)
  2. La variable de entorno RESEND_API_KEY
  3. El archivo de credenciales almacenado

Para pipelines de CI, configurar RESEND_API_KEY como una variable de entorno secreta es el enfoque estándar:

RESEND_API_KEY=re_xxx resend emails send --from builds@yourco.com --to dev@yourco.com --subject "Compilación exitosa" --text "Todas las pruebas en verde."

Soporte multi-cuenta

Si trabajas con varias organizaciones o equipos de Resend, el CLI también lo gestiona. Cambia entre perfiles almacenados sin cerrar sesión:

resend auth switch

O pasa un perfil específico para un solo comando:

resend <command> --profile production

Enviando tu primer correo electrónico

El comando principal para enviar es resend emails send. Como mínimo, necesitas una dirección de remitente (de un dominio verificado), un destinatario, un asunto y un cuerpo.

Enviar un correo electrónico de texto plano

resend emails send \
  --from "you@yourdomain.com" \
  --to recipient@example.com \
  --subject "Hola desde el CLI" \
  --text "Este es un correo electrónico de prueba enviado desde el CLI de Resend."

Enviar un correo electrónico HTML

resend emails send \
  --from "team@yourco.com" \
  --to user@example.com \
  --subject "Tu pedido está confirmado" \
  --html "<h1>Pedido confirmado</h1><p>Gracias por tu compra.</p>"

O apunta a un archivo HTML local:

resend emails send \
  --from "team@yourco.com" \
  --to user@example.com \
  --subject "Bienvenido a bordo" \
  --html-file ./templates/welcome.html

Programar la entrega

El CLI analiza fechas en lenguaje natural junto con marcas de tiempo ISO 8601:

resend emails send \
  --from "you@yourco.com" \
  --to user@example.com \
  --subject "Revisión programada" \
  --text "Solo para revisar." \
  --schedule "mañana a las 9 am"

Funciona con frases como "en 1 hora", "el próximo lunes a las 3 pm" o una marca de tiempo ISO completa.

Capturar el ID del correo electrónico

Cuando se redirige la salida, el CLI cambia automáticamente a la salida JSON. Redirige a través de jq para capturar el ID del correo electrónico para operaciones de seguimiento:

EMAIL_ID=$(resend emails send \
  --from a@acme.com \
  --to b@acme.com \
  --subject "Prueba" \
  --text "Hola" | jq -r '.data.id')

echo "Correo electrónico enviado: $EMAIL_ID"

Cancelar o actualizar un correo electrónico programado

resend emails cancel $EMAIL_ID
resend emails update $EMAIL_ID --schedule "el próximo lunes a las 10 am"

Listar correos electrónicos recientes

resend emails list

Envío por lotes de hasta 100 correos a la vez

Crea un archivo JSON con un array de objetos de correo electrónico:

[
  { "from": "you@yourco.com", "to": "alice@example.com", "subject": "Hola Alice", "text": "¡Hola!" },
  { "from": "you@yourco.com", "to": "bob@example.com", "subject": "Hola Bob", "text": "¡Hola!" }
]

Luego envía el lote:

resend emails send-batch --file emails.json

Cada solicitud de lote cuenta como una llamada a la API contra tu límite de velocidad, aunque envíe hasta 100 correos electrónicos.

Gestionando dominios y claves API

Antes de poder enviar correos electrónicos, necesitas un dominio verificado. El CLI te guía a través de todo el ciclo de vida del dominio.

Añadir un dominio

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

Regiones soportadas: us-east-1, eu-west-1, sa-east-1, ap-northeast-1. Elige la región más cercana a tus usuarios para minimizar la latencia.

Verificar registros DNS

Después de crear el dominio, Resend te proporciona registros DNS para añadir (SPF, DKIM, DMARC). Una vez que los hayas añadido a tu proveedor de DNS, ejecuta:

resend domains verify --id <domain-id>

Consulta el estado hasta que devuelva "verified":

resend domains get --id <domain-id>

Configurar seguimiento y TLS

resend domains configure --id <domain-id>  # Configuración interactiva

Puedes habilitar el seguimiento de apertura, el seguimiento de clics y DKIM personalizado a través de este comando.

Listar todos los dominios

resend domains list

Gestionar claves API

Para mayor seguridad, crea claves API con alcance definido para cada servicio o entorno en lugar de compartir una clave en todas partes:

resend api-keys create  # Interactivo, permite definir el alcance por dominio
resend api-keys list
resend api-keys delete --id <key-id>

Las claves con alcance definido limitan lo que cada integración puede hacer. Una clave con alcance para un dominio no puede acceder a tus otros dominios ni a la configuración de tu cuenta.

Funciones avanzadas: transmisiones, webhooks y plantillas

Más allá de enviar correos electrónicos individuales, el CLI de Resend maneja tres casos de uso importantes más: transmisiones masivas, gestión de webhooks y plantillas reutilizables.

Transmisiones

Las transmisiones te permiten enviar el mismo correo electrónico a una gran lista de contactos. Primero redactas, luego envías o programas:

resend broadcasts create   # Creación interactiva de borrador
resend broadcasts send --id <broadcast-id>
resend broadcasts schedule --id <broadcast-id> --date "el próximo lunes a las 10 am"

Webhooks

Los webhooks te proporcionan eventos de entrega en tiempo real: rebotes, aperturas, clics, informes de spam. El CLI maneja el ciclo de vida completo:

resend webhooks create   # Registrar un nuevo endpoint
resend webhooks list

Para el desarrollo local, usa el comando webhooks listen para reenviar eventos de webhook a tu localhost:

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

Esto te ahorra configurar ngrok o herramientas de tunelización similares. El CLI soporta 17 tipos de eventos incluyendo email.sent, email.delivered, email.bounced, email.opened y email.clicked.

Plantillas

Las plantillas te permiten crear HTML de correo electrónico reutilizable con variables dinámicas:

resend templates create  # Constructor interactivo de plantillas

Las variables usan la sintaxis {{variable_name}} con valores de respaldo. Una vez creadas, haz referencia a las plantillas por ID al enviar correos electrónicos.

Contactos y audiencias

Resend tiene gestión de contactos integrada para correos electrónicos de marketing:

resend contacts create --audience-id <id> --email user@example.com --first-name "Alice"
resend contacts list --audience-id <id>
resend contacts update --id <contact-id> --unsubscribed false

Ejecutar diagnósticos

El comando doctor verifica tu entorno y señala problemas:

resend doctor

Verifica tu versión del CLI, la validez de la clave API, los dominios verificados e incluso detecta agentes de codificación de IA (Cursor, Claude Desktop, VS Code, OpenClaw).

Uso del CLI de Resend en pipelines de CI/CD

El CLI está diseñado para funcionar bien en entornos automatizados. Algunos patrones a conocer:

Salida legible por máquina

Cada vez que rediriges la salida o pasas --json, el CLI cambia a JSON estructurado. Sin spinners, sin prompts interactivos:

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

La bandera --quiet también suprime toda la salida excepto JSON:

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

Confirmación automática de operaciones destructivas

Usa --yes para omitir las indicaciones de confirmación en los scripts:

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

Ejemplo de GitHub Actions

- name: Enviar notificación de despliegue
  env:
    RESEND_API_KEY: ${{ secrets.RESEND_API_KEY }}
  run: |
    resend emails send \
      --from deploys@yourco.com \
      --to team@yourco.com \
      --subject "Despliegue a producción: ${{ github.sha }}" \
      --text "Se desplegó el commit ${{ github.sha }} a producción."

Límites de velocidad

El límite de velocidad de la API de Resend es de 2 solicitudes por segundo, compartido entre todas las claves API de tu equipo. Al enviar lotes, usa send-batch (hasta 100 correos electrónicos por llamada) en lugar de recorrer envíos individuales.

Probando tu API de correo electrónico con Apidog

El CLI de Resend es excelente para el uso interactivo y scripts sencillos. Sin embargo, cuando estás construyendo un backend que llama directamente a la API REST de Resend, necesitas una forma de explorar y probar esos endpoints antes de escribir código de aplicación.

Apidog cubre eso. Es un cliente de API gratuito que te permite enviar solicitudes HTTP, inspeccionar respuestas, organizar tus casos de prueba y configurar entornos para diferentes claves API y configuraciones.

Así es como Apidog encaja en un flujo de trabajo típico de integración con Resend:

Importar la especificación de la API de Resend. Resend proporciona documentación de referencia de la API en resend.com/docs. Puedes importar la especificación de la API a Apidog para obtener una vista organizada de cada endpoint, incluyendo los esquemas de solicitud/respuesta.

Configurar entornos. En Apidog, crea entornos para desarrollo y producción. Almacena tu RESEND_API_KEY como una variable de entorno y haz referencia a ella en tus solicitudes con {{RESEND_API_KEY}}. Cambia entre entornos con un solo clic.

Probar tu lógica de envío. Antes de escribir código para enviar correos electrónicos desde tu aplicación, ejecuta el endpoint POST /emails en Apidog con tu payload exacto. Verifica la respuesta, comprueba que el ID del correo electrónico se devuelve correctamente y confirma el comportamiento para casos extremos (campos faltantes, direcciones inválidas, etc.).

Automatizar pruebas. El ejecutor de pruebas de Apidog te permite encadenar llamadas a la API y verificar los valores de respuesta. Puedes configurar una prueba que envíe un correo electrónico de prueba, lo recupere por ID y luego verifique su estado, todo sin escribir código de prueba.

Esto detecta errores de integración antes de que aparezcan en producción. Combinado con el CLI de Resend para el desarrollo local, tienes tanto una herramienta de terminal rápida como un entorno exhaustivo de prueba de API.

Precios de Resend

El CLI en sí es gratuito y de código abierto. Los precios se aplican a la plataforma de Resend:

PlanPrecioCorreos mensualesLímite diarioRetención de registros
Gratis$0/mes3,000100/día1 día
Pro$20/mes50,000Sin límite3 días
Scale$90/mes100,000Sin límite7 días
EmpresarialPersonalizadoPersonalizadoPersonalizadoPersonalizado

Algunas cosas a saber sobre el nivel gratuito:

Las IPs dedicadas son un complemento de $30/mes en el plan Scale, disponible cuando envías más de 500 correos electrónicos/día.

botón

Preguntas Frecuentes

¿Necesito Node.js para instalar el CLI de Resend?

No para los métodos de instalación con cURL o Homebrew, que descargan binarios autónomos precompilados. La ruta de instalación con npm requiere Node.js 20+.

¿Por qué no puedo enviar desde cualquier dirección de correo electrónico?

Resend requiere un dominio verificado. Debes ser el propietario del dominio, añadir los registros DNS que proporciona Resend (SPF, DKIM, DMARC) y pasar el paso de verificación. Los proveedores de correo electrónico gratuitos como Gmail no son compatibles como direcciones de remitente.

¿Puedo enviar a cualquier dirección de correo electrónico en el plan gratuito?

Sí. El plan gratuito no restringe a los destinatarios. Te limita a 3,000 correos electrónicos/mes con un tope de 100/día.

¿Cómo funciona la programación en lenguaje natural?

El CLI analiza frases como "mañana a las 9 am", "en 2 horas", "el próximo viernes a las 3 pm", o marcas de tiempo ISO 8601 estándar. Las horas se interpretan en la zona horaria local de tu sistema a menos que especifiques lo contrario.

¿Qué sucede cuando redirijo la salida (pipe output)?

El CLI detecta cuando está siendo redirigido y cambia automáticamente a una salida solo JSON sin spinners ni prompts. No necesitas pasar --json explícitamente.

¿Puedo usar el CLI con varias cuentas de Resend?

Sí. Usa resend login varias veces para almacenar diferentes perfiles, luego resend auth switch para cambiar entre ellos, o pasa --profile <nombre> en cualquier comando para usar un perfil específico.

¿El CLI de Resend es de código abierto?

Sí, tiene licencia MIT y está alojado en github.com/resend/resend-cli.

¿Cuál es la diferencia entre --quiet y --json?

Ambos producen salida JSON. --json fuerza la salida JSON. --quiet suprime los spinners e indicadores de progreso, lo que también implica el modo JSON. En la práctica, se comportan igual para el formato de salida; --quiet además elimina toda la salida no relacionada con datos.

Recursos adicionales

Practica el diseño de API en Apidog

Descubre una forma más fácil de construir y usar APIs

Cómo Instalar y Usar la CLI de Resend