Create Blog Post
Create a blog post on the calling key’s OWN organisation blog — the post is
scoped to the key’s org, so callers normally send only title (+ optional fields).
Defaults status='draft'. Slug is derived from the title when omitted and must be
unique per org. Honours Idempotency-Key. Requires the blog:write scope (NOT
granted by the write umbrella).
target/brand are reserved for EquateIt marketing sites: target='platform'
writes a public marketing post (organization_id NULL), requires the key’s
platform-blog capability, and brand (required for platform) selects the surface.
Authorizations
Org API key as Token token=ei_live_...
Headers
Body
POST /v1/blog-posts → blog_posts. Creates a post on the calling key's OWN
organisation blog — the post is scoped to the org the API key belongs to, so most
callers send only title (+ content and other optional fields) and nothing else.
Defaults status='draft' (never auto-publish an unreviewed post). organization_id /
created_by / timestamps are server-set, never accepted.
target / brand are reserved for EquateIt-operated marketing sites and are NOT
needed for normal org publishing: target='platform' writes to a public marketing
blog and requires the key's allow_platform_blog capability (not granted to ordinary
org keys), with brand selecting the surface.
1 - 300URL slug; slugified from the title when omitted. Unique per org.
200^[a-z0-9]+(?:-[a-z0-9]+)*$2000Markdown body.
200000502000200200ISO date; defaults to today.
draft, published Leave as 'org' (the default) to post to your own organisation's blog. 'platform' targets an EquateIt-operated marketing site and requires the key's platform-blog capability.
platform, org Only for platform posts — which marketing surface (equateit → equateit.com.au, classquill → classquill.com). Omit for org posts.
equateit, classquill ISO 8601 datetime (e.g. '2026-08-01T09:00:00Z'). When set with status='draft', the post will be published automatically by a background job within 15 minutes of this time. Pass null to cancel a scheduled publish.
Response
Successful Response
A blog post row returned by /v1/blog-posts. target is derived from
organization_id (NULL → 'platform', else 'org').