MisarMisar Docs
MisarMailMisarBlogMisarReachMisarPostMisarDevMisarCoderMisarSEOMisar PlatformMisar SSO
SDKs

Java SDK

Install and use the MisarMail Java SDK

Installation

Add to pom.xml:

<dependency>
    <groupId>io.misar</groupId>
    <artifactId>misarmail-java</artifactId>
    <version>1.0.0</version>
</dependency>

Or Gradle:

implementation 'io.misar:misarmail-java:1.0.0'

Quick Start

import io.misar.mail.MisarMailClient;
import java.util.List;
import java.util.Map;

public class Main {
    public static void main(String[] args) throws Exception {
        MisarMailClient client = new MisarMailClient.Builder(System.getenv("MISARMAIL_API_KEY"))
            .build();

        Map<String, Object> result = client.email.send(Map.of(
            "from", Map.of("email", "hello@misar.io", "name", "Misar"),
            "to", List.of(Map.of("email", "user@example.com")),
            "subject", "Welcome",
            "html", "<p>Hello from MisarMail!</p>"
        )).get();

        System.out.println("Sent: " + result.get("message_id"));
        client.close();
    }
}

Available Methods

All methods return CompletableFuture<T>. Call .get() to block or .thenAccept() for async chaining.

MethodDescription
client.email.send(payload)Send a transactional email
client.contacts().list(params)List contacts
client.contacts().create(request)Create a contact
client.contacts().get(id)Get a contact
client.contacts().update(id, request)Update a contact
client.contacts().delete(id)Delete a contact
client.contacts().importContacts(request)Bulk import contacts
client.campaigns().list(params)List campaigns
client.campaigns().create(request)Create a campaign
client.campaigns().get(id)Get a campaign
client.campaigns().update(id, request)Update a campaign
client.campaigns().send(id)Send/schedule a campaign
client.campaigns().delete(id)Delete a campaign
client.templates().list(params)List templates
client.templates().create(request)Create a template
client.templates().get(id)Get a template
client.templates().update(id, request)Update a template
client.templates().delete(id)Delete a template
client.templates().render(payload)Render a template with merge data
client.automations().list(params)List automations
client.automations().create(request)Create an automation
client.automations().get(id)Get an automation
client.automations().update(id, request)Update an automation
client.automations().delete(id)Delete an automation
client.automations().activate(id)Activate/deactivate an automation
client.domains().list()List sending domains
client.domains().create(request)Add a sending domain
client.domains().get(id)Get a domain
client.domains().verify(id)Trigger domain DNS verification
client.domains().delete(id)Delete a domain
client.aliases().list(params)List email aliases
client.aliases().create(request)Create an alias
client.aliases().get(id)Get an alias
client.aliases().update(id, request)Update an alias
client.aliases().delete(id)Delete an alias
client.dedicatedIps().list()List dedicated IPs
client.dedicatedIps().create(request)Purchase a dedicated IP
client.dedicatedIps().update(id, request)Update IP pool assignment
client.dedicatedIps().delete(id)Release a dedicated IP
client.abTests().list(params)List A/B tests
client.abTests().create(request)Create an A/B test
client.abTests().get(id)Get an A/B test
client.abTests().setWinner(id, variant)Manually set the winning variant
client.sandbox().send(request)Send in sandbox mode
client.sandbox().list(params)List sandbox messages
client.sandbox().delete(id)Delete a sandbox message
client.inbound().list(params)List inbound routing rules
client.inbound().create(request)Create an inbound route
client.inbound().get(id)Get an inbound route
client.inbound().delete(id)Delete an inbound route
client.analytics().overview(params)Get send/open/click/bounce analytics
client.track().event(request)Track a custom event
client.track().purchase(request)Track a purchase event
client.keys().list()List API keys
client.keys().create(request)Create an API key
client.keys().get(id)Get an API key
client.keys().revoke(id)Revoke an API key
client.validate().email(address)Validate an email address
client.webhooks().list(params)List webhooks
client.webhooks().create(request)Create a webhook endpoint
client.webhooks().get(id)Get a webhook
client.webhooks().update(id, request)Update a webhook
client.webhooks().delete(id)Delete a webhook
client.webhooks().test(id)Send a test event to a webhook
client.usage().get(params)Get API usage stats
client.billing().subscription()Get current subscription details
client.billing().checkout(request)Create a billing checkout session
client.workspaces().list()List workspaces
client.workspaces().create(request)Create a workspace
client.workspaces().get(id)Get a workspace
client.workspaces().update(id, request)Update a workspace
client.workspaces().delete(id)Delete a workspace
client.workspaces().listMembers(id)List workspace members
client.workspaces().inviteMember(id, request)Invite a member to workspace
client.workspaces().updateMember(id, userId, request)Update member role
client.workspaces().removeMember(id, userId)Remove a member from workspace

Examples

Webhooks

Map<String, Object> wh = client.webhooks().create(Map.of(
    "url", "https://yourapp.com/webhooks/mail",
    "events", List.of("email.delivered", "email.opened")
)).get();
client.webhooks().test((String) wh.get("id")).get();

Error Handling

try {
    client.email.send(payload).get();
} catch (ExecutionException e) {
    if (e.getCause() instanceof MisarMailException ex) {
        System.err.println(ex.getStatus() + ": " + ex.getMessage());
    }
}