resend-cli

Par resend · resend-skills

Exploitez la plateforme Resend depuis le terminal — envoyez des emails (y compris des templates React Email `.tsx` via `--react-email`), gérez les domaines, contacts, broadcasts, templates, webhooks, clés API, logs, automations et événements via la CLI `resend`. À utiliser lorsque l'utilisateur souhaite exécuter des commandes Resend dans le shell, des scripts ou des pipelines CI/CD, ou envoyer/prévisualiser des templates React Email. Chargez toujours cette skill avant d'exécuter des commandes `resend` — elle contient le contrat des flags non interactifs et les pièges qui évitent les échecs silencieux.

npx skills add https://github.com/resend/resend-skills --skill resend-cli

Resend CLI

Installation

Avant d'exécuter toute commande resend, vérifiez que le CLI est installé :

resend --version

Si la commande n'est pas trouvée, installez-la en utilisant l'une des méthodes ci-dessous :

cURL (macOS / Linux) :

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

Homebrew (macOS / Linux) :

brew install resend/cli/resend

Node.js :

npm install -g resend-cli

PowerShell (Windows) :

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

Après installation, vérifiez :

resend --version

Agent Protocol

Le CLI détecte automatiquement les environnements non-TTY et affiche JSON — aucun flag --json nécessaire.

Règles pour les agents :

  • Fournissez TOUS les flags obligatoires. Le CLI ne posera pas de questions si stdin n'est pas un TTY.
  • Passez --quiet (ou -q) pour supprimer les spinners et messages de statut.
  • Exit 0 = succès, 1 = erreur.
  • JSON d'erreur va sur stderr, JSON de succès va sur stdout :
    {"error":{"message":"...","code":"..."}}
  • Utilisez --api-key ou la variable d'environnement RESEND_API_KEY. Ne comptiez jamais sur une connexion interactive.
  • Tous les commandes delete/rm nécessitent --yes en mode non-interactif.

Authentication

L'authentification se résout ainsi : flag --api-key > variable d'environnement RESEND_API_KEY > fichier de config (resend login --key). Utilisez --profile ou RESEND_PROFILE pour les profils multiples.

Flags Globaux

Flag Description
--api-key <key> Remplacer la clé API pour cet appel
-p, --profile <name> Sélectionner un profil stocké
--json Forcer la sortie JSON (automatique en non-TTY)
-q, --quiet Supprimer spinners/statut (implique --json)

Commandes Disponibles

Groupe de Commande Ce qu'il fait
emails send, get, list, batch, cancel, update
emails receiving list, get, attachments, forward, listen
domains create, verify, update, delete, list
logs list, get, open
api-keys create, list, delete
automations create, get, list, update, delete, stop, open, runs
events create, get, list, update, delete, send, open
broadcasts create, send, update, delete, list
contacts create, update, delete, segments, topics
contact-properties create, update, delete, list
segments create, get, list, delete, contacts
templates create, publish, duplicate, delete, list
topics create, update, delete, list
webhooks create, update, listen, delete, list
auth login, logout, switch, rename, remove
whoami / doctor / update / open / commands Commandes utilitaires

Consultez le fichier de référence correspondant pour les flags détaillés et les formes de sortie.

Dry-run : Seuls emails send et broadcasts create supportent --dry-run (validation de charge utile avant envoi/création). Ils affichent { "dryRun": true, "request": { ... } } sur stdout sans appeler l'API. Il n'y a pas de --dry-run sur emails batch, broadcasts send, ou d'autres commandes pour le moment.

Erreurs Courantes

# Erreur Solution
1 Oublier --yes sur les commandes delete Tous les sous-commandes delete/rm nécessitent --yes en mode non-interactif — sinon le CLI sort avec une erreur
2 Ne pas sauvegarder signing_secret du webhook webhooks create affiche le secret une seule fois — il ne peut pas être récupéré ultérieurement. Capturez-le depuis la sortie de commande immédiatement
3 Omettre --quiet en CI Sans -q, les spinners et texte de statut vont quand même sur stderr (pas stdout). Utilisez -q pour JSON sur stdout sans bruit de spinner sur stderr
4 Utiliser --scheduled-at avec batch L'envoi en batch ne supporte pas scheduled_at — utilisez plutôt un seul emails send
5 S'attendre à ce que domains list inclue les enregistrements DNS La liste retourne des résumés seulement — utilisez domains get <id> pour le tableau complet records[]
6 Envoyer un broadcast créé via le dashboard en utilisant le CLI Seuls les broadcasts créés par API peuvent être envoyés avec broadcasts send — les broadcasts du dashboard doivent être envoyés depuis le dashboard
7 Passer --events à webhooks update en s'attendant à un comportement additif --events remplace la liste d'abonnement entière — passez toujours l'ensemble complet
8 S'attendre à ce que logs list inclue les corps request/response La liste retourne des champs de résumé seulement — utilisez logs get <id> pour les request_body et response_body complets

Patterns Courants

Envoyer un email :

resend emails send --from "you@domain.com" --to user@example.com --subject "Hello" --text "Body"

Envoyer un template React Email (.tsx) :

resend emails send --from "you@domain.com" --to user@example.com --subject "Welcome" --react-email ./emails/welcome.tsx

Flux de configuration de domaine :

resend domains create --name example.com --region us-east-1
# Configurez les enregistrements DNS depuis la sortie, puis :
resend domains verify <domain-id>
resend domains get <domain-id>  # vérifier le statut

Créer et envoyer un broadcast :

resend broadcasts create --from "news@domain.com" --subject "Update" --segment-id <id> --html "<h1>Hi</h1>" --send

CI/CD (pas de connexion requise) :

RESEND_API_KEY=re_xxx resend emails send --from ... --to ... --subject ... --text ...

Vérifier la santé de l'environnement :

resend doctor -q

Quand Charger les Références

Skills similaires