¿Cómo obtener una clave API de Resend y enviar tu primer correo electrónico?

Obtén una clave API de Resend paso a paso: verifica un dominio, configura el alcance de la clave, envía tu primer correo electrónico con curl, Node y Python, y pruébala en Apidog.

INEZA Felin-Michel

INEZA Felin-Michel

18 September 2026

¿Cómo obtener una clave API de Resend y enviar tu primer correo electrónico?

Apidog para empresas

Despliegue local

SSO & RBAC

Conforme con SOC 2

Explorar Apidog Enterprise

Resend es una API de correo electrónico diseñada para desarrolladores: una solicitud POST, un cuerpo JSON y se envía un correo electrónico transaccional. Cada solicitud necesita una clave API, y la forma en que creas esa clave decide cuánto daño puede hacer una clave filtrada. Esta guía recorre todo el camino: regístrate, verifica un dominio de envío (o apóyate en la dirección de prueba incorporada), crea una clave con el ámbito de permisos adecuado y envía tu primer correo electrónico con curl, Node y Python. También almacenarás la clave en Apidog para poder probar el endpoint sin pegar secretos en tu shell.

Si quieres una visión más amplia de lo que hace la API más allá del envío, la guía para principiantes de la API de Resend cubre el resto. Todo lo que se menciona a continuación se ha comprobado con la documentación oficial de Resend, por lo que los números y las cadenas de error coinciden con lo que verás.

button

Lo que necesitas antes de empezar

Paso 1: crea una cuenta de Resend

Regístrate en resend.com y confirma tu correo electrónico. Anota la dirección con la que te registraste: hasta que verifiques un dominio, es la única bandeja de entrada a la que Resend entregará correos electrónicos de prueba, y olvidarlo provoca el 403 más confuso que verás el primer día.

Paso 2: verifica un dominio de envío, o usa la dirección de prueba

Dos rutas; empieza por la rápida.

Ruta A: la dirección de prueba de onboarding. Resend te permite enviar desde onboarding@resend.dev sin configuración. La pega es el destinatario: tiene que ser tu propio correo electrónico de cuenta. Envía a cualquier otra persona y la API devuelve un 403 con el mensaje "Solo puedes enviar correos electrónicos de prueba a tu propia dirección de correo electrónico".

Ruta B: tu propio dominio. Para cualquier cosa real, añade un dominio en el panel de control bajo Dominios. Resend recomienda un subdominio como notifications.example.com en lugar de tu dominio raíz, para que la reputación de envío de tu producto se mantenga separada de tu correo corporativo. Elige la región más cercana a tus destinatarios, luego copia los registros DNS que Resend genera en tu proveedor de DNS. La documentación los describe como "las configuraciones DKIM y SPF (registros TXT y MX o CNAME)". El subdominio Return-Path por defecto es send.example.com.

La verificación suele completarse en 15 minutos, aunque la propagación del DNS puede tardar hasta 72 horas. Si se estanca, comprueba dos culpables clásicos: registros colocados en la raíz en lugar del subdominio send, y el proxy de Cloudflare (el icono de la nube debe ser gris, no naranja). Corrige los registros y luego haz clic en "Reiniciar verificación". Añade un registro DMARC después; no es obligatorio para enviar, pero los proveedores de bandeja de entrada lo recompensan.

Paso 3: crea la clave API con el ámbito correcto

Abre la página de claves API en el panel de control y haz clic en Crear clave API. Tres campos importan; la documentación para crear una clave API cubre cada uno:

Resend muestra la clave exactamente una vez. Comienza con re_, y una vez que cierras el diálogo puedes renombrar la clave pero nunca volver a verla. Cópiala directamente en una variable de entorno:

export RESEND_API_KEY="re_xxxxxxxxx"

La propia guía de Resend: las claves nunca caducan, así que gíralas cada 90 días o antes; el panel de control marca cualquier clave no utilizada durante 30 días; y si una clave se filtra, elimínala inmediatamente en lugar de esperar la próxima rotación. Confirmar cadenas re_ en git es la ruta de fuga más común, así que ejecuta un escáner de secretos en tus repositorios antes del primer push.

También puedes acuñar claves con POST https://api.resend.com/api-keys, pasando name, permission (full_access o sending_access) y un domain_id opcional. Esa llamada necesita una clave de acceso completo, una razón más para mantener exactamente una de esas.

