Skip to main content
GET
/
page
/
{url}
curl 'https://fetch-<project-token>.frontic.com/page/<your-shop>/uk/women/shoes/running' \
  -H 'fs-context: <context-key>'
{
  "type": "Category",
  "block": "CategoryDetail",
  "data": {
    "title": "Running Shoes",
    "intro": "Trail runners and road shoes for every distance.",
    "products": { "items": [] }
  },
  "route": {
    "code": 200,
    "alternates": [
      {
        "url": "<your-shop>/de/damen/schuhe/laufschuhe",
        "region": "de",
        "locale": "de-DE",
        "hreflang": "de-DE"
      }
    ],
    "context": {
      "region": "uk",
      "locale": "en-GB",
      "scope": "public",
      "domain": "<your-shop>/uk"
    }
  }
}

Documentation Index

Fetch the complete documentation index at: https://docs.frontic.com/llms.txt

Use this file to discover all available pages before exploring further.

Fetch a Page by its full URL. Frontic resolves the URL against your domain mappings to determine the scope, region, and locale, looks up the matching page record, and returns its block payload along with route metadata. The page endpoint always returns HTTP 200 OK. Logical redirects and not-found cases are encoded in the response body’s route object so the consuming app can decide what to do (redirect, render a 404 page, etc.) rather than relying on HTTP-level status codes.

Path Parameters

project-token
string
required
Your project’s Fetch token, embedded in the subdomain.
url
string
required
The full URL to resolve, without the https:// scheme. Example: <your-shop>/uk/women/shoes/running.

Headers

See Headers on the overview for the full set. The page endpoint primarily uses fs-context, fs-version, and fs-secret (only when the project has fetch keys configured). The URL’s host already drives domain resolution, so fs-domain typically isn’t needed for page calls.

Response

Always 200 OK at the HTTP level. The body’s route.code carries the logical state.
type
string
Page type identifier when content is found (e.g. ProductDetail). Omitted for redirects and not-found responses.
block
string
The block name shaping data. Omitted for redirects and not-found responses.
data
object
The block payload — typed against the page’s connected Detail Block. Field shapes depend on your project. Omitted for redirects and not-found responses.
route
object
required
Route metadata for the resolved (or not-resolved) URL.
curl 'https://fetch-<project-token>.frontic.com/page/<your-shop>/uk/women/shoes/running' \
  -H 'fs-context: <context-key>'
{
  "type": "Category",
  "block": "CategoryDetail",
  "data": {
    "title": "Running Shoes",
    "intro": "Trail runners and road shoes for every distance.",
    "products": { "items": [] }
  },
  "route": {
    "code": 200,
    "alternates": [
      {
        "url": "<your-shop>/de/damen/schuhe/laufschuhe",
        "region": "de",
        "locale": "de-DE",
        "hreflang": "de-DE"
      }
    ],
    "context": {
      "region": "uk",
      "locale": "en-GB",
      "scope": "public",
      "domain": "<your-shop>/uk"
    }
  }
}

Status codes

CodeWhen
200Always — including redirect and not-found cases (logical status is in route.code).
401fs-secret missing or wrong (only when the project has fetch keys configured)
403Project’s plan limit for Fetch API requests exceeded
404The URL didn’t resolve to a configured project domain at all (couldn’t determine which project the request was for).
The Nuxt module’s useFronticPage composable maps route.code back to HTTP-style behaviour for you (redirectOn301, throwOn404).