Skip to main content

Get Storefronts

Retrieve a list of your store's storefronts (Creator pages).

Storefronts are returned newest-updated first. Each item includes its custom domains. The list is a lean projection: it does not include preview_url or draft sections (styles, header, settings, blocks). It does not include privacy_easylegal.footer_id. Use Get Storefront with include=footer_id for that id.

When your store has no storefronts, the list is empty. Create one with Create Storefront.

Request​

GET /storefronts

Query Parameters​

ParameterTypeRequiredDefaultDescription
statusstringNo—Filter by publication status: draft or published. Omit for storefronts in any state.
querystringNo—Partial, case-insensitive match on the storefront name or slug.
sortstringNo-updated_atSort order: created_at, updated_at, or name. Prefix with - for descending.
pageintegerNo1Page number for pagination.
per_pageintegerNo25Items per page (min: 1, max: 100).

Omitting a filter, or passing it empty, means "no filter on that field". A non-empty but unparseable value — an unknown status or sort, or an out-of-range per_page — returns a 400 (see Bad Request). The query term is free-text and is always accepted.

Ordering: Storefronts default to updated_at descending (newest-updated first) unless sort is supplied.

Counting matches: every response includes the filtered total in pagination.total. To get only a count, request per_page=1 and read pagination.total.

Example Request​

curl -X GET "https://cart.easy.tools/api/v1/storefronts?status=published&page=1" \
-H "Authorization: Bearer YOUR_API_TOKEN"

Response​

Success Response (200)​

Returns a paginated list of storefronts.

{
"items": [
{
"id": "b10f5980-d653-4494-ad1c-6a9d68c96d19",
"slug": "my-studio",
"name": "My Studio",
"status": "published",
"public_url": "https://mysite.com/",
"domains": [
{
"domain": "mysite.com",
"status": "configured",
"include_www": true
}
],
"created_at": "2026-03-12T10:00:00+00:00",
"updated_at": "2026-08-26T14:22:00+00:00",
"published_at": "2026-04-01T09:00:00+00:00"
},
{
"id": "3edd096c-735b-4fcc-86ec-fba4e05b67b4",
"slug": "autumn-mini-sessions",
"name": "Autumn Mini Sessions",
"status": "draft",
"public_url": null,
"domains": [],
"created_at": "2026-08-20T11:15:00+00:00",
"updated_at": "2026-08-26T16:40:00+00:00",
"published_at": null
}
],
"pagination": {
"current_page": 1,
"total_pages": 1,
"per_page": 25,
"total": 2
}
}

Response Fields​

The list item is a leaner projection than Get Storefront. It has no preview_url and no styles / header / settings / blocks keys.

FieldTypeNullableDescription
idstringNoStable storefront identifier (UUID). Pass it to Get Storefront.
slugstringNoCurrent URL slug. Mutable, so use it for display only — never as a stable id.
namestringNoDisplay name (the Creator page name in the dashboard).
statusstringNoPublication status: draft or published.
public_urlstringYesLive visitor URL. null when the storefront is a draft. See Custom domains.
domainsarrayNoCustom domains attached to this storefront. Empty when none are attached. See Domain.
created_atstringNoWhen the storefront was created (ISO 8601).
updated_atstringNoWhen the storefront was last updated (ISO 8601). Storefronts default to this field, newest first.
published_atstringYesWhen the storefront was last published. null while it is a draft or after it has been unpublished.

Pagination Object​

FieldTypeDescription
current_pageintegerCurrent page number.
total_pagesintegerTotal number of pages.
per_pageintegerEffective page size (echoes the per_page request parameter).
totalintegerTotal number of storefronts matching the applied filters.

Error Responses​

Bad Request (400)​

Returned when status is not draft or published, sort names an unknown field, or per_page is out of range. The message names the offending field and the value received.

{
"message": "Invalid value for 'status': 'activ'"
}

Unauthorized (401)​

{
"message": "Unauthenticated."
}

Forbidden (403)​

Returned when your API key has not been granted access to the requested store.

{
"message": "You do not have API access to the requested store."
}

Too Many Requests (429)​

Returned when you exceed the rate limit. The Retry-After response header gives the number of seconds to wait.

{
"message": "Too many requests. Please retry after 60 seconds."
}