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
| 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();
}