Correos transaccionales
Descargar tipos de TypeScriptSDK
Además de la API REST, ofrecemos SDKs oficiales para TypeScript y JavaScript que encapsulan las solicitudes HTTP, el manejo de errores y la autenticación. Son la forma recomendada de integrar este servicio en tu código.
Instalación
Instala el SDK del servicio de correos transaccionales desde npm. Si solo necesitas este servicio, instala únicamente @ircg/tes; si vas a usar varios servicios de IRCG, puedes instalar el meta-paquete @ircg/sdk que los incluye todos.
# Solo este servicio
npm install @ircg/tes
# O el meta-paquete
npm install @ircg/sdkUso básico
Inicializa el cliente con tu API key y utiliza cualquiera de los métodos disponibles para enviar correos. El cliente maneja automáticamente la autenticación, el idioma y el filtrado de campos.
import { TESClient } from '@ircg/tes'
const tes = new TESClient({ apiKey: API_KEY, lang: 'es' })
const result = await tes.send({
sender: '[email protected]',
recipients: ['[email protected]'],
subject: 'Confirmed order',
text: 'Your order was confirmed',
fields: ['id', 'sender', 'recipients', 'subject'],
})
if (result.error) throw new Error(result.error.message)
console.log(result.email_sent.id)Cuerpo
| Campo | Tipo | Requerido | Por defecto | Descripción |
|---|---|---|---|---|
| apiKey | string | Sí | - | Tu API key del servicio de correos transaccionales. |
| baseUrl | string | No | https://ircg.dev | URL base de la API. Útil para apuntar a un entorno distinto al de producción. |
| lang | 'es' | 'en' | No | - | Idioma de los mensajes de error. es para español; cualquier otro valor (o no enviarlo) para inglés. |
| dryRun | boolean | No | false | Si es true, el cliente no realiza ninguna solicitud HTTP. Devuelve una respuesta exitosa simulada con los campos solicitados. |
Modo dry-run (sin envío real)
Al pasar dryRun: true al constructor del cliente, no se realizan solicitudes HTTP a la API. En su lugar, el cliente devuelve una respuesta exitosa simulada, construida a partir de los datos enviados, devolviendo únicamente los campos solicitados en fields.
Útil cuando quieres ejercitar el flujo de envío de correos sin gastar créditos: durante el desarrollo local, en pruebas de integración o en suites de tests automatizados donde el envío real no es deseable.
La validación de html o text sigue ejecutándose aunque el modo dry-run esté activo, para que errores de programación se detecten también en tests.
import { TESClient } from '@ircg/tes'
const tes = new TESClient({ apiKey: 'unused', dryRun: true, lang: 'es' })
const result = await tes.send({
sender: '[email protected]',
recipients: ['[email protected]'],
subject: 'Preview',
text: 'Preview content',
fields: ['id', 'subject'],
})
if (result.error) throw new Error(result.error.message)
console.log(result.email_sent.id) // "dry-run"API REST
| Método | Ruta | Descripción |
|---|---|---|
| POST | /api/v1/emails | Enviar un correo. |
Enviar correo POST
import { TESClient } from '@ircg/tes'
const tes = new TESClient({ apiKey: API_KEY, lang: 'es' })
const result = await tes.send({
sender: '[email protected]',
recipients: ['[email protected]'],
subject: 'Confirmed order',
html: 'Order confirmed
',
fields: ['id', 'sender', 'recipients'],
lang: 'es',
})
if (result.error) throw new Error(result.error.message)
console.log(result.email_sent.id)
const payload = {
sender: '[email protected]',
recipients: ['[email protected]'],
subject: 'Confirmed order',
html: 'Order confirmed
',
}
const response = await fetch('https://ircg.dev/api/v1/emails?fields=%5B%22id%22%2C%22sender%22%2C%22recipients%22%5D', {
method: 'POST',
headers: {
Authorization: `Bearer ${API_KEY}`,
'Content-Type': 'application/json',
'Accept-Language': 'es',
},
body: JSON.stringify(payload),
})
if (!response.ok) throw new Error(`Email request failed: ${response.status}`)
const data = await response.json()
console.log(data.email_sent.id)Parámetros opcionales
https://ircg.dev/api/v1/emails?fields=["id","sender","recipients"]
| Parámetro | Tipo | Valores permitidos | Por defecto | Descripción |
|---|---|---|---|---|
| fields | string | Arreglo JSON de nombres de campos | Todos los campos | Especifica qué campos incluir en la respuesta. Campos disponibles: Ejemplo: |
Cuerpo
| Campo | Tipo | Requerido | Por defecto | Descripción |
|---|---|---|---|---|
| sender | string | Sí | - | La dirección de correo electrónico que envía el correo electrónico. El dominio de correo electrónico debe estar verificado. |
| subject | string | Sí | - | El asunto del mensaje: un breve resumen del contenido, que aparece en la bandeja de entrada del destinatario. |
| recipients | string string[] | Sí | - | Los destinatarios que se colocarán en la línea Para: del mensaje. |
| html | string | No | - | El contenido del mensaje, en formato HTML. Úsalo para clientes de correo electrónico que puedan procesar HTML. Puede incluir enlaces en los que se puede hacer clic, texto formateado y mucho más en un mensaje HTML. Es obligatorio cuando no se proporciona |
| text | string | No | - | El contenido del mensaje, en formato de texto. Úselo para clientes de correo electrónico basados en texto o clientes en redes de alta latencia (como dispositivos móviles). Es obligatorio cuando no se proporciona |
| carbon_copy | string string[] | No | - | Los destinatarios a colocar en la línea CC: del mensaje. |
| reply_to | string string[] | No | - | Las direcciones de correo electrónico de respuesta del mensaje. Si el destinatario responde al mensaje, cada dirección de respuesta recibe la respuesta. |
Debes proporcionar al menos uno de los campos html o text.
Respuestas
Límites y costos
- Cada dirección en
recipientsocarbon_copyconsume 10 créditos;carbon_copycorresponde a CC. - Una llamada con
dryRun: trueno realiza el envío y no consume créditos. - El límite predeterminado es de 60 solicitudes por 60 segundos y 2,000 por 3,600 segundos por API key; ambas ventanas se aplican de forma independiente. Puedes solicitar cambios a esos límites desde el panel.