Migration von Resend
SpacePost implementiert die Resend-API: dieselben Pfade, dieselben Feldnamen, dieselben Antwortformate und dasselbe Fehlerformat. Die meisten Apps migrieren, indem sie eine Basis-URL und einen API-Schlüssel ändern.
-
Erstelle einen SpacePost-API-Schlüssel im Dashboard. SpacePost-Schlüssel beginnen mit
sp_live_(Resend-Schlüssel beginnen mitre_). -
Füge deine Domain in SpacePost hinzu und verifiziere sie. Die DNS-Einträge unterscheiden sich von denen bei Resend. Lege also die neuen DKIM-CNAMEs und die MX/TXT-Einträge für
sendan. Die Einträge von Resend kannst du während der Umstellung bestehen lassen, weil sich die DKIM-Selektoren nicht überschneiden. Siehe Hinzufügen und verifizieren. Verschiebe deine SPF/DMARC-Richtlinie nur, wenn du die Subdomainsendgeändert hast. -
Stelle den Client um. Wähle eine der folgenden Optionen.
Behalte das offizielle Paket
resend. Setze die Basis-URL über eine Umgebungsvariable und verwende deinen SpacePost-Schlüssel:.env RESEND_API_KEY=sp_live_YOUR_API_KEYRESEND_BASE_URL=https://api.spacepost.devimport { Resend } from "resend";const resend = new Resend(process.env.RESEND_API_KEY);await resend.emails.send({ from: "Acme <hello@acme.com>", to: "you@example.com", subject: "Hi", html: "<p>Hi</p>" });Oder übergib sie im Code:
const resend = new Resend("sp_live_YOUR_API_KEY", { baseUrl: "https://api.spacepost.dev" });Tausche den Import aus. Die Methodennamen und das Rückgabeformat
{ data, error }sind dieselben.import { Resend } from "resend";const resend = new Resend(process.env.RESEND_API_KEY);import { SpacePost } from "@spacepost/node";const spacepost = new SpacePost(process.env.SPACEPOST_API_KEY);await resend.emails.send({ ... });await spacepost.emails.send({ ... });Ändere den Host und den Schlüssel. Pfade und Bodys sind identisch.
curl https://api.resend.com/emails -H "Authorization: Bearer re_..."curl https://api.spacepost.dev/emails -H "Authorization: Bearer sp_live_..."Ändere Host, Port und Passwort und verwende STARTTLS. Der Benutzername
resendwird als Alias fürspacepostakzeptiert.Host: smtp.spacepost.dev Port: 25976 (STARTTLS)User: spacepost Password: sp_live_YOUR_API_KEY -
Lege deine Webhooks neu an. Erstelle jeden Endpoint in SpacePost erneut (
POST /webhooks) und speichere das neuesigning_secret. Verifizierungscode, den du für Resend oder Svix geschrieben hast, funktioniert weiter, weil SpacePost dieselben Standard-Webhooks-Header sendet (plussvix-*-Duplikate). Siehe Signaturen prüfen. -
Übertrage Zielgruppen und Kontakte. Lege Zielgruppen an und importiere Kontakte über
POST /audiences/{id}/contacts. Platzhalter wie{{{FIRST_NAME|fallback}}}und{{{RESEND_UNSUBSCRIBE_URL}}}funktionieren in Kampagnen unverändert. -
Sende einen Test und stelle dann um. Sende an
delivered@test.spacepost.dev, prüfe, ob der Webhook ankommt, und deploye dann.
Paritätstabelle
Abschnitt betitelt „Paritätstabelle“| Resend-Funktion | SpacePost | Hinweise |
|---|---|---|
POST /emails |
Unterstützt | to/cc/bcc/reply_to jeweils bis zu 50; die camelCase-Aliase replyTo, scheduledAt werden akzeptiert |
POST /emails/batch |
Unterstützt | Bis zu 100 E-Mails; Anhänge und scheduled_at sind pro E-Mail erlaubt; ganz oder gar nicht |
GET /emails/{id}, GET /emails |
Unterstützt | Die Liste enthält keine Bodys |
PATCH /emails/{id} |
Unterstützt | Geplante E-Mails neu terminieren |
POST /emails/{id}/cancel |
Unterstützt | Nur geplante E-Mails |
Anhänge (content, path) |
Unterstützt | path muss https sein |
| Tags, eigene Header | Unterstützt | Dieselben Einschränkungen für Zeichen in Tags |
Idempotency-Key |
Unterstützt | 24 Stunden, POST /emails und /emails/batch |
| Domains (create, get, list, verify, update, delete) | Unterstützt | open_tracking, click_tracking |
| API-Schlüssel | Unterstützt | full_access, sending_access, optional domain_id |
| Webhooks, Signierung nach Standard Webhooks | Unterstützt | Auch svix-*-Header |
| Zielgruppen, Kontakte, Kampagnen | Unterstützt | Kontakte liegen unter /audiences/{id}/contacts |
| Suppressions-API | Unterstützt | Zusätzlich: Einträge auflisten, hinzufügen und entfernen |
| Tenants (Plattform-Modus) | Nur SpacePost | Isolierte Reputation pro Kunde; siehe Plattform-Modus. Das Resend SDK verwirft tenant_id; nutze resend.post oder Domains im Besitz eines Tenants |
| SMTP-Relay | Unterstützt | smtp.spacepost.dev:25976 mit STARTTLS (noch kein implizites TLS auf 465) |
| Eingehende E-Mails | Noch nicht | |
| Template-Editor | Noch nicht | Nutze React Email oder dein eigenes HTML |
Unterschiede, die du kennen solltest
Abschnitt betitelt „Unterschiede, die du kennen solltest“last_event-Werte. Alle Werte von Resend (queued,scheduled,sent,delivered,delivery_delayed,bounced,complained,opened,clicked,canceled,failed) sind vorhanden. SpacePost ergänztsuppressed, das verwendet wird, wenn alle Empfänger auf deiner Sperrliste standen. Der Status geht nie rückwärts: Einopened-Event, das vordeliveredeintrifft, behält den späteren Zustand.- Zusätzliches Webhook-Event.
email.suppressedwird ausgelöst, wenn ein Empfänger übersprungen wird, weil er gesperrt ist. Abonniere nur die Events, die du verarbeitest. Die Payloads sind ansonsten identisch mit denen von Resend; für Tenant-Mails wirddata.tenant_idergänzt. - Rate Limit. 10 Anfragen pro Sekunde und Team (25 bei Scale) gegenüber 2 bei Resend, mit denselben
ratelimit-*-Headern. - Preise. Pro kostet 9 € für 50.000 E-Mails, jeder zusätzliche Block von 1.000 kostet 0,25 €, abgerechnet in EUR zzgl. USt. (Resend Pro: USD 20, jede zusätzlichen 1.000 USD 0,90; Preise von Resend in USD, Stand 23. Oktober 2026). Nach den ersten 7 Tagen hat jeder Plan, auch Free, ein Tageslimit, das mit deinem Versand wächst: der größere Wert aus 1.000 und dem Doppelten deines besten Tages der letzten 14 Tage, höchstens 50.000 pro Tag. Siehe Pläne und Kontingente.
- Was als E-Mail zählt. Jeder Empfänger zählt: Eine E-Mail an 3 Empfänger (to, cc und bcc zusammen) zählt mit 3 auf dein Kontingent.
- Test-Absender.
onboarding@test.spacepost.deversetztonboarding@resend.dev. Die Test-Postfächer liegen beitest.spacepost.devstattresend.dev:delivered@,bounced@,complained@,delayed@sowiesoftbounced@(nur SpacePost). - Sandbox für neue Konten. Die ersten 7 Tage sind auf 100 E-Mails pro Tag begrenzt. Siehe Verifizierung und Limits.
- Automatisches Pausieren. Teams mit auffälligen Bounce- oder Beschwerderaten werden automatisch pausiert. Siehe Automatisches Pausieren.
- Basis-URL.
https://api.spacepost.dev, mit Pfaden im Root. Ein Präfix/v1wird ebenfalls akzeptiert (https://api.spacepost.dev/v1/emails).