---
title: "Publish a draft"
method: POST
path: "/agent/{id}/drafts/{draftId}/publish"
tags: ["Agent Versioning - Drafts"]
deprecated: true
---

# Publish a draft

`POST /agent/{id}/drafts/{draftId}/publish`

> **Deprecated.**

**Deprecated on the v2 branch model.** Migrate to `POST /agent/{id}/branches/{branchId}/draft/publish`. When `ENABLE_BRANCH_MODEL` is on, this endpoint returns `409 versioning_v2_migration_required` with the `Deprecation: true` header. See the [migration guide](/voice-agents/deprecations/agent-versioning-migration).

Publish a draft as a new versioned release. Optionally activate it immediately.

## Path parameters

- `id` string, required
- `draftId` string, required

## Request body

- PublishDraftRequest
  - `label` string, nullable — Label for the published version
  - `description` string, nullable — Description of the published version
  - `activate` boolean — Whether to immediately activate the version after publishing

## Response `201`

Draft published as a new version

- object
  - `status` boolean
  - `data` AgentVersion — Represents either a draft revision or a published version of an agent's configuration.
    - `_id` string — Unique identifier
    - `agent` string — The agent this version belongs to
    - `status` 'published' | 'draft' | 'archived' — Current status of the version record
    - `versionNumber` integer, nullable — Auto-incremented version number (published versions only)
    - `label` string, nullable — Human-readable label for the version
    - `description` string, nullable — Description of what changed in this version
    - `isPinned` boolean — Whether the version is pinned for quick access
    - `publishedBy` string, nullable — User ID of who published this version
    - `publishedAt` string, date-time, nullable — When this version was published
    - `activatedBy` string, nullable — User ID of who activated this version
    - `activatedAt` string, date-time, nullable — When this version was activated
    - `draftId` string, nullable — Unique draft identifier (drafts only)
    - `draftName` string, nullable — Human-readable draft name
    - `draftRevision` integer, nullable — Revision number within the draft (drafts only)
    - `sourceVersionId` string, nullable — The published version this draft was branched from
    - `blocks` object — References to the 13 config section blocks
      - `workflow_prompt` string
      - `workflow_tools` string
      - `workflow_graph` string
      - `llm` string
      - `voice` string
      - `language` string
      - `call_handling` string
      - `detection` string
      - `analytics` string
      - `timeouts` string
      - `audio` string
      - `privacy` string
      - `widget` string
    - `workflowType` 'workflow_graph' | 'single_prompt' — The type of workflow configuration. workflow_graph uses a node-based visual workflow, single_prompt uses a simple prompt-based configuration.
    - `parentVersion` string, nullable — The version this was derived from
    - `isActive` boolean — Whether this is the currently active version for the agent
    - `createdBy` string — User ID of who created this record
    - `createdAt` string, date-time
    - `updatedAt` string, date-time

## Other responses

- `400` — Invalid input
- `401` — Unauthorized access
- `403` — Forbidden access
- `404` — Agent or draft not found
- `409` — The v1 versioning endpoint is deprecated on the branch model and will not process this request. The response body carries `error_type: "versioning_v2_migration_required"` and the response includes the `Deprecation: true` header. See the [migration guide](/voice-agents/deprecations/agent-versioning-migration) for the v2 equivalent.
- `500` — Internal server error

## Changes

- **2026-07-23** `a9c928635312` — 1 breaking, 2 info
  - added the pattern `^[a-f\d]{24}$` to the `path` request parameter `id`
  - endpoint deprecated
  - added the non-success response with the status `409`
- **2026-07-17** `4f549f4b38c5` — 1 info
  - endpoint reactivated
- **2026-07-17** `f6ed52db5f7c` — 1 info
  - endpoint deprecated
- **2026-05-26** `5a6b4e19f353` — 5 info
  - added the non-success response with the status `403`
  - added the non-success response with the status `404`
  - added the optional property `data/activatedAt` to the response with the `201` status
  - added the optional property `data/activatedBy` to the response with the `201` status
  - …1 more
- **2026-04-20** `801f1d220d57` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/smallest-inc/apis/agent-management-api/changes/agent/:id/drafts/:draftId/publish/post.md)

---

[API](https://skmtc.dev/smallest-inc/apis/agent-management-api.md) · [All operations](https://skmtc.dev/smallest-inc/apis/agent-management-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/smallest-inc/agent-management-api/revisions/274a178284a4/schema)