Paso 4: envía tu primer correo electrónico

El endpoint de envío es POST https://api.resend.com/emails. La autenticación es un token Bearer en el encabezado Authorization, el cuerpo es JSON y solo se acepta HTTPS. Se requieren tres campos: from, to y subject. Añade html, text o ambos; si envías solo html, Resend genera la parte de texto plano. to acepta una cadena o una matriz de hasta 50 direcciones. La lista completa de parámetros se encuentra en la referencia de envío de correo electrónico.

curl

curl -X POST 'https://api.resend.com/emails' \
  -H "Authorization: Bearer $RESEND_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{
    "from": "Acme <onboarding@resend.dev>",
    "to": ["you@yourcompany.com"],
    "subject": "First Resend email",
    "html": "<p>Your Resend key works.</p>"
  }'

Una llamada exitosa devuelve {"id": "49a3999c-0ce1-4ea6-ab68-afcd6dc2e794"}. Una peculiaridad: cada solicitud debe llevar un encabezado User-Agent, o la API responde con un 403 con el código 1010. curl y los SDKs configuran uno; un cliente hecho a mano en un entorno de ejecución edge podría no hacerlo.

Node.js

npm install resend
import { Resend } from 'resend';

const resend = new Resend(process.env.RESEND_API_KEY);

const { data, error } = await resend.emails.send({
  from: 'Acme <notifications@example.com>',
  to: ['you@yourcompany.com'],
  subject: 'First Resend email',
  html: '<p>Your Resend key works.</p>',
});

if (error) {
  console.error(error);
} else {
  console.log(data.id);
}

El SDK de Node nunca lanza errores de API. Devuelve { data, error }, así que comprueba error antes de tocar data.id.

Python

pip install resend
import os
import resend
from resend.exceptions import ResendError

resend.api_key = os.environ["RESEND_API_KEY"]

params: resend.Emails.SendParams = {
    "from": "Acme <notifications@example.com>",
    "to": ["you@yourcompany.com"],
    "subject": "First Resend email",
    "html": "<p>Your Resend key works.</p>",
}

try:
    email = resend.Emails.send(params)
    print(email["id"])
except ResendError as err:
    print(err)

El SDK de Python hace lo contrario: lanza ResendError en caso de fallo, así que envuelve los envíos en un bloque try/except.

Paso 5: almacena y prueba la clave en Apidog

Curl prueba que la clave funciona una vez. Apidog convierte esa acción única en algo que tu equipo puede volver a ejecutar, y mantiene la clave fuera del historial de la shell y los registros de chat.

Almacena la clave como una variable secreta. Crea un entorno llamado Resend, añade RESEND_API_KEY como variable y márcala como secreta para que el valor esté enmascarado en la interfaz de usuario y no se incluya en las exportaciones. La guía de entornos y variables secretas cubre las divisiones de desarrollo, staging y producción si mantienes una clave de solo envío diferente por entorno, lo cual deberías hacer.

Envía la solicitud. Crea una solicitud POST a https://api.resend.com/emails, establece la autenticación en Bearer Token con {{RESEND_API_KEY}} y pega el cuerpo JSON del ejemplo de curl. Pulsa Enviar. El id aparece en el panel de respuesta junto a los encabezados de límite de tasa que se explican a continuación.

Guárdalo como una prueba. Añade dos aserciones: el estado es igual a 200 y $.id existe. Coloca la solicitud en un escenario de prueba y tendrás una prueba de humo que se ejecuta cada vez que alguien toca el código de correo electrónico. Apúntala a staging con una clave de envío restringida por dominio y es seguro ejecutarla desde CI.

Simula el endpoint para el trabajo de frontend. Tu frontend necesita la forma de la respuesta, no un envío real. Simula el endpoint en Apidog para que devuelva {"id": "mock-email-id"} en cada llamada. El equipo de UI puede construir el estado de "correo enviado" todo el día sin tocar la cuota gratuita de 100 por día o enviar spam a una bandeja de entrada real. Descarga Apidog para configurarlo; el plan gratuito cubre a cuatro usuarios.

Límites del nivel gratuito que alcanzarás primero

