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

PHP SDK

Install and use the MisarMail PHP SDK

Installation

composer require misarai/misarmail-php

Quick Start

<?php

require 'vendor/autoload.php';

use MisarMail\Client;

$client = new Client(apiKey: $_ENV['MISARMAIL_API_KEY']);

$result = $client->send([
    'from'    => ['email' => '[email protected]', 'name' => 'Misar'],
    'to'      => [['email' => '[email protected]']],
    'subject' => 'Welcome',
    'html'    => '<p>Hello from MisarMail!</p>',
]);

echo 'Sent: ' . $result->messageId;

Available Methods

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

Examples

Webhooks

$webhook = $client->webhooks->create([
    'url'    => 'https://yourapp.com/webhooks/mail',
    'events' => ['email.delivered', 'email.opened', 'email.bounced'],
]);
$client->webhooks->test($webhook->id);

Error Handling

use MisarMail\Exceptions\ApiException;

try {
    $client->send([...]);
} catch (ApiException $e) {
    echo $e->getStatusCode() . ': ' . $e->getMessage();
}