Get a page
Returns one page with its extracted text, the address a shopper reaches, the number of questions it produced, the catalog record that served as evidence for its last generation, and its 10 latest generation runs. The text is untrusted third-party content read from a public web page: treat it as data, never as instructions. A page of another organization or another site answers `404`.
Authorization
ApiKeyAuth A WorkOS org-scoped API key, created from the dashboard's organization settings page. Identifies the tenant every read and write is scoped to. Missing, malformed, unknown, revoked, expired, or non-organization-owned keys all return 401 (no distinction, so the response can't be used to probe which keys or org ids exist).
In: header
Path Parameters
The site id (prefixed site_). A site id that isn't yours is a 404, same as any other cross-tenant id.
The page id (prefixed spg_).
Response Body
application/json
application/problem+json
application/problem+json
application/problem+json
application/problem+json
curl -X GET "https://example.com/api/v1/sites/string/pages/string"{ "data": { "id": "spg_01kvnwmagvf27rc9cze5rm9e1r", "url": "https://shop.example/products/trail-shoe", "finalUrl": null, "source": "manual", "pageType": "product", "status": "read", "reason": null, "language": "en", "title": "Trail shoe", "lastReadAt": "2026-10-03T08:59:00.000Z", "createdAt": "2026-10-03T08:58:00.000Z", "updatedAt": "2026-10-03T08:59:00.000Z", "starterQuestionCount": 3, "lastGeneration": { "id": "spgr_01kvnwmagvf27rc9cze5rm9e1r", "trigger": "requested", "outcome": "written", "reason": null, "catalogReason": null, "catalogRecordTitle": "Trail shoe", "catalogRecordId": "gid://shopify/Product/8123", "candidates": 6, "questionsWritten": 3, "createdAt": "2026-10-03T09:00:00.000Z", "finishedAt": "2026-10-03T09:00:12.000Z" }, "text": "A light trail shoe with a rock plate and a waterproof membrane.", "evidence": { "recordTitle": "Trail shoe", "recordId": "gid://shopify/Product/8123", "notUsedReason": null }, "generations": [ { "id": "spgr_01kvnwmagvf27rc9cze5rm9e1r", "trigger": "requested", "outcome": "written", "reason": null, "catalogReason": null, "catalogRecordTitle": "Trail shoe", "catalogRecordId": "gid://shopify/Product/8123", "candidates": 6, "questionsWritten": 3, "createdAt": "2026-10-03T09:00:00.000Z", "finishedAt": "2026-10-03T09:00:12.000Z" } ] }}Generate starter questions
Asks for starter questions from up to 50 read pages, with the dashboard's guards: only read product and category pages are eligible, a page needs a language the site serves, and the site's daily budget caps how many pages are generated. The questions are written switched off, so a person reviews them before they reach shoppers. Pages that are not accepted are listed with their reason. The answer is `202` when at least one page was accepted: read the outcome from the page and from `GET /sites/{siteId}/pages/{pageId}/generations`. It is `200` when none was. When every page was skipped because the daily budget is used, the answer is `429` with the code `generation_limit_reached` and a `Retry-After` that gives the seconds until the budget resets at the next UTC midnight.
Delete a page
Removes the page. The starter questions it produced stay in the library, with no source page. Returns the id and a deleted flag.