Skip to main content

Get Storefront

Retrieve a specific storefront (Creator page) from your store.

By default the response contains the storefront's identity, URLs, timestamps, and a fresh preview_url of the saved draft. Use the include query parameter to expand draft sections — styles, header, settings, and blocks — in the same call. footer_id reads the legal footer; see Easylegal footer.

Request​

GET /storefronts/{id}

Path Parameters​

ParameterTypeRequiredDescription
idstringYesStorefront UUID

Query Parameters​

ParameterTypeRequiredDescription
includestringNoComma-separated list of sections to expand. Allowed values: styles, header, settings, blocks, footer_id. Unknown values are ignored.
note

styles, header, settings, and blocks are always present. A section that is not requested is null. Requesting include=blocks therefore leaves styles, header, and settings as null. include=footer_id fills settings with only privacy_easylegal.footer_id instead of leaving settings as null. There is no top-level footer_id.

Example Requests​

Lean read (section keys present as null):

curl -X GET "https://cart.easy.tools/api/v1/storefronts/b10f5980-d653-4494-ad1c-6a9d68c96d19" \
-H "Authorization: Bearer YOUR_API_TOKEN"

Expand widgets:

curl -X GET "https://cart.easy.tools/api/v1/storefronts/b10f5980-d653-4494-ad1c-6a9d68c96d19?include=blocks" \
-H "Authorization: Bearer YOUR_API_TOKEN"

Read the legal footer:

curl -X GET "https://cart.easy.tools/api/v1/storefronts/b10f5980-d653-4494-ad1c-6a9d68c96d19?include=footer_id" \
-H "Authorization: Bearer YOUR_API_TOKEN"

Response​

Success Response (200)​

Returns a single storefront. The first example is the lean default. The next examples request include=settings, include=footer_id, include=settings,footer_id, and include=blocks.

{
"id": "b10f5980-d653-4494-ad1c-6a9d68c96d19",
"slug": "my-studio",
"name": "My Studio",
"status": "published",
"public_url": "https://mysite.com/",
"preview_url": "https://cart.easy.tools/storefront-preview/b10f5980-d653-4494-ad1c-6a9d68c96d19?expires=1787824741&signature=a86dd2d8c84eff7d3c8fd39d0d85545ef94b203e25c84bc07caa3e75e7e75a7e",
"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",
"styles": null,
"header": null,
"settings": null,
"blocks": null
}

include=settings — remaining section keys stay null. Analytics pixel configuration and privacy_easylegal.footer_id are still omitted. Add footer_id to the same include list to return that id on this object.

{
"id": "b10f5980-d653-4494-ad1c-6a9d68c96d19",
"slug": "my-studio",
"name": "My Studio",
"status": "published",
"public_url": "https://mysite.com/",
"preview_url": "https://cart.easy.tools/storefront-preview/b10f5980-d653-4494-ad1c-6a9d68c96d19?expires=1787824782&signature=ac92ca1d8a9c6802323d28dd67c319e9ca7406a3fdea3c319b0ec9a3cdcec8ff",
"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",
"styles": null,
"header": null,
"settings": {
"page_title": "My Studio",
"page_description": "Portraits, weddings, and photography workshops.",
"page_language": "en",
"checkout_open_mode": "default",
"og_image_url": null,
"favicon_url": null,
"webclip_url": null,
"privacy_url": "https://mysite.com/privacy",
"privacy_easylegal": { "enabled": false }
},
"blocks": null
}

include=footer_id — settings is only the footer id. Other settings keys are omitted. styles, header, and blocks stay null.

{
"id": "b10f5980-d653-4494-ad1c-6a9d68c96d19",
"slug": "my-studio",
"name": "My Studio",
"status": "published",
"public_url": "https://mysite.com/",
"preview_url": "https://cart.easy.tools/storefront-preview/b10f5980-d653-4494-ad1c-6a9d68c96d19?expires=1787824801&signature=d17c4e2a9b08f6e3c5a1d4b7e0f9c2a8b6d3e5f1a0c7b4d2e8f6a1c9b3d5e7f0",
"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",
"styles": null,
"header": null,
"settings": {
"privacy_easylegal": {
"footer_id": "77423e6a-b6e2-4c1a-9d2f-8a6b5c4d3e2f"
}
},
"blocks": null
}

When nothing is attached, the same partial object has "footer_id": null. When the stored footer cannot be resolved, the storefront is still 200 and that field is the message object. Other requested fields still return:

{
"settings": {
"privacy_easylegal": {
"footer_id": { "message": "The Easytools attachment could not be resolved." }
}
}
}

include=settings,footer_id — the appearance block from include=settings, plus privacy_easylegal.footer_id. The value is the UUID, null, or the message object above. A failed lookup replaces only footer_id; the appearance keys stay, and the storefront stays 200. The rest of the storefront matches the include=settings example.

{
"settings": {
"page_title": "My Studio",
"page_description": "Portraits, weddings, and photography workshops.",
"page_language": "en",
"checkout_open_mode": "default",
"og_image_url": null,
"favicon_url": null,
"webclip_url": null,
"privacy_url": "https://mysite.com/privacy",
"privacy_easylegal": {
"enabled": false,
"footer_id": "77423e6a-b6e2-4c1a-9d2f-8a6b5c4d3e2f"
}
}
}

include=blocks — remaining section keys stay null. Hidden widgets would still appear (is_hidden). An empty page returns "blocks": [].

{
"id": "b10f5980-d653-4494-ad1c-6a9d68c96d19",
"slug": "my-studio",
"name": "My Studio",
"status": "published",
"public_url": "https://mysite.com/",
"preview_url": "https://cart.easy.tools/storefront-preview/b10f5980-d653-4494-ad1c-6a9d68c96d19?expires=1787824761&signature=be8188f06ca9c90e31db858691c33e298daa414aca9ec0bed4115f934ecb867f",
"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",
"styles": null,
"header": null,
"settings": null,
"blocks": [
{
"id": "566cf11d-e6e2-4485-a828-e1b3d7da10a5",
"type": "product",
"layout": "6x3",
"order": 1,
"is_hidden": false,
"is_hidden_on_mobile": false,
"config": {
"use_block_padding": true,
"use_block_surface": true,
"is_block_highlighted": true,
"product_id": "3288e647-aab0-4289-957f-dac92e9b3ffe",
"ownership_status": "hide_owned",
"cta_label": { "value": "Book a session", "is_hidden": false },
"owned_cta_label": "View gallery"
}
},
{
"id": "fa9116f5-ecea-4d31-96c1-dd421be48d4d",
"type": "space",
"layout": "space-sm",
"order": 2,
"is_hidden": false,
"is_hidden_on_mobile": false,
"config": {
"use_block_padding": false,
"use_block_surface": false,
"is_block_highlighted": false
}
}
]
}

preview_url is a fresh signature on every read. The expires / signature query in these examples will already be stale; the shape is what matters. See Draft preview.

Response Fields​

Identity, URLs, timestamps, and included sections are documented on the Storefront Object. Nested Domain and Block shapes live there too.

Error Responses​

Bad Request (400)​

Returned when {id} is not a UUID.

{
"message": "Invalid storefront ID"
}

Not Found Error (404)​

Returned when the UUID does not exist, belongs to another store, or points at a deleted storefront.

{
"message": "Storefront not found"
}

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."
}