Multi-language SDKs.
The same machine API in seven languages: send, batch, templates, domains, webhooks and rates. Authenticate with a Bearer API key (mlk_…).
- 01common surface
What every client covers
POST /v1/messages (with Idempotency-Key and optional template_id), batch ≤100, domains, webhooks, templates and GET /v1/rates. The tenant is resolved on the server.
sendbatchdomainswebhookstemplatesrates - 02Go
github.com/jaak-ai/mailack/sdk
Client in the mailack monorepo (sdk/ package). Minimal send example:
Go import mailack "github.com/jaak-ai/mailack/sdk" client := mailack.NewClient(os.Getenv("MAILACK_API_URL"), mailack.WithAPIKey(os.Getenv("MAILACK_API_KEY"))) msg, replay, err := client.Send(ctx, "order-42", mailack.SendRequest{ From: "noreply@acme.mx", To: "cliente@ejemplo.com", Subject: "Recibo", Text: "Gracias por su compra.", }) - 03Python
pip install -e ./sdk/python
mailack package under sdk/python in the repository.
Python from mailack import Client client = Client(os.environ["MAILACK_API_URL"], api_key=os.environ["MAILACK_API_KEY"]) msg, replay = client.send( "order-42", from_="noreply@acme.mx", to="cliente@ejemplo.com", subject="Recibo", text="Gracias por su compra.", ) - 04JavaScript / Node
ESM and TypeScript
Build-free JavaScript ESM (sdk/javascript) and typed Node/TS client (sdk/nodejs).
JavaScript import { Client } from "@mailack/sdk-js"; // o path al paquete ESM const client = new Client({ baseUrl: process.env.MAILACK_API_URL, apiKey: process.env.MAILACK_API_KEY, }); const { message, replay } = await client.send("order-42", { from: "noreply@acme.mx", to: "cliente@ejemplo.com", subject: "Recibo", text: "Gracias por su compra.", }); - 05Rust
mailack crate
Async client with reqwest (rustls). Path sdk/rust in the monorepo.
Rust use mailack::{Client, SendRequest}; let client = Client::new(&std::env::var("MAILACK_API_URL")?) .with_api_key(std::env::var("MAILACK_API_KEY")?); let (msg, replay) = client .send("order-42", &SendRequest { from: "noreply@acme.mx".into(), to: "cliente@ejemplo.com".into(), subject: Some("Recibo".into()), text: Some("Gracias.".into()), ..Default::default() }) .await?; - 06Java · C#
JVM and .NET
Java 17+ (com.mailack:mailack-sdk) and C# / .NET 8 (Mailack.Sdk) under sdk/java and sdk/csharp. Publishing to Maven Central / NuGet aligns with repo semver tags.
Javasdk/java · local Maven / monorepoC#sdk/csharp · .NET 8 - 07MCP
AI agents
Besides HTTP SDKs, mailack-mcp exposes tools (send, evidence, domains, webhooks, ops) on the same API. See quickstart step 06.
Do not use the MCP server's internal client in product apps; use an SDK or the REST API.