$ cli-blog docs
API ReferenceAPI Reference

Posts

Resource overviewThe core Markdown content resource and its complete publishing lifecycle.
AuthenticationPublic reads or private writes
Common workflowCreate a draft, attach relations, publish it, then fetch lean or expanded delivery responses.
Read the action guide
Key type: Public or private key

Discover localized blog posts with efficient cursor pagination by default, or opt into exact numbered pagination with page and per_page. Numbered pagination cannot be combined with after or limit. Archive filters, featured state, full-text search, field groups, and opt-in related objects are supported. Locale requests do not fall back in v1; omitted locale uses the organization primary/default locale.

Authorization

ApiKeyAuth
x-api-key<token>

Organization API key. Each key selects exactly one organization; do not send an organization ID separately. Public keys use the cli_blog_pk_ prefix and are intended for published-content delivery reads. Private keys use the cli_blog_sk_ prefix, belong only in trusted environments, and are required for write, publish, delete, and editorial-state workflows when their scopes allow it.

In: header

Query Parameters

after?string

Opaque cursor returned by a previous post list using the same filters and sort.

limit?|

Maximum posts to return. Defaults to 20. The maximum accepted value is 100.

page?|

One-based exact page number. Supplying page selects numbered pagination and cannot be combined with after or limit.

per_page?|

Items per numbered page. Requires page, defaults to 20, and cannot be combined with after or limit.

locale?string

BCP 47 post locale to list, for example en-US or es-MX. Category/tag slug filters resolve in this locale. Omitted locale uses the organization's primary/default locale.

status?string

Private-key filter for editorial states. Public API keys always see published posts only.

author_id?string

Comma-separated author profile IDs. Values inside this author group match any; author filters intersect with taxonomy and search filters.

author_slug?string

Comma-separated organization-scoped author slugs.

author_match?string

Whether the positive values in this relation group must match any value or all values.

exclude_author_id?string

Comma-separated author profile IDs that matching posts must not have.

exclude_author_slug?string

Comma-separated author slugs that matching posts must not have.

category_id?string

Comma-separated shared category concept IDs assigned to matching posts.

category_slug?string

Comma-separated category slugs in the requested locale.

category_match?string

Whether the positive values in this relation group must match any value or all values.

exclude_category_id?string

Comma-separated category IDs that matching posts must not have.

exclude_category_slug?string

Comma-separated category slugs that matching posts must not have.

tag_id?string

Comma-separated shared tag concept IDs assigned to matching posts.

tag_slug?string

Comma-separated tag slugs in the requested locale.

tag_match?string

Whether the positive values in this relation group must match any value or all values.

exclude_tag_id?string

Comma-separated tag IDs that matching posts must not have.

exclude_tag_slug?string

Comma-separated tag slugs that matching posts must not have.

search?string

Postgres full-text search over post title, excerpt, and Markdown body.

sort?string

Post ordering field. Public archives default to published_at; search defaults to relevance.

direction?string

Sort direction. Defaults to desc.

fields?array<>

Post field groups to return. Identity fields id, object, content_type, organization_id, and locale are always returned. Lists default to summary; post retrieval defaults to every group.

  • summary: title, slug, excerpt, is_featured, featured_media_asset_id, media_asset_ids, published_at, created_at, updated_at
  • content: body_markdown and table_of_contents derived from H1/H2 headings
  • seo: seo_title, seo_description, canonical_url, focus_keyphrase, seo_keywords, robots_index, robots_follow, Open Graph fields, X/Twitter fields, schema_type
  • workflow: status, scheduled_at, version
  • metadata: metadata
include?array<>

Related objects to expand separately from fields.

  • authors: byline author profile objects
  • categories: assigned categories localized to the post locale
  • tags: assigned tags localized to the post locale
  • media: media assets referenced by the post, including featured and social preview assets
  • translations: linked localized post availability

Response Body

application/json

application/json

application/json

application/json

application/json

application/json

