Wocart
Wocart API

Landing Pages

Server

List landing pages

GET
https://api.wocart.store
/api/landing-pages
X-API-Key (header)

List landing pages (newest first) with per-page stats: views, attributed orders, revenue — orders count as placed regardless of status (cancelled/returned included). Filter by product or status. limit/offset are opt-in pagination; omitting them returns the full list.

List landing pages › query Parameters

productId
​string

Filter by product UUID

Filter by product UUID

status
​string · enum

Filter by lifecycle status

Filter by lifecycle status

Enum values:
draft
published
archived
limit
​integer · min: 1 · max: 200

Opt-in page size (1-200). Omitted → the full list (the dashboard fetches everything; LLM-facing clients should set a limit).

Opt-in page size (1-200). Omitted → the full list (the dashboard fetches everything; LLM-facing clients should set a limit).

offset
​integer | null · min: 0

Opt-in page offset — pair with limit. Rows are newest-first.

Opt-in page offset — pair with limit. Rows are newest-first.

List landing pages › Responses

200

List of landing pages

success
​boolean · required
​LandingPageListItem[] · required
count
​integer · required

Number of items returned


Create landing page

POST
https://api.wocart.store
/api/landing-pages
X-API-Key (header)

Create a draft landing page for a product. The slug defaults to lp-<8 chars> and is editable later. The page charges the product's catalog price — there is no price override (the price story lives in the images).

Validation: the product must exist; a taken slug returns 409.

Create landing page › Request Body

name
​string · minLength: 2 · maxLength: 200 · required
productId
​string · minLength: 1 · required
slug
​string · pattern: ^[a-z0-9-]{3,60}$
imageGap
​integer · min: 0 · max: 200
Default: 0
metaTitle
​string | null · maxLength: 200
metaDescription
​string | null · maxLength: 300

Create landing page › Responses

Landing page created (draft)

success
​boolean · required
​LandingPage · required

Compare landing pages of one product

GET
https://api.wocart.store
/api/landing-pages/compare
X-API-Key (header)

The A/B view: every landing page of one product side by side with views, orders, revenue — orders count as placed regardless of status (cancelled/returned included). Conversion rate = orders / views (undefined on zero views — compute client-side).

Compare landing pages of one product › query Parameters

productId
​string · required

Product UUID to compare pages for

Product UUID to compare pages for

Compare landing pages of one product › Responses

200

Landing pages of the product with stats

success
​boolean · required
​LandingPageListItem[] · required
count
​integer · required

Number of items returned


Get landing page

GET
https://api.wocart.store
/api/landing-pages/{id}
X-API-Key (header)

Full landing page detail: settings, the ordered image stack, the linked product, and stats.

Get landing page › path Parameters

id
​string · required

Landing Page UUID

Landing Page UUID

Get landing page › Responses

200

Landing page details

success
​boolean · required
​LandingPage · required

Update landing page

PATCH
https://api.wocart.store
/api/landing-pages/{id}
X-API-Key (header)

Partial update — send only the fields you want to change (name, slug, spacing settings, SEO meta). A taken slug returns 409.

Update landing page › path Parameters

id
​string · required

Landing Page UUID

Landing Page UUID

Update landing page › Request Body

name
​string · minLength: 2 · maxLength: 200
slug
​string · pattern: ^[a-z0-9-]{3,60}$
imageGap
​integer · min: 0 · max: 200
Default: 0
metaTitle
​string | null · maxLength: 200
metaDescription
​string | null · maxLength: 300

Update landing page › Responses

200

Landing page updated

success
​boolean · required
​LandingPage · required

Delete landing page

DELETE
https://api.wocart.store
/api/landing-pages/{id}
X-API-Key (header)

Permanently delete a landing page with NO attributed orders. Refused with LANDING_PAGE_HAS_ORDERS otherwise — archive instead so history stays intact. Images cascade.

Delete landing page › path Parameters

id
​string · required

Landing Page UUID

Landing Page UUID

Delete landing page › Responses

Landing page deleted

success
​boolean · required

Duplicate landing page

POST
https://api.wocart.store
/api/landing-pages/{id}/duplicate
X-API-Key (header)

Create a quick copy: a fresh DRAFT with a new slug, the same product, spacing, SEO meta, and image stack (images share the original immutable R2 objects — deleting an image elsewhere only removes the storage object when the last reference goes). Views, orders, revenue, and published state are never copied — a duplicate is a fresh creative test.

Duplicate landing page › path Parameters

id
​string · required

Landing Page UUID

Landing Page UUID

Duplicate landing page › Responses

Landing page duplicated (draft)

success
​boolean · required
​LandingPage · required

Publish landing page

POST
https://api.wocart.store
/api/landing-pages/{id}/publish
X-API-Key (header)

Make the page live at /lp/ and start counting views.

Publish landing page › path Parameters

id
​string · required

Landing Page UUID

Landing Page UUID

Publish landing page › Responses

200

Landing page published

success
​boolean · required
​LandingPage · required

Unpublish landing page

POST
https://api.wocart.store
/api/landing-pages/{id}/unpublish
X-API-Key (header)

Return the page to draft — the link stops resolving (404) but history stays.

