Skip to main content
Blog endpoints sit under /api/brands/{brand}/blogs/ with brandAccess middleware. Authenticate with EF-Access-Key.

List Blogs

number
Results per page (1–100, default: 25)
string
Search by name
string
newest, oldest, created_at, updated_at
cURL

List Blogs (Unpaginated)

Returns { id, name } for all blogs with a saved config — useful for dropdowns.

Get Blog


Create Blog

string
required
Blog name
number
ID of the domain this blog lives on
string
URL slug (kebab-case, max 255). Must be unique per brand + domain.
number
ID of the template to apply (context=blog)
string
slug_only, segment, or category
string
URL prefix for articles (max 64)
string
URL prefix for category pages (default: category, max 64)
string
URL prefix for tag pages (default: tag, max 64)
string
URL prefix for search results (default: search, max 64)
boolean
Enable comment system for articles
boolean
Require email confirmation before comments appear
object
SEO metadata object (meta title, description, OG tags, Twitter card fields)
cURL
name is always required — even on PUT/PATCH updates. A partial update that omits name will return a 422 validation error.

Update Blog

Same body as Create. name is still required.

Delete Blog


Clone Blog

Creates a copy of a blog within the same brand.
string
Name for the cloned blog (max 255). Defaults to "<original name> (Copy)" if omitted.
cURL

Export Blogs

array
Filter conditions (same as list query params)
array
Limit export to specific blog IDs
array
Columns to include

Blog Categories

List Categories

Create Category

string
required
Category name (max 255)
string
URL slug. Auto-generated from name if omitted; appends numeric suffix on collision.
string
Image URL (max 2048 chars)
object
SEO metadata (meta title, description, OG tags, Twitter card)
cURL

Update Category

Same body as Create (all fields optional on update).

Delete Category


Notes

  • Blog slugs must be globally unique per brand_id + domain_id combination
  • The clone endpoint copies the blog’s config, html, css, and interactions to the new blog. Slug uniqueness is handled automatically with a numeric suffix
  • The builder (GET/POST .../blogs/{blog}/builder) and articles CRUD endpoints are managed through the page builder and article editor controllers respectively