Skip to main content
POST
/
v1
/
pages
/
{page_id}
/
duplicate-and-fill
curl --request POST \
  --url https://app.ecomwize.io/api/v1/pages/e22f3857-cf0c-49c0-9e44-d76ea0bb7221/duplicate-and-fill \
  --header 'Authorization: Bearer ew_live_your_key_here' \
  --header 'Content-Type: application/json' \
  --data '{
    "title": "Summer Sale - Dutch Version",
    "handle": "summer-sale-nl",
    "sections": {
      "section_1": {
        "hero01_heading": "5 redenen om je routine te upgraden",
        "hero01_btn": "Meer Ontdekken"
      },
      "section_2": {
        "benefit01_heading": "Waarom natuurlijke ingredienten beter werken",
        "benefit01_btn": "Bekijk het Serum"
      }
    }
  }'
{
  "success": true,
  "message": "Page duplicated as \"Summer Sale - Dutch Version\"",
  "page": {
    "id": "f8a1b2c3-d4e5-6789-abcd-ef0123456789",
    "title": "Summer Sale - Dutch Version",
    "slug": "summer-sale-nl",
    "handle": "summer-sale-nl",
    "status": "draft",
    "created_at": "2026-04-09T10:30:00.000Z"
  }
}
Creates a new page by duplicating an existing template page, then applies your content changes to the copy. The original page is not modified. The new page is always created as a draft. This is the recommended endpoint for creating multiple page variants from a single template (e.g., one landing page per product, per language, or per campaign).
This endpoint requires an API key with Full access permission.
page_id
string
required
The unique ID of the template page to duplicate. Get it from the list pages endpoint.
Authorization
string
required
Bearer token. Example: Bearer ew_live_your_key_here
title
string
Title for the new page. Defaults to "{original title} (Copy)".
handle
string
Custom URL handle for the new page. Auto-slugified. If not provided, one is generated automatically.
sections
object
Content to fill in the new page. Same format as the fill endpoint. If omitted, the page is duplicated as-is.
You can omit sections entirely to create an exact copy of the template without changing any content.

What gets duplicated

CopiedNot copied
All sections and contentShopify page ID
Brand stylePublished status (always draft)
Store connectionShopify page handle
Product linking
Meta description

Example: multi-language pages

Use this endpoint in an automation to create localized versions of a single template:
// French version
{
  "title": "Summer Sale - FR",
  "handle": "summer-sale-fr",
  "sections": {
    "section_1": {
      "hero01_heading": "5 raisons de changer votre routine...",
      "hero01_btn": "En Savoir Plus"
    }
  }
}
// German version
{
  "title": "Summer Sale - DE",
  "handle": "summer-sale-de",
  "sections": {
    "section_1": {
      "hero01_heading": "5 Grunde Ihre Routine zu verbessern...",
      "hero01_btn": "Mehr Erfahren"
    }
  }
}
Each duplicate counts toward your plan’s page limit. If you reach the limit, the API returns a 403 error with a message to upgrade your plan.
curl --request POST \
  --url https://app.ecomwize.io/api/v1/pages/e22f3857-cf0c-49c0-9e44-d76ea0bb7221/duplicate-and-fill \
  --header 'Authorization: Bearer ew_live_your_key_here' \
  --header 'Content-Type: application/json' \
  --data '{
    "title": "Summer Sale - Dutch Version",
    "handle": "summer-sale-nl",
    "sections": {
      "section_1": {
        "hero01_heading": "5 redenen om je routine te upgraden",
        "hero01_btn": "Meer Ontdekken"
      },
      "section_2": {
        "benefit01_heading": "Waarom natuurlijke ingredienten beter werken",
        "benefit01_btn": "Bekijk het Serum"
      }
    }
  }'
{
  "success": true,
  "message": "Page duplicated as \"Summer Sale - Dutch Version\"",
  "page": {
    "id": "f8a1b2c3-d4e5-6789-abcd-ef0123456789",
    "title": "Summer Sale - Dutch Version",
    "slug": "summer-sale-nl",
    "handle": "summer-sale-nl",
    "status": "draft",
    "created_at": "2026-04-09T10:30:00.000Z"
  }
}