curl -X GET "https://example.com/v1/posts"
{  "object": "list",  "has_more": true,  "next_cursor": "string",  "page": 0,  "per_page": 0,  "total_items": 0,  "total_pages": 0,  "data": [    {      "id": "string",      "object": "post",      "organization_id": "string",      "content_type": "blog_post",      "locale": "string",      "status": "string",      "title": "string",      "slug": "string",      "is_featured": true,      "excerpt": "string",      "body_markdown": "string",      "table_of_contents": [        {          "id": "string",          "depth": 1,          "text": "string"        }      ],      "seo_title": "string",      "seo_description": "string",      "canonical_url": "string",      "focus_keyphrase": "string",      "seo_keywords": [        "string"      ],      "robots_index": true,      "robots_follow": true,      "open_graph_title": "string",      "open_graph_description": "string",      "open_graph_media_asset_id": "string",      "twitter_title": "string",      "twitter_description": "string",      "twitter_media_asset_id": "string",      "schema_type": "string",      "featured_media_asset_id": "string",      "media_asset_ids": [        "string"      ],      "published_at": "string",      "scheduled_at": "string",      "version": 0,      "metadata": null,      "created_at": "string",      "updated_at": "string",      "authors": [        {          "id": "string",          "object": "author",          "organization_id": "string",          "public_name": "string",          "slug": "string",          "bio": "string",          "avatar_media_id": "string",          "avatar_url": "string",          "website_url": "string",          "metadata": null,          "created_at": "string",          "updated_at": "string"        }      ],      "categories": [        {          "id": "string",          "object": "taxonomy_term",          "organization_id": "string",          "taxonomy_type": "string",          "parent_taxonomy_term_id": "string",          "locale": "string",          "name": "string",          "slug": "string",          "description": "string",          "seo_title": "string",          "seo_description": "string",          "canonical_url": "string",          "focus_keyphrase": "string",          "seo_keywords": [            "string"          ],          "robots_index": true,          "robots_follow": true,          "open_graph_title": "string",          "open_graph_description": "string",          "open_graph_media_asset_id": "string",          "twitter_title": "string",          "twitter_description": "string",          "twitter_media_asset_id": "string",          "schema_type": "string",          "metadata": null,          "created_at": "string",          "updated_at": "string",          "translations": [            {              "id": "string",              "locale": "string",              "name": "string",              "slug": "string"            }          ]        }      ],      "tags": [        {          "id": "string",          "object": "taxonomy_term",          "organization_id": "string",          "taxonomy_type": "string",          "parent_taxonomy_term_id": "string",          "locale": "string",          "name": "string",          "slug": "string",          "description": "string",          "seo_title": "string",          "seo_description": "string",          "canonical_url": "string",          "focus_keyphrase": "string",          "seo_keywords": [            "string"          ],          "robots_index": true,          "robots_follow": true,          "open_graph_title": "string",          "open_graph_description": "string",          "open_graph_media_asset_id": "string",          "twitter_title": "string",          "twitter_description": "string",          "twitter_media_asset_id": "string",          "schema_type": "string",          "metadata": null,          "created_at": "string",          "updated_at": "string",          "translations": [            {              "id": "string",              "locale": "string",              "name": "string",              "slug": "string"            }          ]        }      ],      "media": [        {          "id": "string",          "object": "media_asset",          "organization_id": "string",          "url": "string",          "original_filename": "string",          "alt_text": "string",          "caption": "string",          "mime_type": "string",          "width": 0,          "height": 0,          "size_bytes": 0,          "metadata": null,          "created_at": "string",          "updated_at": "string"        }      ],      "translations": [        {          "id": "string",          "locale": "string",          "slug": "string",          "status": "string"        }      ]    }  ]}
{  "error": {    "code": "invalid_request",    "message": "string",    "param": "string"  }}
{  "error": {    "code": "invalid_request",    "message": "string",    "param": "string"  }}
{  "error": {    "code": "invalid_request",    "message": "string",    "param": "string"  }}
{  "error": {    "code": "invalid_request",    "message": "string",    "param": "string"  }}
{  "error": {    "code": "invalid_request",    "message": "string",    "param": "string"  }}
Key type: Private key

Send a JSON body to create a localized blog post entry. Pair status "scheduled" with the same request's scheduled_at; timestamps at or before now are accepted and publish on the next scheduler run.

