> ## Documentation Index
> Fetch the complete documentation index at: https://buttercms.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Blog Posts: key concepts

> Understanding ButterCMS Blog Posts, including the predefined schema, built-in organizational features, and publication characteristics.

## Overview

ButterCMS Blog Posts use a standardized, predefined schema that provides out-of-the-box functionality for chronological content with built-in organizational and authoring features.

Unlike Pages and Collections, the Blog Post schema **cannot be modified** through the dashboard or API. This standardization ensures consistency across all blog content and enables built-in features that work reliably across all ButterCMS accounts.

## Predefined field structure

| Field                | Description                                                  |
| -------------------- | ------------------------------------------------------------ |
| **Title**            | SEO-optimized title with automatic URL slug generation       |
| **Body**             | Rich HTML content supporting full editorial formatting       |
| **Summary**          | Optional excerpt for post previews and social sharing        |
| **Featured Image**   | Dedicated image field with automatic CDN optimization        |
| **SEO Metadata**     | Built-in meta title, meta description, and Open Graph fields |
| **Publication Date** | Timestamp management with scheduling capabilities            |
| **Status**           | Draft, published, and scheduled state management             |

The body field supports comprehensive HTML including embedded media, formatted text, links, and other rich content.

Blog Posts include built-in **Open Graph and Twitter Card metadata** for proper social media presentation when content is shared.

## Categorization and tagging

### Categories

* **Hierarchical organization**: Categories support parent-child relationships for content taxonomy
* **URL integration**: Categories automatically generate SEO-friendly URLs
* **Filtering**: API endpoints support category-based filtering
* **RSS integration**: Category-specific RSS feeds are automatically generated

### Tags

* **Flexible labeling**: Non-hierarchical content labeling for cross-cutting themes
* **API filtering**: `tag_slug` parameter for precise content queries
* **Tag clouds**: Automatic tag frequency calculation

Use categories for broad, permanent organizational structure and tags for specific topics or temporal content connections.

## Author management

* **Author profiles**: Dedicated author entities with names, biographies, profile images, and social links
* **Multi-author support**: Posts can be attributed to multiple authors
* **Author archives**: Automatic author-specific content archives and RSS feeds
* **API access**: Author information is accessible through dedicated endpoints (`/authors/`, `/authors/{slug}/`)

## Built-in features

| Feature                      | Description                                          |
| ---------------------------- | ---------------------------------------------------- |
| **RSS 2.0 & Atom feeds**     | Automatic feed generation for content syndication    |
| **XML sitemaps**             | Search engine sitemap integration                    |
| **Previous/Next navigation** | Automatic post navigation for chronological browsing |
| **WordPress import**         | Built-in migration tool from WordPress               |

## Publication states

Blog Posts use a **simplified three-state system** (draft, published, scheduled) without the complex versioning available to Pages.

| State         | Description                                                          |
| ------------- | -------------------------------------------------------------------- |
| **Draft**     | Accessible only via preview mode                                     |
| **Published** | Live and accessible through all blog endpoints with CDN caching      |
| **Scheduled** | Automatically published at a specified time via dashboard scheduling |

**Versioning limitation**: Unlike Pages, Blog Posts **do not support creating draft versions over existing published content**. Once published, a post can be unpublished (returned to draft) but cannot maintain simultaneous draft and published versions.

**Write API behavior**: Blog Posts are created and published immediately when using the Write API unless explicitly set to draft status.

## Localization

Blog Posts support native localization via the `locale` query parameter on all blog API endpoints (list, retrieve, search, create, update, delete).

* **Creating translations**: To create a translated version of an existing post, use the Update endpoint (`PATCH`) with the desired `locale` parameter. A new locale variant is created and linked to the original post
* **Default locale**: When `locale` is omitted, the API returns content in your organization's default locale
* **Independent publishing**: Each locale version can be published independently
* **Backward compatible**: The `locale` field is not included in API responses — use the query parameter to control which locale is returned

**Example — list posts in Spanish**:

```bash theme={null}
GET /v2/posts/?auth_token=TOKEN&locale=es
```

## WordPress import

ButterCMS provides built-in WordPress import functionality:

| Data                       | Migration behavior                                          |
| -------------------------- | ----------------------------------------------------------- |
| Post titles, bodies, dates | Transferred accurately                                      |
| Categories                 | Mapped with hierarchy preservation                          |
| Tags                       | Converted maintaining content relationships                 |
| Authors                    | Created as ButterCMS author entities                        |
| Media                      | Transferred to ButterCMS media library with CDN integration |

WordPress import is a one-time migration tool requiring careful planning for large content volumes.

## API characteristics

**Performance parameters**:

* `locale` — filter posts by locale (defaults to organization's default locale)
* `exclude_body=true` — reduces response size by 50–70% for listing operations
* `category_slug` — native category-based filtering
* `tag_slug` — built-in tag filtering
* `author_slug` — filter by author

**Example — list posts excluding body**:

```bash theme={null}
GET /v2/posts/?auth_token=TOKEN&exclude_body=true&category_slug=technology
```

**Example — filter by tag**:

```bash theme={null}
GET /v2/posts/?auth_token=TOKEN&tag_slug=getting-started
```

Blog Post APIs are optimized for chronological access patterns with built-in pagination, sorting, and filtering that support common blog functionality requirements.

## Next steps

<CardGroup cols={2}>
  <Card title="Read API — Blog Posts" icon="book-open" href="../../api-reference/blog-posts/list-all-posts">
    Fetch blog posts via the Read API
  </Card>

  <Card title="Write API — Blog Posts" icon="pen" href="../../api-reference/blog-posts/create-blog-post">
    Create and update blog posts
  </Card>

  <Card title="Blog metadata" icon="tags" href="../../api-reference/blog-metadata/list-all-authors">
    Authors, categories, and tags endpoints
  </Card>

  <Card title="Pages — key concepts" icon="file" href="./pages-key-concepts">
    Use Page Types for localized blog content
  </Card>
</CardGroup>
