Developer Integration GuideAPI v1 Live

Connect Any Service in Minutes

Integrate multi-channel notifications (Email, SMS, WhatsApp, Telegram, Facebook, Instagram) into your application with multi-tenant isolation, custom SMTP profiles, and production SDKs.

60-Second Setup

Integration Workflow

1

Get Organization Key

Log into your Simplex dashboard and generate an organization-scoped API key under Settings.

2

Configure SMTP / Driver

Connect your custom SMTP (SendGrid, Mailgun, Brevo, AWS SES, Gmail) in Settings & test connection.

3

Post Notification

Call /v1/messages/send with your recipient payload in JSON.

4

Track & Verify

Messages transition automatically from queueddelivered with provider receipts.

SDKs & Code Samples

Ready-to-Use Client Code

Select your backend language for production-ready copy-paste integration snippets.

simplex-client.ts
// Simplex Node.js / TypeScript Integration
import fetch from "node-fetch";

const SIMPLEX_URL = process.env.SIMPLEX_API_URL || "http://localhost:3300/v1";
const SIMPLEX_KEY = process.env.SIMPLEX_API_KEY!; // Scoped organization key

interface DispatchNotificationOptions {
  channel: "email" | "sms" | "whatsapp" | "telegram" | "facebook" | "instagram";
  to: Record<string, string>;
  content?: string;
  templateId?: string;
  variables?: Record<string, string>;
  subject?: string;
}

export async function sendNotification(options: DispatchNotificationOptions) {
  const response = await fetch(`${SIMPLEX_URL}/messages/send`, {
    method: "POST",
    headers: {
      "Content-Type": "application/json",
      "X-API-Key": SIMPLEX_KEY,
    },
    body: JSON.stringify({
      channel: options.channel,
      to: options.to,
      content: options.content,
      template_id: options.templateId,
      variables: options.variables,
      metadata: options.subject ? { subject: options.subject } : undefined,
    }),
  });

  if (!response.ok) {
    const errorBody = await response.text();
    throw new Error(`Simplex API error [${response.status}]: ${errorBody}`);
  }

  return await response.json();
}

// Example: Send an Email
const delivery = await sendNotification({
  channel: "email",
  to: { email: "sarah@company.com" },
  content: "Hello Sarah, your enterprise account is now active!",
  subject: "Account Confirmation",
});
console.log("Message queued with ID:", delivery.message_id);
Channel Payload Schemas

6 Channels, One Clean Standard

Select any channel to view its required recipient schema and example JSON dispatch payload.

email JSON Payload

Send transactional and lifecycle emails with custom SMTP or provider routing.

POST /v1/messages/send

Required Recipient Object

"to": {"email": "customer@company.com"}

Complete Dispatch Body

{
  "channel": "email",
  "to": {
    "email": "customer@company.com"
  },
  "content": "Hello Alex, your order #8492 has been shipped and is on its way!",
  "metadata": {
    "subject": "Your Order #8492 Has Shipped",
    "order_id": "8492"
  }
}
Requires header X-API-Key
API Catalog

REST Endpoints Reference

MethodEndpoint PathDescription & Purpose
POST/v1/messages/sendDispatch a single notification across any of the 6 channels
POST/v1/messages/send-bulkBatch dispatch up to 500 notifications in a single request
GET/v1/messages/:idRetrieve delivery status, timestamps, and provider message receipt
GET/v1/messagesList all deliveries scoped to your active organization
GET/v1/templatesList reusable content templates with variable interpolation
POST/v1/templatesCreate a new centralized message template
GET/v1/email-sendersList custom SMTP profiles configured for your organization
POST/v1/email-sendersRegister a new SMTP server profile (SendGrid, Mailgun, Brevo, AWS SES, Gmail)
POST/v1/email-senders/:id/verifyTest SMTP authentication handshake and send live verification test email
POST/v1/tenants/:id/activateSwitch active organization workspace context and retrieve active API key

Ready to start sending notifications?

Create an organization account in seconds, configure your sender profiles, and start dispatching with 99.9% deliverability.