Pular para o conteúdo
spacepost

E-mail para desenvolvedores, por metade do preço.

Uma API compatível com a Resend, sobre o AWS SES. Troque a base URL, mantenha seu código e pague menos: o Pro custa € 9 por mês (sem IVA) para 50 mil e-mails; o Pro da Resend custa USD 20.

3.000 e-mails por mês grátis. Sem cartão de crédito.

Envie um e-mail com a SpacePost

import { SpacePost } from "@spacepost/node";

const spacepost = new SpacePost("sp_live_xxxxxxxxxxxx");

const { data, error } = await spacepost.emails.send({
  from: "Acme <hello@acme.com>",
  to: ["ada@example.com"],
  subject: "Your receipt",
  html: "<p>Thanks for your order.</p>",
});
curl -X POST https://api.spacepost.dev/emails \
  -H "Authorization: Bearer sp_live_xxxxxxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{
    "from": "Acme <hello@acme.com>",
    "to": ["ada@example.com"],
    "subject": "Your receipt",
    "html": "<p>Thanks for your order.</p>"
  }'
import requests

r = requests.post(
    "https://api.spacepost.dev/emails",
    headers={"Authorization": "Bearer sp_live_xxxxxxxxxxxx"},
    json={
        "from": "Acme <hello@acme.com>",
        "to": ["ada@example.com"],
        "subject": "Your receipt",
        "html": "<p>Thanks for your order.</p>",
    },
)
print(r.json())
body := strings.NewReader(`{
  "from": "Acme <hello@acme.com>",
  "to": ["ada@example.com"],
  "subject": "Your receipt",
  "html": "<p>Thanks for your order.</p>"
}`)

req, _ := http.NewRequest("POST", "https://api.spacepost.dev/emails", body)
req.Header.Set("Authorization", "Bearer sp_live_xxxxxxxxxxxx")
req.Header.Set("Content-Type", "application/json")

res, err := http.DefaultClient.Do(req)
<?php
$ch = curl_init("https://api.spacepost.dev/emails");
curl_setopt_array($ch, [
    CURLOPT_POST => true,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER => [
        "Authorization: Bearer sp_live_xxxxxxxxxxxx",
        "Content-Type: application/json",
    ],
    CURLOPT_POSTFIELDS => json_encode([
        "from" => "Acme <hello@acme.com>",
        "to" => ["ada@example.com"],
        "subject" => "Your receipt",
        "html" => "<p>Thanks for your order.</p>",
    ]),
]);
$response = curl_exec($ch);
require "net/http"
require "json"

uri = URI("https://api.spacepost.dev/emails")
req = Net::HTTP::Post.new(uri, "Content-Type" => "application/json")
req["Authorization"] = "Bearer sp_live_xxxxxxxxxxxx"
req.body = {
  from: "Acme <hello@acme.com>",
  to: ["ada@example.com"],
  subject: "Your receipt",
  html: "<p>Thanks for your order.</p>"
}.to_json

res = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(req) }
import nodemailer from "nodemailer";

const transport = nodemailer.createTransport({
  host: "smtp.spacepost.dev",
  port: 25976,
  secure: false, // STARTTLS
  requireTLS: true,
  auth: { user: "spacepost", pass: "sp_live_xxxxxxxxxxxx" },
});

await transport.sendMail({
  from: "Acme <hello@acme.com>",
  to: "ada@example.com",
  subject: "Your receipt",
  html: "<p>Thanks for your order.</p>",
});

Mesmo formato de requisição da Resend. Troque a chave pela sua.

Sediada na UE

Uma empresa da UE. Seus dados ficam na UE.

O SpacePost é desenvolvido e operado pela Studio 404 d.o.o., na Eslovênia. Seus e-mails, logs e dados da conta são armazenados e processados na UE, e seu contrato é com uma empresa da UE.

Empresa da UE, contrato da UE

Studio 404 d.o.o., Eslovênia. Nossos Termos de Serviço, e o adendo de processamento de dados que faz parte deles, são regidos pela lei eslovena.

Dados em Frankfurt e Amsterdã

Os e-mails são enviados pelo Amazon SES em Frankfurt (eu-central-1). A aplicação, os workers e o banco de dados rodam na Railway em Amsterdã (Países Baixos).

Preços em EUR, faturas com IVA da UE

