Migrare da Resend
SpacePost implementa l’API di Resend: stessi percorsi, stessi nomi dei campi, stessi formati di risposta e lo stesso formato degli errori. La maggior parte delle app migra cambiando un URL di base e una chiave API.
-
Crea una chiave API SpacePost nella dashboard. Le chiavi SpacePost iniziano con
sp_live_(quelle di Resend iniziano conre_). -
Aggiungi e verifica il tuo dominio in SpacePost. I record DNS sono diversi da quelli di Resend, quindi aggiungi i nuovi CNAME DKIM e i record MX/TXT di
send. Puoi lasciare al loro posto i record di Resend durante il passaggio, perché i selettori DKIM non collidono. Vedi Aggiungere e verificare. Sposta la tua policy SPF/DMARC solo se hai cambiato il sottodominiosend. -
Cambia il client. Scegli una delle opzioni qui sotto.
Mantieni il pacchetto ufficiale
resend. Imposta l’URL di base con una variabile d’ambiente e usa la tua chiave 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>" });Oppure passalo nel codice:
const resend = new Resend("sp_live_YOUR_API_KEY", { baseUrl: "https://api.spacepost.dev" });Sostituisci l’import. I nomi dei metodi e la forma del risultato
{ data, error }sono gli stessi.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({ ... });Cambia l’host e la chiave. Percorsi e corpi delle richieste sono identici.
curl https://api.resend.com/emails -H "Authorization: Bearer re_..."curl https://api.spacepost.dev/emails -H "Authorization: Bearer sp_live_..."Cambia host, porta e password, e usa STARTTLS. Il nome utente
resendè accettato come alias dispacepost.Host: smtp.spacepost.dev Port: 25976 (STARTTLS)User: spacepost Password: sp_live_YOUR_API_KEY -
Ricrea i tuoi webhook. Crea di nuovo ogni endpoint in SpacePost (
POST /webhooks) e salva il nuovosigning_secret. Il codice di verifica scritto per Resend o Svix continua a funzionare, perché SpacePost invia gli stessi header Standard Webhooks (più i duplicatisvix-*). Vedi Verificare le firme. -
Sposta pubblici e contatti. Crea i pubblici e importa i contatti tramite
POST /audiences/{id}/contacts. Segnaposto come{{{FIRST_NAME|fallback}}}e{{{RESEND_UNSUBSCRIBE_URL}}}funzionano senza modifiche nelle campagne. -
Invia un test, poi passa in produzione. Invia a
delivered@test.spacepost.dev, controlla che il webhook arrivi, poi esegui il deploy.
Tabella di parità
Sezione intitolata “Tabella di parità”| Funzionalità di Resend | SpacePost | Note |
|---|---|---|
POST /emails |
Supportato | to/cc/bcc/reply_to fino a 50 ciascuno; gli alias camelCase replyTo, scheduledAt sono accettati |
POST /emails/batch |
Supportato | Fino a 100 email; allegati e scheduled_at sono consentiti per ogni email; tutto o niente |
GET /emails/{id}, GET /emails |
Supportato | L’elenco omette i corpi |
PATCH /emails/{id} |
Supportato | Riprogramma le email pianificate |
POST /emails/{id}/cancel |
Supportato | Solo email pianificate |
Allegati (content, path) |
Supportato | path deve essere https |
| Tag, header personalizzati | Supportato | Stessi vincoli sui caratteri dei tag |
Idempotency-Key |
Supportato | 24 ore, POST /emails e /emails/batch |
| Domini (crea, ottieni, elenca, verifica, aggiorna, elimina) | Supportato | open_tracking, click_tracking |
| Chiavi API | Supportato | full_access, sending_access, domain_id facoltativo |
| Webhook, firma Standard Webhooks | Supportato | Anche gli header svix-* |
| Pubblici, contatti, campagne | Supportato | I contatti stanno sotto /audiences/{id}/contacts |
| API delle soppressioni | Supportato | In più: elenca, aggiungi e rimuovi voci |
| Tenant (modalità piattaforma) | Solo SpacePost | Reputazione isolata per cliente; vedi Modalità piattaforma. L’SDK di Resend scarta tenant_id; usa resend.post o domini di proprietà del tenant |
| Relay SMTP | Supportato | smtp.spacepost.dev:25976 con STARTTLS (ancora nessun TLS implicito sulla 465) |
| Email in ingresso | Non ancora | |
| Editor di template | Non ancora | Usa React Email o il tuo HTML |
Differenze da conoscere
Sezione intitolata “Differenze da conoscere”- Valori di
last_event. Tutti i valori di Resend (queued,scheduled,sent,delivered,delivery_delayed,bounced,complained,opened,clicked,canceled,failed) sono presenti. SpacePost aggiungesuppressed, usato quando tutti i destinatari erano nella tua lista di soppressione. Lo stato non torna mai indietro: un eventoopenedche arriva prima dideliveredmantiene lo stato successivo. - Evento webhook aggiuntivo.
email.suppressedviene emesso quando un destinatario viene saltato perché soppresso. Iscriviti solo agli eventi che gestisci. Per il resto i payload sono identici a quelli di Resend; per le email dei tenant viene aggiuntodata.tenant_id. - Limite di frequenza. 10 richieste al secondo per team (25 su Scale) contro le 2 di Resend, con gli stessi header
ratelimit-*. - Prezzi. Pro costa 9 € per 50.000 email, con 0,25 € per ogni 1.000 in più, fatturati in EUR IVA esclusa (Resend Pro: 20 USD con 0,90 USD per ogni 1.000 in più, prezzi di Resend in USD al 23 ottobre 2026). Dopo i primi 7 giorni ogni piano, Free incluso, ha un tetto giornaliero che cresce con i tuoi invii: il maggiore tra 1.000 e il doppio del tuo giorno migliore negli ultimi 14 giorni, fino a 50.000 al giorno. Vedi Piani e quote.
- Che cosa conta come email. Ogni destinatario conta: un’email a 3 destinatari (to, cc e bcc insieme) pesa 3 sulla tua quota.
- Mittente di test.
onboarding@test.spacepost.devsostituisceonboarding@resend.dev. Le caselle di test stanno sutest.spacepost.devinvece che suresend.dev:delivered@,bounced@,complained@,delayed@, piùsoftbounced@(solo SpacePost). - Sandbox dei nuovi account. I primi 7 giorni sono limitati a 100 email al giorno. Vedi Verifica e limiti.
- Pausa automatica. I team con tassi anomali di rimbalzo o di reclamo vengono messi in pausa automaticamente. Vedi Pausa automatica.
- URL di base.
https://api.spacepost.dev, con i percorsi alla radice. È accettato anche il prefisso/v1(https://api.spacepost.dev/v1/emails).