Misar IO Docs

CRM

Unified CRM — conversations, messages, deals pipeline, and agency client management

CRM

MisarMail's built-in CRM connects your outreach activity to a full sales pipeline. Conversations track replies across all channels; Deals move through a kanban pipeline; Clients let agencies manage multiple sub-entities under one account.

Auth: Session cookie (dashboard UI) or API key with crm scope.


Overview

| Resource | Description | |----------|-------------| | Conversations | Thread of messages between you and a lead across email, WhatsApp, SMS, or LinkedIn | | Messages | Immutable message log within a conversation | | Deals | Sales opportunities linked to a conversation — move through pipeline stages | | Clients | Agency sub-entities for scoping campaigns and reporting (agency plans only) |


Conversations

Endpoints

| Method | Path | Description | |--------|------|-------------| | GET | /api/v1/crm/conversations | List conversations | | GET | /api/v1/crm/conversations/:id | Get a single conversation | | PATCH | /api/v1/crm/conversations/:id | Update status or intent | | GET | /api/v1/crm/conversations/:id/messages | List messages in a conversation |

GET /api/v1/crm/conversations

curl "https://api.misar.io/mail/v1/crm/conversations?status=active&page=1" \
  -H "Authorization: Bearer msk_YOUR_API_KEY"

Query Parameters

| Param | Default | Notes | |-------|---------|-------| | status | — | Filter by active, closed, or snoozed | | channel | — | Filter by email, whatsapp, sms, linkedin | | campaign_id | — | Filter by originating campaign | | page | 1 | Page number | | per_page | 25 | Results per page (max 100) |

Response

{
  "success": true,
  "conversations": [
    {
      "id":             "conv-uuid-...",
      "lead_email":     "[email protected]",
      "lead_name":      "Priya Sharma",
      "channel":        "email",
      "campaign_id":    "campaign-uuid-...",
      "contact_id":     "contact-uuid-...",
      "status":         "active",
      "intent":         "interested",
      "last_message":   "Yes, I'd love to learn more about pricing.",
      "last_message_at":"2026-04-13T09:00:00Z",
      "created_at":     "2026-04-10T08:00:00Z"
    }
  ],
  "pagination": { "page": 1, "per_page": 25, "total": 14 }
}

Intent Values (AI-detected from reply content)

| Intent | Meaning | |--------|---------| | interested | Positive — wants more info or a demo | | not_interested | Opted out or asked to stop | | question | Reply contains a question | | booking | Requested or confirmed a meeting | | objection | Price or fit objection raised | | out_of_office | Auto-reply or OOO response |

PATCH /api/v1/crm/conversations/:id

Update conversation status or manually override the AI-detected intent.

curl -X PATCH https://api.misar.io/mail/v1/crm/conversations/conv-uuid-... \
  -H "Authorization: Bearer msk_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "status": "closed", "intent": "not_interested" }'

Messages

GET /api/v1/crm/conversations/:id/messages

Returns the full message history for a conversation, oldest first.

curl https://api.misar.io/mail/v1/crm/conversations/conv-uuid-.../messages \
  -H "Authorization: Bearer msk_YOUR_API_KEY"

Response

{
  "success": true,
  "messages": [
    {
      "id":         "msg-uuid-...",
      "direction":  "outbound",
      "body":       "Hi Priya, I'm reaching out about...",
      "sent_at":    "2026-04-10T08:00:00Z"
    },
    {
      "id":         "msg-uuid-2...",
      "direction":  "inbound",
      "body":       "Yes, I'd love to learn more about pricing.",
      "received_at":"2026-04-13T09:00:00Z"
    }
  ]
}

Deals

Deals represent sales opportunities. Each deal is linked to a conversation and moves through pipeline stages.

Pipeline Stages

| Stage | Meaning | |-------|---------| | new | Just created — lead replied positively | | contacted | Follow-up sent | | interested | Confirmed interest or demo requested | | negotiating | Pricing or contract discussion underway | | won | Deal closed successfully | | lost | Deal closed — not won |

Endpoints

| Method | Path | Description | |--------|------|-------------| | GET | /api/v1/crm/deals | List deals (optionally filter by stage) | | POST | /api/v1/crm/deals | Create a deal | | GET | /api/v1/crm/deals/:id | Get a deal | | PATCH | /api/v1/crm/deals/:id | Update deal stage, value, or notes | | DELETE | /api/v1/crm/deals/:id | Delete a deal |

GET /api/v1/crm/deals

curl "https://api.misar.io/mail/v1/crm/deals?stage=interested" \
  -H "Authorization: Bearer msk_YOUR_API_KEY"

Response

{
  "success": true,
  "deals": [
    {
      "id":              "deal-uuid-...",
      "conversation_id": "conv-uuid-...",
      "lead_email":      "[email protected]",
      "lead_name":       "Priya Sharma",
      "stage":           "interested",
      "value":           50000,
      "currency":        "INR",
      "notes":           "Wants annual pricing",
      "created_at":      "2026-04-13T09:30:00Z",
      "updated_at":      "2026-04-13T09:30:00Z"
    }
  ]
}

value is in the smallest currency unit (paise for INR, cents for USD).

POST /api/v1/crm/deals

curl -X POST https://api.misar.io/mail/v1/crm/deals \
  -H "Authorization: Bearer msk_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "conversation_id": "conv-uuid-...",
    "stage":           "interested",
    "value":           50000,
    "currency":        "INR",
    "notes":           "Wants annual pricing"
  }'

Clients (Agency)

Clients are sub-entities within your account — useful for agencies managing campaigns for multiple brands or end-clients. Each client can own separate campaign and contact data.

Clients are available on Max and Enterprise plans. On lower plans, this endpoint returns 403.

Endpoints

| Method | Path | Description | |--------|------|-------------| | GET | /api/v1/crm/clients | List clients | | POST | /api/v1/crm/clients | Create a client | | PATCH | /api/v1/crm/clients/:id | Update client details | | DELETE | /api/v1/crm/clients/:id | Delete a client |

POST /api/v1/crm/clients

curl -X POST https://api.misar.io/mail/v1/crm/clients \
  -H "Authorization: Bearer msk_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name":    "Brand XYZ",
    "domain":  "brandxyz.com",
    "notes":   "E-commerce client — 3 active campaigns"
  }'

Response

{
  "success": true,
  "client": {
    "id":         "client-uuid-...",
    "name":       "Brand XYZ",
    "domain":     "brandxyz.com",
    "notes":      "E-commerce client — 3 active campaigns",
    "created_at": "2026-04-13T10:00:00Z"
  }
}