Preços em EUR, sem IVA. Cada pagamento recebe uma fatura com IVA em EUR, com autoliquidação (reverse charge) para empresas da UE com número de IVA válido.

Adendo de processamento de dados (GDPR)

Um adendo de processamento de dados conforme o artigo 28 do GDPR para todos os clientes e uma lista pública de subprocessadores com a localização de cada fornecedor.

Alguns dos nossos fornecedores, como AWS, Stripe e Railway, são empresas dos EUA. Cada um aparece, com o que processa e onde, na nossa lista de subprocessadores.

Migração

Saia da Resend com uma linha

Seus corpos de requisição, handlers de webhook e tratamento de erros continuam iguais. Aponte a base URL para a SpacePost e troque a chave.

  • 01Verifique seu domínio (três CNAMEs de DKIM).
  • 02Crie uma chave de API.
  • 03Troque a base URL. Faça o deploy.
Guia completo de migração
.env
# .env
- RESEND_BASE_URL=https://api.resend.com
- RESEND_API_KEY=re_xxxxxxxx
+ RESEND_BASE_URL=https://api.spacepost.dev
+ RESEND_API_KEY=sp_live_xxxxxxxx
app.ts
// Option A: keep the Resend SDK, point it at SpacePost
- const resend = new Resend(process.env.RESEND_API_KEY);
+ const resend = new Resend(process.env.SPACEPOST_API_KEY, { baseUrl: "https://api.spacepost.dev" });

// Option B: use the drop-in SDK
- import { Resend } from "resend";
+ import { SpacePost as Resend } from "@spacepost/node";

Recursos

Tudo o que a API da Resend faz, sem nada novo para aprender

API transacional

POST /emails com os mesmos caminhos, corpos de requisição, respostas e formato de erro da Resend. Anexos, tags, headers personalizados, cc/bcc, reply-to.

Envio em lote e agendado

Até 100 e-mails por chamada em lote. Agende com um timestamp ISO ou "in 1 hour" e reagende ou cancele antes do envio.

Domínios com DKIM, SPF e DMARC

Easy DKIM com três CNAMEs, subdomínio MAIL FROM personalizado, orientação de DMARC e verificação com um clique, com botão de copiar em cada registro.

Webhooks assinados

Nove tipos de evento, assinaturas Standard Webhooks (compatíveis com Svix), novas tentativas com backoff e reenvio pelo painel.

Públicos e campanhas

Contatos, públicos e campanhas com merge tags. O cancelamento de inscrição com um clique (RFC 8058) é adicionado para você.

Relay SMTP

smtp.spacepost.dev na porta 25976 com STARTTLS. Usuário "spacepost", senha é uma chave de API. Funciona com Supabase, Auth0, WordPress e companhia.

Chaves de idempotência

Envie o header Idempotency-Key e as novas tentativas em até 24 horas devolvem a resposta original, sem e-mail duplicado.

Caixas do modo de teste

Envie para endereços em test.spacepost.dev para simular entrega, rejeição (bounce) e reclamação. Nenhum e-mail real sai dos nossos servidores.

Rastreamento de aberturas e cliques

Ative por domínio. Os eventos aparecem na linha do tempo do e-mail e nos seus webhooks.

10 requisições por segundo

Limite por equipe com headers ratelimit-*, contra 2 na Resend. O Scale sobe para 25.

Ainda não temos: e-mail de entrada, editor de templates e envio multirregião. Veja o que está planejado.

Entregabilidade e confiança

Infraestrutura sóbria e cuidadosa para os e-mails que importam

Ainda não temos logos de clientes para mostrar, então aqui vai como tudo funciona de verdade.

Infraestrutura Amazon SES

Os e-mails saem pelo Amazon SES em eu-central-1 (Frankfurt). Não operamos servidores de e-mail próprios e não fingimos o contrário.

Reputação isolada por equipe

Cada equipe tem seu próprio tenant no SES, então a lista ruim de um remetente pode pausar só esse remetente e mais ninguém.

Supressão automática

Rejeições definitivas (hard bounces) e reclamações entram na sua lista de supressão automaticamente, e cada destinatário é verificado antes de cada envio.

Proteções antes de chegar ao SES

As equipes são pausadas automaticamente com taxa de bounce acima de 5% ou taxa de reclamação acima de 0,2%, bem antes dos limites de revisão do próprio SES.

Contas novas em sandbox

Equipes novas ficam limitadas a domínios verificados e 100 e-mails por dia nos primeiros 7 dias. Isso mantém a reputação compartilhada limpa para todos.

