SDKs
PHP SDK
Install and use the MisarMail PHP SDK
Installation
composer require misarai/misarmail-phpQuick Start
<?php
require 'vendor/autoload.php';
use MisarMail\Client;
$client = new Client(apiKey: $_ENV['MISARMAIL_API_KEY']);
$result = $client->send([
'from' => ['email' => 'hello@misar.io', 'name' => 'Misar'],
'to' => [['email' => 'user@example.com']],
'subject' => 'Welcome',
'html' => '<p>Hello from MisarMail!</p>',
]);
echo 'Sent: ' . $result->messageId;Available Methods
| Method | Description |
|---|---|
$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->channels->sendWhatsapp(array) | Send a WhatsApp message |
$client->channels->sendPush(array) | Send a push notification |
$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->leads->search(array) | Start an async lead search job |
$client->leads->getJob(string $jobId) | Get lead search job status |
$client->leads->listJobs(array $params = []) | List all lead search jobs |
$client->leads->results(string $jobId, array $params = []) | Fetch results for a completed job |
$client->leads->importLeads(array) | Import leads directly to contacts |
$client->leads->credits() | Get lead finder credits balance |
$client->autopilot->start(array) | Start an AI Autopilot campaign run |
$client->autopilot->get(string $id) | Get Autopilot run status |
$client->autopilot->list(array $params = []) | List Autopilot runs |
$client->autopilot->dailyPlan(array $params = []) | Get today's AI-suggested outreach plan |
$client->salesAgent->getConfig() | Get Sales Agent AI configuration |
$client->salesAgent->updateConfig(array) | Update Sales Agent configuration |
$client->salesAgent->getActions(array $params = []) | List Sales Agent actions taken |
$client->crm->listConversations(array $params = []) | List CRM conversations |
$client->crm->getConversation(string $id) | Get a CRM conversation |
$client->crm->updateConversation(string $id, array) | Update conversation status/notes |
$client->crm->listMessages(string $convId, array $params = []) | List messages in a conversation |
$client->crm->listDeals(array $params = []) | List deals in pipeline |
$client->crm->createDeal(array) | Create a new deal |
$client->crm->getDeal(string $id) | Get a deal |
$client->crm->updateDeal(string $id, array) | Update a deal |
$client->crm->deleteDeal(string $id) | Delete a deal |
$client->crm->listClients(array $params = []) | List CRM clients/accounts |
$client->crm->createClient(array) | Create a CRM client |
$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
Lead finder
$job = $client->leads->search([
'query' => 'CTO at B2B SaaS companies',
'limit' => 100,
]);
$status = $client->leads->getJob($job->id);
if ($status->state === 'completed') {
$results = $client->leads->results($job->id, ['limit' => 50]);
print_r($results->leads);
}Autopilot
$run = $client->autopilot->start([
'goal' => 'Book 20 demo calls with HR directors',
'audience' => 'HR directors at mid-size companies',
'daily_limit' => 30,
]);
$status = $client->autopilot->get($run->id);
echo $status->state . ' — sent: ' . $status->emailsSent;CRM conversations & deals
$convs = $client->crm->listConversations(['status' => 'open', 'limit' => 20]);
$deal = $client->crm->createDeal([
'title' => 'Enterprise contract',
'amount' => 25000,
'currency' => 'USD',
'contact_id' => $convs->conversations[0]->contactId,
]);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();
}