Authorization

ApiKeyAuth
x-api-key<token>

Organization API key. Each key selects exactly one organization; do not send an organization ID separately. Public keys use the cli_blog_pk_ prefix and are intended for published-content delivery reads. Private keys use the cli_blog_sk_ prefix, belong only in trusted environments, and are required for write, publish, delete, and editorial-state workflows when their scopes allow it.

In: header

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

application/json

application/json

application/json

application/json

application/json

curl -X POST "https://example.com/v1/posts" \  -H "Content-Type: application/json" \  -d '{    "title": "string"  }'
{  "id": "string",  "object": "post",  "organization_id": "string",  "content_type": "blog_post",  "locale": "string",  "status": "string",  "title": "string",  "slug": "string",  "is_featured": true,  "excerpt": "string",  "body_markdown": "string",  "table_of_contents": [    {      "id": "string",      "depth": 1,      "text": "string"    }  ],  "seo_title": "string",  "seo_description": "string",  "canonical_url": "string",  "focus_keyphrase": "string",  "seo_keywords": [    "string"  ],  "robots_index": true,  "robots_follow": true,  "open_graph_title": "string",  "open_graph_description": "string",  "open_graph_media_asset_id": "string",  "twitter_title": "string",  "twitter_description": "string",  "twitter_media_asset_id": "string",  "schema_type": "string",  "featured_media_asset_id": "string",  "media_asset_ids": [    "string"  ],  "published_at": "string",  "scheduled_at": "string",  "version": 0,  "metadata": null,  "created_at": "string",  "updated_at": "string",  "authors": [    {      "id": "string",      "object": "author",      "organization_id": "string",      "public_name": "string",      "slug": "string",      "bio": "string",      "avatar_media_id": "string",      "avatar_url": "string",      "website_url": "string",      "metadata": null,      "created_at": "string",      "updated_at": "string"    }  ],  "categories": [    {      "id": "string",      "object": "taxonomy_term",      "organization_id": "string",      "taxonomy_type": "string",      "parent_taxonomy_term_id": "string",      "locale": "string",      "name": "string",      "slug": "string",      "description": "string",      "seo_title": "string",      "seo_description": "string",      "canonical_url": "string",      "focus_keyphrase": "string",      "seo_keywords": [        "string"      ],      "robots_index": true,      "robots_follow": true,      "open_graph_title": "string",      "open_graph_description": "string",      "open_graph_media_asset_id": "string",      "twitter_title": "string",      "twitter_description": "string",      "twitter_media_asset_id": "string",      "schema_type": "string",      "metadata": null,      "created_at": "string",      "updated_at": "string",      "translations": [        {          "id": "string",          "locale": "string",          "name": "string",          "slug": "string"        }      ]    }  ],  "tags": [    {      "id": "string",      "object": "taxonomy_term",      "organization_id": "string",      "taxonomy_type": "string",      "parent_taxonomy_term_id": "string",      "locale": "string",      "name": "string",      "slug": "string",      "description": "string",      "seo_title": "string",      "seo_description": "string",      "canonical_url": "string",      "focus_keyphrase": "string",      "seo_keywords": [        "string"      ],      "robots_index": true,      "robots_follow": true,      "open_graph_title": "string",      "open_graph_description": "string",      "open_graph_media_asset_id": "string",      "twitter_title": "string",      "twitter_description": "string",      "twitter_media_asset_id": "string",      "schema_type": "string",      "metadata": null,      "created_at": "string",      "updated_at": "string",      "translations": [        {          "id": "string",          "locale": "string",          "name": "string",          "slug": "string"        }      ]    }  ],  "media": [    {      "id": "string",      "object": "media_asset",      "organization_id": "string",      "url": "string",      "original_filename": "string",      "alt_text": "string",      "caption": "string",      "mime_type": "string",      "width": 0,      "height": 0,      "size_bytes": 0,      "metadata": null,      "created_at": "string",      "updated_at": "string"    }  ],  "translations": [    {      "id": "string",      "locale": "string",      "slug": "string",      "status": "string"    }  ]}
{  "error": {    "code": "invalid_request",    "message": "string",    "param": "string"  }}
{  "error": {    "code": "invalid_request",    "message": "string",    "param": "string"  }}
{  "error": {    "code": "invalid_request",    "message": "string",    "param": "string"  }}
{  "error": {    "code": "invalid_request",    "message": "string",    "param": "string"  }}
{  "error": {    "code": "invalid_request",    "message": "string",    "param": "string"  }}
{  "error": {    "code": "invalid_request",    "message": "string",    "param": "string"  }}
Key type: Private key

