---
title: "Save a content draft"
method: POST
path: "/org/content-engine/draft"
tags: ["Content Engine"]
---

# Save a content draft

`POST /org/content-engine/draft`

## Request

- Base URL: `https://apiv2.senso.ai/api/v1`
- URL: `https://apiv2.senso.ai/api/v1/org/content-engine/draft`
- Auth: API key in header `X-API-Key`

Saves generated markdown as a draft content version for editorial review, tracing it back to the prompt (and optionally the generation receipt) it came from. The builder-workspace pair (`builder_workspace_id` + `expected_workspace_version_id`) requires user (dashboard) authentication and is rejected with `400` on API-key requests. Requires the GEO product.

## Request body

- ContentEngineDraftRequest
  - `geo_question_id` string, uuid: The prompt this content answers.
  - `raw_markdown` string, required: The generated content body, in markdown.
  - `seo_title` string, required: SEO title for the content.
  - `summary` string: Optional summary of the content.
  - `content_id` string, uuid: Existing content item to save a new version of. Omit to create a new item.
  - `generation_run_id` string, uuid: The generation run this draft came from, if any.
  - `generation_receipt_id` string, uuid: The generation receipt to attribute this draft to, if any.
  - `builder_workspace_id` string, uuid: The builder workspace this draft came from, if any. Must be paired with expected_workspace_version_id.
  - `expected_workspace_version_id` string, uuid: The workspace version expected to be current, for optimistic concurrency. Must be paired with builder_workspace_id.

## Response `201`

The saved draft's content and version identifiers.

- ContentEngineDraftResponse: Identifiers for a saved draft content version.
  - `content_id` string, uuid, required: The content item the draft was saved to.
  - `version_id` string, uuid, required: The created draft version's id.
  - `version_num` integer, required: The created draft version's number.
  - `editorial_status` string, required: Editorial status of the created version (a draft).
  - `source_workspace_version_id` string, uuid: The builder workspace version this draft was saved from, when applicable.

## Other responses

- `400`: The request was malformed — a bad path/query parameter or an invalid value.
- `401`: Missing or invalid credentials — supply a valid org API key in the `X-API-Key` header.
- `403`: The API key is authenticated but not permitted to access this resource.
- `404`: The requested resource does not exist or is not visible to this key.
- `409`: The request conflicts with the current state (e.g. a duplicate).

---

[API](https://skmtc.dev/senso/apis/senso-org-api.md) - [All operations](https://skmtc.dev/senso/apis/senso-org-api/llms.txt) - [OpenAPI document](https://skmtc.dev/senso/apis/senso-org-api/revisions/d789b4fcbe84?raw)
