Misar Docs
MisarMailMisar.BlogMisarReachMisarPostMisar.DevMisar PlatformMisar IdentityMisar Posts API
Sdks

Kotlin SDK

Install and use the MisarMail Kotlin SDK

Installation

Add to build.gradle.kts:

dependencies {
    implementation("io.misar:misarmail-kotlin:1.0.0")
}

Quick Start

import io.misar.mail.MisarMailClient
import io.misar.mail.models.*

suspend fun main() {
    val client = MisarMailClient(apiKey = System.getenv("MISARMAIL_API_KEY"))

    val result = client.send(
        SendRequest(
            from = Address(email = "[email protected]", name = "Misar"),
            to = listOf(Address(email = "[email protected]")),
            subject = "Welcome",
            html = "<p>Hello from MisarMail!</p>",
        )
    )

    println("Sent: ${result.messageId}")
    client.close()
}

Available Methods

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/upsert 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

val webhook = client.webhooks.create(CreateWebhookRequest(
    url = "https://yourapp.com/webhooks/mail",
    events = listOf("email.delivered", "email.opened", "email.bounced"),
))
client.webhooks.test(webhook.id)

Error Handling

try {
    client.send(request)
} catch (e: MisarMailApiException) {
    println("${e.statusCode}: ${e.message}")
}