La página de precios de Resend enumera el plan gratuito en 3.000 correos electrónicos al mes, con un límite de 100 al día, con 3 dominios y retención de datos de 30 días. El plan Pro comienza en 20 $ al mes por 50.000 correos electrónicos, 10 dominios y sin límite diario, con un cargo por exceso de 0,90 $ por cada 1.000 correos electrónicos.

Los correos electrónicos de prueba a las direcciones resend.dev cuentan para esas cuotas, por lo que una prueba de carga dirigida a delivered@resend.dev sigue consumiendo tus 100 diarios. bounced@resend.dev, complained@resend.dev y suppressed@resend.dev simulan un rebote duro, una queja de spam y un destinatario suprimido sin direcciones realmente malas.

Aparte de la cuota, el límite de velocidad por defecto es de 10 solicitudes por segundo por equipo, compartido entre cada clave del equipo. Cada respuesta lleva los encabezados ratelimit-limit, ratelimit-remaining, ratelimit-reset y retry-after, por lo que un bucle de envío puede retroceder antes de alcanzar un 429. ¿Necesitas más? Resend te pide que contactes con soporte en lugar de crear equipos adicionales.

Errores comunes y cómo solucionarlos

Cada fallo se devuelve como JSON con un statusCode, un name y un message. Estos son los que te encontrarás el primer día, de la referencia de errores:

Estado Nombre Lo que pasó Solución
401 missing_api_key No hay encabezado Authorization Añade Authorization: Bearer re_...
401 restricted_api_key Clave de solo envío usada en un endpoint que no es de envío Usa una clave de acceso completo para esa llamada
403 validation_error "El dominio no está verificado" Finaliza la verificación DNS, o corrige la dirección from
403 validation_error Dirección de prueba enviada a alguien que no eres tú Envía a tu correo electrónico de cuenta, o verifica un dominio
403 restricted_api_key "La clave API no está activa" La clave fue eliminada; crea una nueva
422 missing_required_field Falta from, to, o subject Comprueba el cuerpo contra la referencia
429 rate_limit_exceeded Más de 10 solicitudes por segundo Encola los envíos, respeta retry-after
429 daily_quota_exceeded Más de 100 correos electrónicos hoy en el plan gratuito Espera el reinicio o actualiza

Un 401 con una clave de la que estás seguro de que es correcta suele significar un salto de línea al final de la variable o un archivo .env que nunca se cargó. Ambos parecen una clave que falta desde el lado de la API.

Preguntas Frecuentes

¿Puedo ver mi clave API de Resend de nuevo después de crearla?

No. Resend muestra el valor una vez en el momento de la creación. Si la pierdes, crea una nueva clave con el mismo nombre y permiso, despliégala y luego elimina la antigua.

¿Debo elegir acceso completo o acceso de envío?

Acceso de envío, restringido a un dominio, para cada clave que sale de tu máquina. Mantén una clave de acceso completo para trabajos tipo panel de control, como añadir dominios o crear otras claves, y nunca la incluyas en una aplicación.

¿Puedo probar el envío sin verificar un dominio?

Sí. Usa onboarding@resend.dev como dirección from y tu propio correo electrónico de cuenta como destinatario. Cualquier otro destinatario devuelve un 403 hasta que se verifica un dominio.

¿Hay alguna forma de gestionar Resend desde la terminal en lugar del panel de control?

Sí. El tutorial de la CLI de Resend cubre cómo instalarla y ejecutar los comandos comunes de dominio y correo electrónico sin abrir un navegador.

¿Qué sucede cuando supero los 100 correos electrónicos al día en el plan gratuito?

La API devuelve un 429 con daily_quota_exceeded, y los envíos se reanudan después del reinicio diario. Si regularmente necesitas más, Pro elimina el límite, y el resumen de APIs de correo electrónico gratuitas muestra cómo se comparan los niveles gratuitos de otros proveedores.

Conclusión

Obtener una clave API de Resend tarda dos minutos; hacerlo bien tarda cinco. Verifica un subdominio, crea una clave de solo envío restringida a ese dominio, mantenla en una variable de entorno y envía un correo electrónico con curl para confirmar el ciclo completo. Luego, mueve la solicitud a Apidog, guarda las aserciones y simula el endpoint para que el resto de tu equipo pueda construir sobre él sin gastar tu cuota. Envía la clave menos potente que siga haciendo el trabajo.

button

Practica el diseño de API en Apidog

Descubre una forma más fácil de construir y usar APIs