Misar Docs
MisarMailMisar.BlogMisarReachMisarPostMisar.DevMisar PlatformMisar IdentityMisar Posts API
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 io.misar.mail.models.*;

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

        SendRequest request = SendRequest.builder()
            .from(new Address("[email protected]", "Misar"))
            .to(List.of(new Address("[email protected]")))
            .subject("Welcome")
            .html("<p>Hello from MisarMail!</p>")
            .build();

        SendResponse result = client.send(request).get();
        System.out.println("Sent: " + result.getMessageId());
        client.close();
    }
}

Available Methods

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

MethodDescription
client.send(request)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(id, request)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

Webhook wh = client.webhooks().create(
    CreateWebhookRequest.builder()
        .url("https://yourapp.com/webhooks/mail")
        .events(List.of("email.delivered", "email.opened"))
        .build()
).get();
client.webhooks().test(wh.getId()).get();

Error Handling

try {
    client.send(request).get();
} catch (ExecutionException e) {
    if (e.getCause() instanceof MisarMailApiException ex) {
        System.err.println(ex.getStatusCode() + ": " + ex.getMessage());
    }
}