Lists stored revision snapshots for a localized post entry. Cursor pagination is the default; page and per_page opt into exact numbered pagination and cannot be combined with after or limit.

Authorization

ApiKeyAuth
x-api-key<token>

Organization API key. Each key selects exactly one organization; do not send an organization ID separately. Public keys use the cli_blog_pk_ prefix and are intended for published-content delivery reads. Private keys use the cli_blog_sk_ prefix, belong only in trusted environments, and are required for write, publish, delete, and editorial-state workflows when their scopes allow it.

In: header

Path Parameters

id*string

Post ID or locale-scoped post slug.

Query Parameters

after?string

Opaque cursor returned by the previous revision list page.

limit?|

Maximum post revisions to return. Defaults to 20. The maximum accepted value is 100.

page?|

One-based exact page number. Supplying page selects numbered pagination and cannot be combined with after or limit.

per_page?|

Items per numbered page. Requires page, defaults to 20, and cannot be combined with after or limit.

locale?string

Post locale for slug lookup. Omit it to use the organization primary/default locale.

Response Body

application/json

application/json

application/json

application/json

application/json

application/json

application/json

curl -X GET "https://example.com/v1/posts/string/revisions"
{  "object": "list",  "has_more": true,  "next_cursor": "string",  "page": 0,  "per_page": 0,  "total_items": 0,  "total_pages": 0,  "data": [    {      "id": "string",      "object": "post_revision",      "parent_post_id": "string",      "title": "string",      "version": 0,      "created_at": "string",      "updated_at": "string"    }  ]}
{  "error": {    "code": "invalid_request",    "message": "string",    "param": "string"  }}
{  "error": {    "code": "invalid_request",    "message": "string",    "param": "string"  }}
{  "error": {    "code": "invalid_request",    "message": "string",    "param": "string"  }}
{  "error": {    "code": "invalid_request",    "message": "string",    "param": "string"  }}
{  "error": {    "code": "invalid_request",    "message": "string",    "param": "string"  }}
{  "error": {    "code": "invalid_request",    "message": "string",    "param": "string"  }}
Key type: Private key

Retrieves one revision snapshot for Markdown diff and restore workflows.

Authorization

ApiKeyAuth
x-api-key<token>

Organization API key. Each key selects exactly one organization; do not send an organization ID separately. Public keys use the cli_blog_pk_ prefix and are intended for published-content delivery reads. Private keys use the cli_blog_sk_ prefix, belong only in trusted environments, and are required for write, publish, delete, and editorial-state workflows when their scopes allow it.

In: header

Path Parameters

id*string

Post ID or locale-scoped post slug.

revisionId*string

Stored post revision ID.

Query Parameters

locale?string

Post locale for slug lookup. Omit it to use the organization primary/default locale.

Response Body

application/json

application/json

application/json

application/json

application/json

curl -X GET "https://example.com/v1/posts/string/revisions/string"
{  "id": "string",  "object": "post_revision",  "parent_post_id": "string",  "title": "string",  "version": 0,  "created_at": "string",  "updated_at": "string",  "body_markdown": "string"}
{  "error": {    "code": "invalid_request",    "message": "string",    "param": "string"  }}
{  "error": {    "code": "invalid_request",    "message": "string",    "param": "string"  }}
{  "error": {    "code": "invalid_request",    "message": "string",    "param": "string"  }}
{  "error": {    "code": "invalid_request",    "message": "string",    "param": "string"  }}
Key type: Public or private key

Resolve an old locale-scoped post slug after a slug change. Customer sites can use the returned to_slug and status_code to issue their own redirect on the public blog domain.

