Skip to main content
POST
/
v1
/
pages
/
{page_id}
/
fill
curl --request POST \
  --url https://app.ecomwize.io/api/v1/pages/e22f3857-cf0c-49c0-9e44-d76ea0bb7221/fill \
  --header 'Authorization: Bearer ew_live_your_key_here' \
  --header 'Content-Type: application/json' \
  --data '{
    "sections": {
      "section_1": {
        "hero01_heading": "Summer sale is here",
        "hero01_btn": "Shop Now",
        "imageUrl": "https://cdn.shopify.com/my-image.jpg"
      },
      "section_3": {
        "testimonial11_heading": "What our customers say"
      }
    }
  }'
{
  "success": true,
  "message": "Successfully updated 2 section(s)"
}
Merges your content into existing page sections. Only the fields you send are updated — everything else stays the same. You can update one section or all of them in a single request.
This endpoint requires an API key with Full access permission.
page_id
string
required
The unique ID of the page to fill. Get it from the list pages endpoint.
Authorization
string
required
Bearer token. Example: Bearer ew_live_your_key_here
sections
object
required
Object keyed by section number (section_1, section_2, etc.) with content fields to update. Only include the fields you want to change.

Accepted formats

The fill endpoint is flexible and accepts multiple formats:
You can pass the output from the get page endpoint directly. The API auto-unwraps the type and content wrapper:
{
  "sections": {
    "section_1": {
      "type": "hero01",
      "content": {
        "hero01_heading": "New title"
      }
    }
  }
}
You can also send section keys at the root level without a sections wrapper:
{
  "section_1": {
    "hero01_heading": "New title"
  }
}

Filling nested content

Testimonial cards

Cards are matched by position (index):
{
  "sections": {
    "section_3": {
      "cards": [
        { "testimonial11_card_1_quote": "Amazing!", "testimonial11_card_1_author": "Jane D." },
        { "testimonial11_card_2_quote": "Life changing!", "testimonial11_card_2_author": "Mark S." }
      ]
    }
  }
}

Product snippets

Snippets are matched by type:
{
  "sections": {
    "section_4": {
      "snippets": [
        { "type": "bulletList", "product01_bulletList_1": "New bullet 1" },
        { "type": "noticeBox", "product01_noticeBox_title": "SELLING FAST" }
      ]
    }
  }
}

Advertorial sidebar

{
  "sections": {
    "section_1": {
      "sidebar": {
        "title": "My Product",
        "tag": "Best Seller",
        "buttonText": "Check Availability",
        "bullets": ["Benefit one", "Benefit two"]
      }
    }
  }
}

HTML formatting

You can include HTML tags in text content:
TagResult
<strong>Bold text
<em>Italic text
<u>Underlined text
<br>Line break
<span class='text-highlight'>Highlighted text
When using <span> tags with class attributes, use single quotes for the class value to avoid breaking JSON: <span class='text-highlight'> instead of <span class="text-highlight">.
curl --request POST \
  --url https://app.ecomwize.io/api/v1/pages/e22f3857-cf0c-49c0-9e44-d76ea0bb7221/fill \
  --header 'Authorization: Bearer ew_live_your_key_here' \
  --header 'Content-Type: application/json' \
  --data '{
    "sections": {
      "section_1": {
        "hero01_heading": "Summer sale is here",
        "hero01_btn": "Shop Now",
        "imageUrl": "https://cdn.shopify.com/my-image.jpg"
      },
      "section_3": {
        "testimonial11_heading": "What our customers say"
      }
    }
  }'
{
  "success": true,
  "message": "Successfully updated 2 section(s)"
}