| meta | No | Structured custom field values, keyed by field key (see list_post_type_fields). Validated against the post type field schema. Use this for all machine-readable data — never put JSON in excerpt. | |
| slug | No | URL slug. Auto-generated from title if omitted; collisions get -2, -3 suffix. | |
| type | Yes | Post type slug (e.g. blog_post, page, treatment). Must exist in post_types for this company. | |
| title | Yes | Post title | |
| blocks | No | Ordered array of content blocks. Each block has { id, version, type, data } where type is one of: paragraph, heading, image, list, quote, code, divider, spacer, embed, html, youtube, file, faq, callout, gallery, cta, accordion, product, columns. Unknown types are rejected. | |
| status | No | Status (default draft) | |
| tagIds | No | Tag IDs to attach to the post | |
| excerpt | No | Plain-text summary only — never JSON. Auto-derived from the first paragraph/heading block if omitted and the post type supports excerpts. | |
| parentId | No | Parent post ID for nested types (e.g. pages). | |
| seoTitle | No | SEO title override | |
| sortOrder | No | Sort order (lower = earlier) | |
| visibility | No | Visibility (default public) | |
| categoryIds | No | Category IDs (post types with supportsCategories only) | |
| publishedAt | No | ISO timestamp; required when status=scheduled. | |
| featuredImage | No | Cover image URL | |
| seoDescription | No | SEO meta description | |