ShopEazydevelopers
API referenceMerchant API BetaPages

What a new page can be, and the designs for each

Beta
Credentials
  • OAuth access token
Scopes
store:read
GET
/v1/merchant/stores/{storeId}/pages/starters

New page in three steps: step 1 is what the page is for (an item: Tours, Services, A category, Events, Gift cards, About, Team, FAQ, Lookbook, Size guide, Contact, Sale or launch, Wholesale, Link in bio, Blank, in three groups), step 2 a design for it (designs), step 3 its name, address and menu place (createStarterPage).

Each item is filled from the shop's own listings, categories and settings: count is how many of its listings the page is made from (null when it isn't made from listings) and sub says so in words ("4 tours"). title, slug and menu are what the page gets when createStarterPage is not told otherwise. Each design says how many sections (blocks) it makes for this shop. locked items need Growth (below it only About). previewUrl is a private link to every design of the item, stacked, as the storefront draws them for this shop; nothing is saved (null when no link can be signed).

Access: OAuth scope store:read; not write-gated.

Paged: { items, nextCursor }, limit (default 50, at most 200) and an opaque cursor.

Authorization

merchantOAuth store:read
headerAuthorizationBearer <token>

OAuth 2.1 (authorization code + PKCE S256, public clients, dynamic registration) for connected AI apps. Effective power is scopes granted AND the person's role today AND the plan. orders:refund, billing:write and team:write are opt-in on the consent screen. Write implies read for marketing:read and messages:read, so a grant holding marketing:write passes a marketing:read check, and messages:send passes messages:read.

Scope: store:read

Path Parameters

storeId*string

A store the person can reach. Any other id answers 404, never 403.

Query Parameters

cursor?string

The nextCursor of the previous page, unchanged. A cursor that is not one we gave you is 400 bad_request.

limit?integer

Page size: default 50, at most 200 (more is 200; a missing or unusable value is 50).

Range1 <= value <= 200
Default50

Response Body

OK

application/json
  1. response
data*
Example Request
curl -X GET 'https://api.shopeazy.co/v1/merchant/stores/<storeId>/pages/starters' \  -H 'Authorization: Bearer <access_token>'
Example Response
{  "data": {    "groups": [      {        "id": "sell",        "label": "string"      }    ],    "plan": {      "anyPage": true,      "maxPages": 0    },    "items": [      {        "id": "tours",        "name": "string",        "group": "sell",        "sub": "string",        "count": 0,        "imageUrl": "string",        "title": "string",        "slug": "string",        "menu": "top",        "designs": [          {            "id": "string",            "name": "string",            "sections": 0          }        ],        "locked": true,        "previewUrl": "string"      }    ],    "nextCursor": "string"  }}