Misar Docs
MisarMailMisar.BlogMisarReachMisarPostMisar.DevMisar PlatformMisar IdentityMisar Posts API
Api Reference

AI Features

AI-powered email generation, subject line optimization, reply suggestions, and segment building

MisarMail's AI layer covers the full email workflow — from generating subject lines and full email bodies to scoring drafts, suggesting replies, and building audience segments from plain language.

Subject Lines

POST/mail/v1/ai/subject-lines

Generate up to 10 subject line ideas for any topic. Authenticated with an API key (Authorization: Bearer msk_...).

Request body

topicstring (5–500 chars)bodyrequired

The email topic or campaign brief.

tonestringbodydefault: professional

One of professional, casual, urgent, playful, informative.

audiencestring (max 200 chars)body

Audience description to improve relevance.

countinteger (1–10)bodydefault: 5

How many suggestions to return.

brandstring (max 100 chars)body

Brand name for brand-voice alignment.

Response fields

successboolean

true when the request succeeded.

suggestionsstring[]

Generated subject line ideas.

countinteger

Number of suggestions returned.

Rate limit: 10 requests per minute per API key.

curl -X POST https://api.misar.io/mail/v1/ai/subject-lines \
  -H "Authorization: Bearer msk_..." \
  -H "Content-Type: application/json" \
  -d '{ "topic": "email deliverability tips", "tone": "informative", "count": 5 }'
{
  "success": true,
  "suggestions": [
    "5 things you didn't know about email deliverability",
    "Your inbox strategy is missing this one step",
    "How top senders get 40 % open rates",
    "The subject line formula that actually works",
    "Stop writing boring subject lines — try this instead"
  ],
  "count": 5
}

Subject line suggestions are available on all plans. Spam words are filtered server-side — if the model returns a flagged phrase, the server automatically retries once before returning the cleaned result.

Email Generation

POST/mail/api/ai/generate-email

Generate full email content, sequences, A/B variants, or score an existing subject line. Requires an active dashboard session and a Pro or higher plan.

Request body

typestringbodyrequired

Generation type: subject, body, full, sequence, score-subject, or ab-variants.

promptstring (10–500 chars)bodyrequired

What the email should be about.

tonestringbodydefault: professional

One of professional, friendly, urgent, casual.

includeVariablesbooleanbodydefault: true

Inject merge tags like {{first_name}}.

currentSubjectstringbody

Required for score-subject type.

sequenceLengthinteger (2–5)bodydefault: 3

Number of emails in sequence.

Response fields

successboolean

true when generation succeeded.

datastring | object | array

Generated content. Shape depends on type — see the example responses. For sequence, each email's purpose is one of awareness, consideration, conversion, follow_up, re_engagement.

{ "success": true, "data": "Your account is ready — here's what to do next" }
{ "success": true, "data": "<p>Hi {{first_name}},</p>..." }
{
  "success": true,
  "data": {
    "subject": "Welcome to MisarMail",
    "html": "<p>Hi {{first_name}},</p>...",
    "preheader": "Everything you need to send your first campaign"
  }
}
{
  "success": true,
  "data": [
    {
      "subject": "Welcome — let's get you started",
      "html": "...",
      "preheader": "Your first step to better email",
      "send_delay_days": 0,
      "purpose": "awareness"
    },
    {
      "subject": "Have you tried campaigns yet?",
      "html": "...",
      "preheader": "Send your first campaign in 5 minutes",
      "send_delay_days": 3,
      "purpose": "consideration"
    },
    {
      "subject": "Upgrade and unlock AI — limited offer",
      "html": "...",
      "preheader": "50 % off Pro for the next 48 hours",
      "send_delay_days": 7,
      "purpose": "conversion"
    }
  ]
}
{
  "success": true,
  "data": {
    "score": 6,
    "issues": ["Too generic", "No urgency or benefit"],
    "alternatives": [
      { "subject": "Double your open rates in 7 days", "score": 9, "rationale": "Clear benefit + timeframe" },
      { "subject": "The open rate trick your competitors use", "score": 8, "rationale": "Curiosity + competitive framing" }
    ]
  }
}
{
  "success": true,
  "data": {
    "variants": [
      {
        "label": "A",
        "hypothesis": "Benefit-led subject drives higher opens",
        "subject": "Get 30 % more replies with this template",
        "html": "...",
        "preheader": "Used by 12,000 sales teams"
      },
      {
        "label": "B",
        "hypothesis": "Curiosity-gap subject outperforms direct benefit",
        "subject": "Why your reply rate is lower than it should be",
        "html": "...",
        "preheader": "The fix takes under 2 minutes"
      }
    ]
  }
}

Plan limits

FeatureFreeStarterProMax
generate-email endpoint
Monthly AI generations00200Unlimited
Subject line API (/v1/ai/subject-lines)

Suggest Reply

POST/mail/api/ai/suggest-reply

Get an AI-drafted reply to an inbox email. Requires an active dashboard session.

Request body

email_idstringbodyrequired

ID of the inbox email to reply to.

tonestringbody

Tone for the drafted reply (e.g. professional).

Response fields

replystring

The AI-drafted reply text.

{ "email_id": "em_abc123", "tone": "professional" }
{ "reply": "Thanks for reaching out — happy to help with that. Could you share a bit more about..." }

Build Segment

POST/mail/api/ai/build-segment

Describe an audience in plain language; get back a filter criteria object ready to pass to POST /v1/segments. Requires an active dashboard session.

Request body

descriptionstringbodyrequired

Plain-language description of the audience.

Response fields

filter_criteriaobject

Filter criteria object. Pass it directly to POST api.misar.io/mail/v1/segments as the filter_criteria field.

{ "description": "contacts who opened emails in the last 30 days and haven't clicked any link" }
{
  "filter_criteria": {
    "operator": "AND",
    "conditions": [
      { "field": "last_open_at", "op": "gte", "value": "now-30d" },
      { "field": "total_clicks", "op": "eq", "value": 0 }
    ]
  }
}