Contacts
Manage your audience — create, update, import, score, and segment contacts.
Contacts
Base: https://api.misar.io/mail/v1/contacts
Required scope: contacts
List contacts
GET /v1/contacts
Query params: status (active|unsubscribed|bounced|complained), search, segmentId, page, limit.
{
"success": true,
"data": [
{
"id": "con_01ABCDEF",
"email": "[email protected]",
"firstName": "Alice",
"lastName": "Smith",
"status": "active",
"score": 82,
"tags": ["customer", "vip"],
"createdAt": "2025-01-15T08:00:00Z"
}
],
"pagination": { "page": 1, "limit": 50, "total": 3200 }
}
Get contact
GET /v1/contacts/:id
Create contact
POST /v1/contacts
{
"email": "[email protected]",
"firstName": "Alice",
"lastName": "Smith",
"tags": ["customer"],
"metadata": {
"plan": "pro",
"signupSource": "landing-page"
}
}
Fields
| Field | Type | Required | Description |
|-------|------|----------|-------------|
| email | string | ✅ | Contact email address |
| firstName | string | — | First name |
| lastName | string | — | Last name |
| phone | string | — | Phone number |
| tags | array | — | String labels |
| metadata | object | — | Arbitrary key-value pairs |
| status | string | — | active (default) | unsubscribed |
Update contact
PATCH /v1/contacts/:id
Accepts any subset of create fields. email cannot be changed.
Bulk update / delete
PATCH /v1/contacts/bulk
DELETE /v1/contacts/bulk
{
"ids": ["con_01ABC", "con_02DEF"],
"update": { "tags": ["churned"] }
}
Import contacts
POST /v1/contacts/import
Upload a JSON array of contacts (max 10 000 per request):
{
"contacts": [
{ "email": "[email protected]", "firstName": "A" },
{ "email": "[email protected]", "firstName": "B" }
],
"skipExisting": false,
"tags": ["imported-june-2025"]
}
Response:
{
"success": true,
"imported": 1998,
"skipped": 2,
"failed": 0,
"errors": []
}
Contact scoring
MisarMail automatically scores contacts 0–100 based on engagement. Higher = more engaged.
GET /v1/contacts/:id/score
{
"score": 82,
"tier": "champion",
"factors": {
"openRate": 0.71,
"clickRate": 0.23,
"recency": "3d",
"frequency": "high"
}
}
Scoring tiers
| Score | Tier | |-------|------| | 80–100 | Champion | | 60–79 | Loyal | | 40–59 | Potential | | 20–39 | At risk | | 0–19 | Dormant |
Scoring rules (custom)
GET /v1/contacts/scoring-rules
POST /v1/contacts/scoring-rules
PATCH /v1/contacts/scoring-rules/:id
DELETE /v1/contacts/scoring-rules/:id
List health
Run a deliverability health check to identify invalid, risky, or unengaged addresses:
POST /v1/contacts/health/run
GET /v1/contacts/health/stats
GET /v1/contacts/health/unengaged