Migrer depuis Resend
SpacePost implémente l’API Resend : mêmes chemins, mêmes noms de champs, mêmes formats de réponse et même format d’erreur. La plupart des applications migrent en changeant une URL de base et une clé API.
-
Créez une clé API SpacePost dans le tableau de bord. Les clés SpacePost commencent par
sp_live_(les clés Resend commencent parre_). -
Ajoutez et vérifiez votre domaine dans SpacePost. Les enregistrements DNS diffèrent de ceux de Resend : ajoutez donc les nouveaux CNAME DKIM et les enregistrements MX/TXT de
send. Vous pouvez laisser en place les enregistrements de Resend pendant la bascule, car les sélecteurs DKIM n’entrent pas en collision. Voir Ajouter et vérifier. Ne déplacez votre politique SPF/DMARC que si vous avez changé le sous-domainesend. -
Changez de client. Choisissez l’une des options ci-dessous.
Gardez le paquet officiel
resend. Définissez l’URL de base avec une variable d’environnement et utilisez votre clé SpacePost :.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>" });Ou passez-la dans le code :
const resend = new Resend("sp_live_YOUR_API_KEY", { baseUrl: "https://api.spacepost.dev" });Remplacez l’import. Les noms de méthodes et le format de retour
{ data, error }sont les mêmes.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({ ... });Changez l’hôte et la clé. Les chemins et les corps de requête sont identiques.
curl https://api.resend.com/emails -H "Authorization: Bearer re_..."curl https://api.spacepost.dev/emails -H "Authorization: Bearer sp_live_..."Changez l’hôte, le port et le mot de passe, et utilisez STARTTLS. Le nom d’utilisateur
resendest accepté comme alias despacepost.Host: smtp.spacepost.dev Port: 25976 (STARTTLS)User: spacepost Password: sp_live_YOUR_API_KEY -
Recréez vos webhooks. Créez de nouveau chaque endpoint dans SpacePost (
POST /webhooks) et conservez le nouveausigning_secret. Le code de vérification écrit pour Resend ou Svix continue de fonctionner, car SpacePost envoie les mêmes en-têtes Standard Webhooks (plus des doublonssvix-*). Voir Vérifier les signatures. -
Déplacez les audiences et les contacts. Créez les audiences et importez les contacts via
POST /audiences/{id}/contacts. Les placeholders comme{{{FIRST_NAME|fallback}}}et{{{RESEND_UNSUBSCRIBE_URL}}}fonctionnent sans changement dans les campagnes. -
Envoyez un test, puis basculez. Envoyez à
delivered@test.spacepost.dev, vérifiez que le webhook arrive, puis déployez.
Tableau de parité
Section intitulée « Tableau de parité »| Fonctionnalité Resend | SpacePost | Remarques |
|---|---|---|
POST /emails |
Pris en charge | to/cc/bcc/reply_to jusqu’à 50 chacun ; les alias camelCase replyTo, scheduledAt sont acceptés |
POST /emails/batch |
Pris en charge | Jusqu’à 100 e-mails ; pièces jointes et scheduled_at autorisés par e-mail ; tout ou rien |
GET /emails/{id}, GET /emails |
Pris en charge | La liste omet les corps |
PATCH /emails/{id} |
Pris en charge | Replanifie les e-mails planifiés |
POST /emails/{id}/cancel |
Pris en charge | E-mails planifiés uniquement |
Pièces jointes (content, path) |
Pris en charge | path doit être en https |
| Tags, en-têtes personnalisés | Pris en charge | Mêmes contraintes sur les caractères des tags |
Idempotency-Key |
Pris en charge | 24 heures, POST /emails et /emails/batch |
| Domaines (create, get, list, verify, update, delete) | Pris en charge | open_tracking, click_tracking |
| Clés API | Pris en charge | full_access, sending_access, domain_id optionnel |
| Webhooks, signature Standard Webhooks | Pris en charge | Également les en-têtes svix-* |
| Audiences, contacts, campagnes | Pris en charge | Les contacts se trouvent sous /audiences/{id}/contacts |
| API Suppressions | Pris en charge | En plus : lister, ajouter et retirer des entrées |
| Tenants (mode plateforme) | SpacePost uniquement | Réputation isolée par client ; voir Mode plateforme. Le SDK Resend supprime tenant_id ; utilisez resend.post ou des domaines appartenant au tenant |
| Relais SMTP | Pris en charge | smtp.spacepost.dev:25976 avec STARTTLS (pas encore de TLS implicite sur 465) |
| E-mail entrant | Pas encore | |
| Éditeur de modèles | Pas encore | Utilisez React Email ou votre propre HTML |
Différences à connaître
Section intitulée « Différences à connaître »- Valeurs de
last_event. Toutes les valeurs de Resend (queued,scheduled,sent,delivered,delivery_delayed,bounced,complained,opened,clicked,canceled,failed) sont présentes. SpacePost ajoutesuppressed, utilisée lorsque tous les destinataires figuraient dans votre liste de suppression. Le statut ne revient jamais en arrière : un événementopenedqui arrive avantdeliveredconserve l’état le plus récent. - Événement de webhook supplémentaire.
email.suppressedse déclenche lorsqu’un destinataire est ignoré parce qu’il est supprimé. Abonnez-vous uniquement aux événements que vous traitez. Les payloads sont par ailleurs identiques à ceux de Resend ;data.tenant_idest ajouté pour les e-mails de tenant. - Limite de débit. 10 requêtes par seconde et par équipe (25 sur Scale) contre 2 chez Resend, avec les mêmes en-têtes
ratelimit-*. - Tarifs. Pro coûte 9 € pour 50 000 e-mails, avec 0,25 € par tranche supplémentaire de 1 000, facturés en EUR hors TVA (Resend Pro : 20 USD avec 0,90 USD par tranche supplémentaire de 1 000, prix de Resend en USD au 23 octobre 2026). Après les 7 premiers jours, chaque forfait, Free compris, a un plafond quotidien qui augmente avec vos envois : le plus grand de 1 000 et du double de votre meilleure journée des 14 derniers jours, dans la limite de 50 000 par jour. Voir Forfaits et quotas.
- Ce qui compte comme un e-mail. Chaque destinataire compte : un e-mail à 3 destinataires (to, cc et bcc confondus) compte pour 3 dans votre quota.
- Expéditeur de test.
onboarding@test.spacepost.devremplaceonboarding@resend.dev. Les boîtes de test se trouvent surtest.spacepost.devau lieu deresend.dev:delivered@,bounced@,complained@,delayed@, plussoftbounced@(SpacePost uniquement). - Sandbox des nouveaux comptes. Les 7 premiers jours sont limités à 100 e-mails par jour. Voir Vérification et limites.
- Mise en pause automatique. Les équipes dont les taux de rebond ou de plainte sont anormaux sont mises en pause automatiquement. Voir Mise en pause automatique.
- URL de base.
https://api.spacepost.dev, avec les chemins à la racine. Un préfixe/v1est aussi accepté (https://api.spacepost.dev/v1/emails).