Posts
Published posts, paginated; filter by category or tag. Fetch one with posts/{slug}.
Authorization
clientKey The store's API key (Dashboard → Settings → API keys). pk_live_… public keys are for browser code and only work from an origin on the key's allowlist; sk_live_… private keys are for servers and native apps and need no Origin.
In: header
Query Parameters
length <= 100length <= 1401 <= value <= 50Keyset cursor: pass the previous page next_cursor. Walk while has_more is true; a stale, tampered, cross-list or filter-changed cursor answers 422 starting_after_invalid. Never combine with page.
Items per read (alias of per_page, max 50). page mode caps at page 50 (page_too_deep); walk the cursor past that.
Render this read in a published store locale (see GET store/locales). Unknown or unpublished codes fall back to the primary locale; the answer carries the locale used in Content-Language.
Header Parameters
Your store API key (Dashboard → Settings → API keys). pk_live_… public keys are for browser code and only work from an origin on the key's allowlist; sk_live_… private keys are for servers and native apps and need no Origin.
Your own correlation id (8–128 chars, ^[A-Za-z0-9_.:-]+$). Echoed back on the response and on every log line of the request; one is generated when you omit it.
Response Body
application/json
application/json
application/json
application/json
application/json
curl -X GET "https://example.com/store/posts?tag=ankara&category=style-notes&per_page=12&limit=15" \ -H "X-Client-Key: {{clientKey}}"{ "status": "success", "message": "Store posts retrieved", "data": [ { "id": "019b0c4d-5e6f-7a8b-9c0d-1e2f3a4b5c73", "type": "post", "template": null, "slug": "how-to-style-ankara", "title": "How to style ankara without looking costumey", "content": [ { "type": "content", "data": { "markdown": "Rule one: one print at a time. Rule two: modern shoes. Rule three: confidence." } } ], "media_index": {}, "excerpt": "Three rules for modern ankara.", "cover_image_url": "https://media.usequeek.com/uploads/stores/2207/posts/ankara-style.jpg", "cover_image_variants": null, "tags": [ "ankara", "style" ], "seo": { "title": "How to style ankara | Zuri Atelier", "description": "Three rules for modern ankara." }, "blog_categories": [ { "name": "Style Notes", "slug": "style-notes" } ], "reading_time": 1, "author": { "name": "Zuri Atelier", "avatar_url": "https://media.usequeek.com/uploads/stores/2207/logo.png" }, "is_home": false, "chrome": "full", "show_page_title": true, "status": "published", "position": 1, "published_at": "2026-09-12T07:00:00.000000Z", "created_at": "2026-09-10T15:20:00.000000Z", "updated_at": "2026-09-12T07:00:00.000000Z" }, { "id": "019b0c4d-5e6f-7a8b-9c0d-1e2f3a4b5c74", "type": "post", "template": null, "slug": "cotton-vs-ankara", "title": "Cotton vs ankara: what we cut and why", "content": [ { "type": "content", "data": { "markdown": "Zuri Atelier cuts every piece in our Lekki atelier." } } ], "media_index": {}, "excerpt": "Fabric notes from the atelier.", "cover_image_url": "https://media.usequeek.com/uploads/stores/2207/posts/fabric.jpg", "cover_image_variants": null, "tags": [ "fabric" ], "seo": { "title": "Cotton vs ankara | Zuri Atelier", "description": "Fabric notes from the atelier." }, "blog_categories": [ { "name": "Fabric Guide", "slug": "fabric-guide" } ], "reading_time": 1, "author": { "name": "Zuri Atelier", "avatar_url": "https://media.usequeek.com/uploads/stores/2207/logo.png" }, "is_home": false, "chrome": "full", "show_page_title": true, "status": "published", "position": 2, "published_at": "2026-09-05T07:00:00.000000Z", "created_at": "2026-09-03T15:20:00.000000Z", "updated_at": "2026-09-05T07:00:00.000000Z" } ], "has_more": false, "next_cursor": null}A published post by slug with its cover image, excerpt and content[] blocks.
Authorization
clientKey The store's API key (Dashboard → Settings → API keys). pk_live_… public keys are for browser code and only work from an origin on the key's allowlist; sk_live_… private keys are for servers and native apps and need no Origin.
In: header
Path Parameters
Query Parameters
Render this read in a published store locale (see GET store/locales). Unknown or unpublished codes fall back to the primary locale; the answer carries the locale used in Content-Language.
Header Parameters
Your store API key (Dashboard → Settings → API keys). pk_live_… public keys are for browser code and only work from an origin on the key's allowlist; sk_live_… private keys are for servers and native apps and need no Origin.
Your own correlation id (8–128 chars, ^[A-Za-z0-9_.:-]+$). Echoed back on the response and on every log line of the request; one is generated when you omit it.
Response Body
application/json
application/json
application/json
application/json
application/json
curl -X GET "https://example.com/store/posts/how-to-style-ankara" \ -H "X-Client-Key: {{clientKey}}"{ "status": "success", "message": "Store post retrieved", "data": { "id": "019b0c4d-5e6f-7a8b-9c0d-1e2f3a4b5c73", "type": "post", "template": null, "slug": "how-to-style-ankara", "title": "How to style ankara without looking costumey", "content": [ { "type": "content", "data": { "markdown": "Rule one: one print at a time. Rule two: modern shoes. Rule three: confidence." } } ], "media_index": {}, "excerpt": "Three rules for modern ankara.", "cover_image_url": "https://media.usequeek.com/uploads/stores/2207/posts/ankara-style.jpg", "cover_image_variants": null, "tags": [ "ankara", "style" ], "seo": { "title": "How to style ankara | Zuri Atelier", "description": "Three rules for modern ankara." }, "blog_categories": [ { "name": "Style Notes", "slug": "style-notes" } ], "reading_time": 1, "author": { "name": "Zuri Atelier", "avatar_url": "https://media.usequeek.com/uploads/stores/2207/logo.png" }, "is_home": false, "chrome": "full", "show_page_title": true, "status": "published", "position": 1, "published_at": "2026-09-12T07:00:00.000000Z", "created_at": "2026-09-10T15:20:00.000000Z", "updated_at": "2026-09-12T07:00:00.000000Z", "related": [ { "id": "019b0c4d-5e6f-7a8b-9c0d-1e2f3a4b5c74", "type": "post", "template": null, "slug": "cotton-vs-ankara", "title": "Cotton vs ankara: what we cut and why", "content": [ { "type": "content", "data": { "markdown": "Zuri Atelier cuts every piece in our Lekki atelier." } } ], "media_index": {}, "excerpt": "Fabric notes from the atelier.", "cover_image_url": "https://media.usequeek.com/uploads/stores/2207/posts/fabric.jpg", "cover_image_variants": null, "tags": [ "fabric" ], "seo": { "title": "Cotton vs ankara | Zuri Atelier", "description": "Fabric notes from the atelier." }, "blog_categories": [ { "name": "Fabric Guide", "slug": "fabric-guide" } ], "reading_time": 1, "author": { "name": "Zuri Atelier", "avatar_url": "https://media.usequeek.com/uploads/stores/2207/logo.png" }, "is_home": false, "chrome": "full", "show_page_title": true, "status": "published", "position": 2, "published_at": "2026-09-05T07:00:00.000000Z", "created_at": "2026-09-03T15:20:00.000000Z", "updated_at": "2026-09-05T07:00:00.000000Z" } ] }}