Introducción a la API
La API de SpacePost es una API REST JSON compatible con la API de Resend. La lista completa de endpoints está en la referencia de la API, generada a partir de la especificación OpenAPI.
URL base
Sección titulada «URL base»https://api.spacepost.devLas rutas están en la raíz (/emails, /domains, …). También se acepta el prefijo /v1: https://api.spacepost.dev/v1/emails es el mismo endpoint. Usa el que prefiera tu cliente.
Autenticación
Sección titulada «Autenticación»Envía tu clave de API como token bearer en cada petición:
curl https://api.spacepost.dev/emails -H "Authorization: Bearer sp_live_YOUR_API_KEY"Las claves empiezan por sp_live_. Las claves full_access pueden usar todos los endpoints; las claves sending_access solo pueden enviar correos, opcionalmente desde un único dominio. Consulta Seguridad y claves de API.
| Problema | Respuesta |
|---|---|
Falta el encabezado Authorization |
401 missing_api_key |
Clave desconocida, revocada o mal formada (incluidas las claves re_ de Resend) |
403 invalid_api_key |
Clave sending_access en un endpoint que no es de envío |
401 restricted_api_key |
Peticiones
Sección titulada «Peticiones»- Envía JSON con
Content-Type: application/json. Un JSON no válido devuelve422 validation_error. - Los campos van en
snake_case(reply_to,scheduled_at). Por comodidad, al enviar también se aceptanreplyToyscheduledAt. - Los ID son cadenas UUIDv7; se ordenan por fecha de creación, que es como funciona la paginación.
- Las marcas de tiempo son ISO 8601 en UTC (
2026-10-23T14:02:09.512Z). - Los campos desconocidos de una petición se ignoran.
Respuestas
Sección titulada «Respuestas»Las respuestas correctas son JSON con estado 200. Los recursos llevan un campo object con el nombre de su tipo ("email", "domain", …). Los listados tienen este aspecto: { "object": "list", "has_more": false, "data": [] }.
Los errores siempre tienen la misma forma:
{ "statusCode": 422, "name": "validation_error", "message": "`to`: Invalid email address" }Consulta Errores para ver cada name.
Idempotencia
Sección titulada «Idempotencia»POST /emails y POST /emails/batch aceptan un encabezado Idempotency-Key (de 1 a 256 caracteres, recordado durante 24 horas): la misma clave y el mismo cuerpo devuelven la primera respuesta en lugar de volver a enviar. Consulta Claves de idempotencia.
Límites de tasa
Sección titulada «Límites de tasa»Por equipo: 10 peticiones por segundo (25 en Scale), indicadas en los encabezados ratelimit-*. Consulta Límites de tasa.
Versionado
Sección titulada «Versionado»La API sigue las formas actuales de Resend y no usa versiones con fecha. Solo hacemos cambios retrocompatibles en los endpoints existentes (nuevos campos opcionales, nuevos campos en las respuestas, nuevos tipos de evento y nombres de error), así que escribe clientes que ignoren los campos desconocidos y gestionen los nombres de error desconocidos. Cualquier cambio incompatible se publicaría bajo un nuevo prefijo de ruta, con aviso previo en el registro de cambios.
La API envía encabezados CORS permisivos para que los exploradores de API puedan llamarla, pero nunca la llames desde un navegador con una clave real. Las claves pertenecen a los servidores.