Ir al contenido

Recursos

Los siguientes ejemplos muestran cómo enviar tu primer correo transaccional. Reemplaza $MAILERDASH_API_KEY con tu API key real.

Ventana de terminal
curl -X POST https://api.mailerdash.com/v1/mail/send \
-H "Authorization: Bearer $MAILERDASH_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"from": { "email": "noreply@tu-dominio.com", "name": "Tu Empresa" },
"to": [{ "email": "cliente@ejemplo.com" }],
"subject": "Bienvenido",
"text": "Hola, gracias por registrarte.",
"html": "<p>Hola, gracias por registrarte.</p>"
}'
const response = await fetch('https://api.mailerdash.com/v1/mail/send', {
method: 'POST',
headers: {
Authorization: `Bearer ${process.env.MAILERDASH_API_KEY}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
from: { email: 'noreply@tu-dominio.com', name: 'Tu Empresa' },
to: [{ email: 'cliente@ejemplo.com' }],
subject: 'Bienvenido',
text: 'Hola, gracias por registrarte.',
html: '<p>Hola, gracias por registrarte.</p>',
}),
});
if (!response.ok) {
const { error } = await response.json();
console.error(error.type, error.code, error.message);
} else {
const data = await response.json();
console.log('Enviado, message_id:', data.message_id);
}
import os
import httpx
response = httpx.post(
"https://api.mailerdash.com/v1/mail/send",
headers={"Authorization": f"Bearer {os.environ['MAILERDASH_API_KEY']}"},
json={
"from": {"email": "noreply@tu-dominio.com", "name": "Tu Empresa"},
"to": [{"email": "cliente@ejemplo.com"}],
"subject": "Bienvenido",
"text": "Hola, gracias por registrarte.",
"html": "<p>Hola, gracias por registrarte.</p>",
},
)
if response.is_error:
error = response.json()["error"]
print(f"Error {error['type']}: {error['code']}{error['message']}")
else:
print("Enviado:", response.json().get("message_id"))

Con Guzzle (composer require guzzlehttp/guzzle):

<?php
require 'vendor/autoload.php';
use GuzzleHttp\Client;
use GuzzleHttp\Exception\RequestException;
$client = new Client();
try {
$response = $client->post('https://api.mailerdash.com/v1/mail/send', [
'headers' => ['Authorization' => 'Bearer ' . getenv('MAILERDASH_API_KEY')],
'json' => [
'from' => ['email' => 'noreply@tu-dominio.com', 'name' => 'Tu Empresa'],
'to' => [['email' => 'cliente@ejemplo.com']],
'subject' => 'Bienvenido',
'text' => 'Hola, gracias por registrarte.',
'html' => '<p>Hola, gracias por registrarte.</p>',
],
]);
$data = json_decode((string) $response->getBody(), true);
echo 'Enviado, message_id: ' . $data['message_id'] . PHP_EOL;
} catch (RequestException $e) {
$error = json_decode((string) $e->getResponse()->getBody(), true)['error'];
fprintf(STDERR, "Error %s: %s — %s\n", $error['type'], $error['code'], $error['message']);
}

Usando el cliente HTTP de Laravel (Illuminate\Support\Facades\Http):

use Illuminate\Support\Facades\Http;
$response = Http::withToken(env('MAILERDASH_API_KEY'))
->post('https://api.mailerdash.com/v1/mail/send', [
'from' => ['email' => 'noreply@tu-dominio.com', 'name' => 'Tu Empresa'],
'to' => [['email' => 'cliente@ejemplo.com']],
'subject' => 'Bienvenido',
'text' => 'Hola, gracias por registrarte.',
'html' => '<p>Hola, gracias por registrarte.</p>',
]);
if ($response->failed()) {
$error = $response->json('error');
logger()->error("MailerDash {$error['type']}: {$error['code']} — {$error['message']}");
} else {
logger()->info('Enviado, message_id: ' . $response->json('message_id'));
}

Con wp_remote_post. Define tu API key como constante en wp-config.php (define('MAILERDASH_API_KEY', 'tu-api-key');):

$response = wp_remote_post('https://api.mailerdash.com/v1/mail/send', array(
'headers' => array(
'Authorization' => 'Bearer ' . MAILERDASH_API_KEY,
'Content-Type' => 'application/json',
),
'body' => wp_json_encode(array(
'from' => array('email' => 'noreply@tu-dominio.com', 'name' => 'Tu Empresa'),
'to' => array(array('email' => 'cliente@ejemplo.com')),
'subject' => 'Bienvenido',
'text' => 'Hola, gracias por registrarte.',
'html' => '<p>Hola, gracias por registrarte.</p>',
)),
'timeout' => 15,
));
if (is_wp_error($response)) {
error_log('MailerDash: ' . $response->get_error_message());
} elseif (wp_remote_retrieve_response_code($response) >= 400) {
$error = json_decode(wp_remote_retrieve_body($response), true)['error'];
error_log('MailerDash error: ' . $error['type'] . '' . $error['message']);
} else {
$data = json_decode(wp_remote_retrieve_body($response), true);
error_log('MailerDash enviado, message_id: ' . $data['message_id']);
}

La referencia interactiva (Swagger UI) está disponible directamente en el panel:

SecciónURL
Transaccional (envíos individuales)/reference/transactional/
Bulk (campañas, contactos, listas, sequences)/reference/bulk/
Plataforma (keys, dominios, webhooks, usage)/reference/platform/

También puedes explorar la API de forma interactiva (Swagger UI) o descargar el spec OpenAPI público (solo endpoints de cliente) en JSON:

Ventana de terminal
# Spec OpenAPI público (JSON) — útil para generar SDKs o importar a Postman
curl https://api.mailerdash.com/docs.json -o mailerdash-openapi.json

Si construyes con un agente de IA o un LLM, esta documentación es agent-friendly:

RecursoURL
Índice para LLMs/llms.txt
Documentación completa en texto plano/llms-full.txt
OpenAPI crudo — Transaccional/openapi/openapi.transactional.json
OpenAPI crudo — Bulk/openapi/openapi.bulk.json
OpenAPI crudo — Plataforma/openapi/openapi.platform.json

llms-full.txt reúne toda la documentación en un solo archivo, listo para pegar en el contexto de un modelo.


Todavía no publicamos una librería oficial (npm/pip), pero el spec OpenAPI público (docs.json, arriba) te permite generar un cliente tipado en tu lenguaje con openapi-generator — sin esperar a un paquete oficial.

Ventana de terminal
npx @openapitools/openapi-generator-cli generate \
-i https://api.mailerdash.com/docs.json \
-g typescript-fetch \
-o ./mailerdash-sdk
Ventana de terminal
npx @openapitools/openapi-generator-cli generate \
-i https://api.mailerdash.com/docs.json \
-g python \
-o ./mailerdash-sdk-python

El CLI corre sobre la JVM, así que necesitas Java 11+ instalado. Hay generadores para más de 50 lenguajes (PHP, Ruby, Go, C#, etc.); consulta la lista completa con npx @openapitools/openapi-generator-cli list. Como el spec se mantiene sincronizado con la API en producción, regenerar tu SDK tras un cambio de versión es solo volver a correr el comando.


Si tienes preguntas, encuentras un bug o necesitas ayuda con tu integración, abre un ticket desde el dashboard o escríbenos directamente. El sistema de tickets permite dar seguimiento a cada caso y adjuntar logs o ejemplos de payload para diagnóstico más rápido.

  • Desde el dashboard: menú lateral → Soporte → Nuevo ticket
  • Via API: POST /v1/tickets con los campos subject y body

Responderemos en el horario de atención publicado en el dashboard. Para incidentes críticos de producción, indícalo en el asunto del ticket.