El CLI de Resend es la herramienta oficial de línea de comandos para Resend, una plataforma de correo electrónico creada para desarrolladores. Instálalo con npm install -g resend-cli o brew install resend/cli/resend, autentícate con resend login y gestiona todo tu flujo de correo electrónico (envío de emails, dominios, automatización) directamente desde la terminal o en pipelines de CI/CD.
¿Qué es Resend?
Resend es una API de correo electrónico pensada para desarrolladores. Conecta tu dominio, genera una clave API y comienza a enviar emails transaccionales (recuperaciones de contraseña, confirmaciones de pedido, onboarding, etc.) desde tu app, todo de forma programática.
El 13 de marzo de 2026, Zeno Rocha (fundador de Resend) lanzó el CLI de Resend: una interfaz con 53 comandos en 13 recursos, escrita en TypeScript, open source con licencia MIT. El CLI soporta tres casos de uso:
- Humanos: prompts interactivos, salida en tablas, soporte de fechas en lenguaje natural ("mañana a las 9 am").
- Agentes de IA: salida JSON, idempotencia, detección de agentes.
- Pipelines CI/CD: autenticación por variables de entorno, flags programables, códigos de salida predecibles.
💡
Si necesitas probar la API de correo electrónico antes de llegar a producción, <a href="https://apidog.com/?utm_source=dev.to&utm_medium=wanda&utm_content=n8n-post-automation">Apidog</a> te da una interfaz visual gratuita para testear APIs REST (incluida la de Resend), importar la especificación OpenAPI, configurar entornos y ejecutar suites de pruebas — todo sin código.
Instalación del CLI de Resend
Elige el método de instalación que se adapte a tu stack:
cURL (binario autónomo, no requiere Node.js)
curl -fsSL https://resend.com/install.sh | bash
Descarga el binario precompilado para tu sistema operativo y lo agrega a tu PATH. Node.js no es necesario.
npm
npm install -g resend-cli
Requiere Node.js 20 o superior. Comprueba que funciona:
resend --version
Homebrew (macOS y Linux)
brew install resend/cli/resend
Ideal para macOS. Homebrew gestiona actualizaciones automáticamente.
PowerShell (Windows)
irm https://resend.com/install.ps1 | iex
También puedes descargar binarios .exe desde la página de lanzamientos en GitHub.
Desarrollo local (contribución y compilación)
Para contribuir o compilar desde el código fuente:
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
Autenticación
Conecta el CLI a tu cuenta ejecutando:
resend login
Esto abrirá el navegador para crear una clave API y almacenarla en ~/.config/resend/credentials.json (permiso 0600).
Para entornos no interactivos (CI/CD, scripts), pasa la clave directamente:
resend login --key re_xxxxxxxxxxxxx
El CLI busca tu clave API en este orden:
- Flag
--api-key - Variable de entorno
RESEND_API_KEY - Archivo local de credenciales
Ejemplo para pipelines CI:
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."
Multi-cuenta
Trabaja con varias organizaciones cambiando entre perfiles:
resend auth switch
resend <command> --profile production
Enviando tu primer email
Comando principal: resend emails send. Requiere remitente (dominio verificado), destinatario, asunto y cuerpo.
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."
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 desde un archivo local:
resend emails send \
--from "team@yourco.com" \
--to user@example.com \
--subject "Bienvenido a bordo" \
--html-file ./templates/welcome.html
Programar entrega
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"
Admite frases como "en 1 hora", "el próximo lunes a las 3 pm" o ISO 8601.
Capturar el ID para 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 email programado
resend emails cancel $EMAIL_ID
resend emails update $EMAIL_ID --schedule "el próximo lunes a las 10 am"
Listar emails recientes
resend emails list
Envío por lotes (hasta 100 emails)
Crea un archivo JSON con los correos:
[
{ "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!" }
]
resend emails send-batch --file emails.json
Cada batch cuenta como una llamada API (hasta 100 emails).
Gestión de dominios y claves API
Antes de enviar, necesitas un dominio verificado.
Añadir 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.
Verificar DNS
Recibirás los registros SPF, DKIM y DMARC. Añádelos en tu proveedor DNS y ejecuta:
resend domains verify --id <domain-id>
resend domains get --id <domain-id>
Configurar tracking y TLS
resend domains configure --id <domain-id>
Permite activar seguimiento de aperturas, clics y DKIM personalizado.
Listar dominios
resend domains list
Gestión de claves API
resend api-keys create
resend api-keys list
resend api-keys delete --id <key-id>
Usa claves con alcance limitado por dominio/servicio para mayor seguridad.
Funciones avanzadas: transmisiones, webhooks y plantillas
Transmisiones (broadcasts)
resend broadcasts create
resend broadcasts send --id <broadcast-id>
resend broadcasts schedule --id <broadcast-id> --date "el próximo lunes a las 10 am"
Webhooks
resend webhooks create
resend webhooks list
Para desarrollo local:
resend webhooks listen --forward-to http://localhost:3000/webhooks/resend
Soporta 17 tipos de eventos (sent, delivered, bounced, opened, clicked, etc).
Plantillas
resend templates create
Variables tipo {{variable_name}}. Usa el ID de plantilla al enviar emails.
Contactos y audiencias
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
Diagnóstico rápido
resend doctor
Verifica versión, validez de clave API, dominios verificados y detecta entornos de IA.
Uso en pipelines CI/CD
El CLI de Resend está optimizado para automatización. Ten en cuenta estos patrones:
Salida JSON para scripts
resend emails send --from a@co.com --to b@co.com --subject "Desplegar" --text "Hecho" --json
O usa --quiet para suprimir todo menos JSON:
resend emails list --quiet | jq '.[0].id'
Confirmación automática (--yes)
resend api-keys delete --id <key-id> --yes
Ejemplo en 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
Máximo 2 solicitudes/segundo por equipo. Usa send-batch para grandes volúmenes (100 emails por llamada).
Cómo probar tu API de correo electrónico con Apidog
Para explorar y testear la API REST de Resend, usa Apidog: cliente gratuito para enviar peticiones HTTP, inspeccionar respuestas, organizar test cases y configurar entornos.
Implementación paso a paso:
- Importa la especificación OpenAPI de Resend. Desde resend.com/docs a Apidog, para ver y probar cada endpoint.
-
Configura entornos. En Apidog, define entornos para dev/prod, guarda
RESEND_API_KEYcomo variable y referénciala en tus requests. -
Testea lógica de envío. Ejecuta
POST /emailscon tu payload real. Verifica respuesta, ID del email y casos límite. - Automatiza pruebas. Encadena llamadas API, verifica resultados y automatiza el flujo de test sin escribir código extra.
Así detectas errores de integración antes de producción. Úsalo junto al CLI para máxima cobertura local y automatizada.
Precios de Resend
El CLI es open source y gratuito. Los planes de la plataforma:
| Plan | Precio | Correos mensuales | Límite diario | Retención de registros |
|---|---|---|---|---|
| Gratis | $0/mes | 3,000 | 100/día | 1 día |
| Pro | $20/mes | 50,000 | Sin límite | 3 días |
| Scale | $90/mes | 100,000 | Sin límite | 7 días |
| Empresarial | Personalizado | Personalizado | Personalizado | Personalizado |
Puntos clave del plan gratuito:
- Límite de 100 emails/día (para pruebas, no producción).
- Analytics (aperturas/clics) solo en planes de pago.
- Retención de logs de 1 día.
- Límite de velocidad: 2 requests/seg para todo el equipo.
- Exceso en planes pagos limitado a 5x la cuota mensual.
IPs dedicadas: +$30/mes en Scale (más de 500 envíos/día).
Preguntas frecuentes
¿Necesito Node.js para instalar el CLI?
No, si usas cURL o Homebrew (descargan binarios). npm sí requiere Node.js 20+.
¿Por qué no puedo enviar desde cualquier email?
Solo puedes usar dominios verificados (con registros SPF, DKIM, DMARC). No se admiten remitentes tipo Gmail, etc.
¿El plan gratis restringe destinatarios?
No. Puedes enviar a cualquier dirección dentro del límite mensual/día.
¿Cómo funciona la programación en lenguaje natural?
Soporta frases tipo "mañana a las 9 am", "en 2 horas", "viernes a las 3 pm" o ISO 8601. Usa la zona horaria local.
¿Qué pasa al redirigir la salida?
La salida cambia a JSON automáticamente sin prompts ni spinners.
¿Soporta varias cuentas?
Sí, usa resend login varias veces, resend auth switch o --profile <nombre> en cada comando.
¿El CLI es open source?
Sí, MIT en github.com/resend/resend-cli.
¿Diferencia entre --quiet y --json?
Ambos generan JSON. --quiet elimina toda salida adicional; --json solo fuerza el formato JSON.
Top comments (0)