Authorization

ApiKeyAuth
x-api-key<token>

Organization API key. Each key selects exactly one organization; do not send an organization ID separately. Public keys use the cli_blog_pk_ prefix and are intended for published-content delivery reads. Private keys use the cli_blog_sk_ prefix, belong only in trusted environments, and are required for write, publish, delete, and editorial-state workflows when their scopes allow it.

In: header

Path Parameters

slug*string

Previous locale-scoped post slug.

Query Parameters

locale?string

Locale where the old slug was valid. Omit it to use the organization primary/default locale.

Response Body

application/json

application/json

application/json

application/json

application/json

curl -X GET "https://example.com/v1/posts/slug-redirects/string"
{  "object": "slug_redirect",  "content_type": "blog_post",  "locale": "string",  "from_slug": "string",  "to_slug": "string",  "post_id": "string",  "status_code": 0}
{  "error": {    "code": "invalid_request",    "message": "string",    "param": "string"  }}
{  "error": {    "code": "invalid_request",    "message": "string",    "param": "string"  }}
{  "error": {    "code": "invalid_request",    "message": "string",    "param": "string"  }}
{  "error": {    "code": "invalid_request",    "message": "string",    "param": "string"  }}
Key type: Public or private key

Retrieve a localized post by ID or locale-scoped slug. Use fields for field groups and include for related authors, categories, tags, or media.

Authorization

ApiKeyAuth
x-api-key<token>

Organization API key. Each key selects exactly one organization; do not send an organization ID separately. Public keys use the cli_blog_pk_ prefix and are intended for published-content delivery reads. Private keys use the cli_blog_sk_ prefix, belong only in trusted environments, and are required for write, publish, delete, and editorial-state workflows when their scopes allow it.

In: header

Path Parameters

id*string

Post ID or locale-scoped post slug.

Query Parameters

locale?string

Post locale for slug lookup. Omitted locale uses the organization's primary/default locale; v1 has no fallback.

fields?array<>

Post field groups to return. Identity fields id, object, content_type, organization_id, and locale are always returned. Lists default to summary; post retrieval defaults to every group.

  • summary: title, slug, excerpt, is_featured, featured_media_asset_id, media_asset_ids, published_at, created_at, updated_at
  • content: body_markdown and table_of_contents derived from H1/H2 headings
  • seo: seo_title, seo_description, canonical_url, focus_keyphrase, seo_keywords, robots_index, robots_follow, Open Graph fields, X/Twitter fields, schema_type
  • workflow: status, scheduled_at, version
  • metadata: metadata
include?array<>

Related objects to expand separately from fields.

  • authors: byline author profile objects
  • categories: assigned categories localized to the post locale
  • tags: assigned tags localized to the post locale
  • media: media assets referenced by the post, including featured and social preview assets
  • translations: linked localized post availability

Response Body

application/json

application/json

application/json

application/json

application/json

