DEV Community

Cover image for Installer et Utiliser Resend CLI : Guide Complet
Antoine Laurent
Antoine Laurent

Posted on • Originally published at apidog.com

Installer et Utiliser Resend CLI : Guide Complet

Le CLI de Resend est l'outil officiel en ligne de commande pour Resend, une plateforme d'e-mails conçue pour les développeurs. Installez-le via npm install -g resend-cli ou brew install resend/cli/resend, authentifiez-vous avec resend login, puis gérez vos e-mails, domaines et automatisez votre infrastructure e-mail directement depuis votre terminal ou pipeline CI/CD.

Essayez Apidog dès aujourd'hui

Qu'est-ce que Resend ?

Resend est une API d'e-mails pour développeurs. Connectez votre domaine, obtenez une clé API, et commencez à envoyer des e-mails transactionnels depuis votre application (réinitialisations, confirmations, séquences d'onboarding, etc.) de manière programmatique.

Depuis le 13 mars 2026, le CLI de Resend porte cette infrastructure dans votre terminal avec 53 commandes sur 13 ressources. Écrit en TypeScript, open source (MIT), il s’adresse à trois publics :

  • Humains : invites interactives, tableaux lisibles, planification en langage naturel ("demain à 9h")
  • Agents IA : sortie JSON, idempotence, détection automatique
  • Pipelines CI/CD : variables d’environnement, flags scriptables, codes de sortie cohérents

💡Si vous développez des applications qui envoient des e-mails, testez vos appels API avant la production.Apidog vous offre une interface visuelle et gratuite pour tester les API REST telles que Resend, sans coder. Importez la spec OpenAPI, configurez vos environnements, et exécutez vos suites de tests au même endroit.

Installation du CLI de Resend

Quatre méthodes d’installation :

Via cURL (binaire autonome, pas de Node.js requis)

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

Télécharge un binaire précompilé et le place sur votre PATH. Node.js non requis.

Via npm

npm install -g resend-cli

Nécessite Node.js 20+. Vérifiez l’installation :

resend --version

Via Homebrew (macOS et Linux)

brew install resend/cli/resend

Option recommandée sur macOS. Homebrew gère les mises à jour.

Via PowerShell (Windows)

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

Ou téléchargez les binaires .exe depuis la page GitHub des releases.

Pour le développement local

Pour contribuer ou compiler, Node.js 20+ et pnpm sont requis :

git clone https://github.com/resend/resend-cli.git
cd resend-cli
pnpm install
pnpm build       # génère ./dist/cli.cjs
pnpm build:bin   # binaire natif ./dist/resend

Authentifier votre compte

Lancez :

resend login

Suivez le flux dans votre navigateur pour générer la clé API. Les identifiants sont stockés localement à ~/.config/resend/credentials.json (permissions 0600).

Pour automatiser ou en CI/CD, passez la clé directement :

resend login --key re_xxxxxxxxxxxxx

Ordre de résolution de la clé API :

  1. Drapeau --api-key (prioritaire)
  2. Variable d’environnement RESEND_API_KEY
  3. Fichier local d’identifiants

En pipeline CI, définissez RESEND_API_KEY :

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

Prise en charge de plusieurs comptes

Gérez plusieurs profils :

resend auth switch

Ou utilisez un profil spécifique :

resend <command> --profile production

Envoyer votre premier e-mail

La commande de base :

resend emails send --from "you@yourdomain.com" --to recipient@example.com --subject "Hello from the CLI" --text "This is a test email sent from the Resend CLI."

Envoyer un e-mail HTML

resend emails send --from "team@yourco.com" --to user@example.com --subject "Your order is confirmed" --html "<h1>Order confirmed</h1><p>Thanks for your purchase.</p>"

Ou depuis un fichier :

resend emails send --from "team@yourco.com" --to user@example.com --subject "Welcome aboard" --html-file ./templates/welcome.html

Planifier l'envoi

resend emails send --from "you@yourco.com" --to user@example.com --subject "Scheduled check-in" --text "Just checking in." --schedule "tomorrow at 9am"

Expressions prises en charge : "dans 1 heure", "lundi prochain à 15h", ou timestamp ISO.

Capturer l'ID de l'e-mail

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

echo "Sent email: $EMAIL_ID"

Annuler ou mettre à jour un e-mail planifié

resend emails cancel $EMAIL_ID
resend emails update $EMAIL_ID --schedule "next Monday at 10am"

Lister les e-mails récents

resend emails list

Envoyer par lot (max 100 e-mails)

Préparez un fichier JSON :

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

Envoyez le lot :

resend emails send-batch --file emails.json

Un appel API par batch, jusqu’à 100 e-mails.

Gestion des domaines et des clés API

Un domaine vérifié est requis pour envoyer des e-mails.

Ajouter un domaine

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

Régions : us-east-1, eu-west-1, sa-east-1, ap-northeast-1. Choisissez la plus proche de vos utilisateurs.

Vérifier les enregistrements DNS

