Das Resend CLI ist das offizielle Kommandozeilen-Tool für Resend, eine E-Mail-Plattform, die für Entwickler entwickelt wurde. Sie installieren es mit npm install -g resend-cli oder brew install resend/cli/resend, authentifizieren sich mit resend login und können dann E-Mails senden, Domains verwalten und Ihre E-Mail-Infrastruktur von jedem Terminal oder jeder CI/CD-Pipeline aus automatisieren.
Was ist Resend?
Resend ist eine E-Mail-API für Entwickler. Sie verbinden Ihre Domain, erhalten einen API-Schlüssel und können damit transaktionale E-Mails von Ihrer Anwendung aus senden: Passwort-Resets, Bestellbestätigungen, Onboarding-Sequenzen – alles, was programmatisch ausgelöst wird.
Am 13. März 2026 veröffentlichte Resend-Gründer Zeno Rocha das Resend CLI und brachte damit dieselbe Infrastruktur ins Terminal. Das CLI verfügt über 53 Befehle, verteilt auf 13 Ressourcen. Es ist in TypeScript geschrieben, vollständig Open Source unter MIT-Lizenz und funktioniert für drei verschiedene Zielgruppen:
- Menschen: interaktive Eingabeaufforderungen, lesbare Tabellenausgabe, Terminplanung in natürlicher Sprache ("morgen um 9 Uhr")
- KI-Agenten: JSON-Ausgabemodus, Idempotenzschlüssel, automatische Agenten-Erkennung
- CI/CD-Pipelines: Authentifizierung über Umgebungsvariablen, skriptfähige Flags, konsistente Exit-Codes
Installation des Resend CLI
Es gibt vier Möglichkeiten, das CLI zu installieren. Wählen Sie diejenige, die zu Ihrer Einrichtung passt.
Via cURL (eigenständige Binärdatei, kein Node.js erforderlich)
curl -fsSL https://resend.com/install.sh | bash
Dies lädt eine vorgefertigte Binärdatei für Ihr Betriebssystem herunter und legt sie in Ihrem PATH ab. Kein Node.js erforderlich.
Via npm
npm install -g resend-cli
Erfordert Node.js 20 oder neuer. Bestätigen Sie nach der Installation, dass es funktioniert:
resend --version
Via Homebrew (macOS und Linux)
brew install resend/cli/resend
Dies ist die sauberste Option auf macOS. Homebrew übernimmt Updates automatisch.
Via PowerShell (Windows)
irm https://resend.com/install.ps1 | iex
Sie können .exe-Binärdateien auch direkt von der GitHub Releases-Seite herunterladen.
Für die lokale Entwicklung
Wenn Sie zum CLI beitragen oder es aus dem Quellcode erstellen möchten, benötigen Sie Node.js 20+ und pnpm:
git clone https://github.com/resend/resend-cli.git
cd resend-cli
pnpm install
pnpm build # outputs ./dist/cli.cjs
pnpm build:bin # native binary at ./dist/resend
Ihr Konto authentifizieren
Führen Sie resend login aus, um das CLI mit Ihrem Resend-Konto zu verbinden:
resend login
Dies öffnet Ihren Browser, führt Sie durch die Erstellung eines API-Schlüssels im Resend-Dashboard und speichert Ihre Anmeldeinformationen lokal unter ~/.config/resend/credentials.json mit eingeschränkten 0600-Berechtigungen.
Für nicht-interaktive Umgebungen (CI/CD, Skripte) überspringen Sie den Browser-Flow und übergeben Sie einen Schlüssel direkt:
resend login --key re_xxxxxxxxxxxxx
Nachdem der Schlüssel gespeichert wurde, müssen Sie sich nicht für jeden Befehl erneut authentifizieren. Das CLI löst Ihren API-Schlüssel in dieser Reihenfolge auf:
--api-keyFlag (überschreibt alles)RESEND_API_KEYUmgebungsvariable- Die gespeicherte Anmeldedatei
Für CI-Pipelines ist das Festlegen von RESEND_API_KEY als geheime Umgebungsvariable der Standardansatz:
RESEND_API_KEY=re_xxx resend emails send --from builds@yourco.com --to dev@yourco.com --subject "Build passed" --text "All tests green."
Unterstützung für mehrere Konten
Wenn Sie mit mehreren Resend-Organisationen oder -Teams arbeiten, unterstützt das CLI auch dies. Wechseln Sie zwischen gespeicherten Profilen, ohne sich abzumelden:
resend auth switch
Oder übergeben Sie ein spezifisches Profil für einen einzelnen Befehl:
resend <command> --profile production
Ihre erste E-Mail senden
Der Hauptbefehl zum Senden ist resend emails send. Mindestens benötigen Sie eine Absenderadresse (von einer verifizierten Domain), einen Empfänger, einen Betreff und einen Text.
Eine Nur-Text-E-Mail senden
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."
Eine HTML-E-Mail senden
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>"
Oder verweisen Sie auf eine lokale HTML-Datei:
resend emails send \
--from "team@yourco.com" \
--to user@example.com \
--subject "Welcome aboard" \
--html-file ./templates/welcome.html
Zustellung planen
Das CLI parst Datumsangaben in natürlicher Sprache neben ISO 8601 Zeitstempeln:
resend emails send \
--from "you@yourco.com" \
--to user@example.com \
--subject "Scheduled check-in" \
--text "Just checking in." \
--schedule "tomorrow at 9am"
Funktioniert mit Phrasen wie "in 1 Stunde", "nächsten Montag um 15 Uhr" oder einem vollständigen ISO-Zeitstempel.
Die E-Mail-ID erfassen
Bei Weiterleitung schaltet das CLI automatisch auf JSON-Ausgabe um. Leiten Sie die Ausgabe durch jq, um die E-Mail-ID für Folgeoperationen zu erfassen:
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"
Eine geplante E-Mail abbrechen oder aktualisieren
resend emails cancel $EMAIL_ID
resend emails update $EMAIL_ID --schedule "next Monday at 10am"
Kürzliche E-Mails auflisten
resend emails list
Bis zu 100 auf einmal als Batch senden
Erstellen Sie eine JSON-Datei mit einem Array von E-Mail-Objekten:
[
{ "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!" }
]
Senden Sie dann den Batch:
resend emails send-batch --file emails.json
Jede Batch-Anfrage zählt als ein API-Aufruf für Ihr Ratenlimit, obwohl sie bis zu 100 E-Mails sendet.
Domains und API-Schlüssel verwalten
Bevor Sie E-Mails senden können, benötigen Sie eine verifizierte Domain. Das CLI führt Sie durch den gesamten Domain-Lebenszyklus.
Eine Domain hinzufügen
resend domains create --name yourdomain.com --region us-east-1
Unterstützte Regionen: us-east-1, eu-west-1, sa-east-1, ap-northeast-1. Wählen Sie die Region, die Ihren Benutzern am nächsten liegt, um die Latenz zu minimieren.
DNS-Einträge verifizieren
Nachdem Sie die Domain erstellt haben, stellt Resend Ihnen DNS-Einträge (SPF, DKIM, DMARC) zur Verfügung, die Sie hinzufügen müssen. Sobald Sie diese bei Ihrem DNS-Anbieter hinzugefügt haben, führen Sie aus:
resend domains verify --id <domain-id>
Überprüfen Sie den Status, bis er "verified" (verifiziert) zurückgibt:
resend domains get --id <domain-id>
Tracking und TLS konfigurieren
resend domains configure --id <domain-id> # Interactive configuration
Sie können Open Tracking, Click Tracking und benutzerdefiniertes DKIM über diesen Befehl aktivieren.
Alle Domains auflisten
resend domains list
API-Schlüssel verwalten
Aus Sicherheitsgründen sollten Sie bereichsbezogene API-Schlüssel für jeden Dienst oder jede Umgebung erstellen, anstatt einen Schlüssel überall zu teilen:
resend api-keys create # Interactive, lets you scope per domain
resend api-keys list
resend api-keys delete --id <key-id>
Bereichsbezogene Schlüssel beschränken, was jede Integration tun kann. Ein Schlüssel, der auf eine Domain beschränkt ist, kann nicht auf Ihre anderen Domains oder Kontoeinstellungen zugreifen.
Erweiterte Funktionen: Broadcasts, Webhooks und Vorlagen
Über das Senden einzelner E-Mails hinaus deckt das Resend CLI drei weitere wichtige Anwendungsfälle ab: Massen-Broadcasts, Webhook-Verwaltung und wiederverwendbare Vorlagen.
Broadcasts
Broadcasts ermöglichen es Ihnen, dieselbe E-Mail an eine große Kontaktliste zu senden. Sie entwerfen zuerst und senden oder planen dann:
resend broadcasts create # Interactive draft creation
resend broadcasts send --id <broadcast-id>
resend broadcasts schedule --id <broadcast-id> --date "next Monday at 10am"
Webhooks
Webhooks liefern Ihnen Echtzeit-Zustellungsereignisse: Bounces, Öffnungen, Klicks, Spam-Meldungen. Das CLI verwaltet den gesamten Lebenszyklus:
resend webhooks create # Register a new endpoint
resend webhooks list
Für die lokale Entwicklung verwenden Sie den Befehl webhooks listen, um Webhook-Ereignisse an Ihren Localhost weiterzuleiten:
resend webhooks listen --forward-to http://localhost:3000/webhooks/resend
Dies erspart Ihnen das Einrichten von ngrok oder ähnlichen Tunneling-Tools. Das CLI unterstützt 17 Ereignistypen, darunter email.sent, email.delivered, email.bounced, email.opened und email.clicked.
Vorlagen
Vorlagen ermöglichen es Ihnen, wiederverwendbares E-Mail-HTML mit dynamischen Variablen zu erstellen:
resend templates create # Interactive template builder
Variablen verwenden die Syntax {{variable_name}} mit Fallback-Werten. Nach der Erstellung können Sie beim Senden von E-Mails auf Vorlagen über deren ID verweisen.
Kontakte und Zielgruppen
Resend verfügt über eine integrierte Kontaktverwaltung für Marketing-E-Mails:
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
Diagnose ausführen
Der Befehl doctor überprüft Ihre Umgebung und meldet Probleme:
resend doctor
Es überprüft Ihre CLI-Version, die Gültigkeit des API-Schlüssels, verifizierte Domains und erkennt sogar KI-Codierungsagenten (Cursor, Claude Desktop, VS Code, OpenClaw).
Verwendung des Resend CLI in CI/CD-Pipelines
Das CLI ist darauf ausgelegt, gut in automatisierten Umgebungen zu funktionieren. Einige Muster, die Sie kennen sollten:
Maschinenlesbare Ausgabe
Jedes Mal, wenn Sie die Ausgabe weiterleiten oder --json übergeben, wechselt das CLI zu strukturiertem JSON. Keine Spinner, keine interaktiven Aufforderungen:
resend emails send --from a@co.com --to b@co.com --subject "Deploy" --text "Done" --json
Das Flag --quiet unterdrückt ebenfalls die gesamte Ausgabe außer JSON:
resend emails list --quiet | jq '.[0].id'
Destruktive Operationen automatisch bestätigen
Verwenden Sie --yes, um Bestätigungsaufforderungen in Skripten zu überspringen:
resend api-keys delete --id <key-id> --yes
GitHub Actions Beispiel
- 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."
Ratenbegrenzungen
Das Ratenlimit der Resend API beträgt 2 Anfragen pro Sekunde und wird von allen API-Schlüsseln Ihres Teams geteilt. Beim Senden von Batches verwenden Sie send-batch (bis zu 100 E-Mails pro Aufruf) anstatt einzelne Sendungen zu durchlaufen.
Testen Ihrer E-Mail-API mit Apidog
Das Resend CLI eignet sich hervorragend für die interaktive Nutzung und einfache Skripte. Wenn Sie jedoch ein Backend entwickeln, das Resends REST-API direkt aufruft, benötigen Sie eine Möglichkeit, diese Endpunkte zu erkunden und zu testen, bevor Sie Anwendungscode schreiben.
Apidog deckt dies ab. Es ist ein kostenloser API-Client, mit dem Sie HTTP-Anfragen senden, Antworten überprüfen, Ihre Testfälle organisieren und Umgebungen für verschiedene API-Schlüssel und Konfigurationen einrichten können.
So passt Apidog in einen typischen Resend-Integrations-Workflow:
Resend API-Spezifikation importieren. Resend bietet API-Referenzdokumentation unter resend.com/docs. Sie können die API-Spezifikation in Apidog importieren, um eine organisierte Ansicht jedes Endpunkts zu erhalten, einschließlich der Anforderungs-/Antwortschemata.
Umgebungen einrichten. Erstellen Sie in Apidog Umgebungen für Entwicklung und Produktion. Speichern Sie Ihren RESEND_API_KEY als Umgebungsvariable und referenzieren Sie ihn in Ihren Anfragen mit {{RESEND_API_KEY}}. Wechseln Sie mit einem Klick zwischen den Umgebungen.
Ihre Sende-Logik testen. Bevor Sie Code zum Senden von E-Mails aus Ihrer Anwendung schreiben, führen Sie den POST /emails-Endpunkt in Apidog mit Ihrer genauen Nutzlast aus. Überprüfen Sie die Antwort, stellen Sie sicher, dass die E-Mail-ID korrekt zurückgegeben wird, und bestätigen Sie das Verhalten für Randfälle (fehlende Felder, ungültige Adressen usw.).
Tests automatisieren. Der Test-Runner von Apidog ermöglicht es Ihnen, API-Aufrufe zu verketten und auf Antwortwerte zu prüfen. Sie können einen Test einrichten, der eine Test-E-Mail sendet, diese per ID abruft und dann ihren Status überprüft, alles ohne Testcode schreiben zu müssen.
Dies fängt Integrationsfehler ab, bevor sie in der Produktion auftreten. In Kombination mit dem Resend CLI für die lokale Entwicklung verfügen Sie sowohl über ein schnelles Terminal-Tool als auch über eine gründliche API-Testumgebung.
Resend Preise
Das CLI selbst ist kostenlos und Open Source. Die Preisgestaltung gilt für die Resend-Plattform:
| Plan | Preis | Monatliche E-Mails | Tägliches Limit | Log-Aufbewahrung |
|---|---|---|---|---|
| Kostenlos | 0 $/Monat | 3.000 | 100/Tag | 1 Tag |
| Pro | 20 $/Monat | 50.000 | Kein Limit | 3 Tage |
| Scale | 90 $/Monat | 100.000 | Kein Limit | 7 Tage |
| Enterprise | Individuell | Individuell | Individuell | Individuell |
Ein paar wissenswerte Punkte zum kostenlosen Tarif:
- Das 100/Tag-Limit macht es für Tests und kleine Projekte geeignet, nicht für Produktionsdatenverkehr
- Analysen (Öffnungs-/Klick-Tracking) erfordern einen kostenpflichtigen Plan
- Die Log-Aufbewahrung beträgt nur 1 Tag, sodass Sie alte E-Mail-Status nach 24 Stunden nicht abrufen können
- Das Ratenlimit beträgt 2 Anfragen/Sekunde für alle Pläne und wird teamübergreifend geteilt
- Überziehung bei kostenpflichtigen Plänen ist auf das 5-fache Ihres monatlichen Kontingents begrenzt, um unerwartete Rechnungen zu vermeiden
Dedizierte IPs sind ein 30 $/Monat Add-on im Scale-Plan, verfügbar, wenn Sie mehr als 500 E-Mails/Tag senden.
FAQ
Benötige ich Node.js, um das Resend CLI zu installieren?
Nicht für die Installationsmethoden über cURL oder Homebrew, die vorgefertigte eigenständige Binärdateien herunterladen. Der npm-Installationspfad erfordert Node.js 20+.
Warum kann ich nicht von jeder beliebigen E-Mail-Adresse senden?
Resend erfordert eine verifizierte Domain. Sie müssen die Domain besitzen, die von Resend bereitgestellten DNS-Einträge (SPF, DKIM, DMARC) hinzufügen und den Verifizierungsschritt bestehen. Kostenlose E-Mail-Anbieter wie Gmail werden nicht als Absenderadressen unterstützt.
Kann ich mit dem kostenlosen Plan E-Mails an beliebige Adressen senden?
Ja. Der kostenlose Plan schränkt die Empfänger nicht ein. Er begrenzt Sie auf 3.000 E-Mails/Monat mit einem Limit von 100/Tag.
Wie funktioniert die Terminplanung in natürlicher Sprache?
Das CLI parst Phrasen wie "morgen um 9 Uhr", "in 2 Stunden", "nächsten Freitag um 15 Uhr" oder standardmäßige ISO 8601 Zeitstempel. Zeiten werden in der lokalen Zeitzone Ihres Systems interpretiert, sofern Sie nichts anderes angeben.
Was passiert, wenn ich die Ausgabe weiterleite (pipe)?
Das CLI erkennt, wenn es weitergeleitet wird, und schaltet automatisch auf reine JSON-Ausgabe ohne Spinner oder Aufforderungen um. Sie müssen --json nicht explizit übergeben.
Kann ich das CLI mit mehreren Resend-Konten verwenden?
Ja. Verwenden Sie resend login mehrmals, um verschiedene Profile zu speichern, dann resend auth switch, um zwischen ihnen zu wechseln, oder übergeben Sie --profile <name> bei jedem Befehl, um ein spezifisches Profil zu verwenden.
Ist das Resend CLI Open Source?
Ja, es ist unter MIT-Lizenz veröffentlicht und auf github.com/resend/resend-cli gehostet.
Was ist der Unterschied zwischen --quiet und --json?
Beide erzeugen JSON-Ausgabe. --json erzwingt die JSON-Ausgabe. --quiet unterdrückt Spinner und Fortschrittsanzeigen, was ebenfalls den JSON-Modus impliziert. In der Praxis verhalten sie sich bezüglich des Ausgabeformats gleich; --quiet entfernt zusätzlich alle Nicht-Daten-Ausgaben.