curl -X GET "https://example.com/v1/posts/string"
{  "id": "string",  "object": "post",  "organization_id": "string",  "content_type": "blog_post",  "locale": "string",  "status": "string",  "title": "string",  "slug": "string",  "is_featured": true,  "excerpt": "string",  "body_markdown": "string",  "table_of_contents": [    {      "id": "string",      "depth": 1,      "text": "string"    }  ],  "seo_title": "string",  "seo_description": "string",  "canonical_url": "string",  "focus_keyphrase": "string",  "seo_keywords": [    "string"  ],  "robots_index": true,  "robots_follow": true,  "open_graph_title": "string",  "open_graph_description": "string",  "open_graph_media_asset_id": "string",  "twitter_title": "string",  "twitter_description": "string",  "twitter_media_asset_id": "string",  "schema_type": "string",  "featured_media_asset_id": "string",  "media_asset_ids": [    "string"  ],  "published_at": "string",  "scheduled_at": "string",  "version": 0,  "metadata": null,  "created_at": "string",  "updated_at": "string",  "authors": [    {      "id": "string",      "object": "author",      "organization_id": "string",      "public_name": "string",      "slug": "string",      "bio": "string",      "avatar_media_id": "string",      "avatar_url": "string",      "website_url": "string",      "metadata": null,      "created_at": "string",      "updated_at": "string"    }  ],  "categories": [    {      "id": "string",      "object": "taxonomy_term",      "organization_id": "string",      "taxonomy_type": "string",      "parent_taxonomy_term_id": "string",      "locale": "string",      "name": "string",      "slug": "string",      "description": "string",      "seo_title": "string",      "seo_description": "string",      "canonical_url": "string",      "focus_keyphrase": "string",      "seo_keywords": [        "string"      ],      "robots_index": true,      "robots_follow": true,      "open_graph_title": "string",      "open_graph_description": "string",      "open_graph_media_asset_id": "string",      "twitter_title": "string",      "twitter_description": "string",      "twitter_media_asset_id": "string",      "schema_type": "string",      "metadata": null,      "created_at": "string",      "updated_at": "string",      "translations": [        {          "id": "string",          "locale": "string",          "name": "string",          "slug": "string"        }      ]    }  ],  "tags": [    {      "id": "string",      "object": "taxonomy_term",      "organization_id": "string",      "taxonomy_type": "string",      "parent_taxonomy_term_id": "string",      "locale": "string",      "name": "string",      "slug": "string",      "description": "string",      "seo_title": "string",      "seo_description": "string",      "canonical_url": "string",      "focus_keyphrase": "string",      "seo_keywords": [        "string"      ],      "robots_index": true,      "robots_follow": true,      "open_graph_title": "string",      "open_graph_description": "string",      "open_graph_media_asset_id": "string",      "twitter_title": "string",      "twitter_description": "string",      "twitter_media_asset_id": "string",      "schema_type": "string",      "metadata": null,      "created_at": "string",      "updated_at": "string",      "translations": [        {          "id": "string",          "locale": "string",          "name": "string",          "slug": "string"        }      ]    }  ],  "media": [    {      "id": "string",      "object": "media_asset",      "organization_id": "string",      "url": "string",      "original_filename": "string",      "alt_text": "string",      "caption": "string",      "mime_type": "string",      "width": 0,      "height": 0,      "size_bytes": 0,      "metadata": null,      "created_at": "string",      "updated_at": "string"    }  ],  "translations": [    {      "id": "string",      "locale": "string",      "slug": "string",      "status": "string"    }  ]}
{  "error": {    "code": "invalid_request",    "message": "string",    "param": "string"  }}
{  "error": {    "code": "invalid_request",    "message": "string",    "param": "string"  }}
{  "error": {    "code": "invalid_request",    "message": "string",    "param": "string"  }}
{  "error": {    "code": "invalid_request",    "message": "string",    "param": "string"  }}
Key type: Private key

Send a JSON body to update a post by ID or locale-scoped slug. Pair status "scheduled" with the same request's scheduled_at; timestamps at or before now are accepted and publish on the next scheduler run. Use expected_version when you need optimistic conflict protection.

Authorization

ApiKeyAuth
x-api-key<token>

Organization API key. Each key selects exactly one organization; do not send an organization ID separately. Public keys use the cli_blog_pk_ prefix and are intended for published-content delivery reads. Private keys use the cli_blog_sk_ prefix, belong only in trusted environments, and are required for write, publish, delete, and editorial-state workflows when their scopes allow it.

In: header

Path Parameters

id*string

Query Parameters

locale?string

Post locale for slug lookup. Omit it to use the organization primary/default locale.

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

application/json

application/json

application/json

application/json

application/json

application/json

