Auth
Send a business API key or OAuth access token in theAuthorization header:
| Action | Scope |
|---|---|
| List pages and displays | page:list |
| Read one page or display | page:read |
| Create a page | page:create |
| Update metadata, publish state, tags, and displays | page:update |
| Delete a page | page:delete |
| List stores | store:list |
| List payment methods, sales people, and product knowledge | store:read |
| List store products and variants | product:list, product:read |
| List store bundles and bundle price options | bundle:list, bundle:read |
| List payment accounts | payment_account:list |
| Manage analytics pixels and GTM containers | fb_pixel:*, tiktok_pixel:*, kwai_pixel:*, gtm:* |
Endpoints
has_next is true, send next_cursor on the next request. If has_previous is true, send previous_cursor to move backward.
Complete setup flow
- List stores with
GET /v3/stores/simplified. Use the returned numeric storeidas{store_id}for authenticated business-scoped setup endpoints. - List sellable items for the store with
GET /v3/stores/{store_id}/productsandGET /v3/stores/{store_id}/bundles. Use productvariants[].idforform_display.variant_ids, or bundlebundle_price_options[].idforform_display.bundle_price_option_ids. - Fetch one item if you need details with
GET /v3/stores/{store_id}/variants/{variant_id}orGET /v3/stores/{store_id}/bundle-price-options/{id}. - List existing analytics records with
GET /v3/fb-pixels,GET /v3/tiktok-pixels,GET /v3/kwai-pixels, andGET /v3/gtm. Create missing records with the matchingPOSTendpoint. - List valid event names with
GET /v3/fb-standard-events,GET /v3/tiktok-standard-events, andGET /v3/kwai-standard-events?type=client|server. - If
after_submit_eventisdirect_to_whatsappwith fixed assignment, list handlers withGET /v3/stores/{store_id}/sales-peopleand send the selectedidasstore_sales_person_id. - Create or update the page display. Send Scalev record IDs in
*_pixel_ids,gtm_id,variant_ids,bundle_price_option_ids, andstore_sales_person_id. - Publish by creating the page with
is_published: true, or by patchingcurrent_page_display_idonPATCH /v3/pages/{page_id}.
HTML Mode display payload
HTML Mode usesrender_mode: "html_mode" and these code fields:
html_code: body-only HTMLcss_code: CSSjs_code: browser JavaScriptadditional_head_code: optional extra document<head>codecsp_policy: optional Content Security Policy additions
js_code is sent as an empty string, API responses may return it as null.
Treat both null and "" as “no JavaScript” when reading page displays.
css_code and additional_head_code can still round-trip as empty strings.
Use additional_head_code when you need to add supported head tags directly:
title, meta, link, style, script, and noscript. Scalev also creates
managed head tags from convenience settings such as meta.title,
meta.description, meta.thumbnail, meta.favicon, and
meta.isDisabledSearchEngineCrawler. If your additional_head_code includes a
conflicting title, meta, or favicon link, your additional head entry wins.
meta.lang remains the source for the rendered <html lang="...">; it is not
set from additional_head_code.
Do not send Builder-only display fields such as schema_version, banner, header, general, sidebar, or main for HTML Mode. Scalev fills acceptable defaults internally. Responses can still include those fields.
Include the analytics event fields even when they are empty:
html_code must not include <!doctype>, <html>, <head>, <body>,
metadata, favicon tags, or domain settings. Put supported head tags in
additional_head_code, and keep document-level convenience settings in meta.
Use the HTML Mode runtime for checkout, analytics,
prefill, and page context.
Analytics pixels and events
Attach existing analytics pixels to a page display by sending the Scalev pixel record IDs on the display payload. These are the numeric Scalev record IDs fromGET /v3/fb-pixels, GET /v3/tiktok-pixels, and GET /v3/kwai-pixels, not the provider pixel code such as a Meta Pixel ID.
| Field | Meaning |
|---|---|
fb_pixel_ids | Scalev record IDs for Meta/Facebook pixels |
tiktok_pixel_ids | Scalev record IDs for TikTok pixels |
kwai_client_pixel_ids | Scalev record IDs for SnackVideo browser pixels |
kwai_server_pixel_ids | Scalev record IDs for SnackVideo Events API pixels |
POST /v3/fb-pixels, POST /v3/tiktok-pixels, POST /v3/kwai-pixels, and POST /v3/gtm when the business does not already have the record. Use GET /v3/gtm to find the gtm_id to send on the display payload.
Only pixels owned by the same business are attached. IDs from another business or missing pixel records are ignored and will not appear in the response. Send an empty array when the new display should have no pixels for that provider.
Configure automatic page-load events on the same page display:
page_display.form_display, not on the top-level page display:
fb_pixels, tiktok_pixels, kwai_client_pixels, and kwai_server_pixels, not the ID arrays. When creating another display from a read response, use each pixel object’s id value in the matching *_pixel_ids request field.
Create an HTML Sales page
Omitform_display for a regular HTML landing page without checkout.
data envelope.
Create an HTML Checkout page
Addpage_display.form_display when the page should create orders. Checkout pages require:
store_id- at least one
variant_idsitem or onebundle_price_option_idsitem
store_id, every new display for that page must keep the same checkout store. A display with a different form_display.store_id, or a display without store context, is rejected.
after_submit_event values:
| Value | Required fields |
|---|---|
success_page | None |
direct_to_whatsapp | handler_assignment; if handler_assignment is fixed, also send store_sales_person_id |
direct_to_custom_whatsapp | custom_phone |
other_page | other_page_id |
custom_url | custom_url |
is_sending_email_invoice | None |
order_page | None |
Update a page
PATCH /v3/pages/{page_id} updates page metadata and publish state.
Create and publish a new display
To change HTML, CSS, JavaScript, pixels, or checkout context, create a new page display: If the page already has a saved store, the new display must include the sameform_display.store_id; omitting store context is rejected.
id. Publish it with:
Tags and delete
Replace tags with:204 No Content.
