Skip to main content

Get Pages

Retrieve a list of your store's landing pages.

Pages are returned newest-updated first. Each page includes its custom domains, so you can answer "what are the analytics for domain.com?" by matching the domain in this response, reading that page's id, and calling Get Page Analytics - without a separate domain lookup.

When your store has no landing pages, the list is empty.

Request

GET /pages

Query Parameters

ParameterTypeRequiredDefaultDescription
searchstringNo-Partial, case-insensitive match on the page name.
statusstringNo-Filter by publication status: draft or published. Omit for pages in any state.
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 an out-of-range per_page - returns a 400 (see Bad Request). The search term is free-text and is always accepted.

Example Request

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

Response

Success Response (200)

Returns a paginated list of pages.

{
"items": [
{
"id": "DeIS7b",
"slug": "my-landing-page",
"name": "My landing page",
"status": "published",
"updated_at": "2026-03-14T10:22:00+00:00",
"domains": [
{
"domain": "shop.example.com",
"status": "configured",
"include_www": true
}
]
},
{
"id": "N_9mSU",
"slug": "testowa-strona",
"name": "testowa strona",
"status": "draft",
"updated_at": "2025-08-07T07:32:35+00:00",
"domains": []
}
],
"pagination": {
"current_page": 1,
"total_pages": 1,
"per_page": 25,
"total": 2
}
}

Response Fields

FieldTypeNullableDescription
idstringNoStable page identifier - a short, URL-safe string (not a UUID). This is the analytics key; pass it to Get Page Analytics.
slugstringYesURL slug for the page. Mutable (changes when the slug is edited), so use it for display only - never as a stable id.
namestringNoPage display name.
statusstringNoPublication status: draft or published.
updated_atstringNoWhen the page was last updated (ISO 8601). Pages are ordered by this field, newest first.
domainsarrayNoCustom domains mapped to this page. Empty when the page has no custom domain. See Domain.

Domain

FieldTypeNullableDescription
domainstringNoThe custom domain.
statusstringNoConfiguration status of the domain (e.g. pending, configured, failed).
include_wwwbooleanNoWhether the www. subdomain is included.

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 pages matching the applied filters.

Error Responses

Bad Request (400)

Returned when status is not draft or published, or when 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."
}

Service Unavailable (502)

Returned when the analytics data source is temporarily unavailable. Retry shortly; do not treat it as an empty list.

{
"message": "The Easypage service is temporarily unavailable. Please retry."
}