# Create Article

POST /api/v2/projects/{projectId}/knowledge/articles

Creates a knowledge-base article. The URL slug is generated from the title rather than supplied. Public articles belong to a collection and appear on the help center once published; internal articles are not browsable and exist to answer support questions. The authenticated caller (session or MCP user) becomes the article's author, so an API key alone is not enough. To include a new screenshot, upload it with Upload Article Image and embed the returned https://storage.saasco.com URL in `body`.

## Request

- projectId: string, path, required — ID of the project that will own the article.
- body: string, required — Article HTML. Embed a screenshot as <img src="https://storage.saasco.com/...">. Upload a new image with Upload Article Image and use the returned URL.
- state: draft | published, required — Publication state. Only published articles are visible on the help center or returned by public search.
- title: string, required — Article title.
- type: public | internal, required — Audience for the article: public articles appear on the help center, internal ones are only used to answer support questions.
- collectionId: string
- description: string
- url: string

## Response

- 200: Successful response
  - authorId: string, required
  - body: string, required
  - conversions: integer, required
  - createdAt: string, required
  - happyReactions: integer, required
  - id: string, required
  - neutralReactions: integer, required
  - order: integer, required
  - projectId: string, required
  - sadReactions: integer, required
  - slug: string, required
  - state: draft | published, required, default draft
  - title: string, required
  - type: public | internal, required, default public
  - updatedAt: string, required
  - views: integer, required
  - collectionId: string
  - description: string
  - url: string
- 400: Invalid input data
- 401: Authorization not provided
- 403: Insufficient access
- 500: Internal server error
