Skip to content
Docs · SDKs

Multi-language SDKs.

The same machine API in seven languages: send, batch, templates, domains, webhooks and rates. Authenticate with a Bearer API key (mlk_…). Source at github.com/jaak-ai/mailack-sdk.

  1. 01common surface

    What every client covers

    POST /v1/messages (with Idempotency-Key, per-message certified flag and optional template_id), batch ≤100, on-demand sealing, online evidence (evidence and proof-bundle), online verification of the Merkle proof, domains, webhooks, templates and GET /v1/rates. The tenant is resolved on the server.

    sendcertified flagbatchsealevidenceverifydomainswebhookstemplatesrates
  2. 02Go

    github.com/jaak-ai/mailack-sdk/go

    Go client in the public jaak-ai/mailack-sdk repository (go/ folder). go get github.com/jaak-ai/mailack-sdk/go. Minimal send example:

    Go
    import mailack "github.com/jaak-ai/mailack-sdk/go"
    
    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.",
    })
  3. 03Python

    pip install from GitHub

    mailack package under python/ in the jaak-ai/mailack-sdk repository: pip install "git+https://github.com/jaak-ai/mailack-sdk#subdirectory=python".

    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.",
    )
  4. 04JavaScript / Node

    ESM and TypeScript

    Build-free JavaScript ESM (javascript/ folder) and typed Node/TS client (nodejs/ folder) in jaak-ai/mailack-sdk.

    JavaScript
    import { Client } from "./mailack-sdk/javascript/index.js"; // ESM, sin build
    
    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.",
    });
  5. 05Rust

    Mailack crate

    Async client with reqwest (rustls). rust/ folder of the jaak-ai/mailack-sdk repository (git dependency).

    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?;
  6. 06Java · C#

    JVM and .NET

    Java 17+ and C# / .NET 8 under java/ and csharp/ in jaak-ai/mailack-sdk. Today they install from the repository; publishing to Maven Central and NuGet is still pending.

    Javamailack-sdk/java · Maven
    C#mailack-sdk/csharp · .NET 8
  7. 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.

Back to the index

Quickstart, domains, webhooks and portal in one place.