Introdução à API
A API do SpacePost é uma API REST em JSON compatível com a API do Resend. A lista completa de endpoints está na referência da API, gerada a partir da especificação OpenAPI.
URL base
Seção intitulada “URL base”https://api.spacepost.devOs caminhos ficam na raiz (/emails, /domains, …). Um prefixo /v1 também é aceito: https://api.spacepost.dev/v1/emails é o mesmo endpoint. Use o que o seu cliente preferir.
Autenticação
Seção intitulada “Autenticação”Envie sua chave de API como bearer token em cada requisição:
curl https://api.spacepost.dev/emails -H "Authorization: Bearer sp_live_YOUR_API_KEY"As chaves começam com sp_live_. As chaves full_access podem usar todos os endpoints; as chaves sending_access só podem enviar e-mails, opcionalmente de um único domínio. Veja Segurança e chaves de API.
| Problema | Resposta |
|---|---|
Sem o cabeçalho Authorization |
401 missing_api_key |
Chave desconhecida, revogada ou malformada (inclusive chaves re_ do Resend) |
403 invalid_api_key |
Chave sending_access em um endpoint que não é de envio |
401 restricted_api_key |
Requisições
Seção intitulada “Requisições”- Envie JSON com
Content-Type: application/json. Um JSON inválido retorna422 validation_error. - Os campos usam
snake_case(reply_to,scheduled_at). Por conveniência,replyToescheduledAttambém são aceitos no envio. - Os IDs são strings UUIDv7; eles se ordenam por data de criação, que é como a paginação funciona.
- Os timestamps seguem a ISO 8601 em UTC (
2026-10-23T14:02:09.512Z). - Campos desconhecidos em uma requisição são ignorados.
Respostas
Seção intitulada “Respostas”As respostas bem-sucedidas são JSON com status 200. Os recursos trazem um campo object que indica o tipo ("email", "domain", …). As listas têm o formato { "object": "list", "has_more": false, "data": [] }.
Os erros sempre têm o mesmo formato:
{ "statusCode": 422, "name": "validation_error", "message": "`to`: Invalid email address" }Veja Erros para conhecer cada name.
Idempotência
Seção intitulada “Idempotência”POST /emails e POST /emails/batch aceitam um cabeçalho Idempotency-Key (de 1 a 256 caracteres, lembrado por 24 horas): a mesma chave com o mesmo corpo retorna a primeira resposta em vez de enviar de novo. Veja Chaves de idempotência.
Limites de taxa
Seção intitulada “Limites de taxa”Por equipe: 10 requisições por segundo (25 no Scale), informadas nos cabeçalhos ratelimit-*. Veja Limites de taxa.
Versionamento
Seção intitulada “Versionamento”A API segue os formatos atuais do Resend e não usa versões com data. Fazemos apenas alterações compatíveis com versões anteriores nos endpoints existentes (novos campos opcionais, novos campos nas respostas, novos tipos de evento e nomes de erro); por isso, escreva clientes que ignorem campos desconhecidos e tratem nomes de erro desconhecidos. Qualquer mudança incompatível seria publicada sob um novo prefixo de caminho, com aviso prévio no changelog.
A API envia cabeçalhos CORS permissivos para que exploradores de API possam chamá-la, mas nunca a chame de um navegador com uma chave real. As chaves pertencem aos servidores.