Misar IO Docs

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