curl -X POST "https://example.com/v1/posts/string" \  -H "Content-Type: application/json" \  -d '{}'
{  "id": "string",  "object": "post",  "organization_id": "string",  "content_type": "blog_post",  "locale": "string",  "status": "string",  "title": "string",  "slug": "string",  "is_featured": true,  "excerpt": "string",  "body_markdown": "string",  "table_of_contents": [    {      "id": "string",      "depth": 1,      "text": "string"    }  ],  "seo_title": "string",  "seo_description": "string",  "canonical_url": "string",  "focus_keyphrase": "string",  "seo_keywords": [    "string"  ],  "robots_index": true,  "robots_follow": true,  "open_graph_title": "string",  "open_graph_description": "string",  "open_graph_media_asset_id": "string",  "twitter_title": "string",  "twitter_description": "string",  "twitter_media_asset_id": "string",  "schema_type": "string",  "featured_media_asset_id": "string",  "media_asset_ids": [    "string"  ],  "published_at": "string",  "scheduled_at": "string",  "version": 0,  "metadata": null,  "created_at": "string",  "updated_at": "string",  "authors": [    {      "id": "string",      "object": "author",      "organization_id": "string",      "public_name": "string",      "slug": "string",      "bio": "string",      "avatar_media_id": "string",      "avatar_url": "string",      "website_url": "string",      "metadata": null,      "created_at": "string",      "updated_at": "string"    }  ],  "categories": [    {      "id": "string",      "object": "taxonomy_term",      "organization_id": "string",      "taxonomy_type": "string",      "parent_taxonomy_term_id": "string",      "locale": "string",      "name": "string",      "slug": "string",      "description": "string",      "seo_title": "string",      "seo_description": "string",      "canonical_url": "string",      "focus_keyphrase": "string",      "seo_keywords": [        "string"      ],      "robots_index": true,      "robots_follow": true,      "open_graph_title": "string",      "open_graph_description": "string",      "open_graph_media_asset_id": "string",      "twitter_title": "string",      "twitter_description": "string",      "twitter_media_asset_id": "string",      "schema_type": "string",      "metadata": null,      "created_at": "string",      "updated_at": "string",      "translations": [        {          "id": "string",          "locale": "string",          "name": "string",          "slug": "string"        }      ]    }  ],  "tags": [    {      "id": "string",      "object": "taxonomy_term",      "organization_id": "string",      "taxonomy_type": "string",      "parent_taxonomy_term_id": "string",      "locale": "string",      "name": "string",      "slug": "string",      "description": "string",      "seo_title": "string",      "seo_description": "string",      "canonical_url": "string",      "focus_keyphrase": "string",      "seo_keywords": [        "string"      ],      "robots_index": true,      "robots_follow": true,      "open_graph_title": "string",      "open_graph_description": "string",      "open_graph_media_asset_id": "string",      "twitter_title": "string",      "twitter_description": "string",      "twitter_media_asset_id": "string",      "schema_type": "string",      "metadata": null,      "created_at": "string",      "updated_at": "string",      "translations": [        {          "id": "string",          "locale": "string",          "name": "string",          "slug": "string"        }      ]    }  ],  "media": [    {      "id": "string",      "object": "media_asset",      "organization_id": "string",      "url": "string",      "original_filename": "string",      "alt_text": "string",      "caption": "string",      "mime_type": "string",      "width": 0,      "height": 0,      "size_bytes": 0,      "metadata": null,      "created_at": "string",      "updated_at": "string"    }  ],  "translations": [    {      "id": "string",      "locale": "string",      "slug": "string",      "status": "string"    }  ]}
{  "error": {    "code": "invalid_request",    "message": "string",    "param": "string"  }}
{  "error": {    "code": "invalid_request",    "message": "string",    "param": "string"  }}
{  "error": {    "code": "invalid_request",    "message": "string",    "param": "string"  }}
{  "error": {    "code": "invalid_request",    "message": "string",    "param": "string"  }}
{  "error": {    "code": "invalid_request",    "message": "string",    "param": "string"  }}
{  "error": {    "code": "invalid_request",    "message": "string",    "param": "string"  }}
{  "error": {    "code": "invalid_request",    "message": "string",    "param": "string"  }}
Key type: Private key

Delete a post by ID or locale-scoped slug.

Authorization

ApiKeyAuth
x-api-key<token>

Organization API key. Each key selects exactly one organization; do not send an organization ID separately. Public keys use the cli_blog_pk_ prefix and are intended for published-content delivery reads. Private keys use the cli_blog_sk_ prefix, belong only in trusted environments, and are required for write, publish, delete, and editorial-state workflows when their scopes allow it.