Página de status transparente

Incidentes e uptime são publicados na nossa página de status, não escondidos atrás de um chamado de suporte.

Criptografia, tratamento de chaves, retenção e como reportar uma vulnerabilidade.

Visão geral de segurança

Uptime e incidentes em tempo real: página de status.

Ferramentas para desenvolvedores

Feita para ser usada por código, terminal ou agente

terminal
$ bunx spacepost send \
    --from "Acme <hello@acme.com>" \
    --to ada@example.com \
    --subject "Hello from the CLI" \
    --text "It works."

✓ Queued  email_id=0192f3a4-7c1e-7b6d-9a35-2f0e6f1d8c10
verificar webhooks
import { Webhook } from "standardwebhooks";

const wh = new Webhook(process.env.SPACEPOST_WEBHOOK_SECRET!);
const event = wh.verify(rawBody, {
  "webhook-id": req.headers["webhook-id"],
  "webhook-timestamp": req.headers["webhook-timestamp"],
  "webhook-signature": req.headers["webhook-signature"],
});
  • SDK Node

    O @spacepost/node é compatível com a Resend, não tem dependências e usa fetch, então roda em Node, Bun, Deno e runtimes de edge.

  • CLI

    spacepost send, spacepost domains verify, spacepost logs. Distribuída como um único binário para macOS, Linux e Windows.

  • Servidor MCP para agentes de IA

    O @spacepost/mcp permite que Claude, Cursor e outros agentes enviem e-mails, gerenciem domínios e leiam logs de entrega via stdio.

  • Especificação OpenAPI 3.1

    Uma especificação completa para gerar clientes tipados em qualquer linguagem ou importar no Postman e no Insomnia.

  • Verificação de webhooks

    Headers Standard Webhooks (webhook-id, webhook-timestamp, webhook-signature), então as bibliotecas Svix que você já usa verificam nossos payloads.

Preços

Comece grátis. Pague por milhar quando crescer.

Free

€ 0 /mês

sem IVA

3.000 e-mails incluídos.

Resend Free: USD 0

Pro

€ 9 /mês

sem IVA

50.000 e-mails incluídos, depois € 0,25 por 1.000.

Resend Pro: USD 20

Scale

€ 35 /mês

sem IVA

200.000 e-mails incluídos, depois € 0,20 por 1.000.

Resend Scale: USD 90 por 100 mil e-mails

Ver preços e calculadora

FAQ

Perguntas, respondidas sem rodeios

Faltou algo? Escreva para support@spacepost.dev.

A SpacePost é mesmo compatível com a Resend?
Caminhos, formatos de requisição e resposta, nomes de erro e paginação seguem a API da Resend, então a maioria dos apps só precisa trocar a base URL e a chave de API. Veja a comparação de recursos para saber exatamente o que é suportado hoje e o que ainda está planejado.
Por que é mais barata?
Rodamos sobre o Amazon SES, que custa cerca de US$ 0,10 por 1.000 e-mails, e mantemos o produto focado na API. O Pro custa € 9 por mês (sem IVA) com 50.000 e-mails; a Resend cobra USD 20. Também cobramos menos por cada milhar extra.
O que acontece com a minha reputação se outro cliente se comportar mal?
Cada equipe tem seu próprio tenant no SES, com acompanhamento de reputação separado, e nossas proteções pausam um remetente automaticamente quando as taxas de bounce ou reclamação passam dos limites. IPs dedicados estão disponíveis no Enterprise.
Onde meus dados ficam armazenados?
O envio roda na AWS eu-central-1 (Frankfurt). A aplicação e o banco de dados rodam na Railway, na região da UE (Amsterdã, Países Baixos). Veja a lista de subprocessadores.
E se eu ultrapassar o plano grátis?
O plano Free para em 3.000 e-mails por mês, em vez de cobrar você sem avisar. Faça upgrade para o Pro quando quiser e cancele a qualquer momento.
Posso enviar e-mail de marketing?
Sim, para pessoas que aceitaram receber. As campanhas adicionam o cancelamento de inscrição com um clique automaticamente. Listas compradas ou raspadas não são permitidas, veja a Política de Uso Aceitável.

Envie seu primeiro e-mail em cinco minutos

Crie uma conta grátis, verifique um domínio e faça uma chamada à API. Sem cartão de crédito.