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

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.

TypeDescription
heroFull-width header with heading and CTA button
textRich text body section
imageFull-width or contained image
formEmbedded MisarMail signup form
ctaCall-to-action banner with button
featuresFeature grid with icons and descriptions
testimonialQuote block with attribution
countdownLive countdown timer to a target date
dividerHorizontal rule / spacer
videoEmbedded video (YouTube, Vimeo, or direct URL)

List landing pages

GET/mail/v1/landing-pages

List landing pages with optional status filtering and pagination.

Query parameters

statusall | draft | publishedquerydefault: all

Filter by publish status.

limitintegerquerydefault: 50

Results per page (max 100).

offsetintegerquerydefault: 0

Pagination offset.

Response fields

successboolean

true when the request succeeded.

dataobject

Contains 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

POST/mail/v1/landing-pages

Create a landing page. New pages are created as draft.

Request body

titlestringbodyrequired

Page title (also used to auto-generate slug if omitted).

slugstringbody

URL slug — lowercase alphanumeric and hyphens only, must be unique.

descriptionstringbody

Internal description.

blocksarraybodyrequired

Ordered array of block objects.

meta_titlestringbody

SEO <title> tag.

meta_descriptionstringbody

SEO <meta name="description">.

og_image_urlstringbody

Open Graph image URL.

custom_cssstringbody

Raw CSS injected into the page.

form_idstringbody

Embed a MisarMail form on the page.

campaign_idstringbody

Link this page to a campaign for attribution.

Response fields

successboolean

true when the page was created.

dataobject

The 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

GET/mail/v1/landing-pages/:id

Returns the full page object including all blocks, SEO fields, and live analytics (visits, conversions, conversion_rate).

Path parameters

idstringpathrequired

ID of the landing page.

curl https://api.misar.io/mail/v1/landing-pages/lp_01hvabc \
  -H "Authorization: Bearer msk_..."

Update a landing page

PATCH/mail/v1/landing-pages/:id

Send only the fields to change. Updating blocks replaces the full blocks array. Updating slug will change the published URL immediately.

Path parameters

idstringpathrequired

ID 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

DELETE/mail/v1/landing-pages/:id

Delete a landing page. The published URL becomes a 404 immediately.

Path parameters

idstringpathrequired

ID of the landing page to delete.

Response fields

successboolean

true 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.