Landing Pages
Create and manage hosted landing pages with drag-and-drop blocks for lead capture and campaign promotions
Landing pages are hosted by MisarMail and published at https://mail.misar.io/p/:slug. Build them from composable blocks — no external hosting required.
Authentication
Requires an API key or active session.
Authorization: Bearer msk_...
Block types
Pages are composed from an ordered array of blocks. Each block has an id, type, content, and optional style object.
| Type | Description |
|---|---|
hero | Full-width header with heading and CTA button |
text | Rich text body section |
image | Full-width or contained image |
form | Embedded MisarMail signup form |
cta | Call-to-action banner with button |
features | Feature grid with icons and descriptions |
testimonial | Quote block with attribution |
countdown | Live countdown timer to a target date |
divider | Horizontal rule / spacer |
video | Embedded video (YouTube, Vimeo, or direct URL) |
List landing pages
/mail/v1/landing-pagesList landing pages with optional status filtering and pagination.
Query parameters
statusall | draft | publishedquerydefault: allFilter by publish status.
limitintegerquerydefault: 50Results per page (max 100).
offsetintegerquerydefault: 0Pagination offset.
Response fields
successbooleantrue when the request succeeded.
dataobjectContains pages (array of landing pages with id, title, slug, status, visits, conversions, conversion_rate, published_url, created_at, updated_at) plus total, limit, and offset.
curl "https://api.misar.io/mail/v1/landing-pages?status=published&limit=10" \
-H "Authorization: Bearer msk_..."{
"success": true,
"data": {
"pages": [
{
"id": "lp_01hvabc",
"title": "Summer Sale 2026",
"slug": "summer-sale-2026",
"status": "published",
"visits": 4210,
"conversions": 389,
"conversion_rate": 9.24,
"published_url": "https://mail.misar.io/p/summer-sale-2026",
"created_at": "2026-05-01T09:00:00Z",
"updated_at": "2026-05-20T14:30:00Z"
}
],
"total": 3,
"limit": 10,
"offset": 0
}
}Create a landing page
/mail/v1/landing-pagesCreate a landing page. New pages are created as draft.
Request body
titlestringbodyrequiredPage title (also used to auto-generate slug if omitted).
slugstringbodyURL slug — lowercase alphanumeric and hyphens only, must be unique.
descriptionstringbodyInternal description.
blocksarraybodyrequiredOrdered array of block objects.
meta_titlestringbodySEO <title> tag.
meta_descriptionstringbodySEO <meta name="description">.
og_image_urlstringbodyOpen Graph image URL.
custom_cssstringbodyRaw CSS injected into the page.
form_idstringbodyEmbed a MisarMail form on the page.
campaign_idstringbodyLink this page to a campaign for attribution.
Response fields
successbooleantrue when the page was created.
dataobjectThe created landing page, including id, slug, status, blocks, SEO fields, and analytics counters.
curl -X POST https://api.misar.io/mail/v1/landing-pages \
-H "Authorization: Bearer msk_..." \
-H "Content-Type: application/json" \
-d '{
"title": "Summer Sale 2026",
"slug": "summer-sale-2026",
"meta_title": "Summer Sale 2026 — Up to 40% off",
"meta_description": "Shop our biggest sale of the year.",
"og_image_url": "https://cdn.example.com/summer-sale-og.jpg",
"form_id": "frm_01hvabc",
"blocks": [
{
"id": "hero-1",
"type": "hero",
"content": {
"heading": "Summer Sale is here",
"subheading": "Up to 40% off — limited time only",
"cta": "Shop now",
"cta_url": "https://yoursite.com/sale"
},
"style": { "background": "#f0fdf4", "textAlign": "center" }
},
{
"id": "form-1",
"type": "form",
"content": { "heading": "Get early access deals" },
"style": {}
},
{
"id": "divider-1",
"type": "divider",
"content": {},
"style": {}
}
]
}'{
"success": true,
"data": {
"id": "lp_01hvabc",
"title": "Summer Sale 2026",
"slug": "summer-sale-2026",
"status": "draft",
"blocks": [...],
"meta_title": "Summer Sale 2026 — Up to 40% off",
"meta_description": "Shop our biggest sale of the year.",
"og_image_url": "https://cdn.example.com/summer-sale-og.jpg",
"form_id": "frm_01hvabc",
"campaign_id": null,
"visits": 0,
"conversions": 0,
"conversion_rate": 0,
"published_url": "https://mail.misar.io/p/summer-sale-2026",
"created_at": "2026-05-27T10:00:00Z",
"updated_at": "2026-05-27T10:00:00Z"
}
}Get a landing page
/mail/v1/landing-pages/:idReturns the full page object including all blocks, SEO fields, and live analytics (visits, conversions, conversion_rate).
Path parameters
idstringpathrequiredID of the landing page.
curl https://api.misar.io/mail/v1/landing-pages/lp_01hvabc \
-H "Authorization: Bearer msk_..."Update a landing page
/mail/v1/landing-pages/:idSend only the fields to change. Updating blocks replaces the full blocks array. Updating slug will change the published URL immediately.
Path parameters
idstringpathrequiredID of the landing page to update.
curl -X PATCH https://api.misar.io/mail/v1/landing-pages/lp_01hvabc \
-H "Authorization: Bearer msk_..." \
-H "Content-Type: application/json" \
-d '{ "status": "published" }'Delete a landing page
/mail/v1/landing-pages/:idDelete a landing page. The published URL becomes a 404 immediately.
Path parameters
idstringpathrequiredID of the landing page to delete.
Response fields
successbooleantrue when the page was deleted.
curl -X DELETE https://api.misar.io/mail/v1/landing-pages/lp_01hvabc \
-H "Authorization: Bearer msk_..."{ "success": true }Published URL
Pages are live at:
https://mail.misar.io/p/:slug
New pages are created as draft and are not publicly accessible until published via the dashboard or a PATCH setting "status": "published".
slug must be unique across your account, lowercase, and contain only alphanumeric characters and hyphens. Attempting to create a page with a duplicate or invalid slug returns HTTP 409.
Your plan includes a limit on the number of active landing pages. Attempting to publish beyond your plan limit returns HTTP 402. Check your current usage on the billing page.