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

List Blogs

per_page
number
Results per page (1–100, default: 25)
q
string
Search by name
sort
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

name
string
required
Blog name
domain_id
number
ID of the domain this blog lives on
slug
string
URL slug (kebab-case, max 255). Must be unique per brand + domain.
brand_template_id
number
ID of the template to apply (context=blog)
article_url_pattern
string
slug_only, segment, or category
article_url_segment
string
URL prefix for articles (max 64)
category_url_segment
string
URL prefix for category pages (default: category, max 64)
tag_url_segment
string
URL prefix for tag pages (default: tag, max 64)
search_url_segment
string
URL prefix for search results (default: search, max 64)
comments_enabled
boolean
Enable comment system for articles
comments_require_email_confirmation
boolean
Require email confirmation before comments appear
seo_settings
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.
title
string
Name for the cloned blog (max 255). Defaults to "<original name> (Copy)" if omitted.
cURL

Export Blogs

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

Blog Categories

List Categories

Create Category

name
string
required
Category name (max 255)
slug
string
URL slug. Auto-generated from name if omitted; appends numeric suffix on collision.
hero_image
string
Image URL (max 2048 chars)
seo_settings
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