Ajoutez les enregistrements SPF/DKIM/DMARC à votre DNS, puis :

resend domains verify --id <domain-id>

Vérifiez le statut :

resend domains get --id <domain-id>

Configurer le suivi et TLS

resend domains configure --id <domain-id>

Activez le suivi d’ouverture, de clics ou DKIM personnalisé.

Lister tous les domaines

resend domains list

Gérer les clés API

Créez une clé par service/environnement pour sécuriser :

resend api-keys create
resend api-keys list
resend api-keys delete --id <key-id>

Limitez la portée des clés à un domaine pour cloisonner les accès.

Fonctionnalités avancées : diffusions, webhooks et modèles

Diffusions

resend broadcasts create   # Création interactive
resend broadcasts send --id <broadcast-id>
resend broadcasts schedule --id <broadcast-id> --date "next Monday at 10am"

Webhooks

resend webhooks create
resend webhooks list

Pour le local :

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

17 types d'événements supportés (email.sent, delivered, bounced, opened, clicked...)

Modèles

resend templates create

Utilisez {{variable_name}} dans le HTML. Référencez le modèle par ID à l’envoi.

Contacts et audiences

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

Exécuter des diagnostics

resend doctor

Vérifie version, clé API, domaines, et détecte les agents IA.

Utilisation du CLI de Resend dans les pipelines CI/CD

Sortie lisible par machine

Utilisez --json ou des pipes pour une sortie JSON prête à parser :

resend emails send --from a@co.com --to b@co.com --subject "Deploy" --text "Done" --json
resend emails list --quiet | jq '.[0].id'

Confirmation automatique des opérations destructives

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

Exemple 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 to production: ${{ github.sha }}" \
      --text "Deployed commit ${{ github.sha }} to production."

Limites de débit

Limite : 2 requêtes/sec, toutes clés confondues. Pour du batch, utilisez send-batch (100 e-mails max par appel), évitez les boucles d’envoi unitaire.

Tester votre API de mail avec Apidog

Le CLI est idéal pour l’interactif et les scripts simples. Pour tester l’API REST directement, Apidog est un client API gratuit pour :

  • Envoyer des requêtes HTTP et inspecter les réponses
  • Organiser vos cas de tests
  • Configurer des environnements (clés API, url, etc.)

Exemple de workflow :

  • Import : Importez la spec OpenAPI depuis resend.com/docs pour explorer chaque endpoint et schéma.
  • Environnements : Créez des environnements dev/prod. Stockez RESEND_API_KEY comme variable et référencez-la dans vos requêtes ({{RESEND_API_KEY}}).
  • Test : Envoyez une requête POST /emails pour valider vos payloads et comportements (erreurs, champs manquants, etc.).
  • Automatisation : L’exécuteur de tests permet d’enchaîner les appels API et de valider les réponses, sans écrire de code.

Détectez les bugs d’intégration avant la prod. Combinez le CLI pour le local, Apidog pour les tests d’API structurés.

Tarification Resend

Le CLI est gratuit/open source. Voici la tarification de la plateforme :

Forfait Prix E-mails mensuels Limite quotidienne Rétention des logs
Gratuit 0 $/mois 3 000 100/jour 1 jour
Pro 20 $/mois 50 000 Pas de limite 3 jours
Scale 90 $/mois 100 000 Pas de limite 7 jours
Entreprise Personnalisé Personnalisé Personnalisé Personnalisé

À retenir sur le plan gratuit :

  • Limité à 100/jour : idéal tests, petits projets, pas production
  • Suivi ouverture/clic disponible uniquement sur les plans payants
  • Logs conservés seulement 24h
  • Débit : 2 req/sec partagées
  • Dépassement plafonné à 5× le quota mensuel sur les plans payants

IP dédiée : +30 $/mois (plan Scale, min 500 emails/jour).

FAQ

Ai-je besoin de Node.js pour installer le CLI de Resend ?
Non, sauf si vous installez via npm. Les méthodes cURL/Homebrew fournissent des binaires autonomes.

Pourquoi ne puis-je pas envoyer depuis n'importe quelle adresse ?
Vous devez vérifier un domaine (ajout DNS) pour envoyer. Les adresses Gmail, etc. ne sont pas supportées en expéditeur.

Puis-je envoyer à n'importe qui avec le plan gratuit ?
Oui. Limite : 3 000 emails/mois, max 100/jour.

Planification en langage naturel ?
Expressions comme "demain à 9h", "dans 2h", "vendredi à 15h", ou ISO 8601. Les heures sont locales à votre système.

Que se passe-t-il si je redirige la sortie ?
Sortie JSON automatique (pas besoin de --json), sans spinner ni invite.

Multi-comptes ?
Oui. Utilisez resend login pour chaque profil, puis resend auth switch ou --profile pour cibler.

CLI open source ?
Oui, sous licence MIT : github.com/resend/resend-cli

Différence --quiet vs --json ?
Les deux forcent le JSON. --quiet supprime aussi tout affichage non-data (spinners, prompts).

Ressources supplémentaires

Top comments (0)