In: header

Path Parameters

id*string

Query Parameters

locale?string

Post locale for slug lookup. Omit it to use the organization primary/default locale.

Response Body

application/json

application/json

application/json

application/json

application/json

curl -X DELETE "https://example.com/v1/posts/string"
{  "id": "string",  "object": "post",  "organization_id": "string",  "content_type": "blog_post",  "locale": "string",  "status": "string",  "title": "string",  "slug": "string",  "is_featured": true,  "excerpt": "string",  "body_markdown": "string",  "table_of_contents": [    {      "id": "string",      "depth": 1,      "text": "string"    }  ],  "seo_title": "string",  "seo_description": "string",  "canonical_url": "string",  "focus_keyphrase": "string",  "seo_keywords": [    "string"  ],  "robots_index": true,  "robots_follow": true,  "open_graph_title": "string",  "open_graph_description": "string",  "open_graph_media_asset_id": "string",  "twitter_title": "string",  "twitter_description": "string",  "twitter_media_asset_id": "string",  "schema_type": "string",  "featured_media_asset_id": "string",  "media_asset_ids": [    "string"  ],  "published_at": "string",  "scheduled_at": "string",  "version": 0,  "metadata": null,  "created_at": "string",  "updated_at": "string",  "authors": [    {      "id": "string",      "object": "author",      "organization_id": "string",      "public_name": "string",      "slug": "string",      "bio": "string",      "avatar_media_id": "string",      "avatar_url": "string",      "website_url": "string",      "metadata": null,      "created_at": "string",      "updated_at": "string"    }  ],  "categories": [    {      "id": "string",      "object": "taxonomy_term",      "organization_id": "string",      "taxonomy_type": "string",      "parent_taxonomy_term_id": "string",      "locale": "string",      "name": "string",      "slug": "string",      "description": "string",      "seo_title": "string",      "seo_description": "string",      "canonical_url": "string",      "focus_keyphrase": "string",      "seo_keywords": [        "string"      ],      "robots_index": true,      "robots_follow": true,      "open_graph_title": "string",      "open_graph_description": "string",      "open_graph_media_asset_id": "string",      "twitter_title": "string",      "twitter_description": "string",      "twitter_media_asset_id": "string",      "schema_type": "string",      "metadata": null,      "created_at": "string",      "updated_at": "string",      "translations": [        {          "id": "string",          "locale": "string",          "name": "string",          "slug": "string"        }      ]    }  ],  "tags": [    {      "id": "string",      "object": "taxonomy_term",      "organization_id": "string",      "taxonomy_type": "string",      "parent_taxonomy_term_id": "string",      "locale": "string",      "name": "string",      "slug": "string",      "description": "string",      "seo_title": "string",      "seo_description": "string",      "canonical_url": "string",      "focus_keyphrase": "string",      "seo_keywords": [        "string"      ],      "robots_index": true,      "robots_follow": true,      "open_graph_title": "string",      "open_graph_description": "string",      "open_graph_media_asset_id": "string",      "twitter_title": "string",      "twitter_description": "string",      "twitter_media_asset_id": "string",      "schema_type": "string",      "metadata": null,      "created_at": "string",      "updated_at": "string",      "translations": [        {          "id": "string",          "locale": "string",          "name": "string",          "slug": "string"        }      ]    }  ],  "media": [    {      "id": "string",      "object": "media_asset",      "organization_id": "string",      "url": "string",      "original_filename": "string",      "alt_text": "string",      "caption": "string",      "mime_type": "string",      "width": 0,      "height": 0,      "size_bytes": 0,      "metadata": null,      "created_at": "string",      "updated_at": "string"    }  ],  "translations": [    {      "id": "string",      "locale": "string",      "slug": "string",      "status": "string"    }  ]}
{  "error": {    "code": "invalid_request",    "message": "string",    "param": "string"  }}
{  "error": {    "code": "invalid_request",    "message": "string",    "param": "string"  }}
{  "error": {    "code": "invalid_request",    "message": "string",    "param": "string"  }}
{  "error": {    "code": "invalid_request",    "message": "string",    "param": "string"  }}