Unpublish landing page › path Parameters

id
​string · required

Landing Page UUID

Landing Page UUID

Unpublish landing page › Responses

200

Landing page unpublished

success
​boolean · required
​LandingPage · required

Archive landing page

POST
https://api.wocart.store
/api/landing-pages/{id}/archive
X-API-Key (header)

Retire the page while keeping its order history intact. The link stops resolving.

Archive landing page › path Parameters

id
​string · required

Landing Page UUID

Landing Page UUID

Archive landing page › Responses

200

Landing page archived

success
​boolean · required

List landing page images

GET
https://api.wocart.store
/api/landing-pages/{id}/images
X-API-Key (header)

The image stack ordered by position (1 = top of the page).

List landing page images › path Parameters

id
​string · required

Landing Page UUID

Landing Page UUID

List landing page images › Responses

200

Image stack

success
​boolean · required
​LandingPageImage[] · required

Save landing page image

POST
https://api.wocart.store
/api/landing-pages/{id}/images
X-API-Key (header)

Appends an uploaded image to the stack by its Media Key. Upload it first (POST /api/media/uploads with folder landing, send the file, complete the upload); its size comes from the upload.

Save landing page image › path Parameters

id
​string · required

Landing Page UUID

Landing Page UUID

Save landing page image › Request Body

mediaKey
​string · minLength: 1 · maxLength: 512 · required

A Media Key: the image's identity in the store's media. Never a URL.

altText
​string | null

Alt text for accessibility

position
​integer · min: 1

Where it goes, 1 = top of the page; the images from there move down one. Omitted or past the end: last

Save landing page image › Responses

Image added — returns the full reordered stack

success
​boolean · required
​LandingPageImage[] · required

Reorder landing page images

PATCH
https://api.wocart.store
/api/landing-pages/{id}/images/reorder
X-API-Key (header)

Set the stack order. Send the complete ordered array of image IDs — every existing image ID exactly once.

Reorder landing page images › path Parameters

id
​string · required

Landing Page UUID

Landing Page UUID

Reorder landing page images › Request Body

imageIds
​string[] · minItems: 1 · required

Complete ordered list of all image IDs for this landing page — no duplicates, no omissions.

Reorder landing page images › Responses

Images reordered — returns the stack in new order

success
​boolean · required
​LandingPageImage[] · required

Delete landing page image

DELETE
https://api.wocart.store
/api/landing-pages/{id}/images/{imageId}
X-API-Key (header)

Remove an image from the stack. The R2 object is deleted first — a storage failure aborts so no DB row points at a missing object.

Delete landing page image › path Parameters

id
​string · required

Landing Page UUID

Landing Page UUID

imageId
​string · required

Landing Page Image UUID

Landing Page Image UUID

Delete landing page image › Responses

200

Image deleted

success
​boolean · required

Get landing page tracking

GET
https://api.wocart.store
/api/landing-pages/{id}/tracking
X-API-Key (header)

This page's tracking: config is its own Meta Pixel + Conversions API configuration (null when it inherits the store's, which is the default for every page), and lastEvent is the most recent Conversions API attempt for an order this page produced — proof that a campaign is reporting, including Meta's own message when one failed. The access token is never returned, only a masked hint.

Get landing page tracking › path Parameters

id
​string · required

Landing Page UUID

Landing Page UUID

Get landing page tracking › Responses

The page's tracking configuration and its most recent Conversions API attempt

success
​boolean · required
​LandingPageTrackingState · required

Save landing page tracking

PUT
https://api.wocart.store
/api/landing-pages/{id}/tracking
X-API-Key (header)

Give this page its own pixel, REPLACING the store's for its visitors and for the orders attributed to it — never adding to it. Takes effect only while the Meta App's per-page tracking switch is on (the Meta App's page).

accessToken is required when creating the override and optional afterwards: an empty value keeps the stored token, because the dashboard only ever holds a masked hint.

conversionEvent is required — which moment counts as a conversion is a spend decision and is never defaulted for the merchant.

testMode requires a testEventCode, or the events reach production measurement instead of Meta's test stream.

Save landing page tracking › path Parameters

id
​string · required

Landing Page UUID

Landing Page UUID

Save landing page tracking › Request Body

pixelId
​string · minLength: 1 · maxLength: 64 · required
conversionEvent
​string · enum · required
Enum values:
Lead
Purchase
Purchase_Confirmed
Purchase_Delivered
accessToken
​string · maxLength: 512
adAccountName
​string | null · maxLength: 200
testEventCode
​string | null · maxLength: 64
testMode
​boolean
enabled
​boolean

Save landing page tracking › Responses

Saved tracking configuration

success
​boolean · required
data
​LandingPageTracking · required

The page's own pixel, or null when it inherits the store's.


Remove landing page tracking

DELETE
https://api.wocart.store
/api/landing-pages/{id}/tracking
X-API-Key (header)

Return the page to the store pixel. Succeeds whether or not an override existed.

Remove landing page tracking › path Parameters

id
​string · required

Landing Page UUID

Landing Page UUID

Remove landing page tracking › Responses

Page returned to the store pixel

success
​boolean · required