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

# publish_content

> Publish a completed changelog, blog post, or KB article set directly

Publishes a completed changelog, blog post, or KB article set directly — for on-demand generations that have no review event (where [`approve_content`](/mcp/lifecycle/approve-content) fails). Assigns a public slug and makes the content live immediately. Only call this after the user has reviewed the draft and confirmed.

**KB caveat:** exactly one knowledge base set is live per project — publishing a `kb_articles` record replaces the project's current set and inherits its slug, so API URLs and embed snippets keep working. To add articles instead of replacing the whole KB, first merge the live set's articles into your draft with [`get_kb_article_set`](/mcp/kb/get-kb-article-set) + [`update_content`](/mcp/lifecycle/update-content), then publish the merged record.

## Arguments

| Name | Type | Description |
| - | - | - |
| `content_id` | string (UUID) | The `content_id` returned by a `generate_*` tool. |

## Returns

```json theme={null}
{
  "content_id": "7f5e2c1a-...",
  "output_type": "blog_post",
  "is_published": true,
  "published_at": "2026-08-10T15:20:04+00:00",
  "public_slug": "shipping-faster-with-shipstar",
  "public_url": "https://api.shipstar.example/api/v1/blog/shipping-faster-with-shipstar"
}
```

`public_url` is the live public endpoint for the content (`/api/v1/changelog/{slug}`, `/api/v1/blog/{slug}`, or `/api/v1/kb/{slug}` depending on type).

## Errors

* `Only changelogs, blog posts, and KB articles can be published` — other types go through [`approve_content`](/mcp/lifecycle/approve-content) or [`send_release_email`](/mcp/email/send-release-email).
* `Only completed content can be published` — wait for [`get_generation_status`](/mcp/lifecycle/get-generation-status) to report `completed`.
* `Invalid content_id (must be a UUID): abc123`
* `Content not found`

## Example prompts

> "Publish that blog post now and give me the public URL."

> "Ship the changelog draft live immediately — no need to schedule it."


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.