---
title: "Create an editable Hive post draft with everything the composer holds: per-network post types and options, Asset Library media, hashtag groups, campaigns and tags. Use channelIds: [] to prepare a private draft before connecting a social account. This never publishes or sends a message. Use read_post to inspect the saved draft, then select actual connected accounts before scheduling or publishing with the person’s approval."
method: POST
path: "/api/v1/tools/create_draft"
---

# Create an editable Hive post draft with everything the composer holds: per-network post types and options, Asset Library media, hashtag groups, campaigns and tags. Use channelIds: \[\] to prepare a private draft before connecting a social account. This never publishes or sends a message. Use read_post to inspect the saved draft, then select actual connected accounts before scheduling or publishing with the person’s approval.

`POST /api/v1/tools/create_draft`

## Request

- Base URL: `https://hivepublish.com`
- URL: `https://hivepublish.com/api/v1/tools/create_draft`
- Auth: HTTP bearer

## Headers

- `Idempotency-Key` string, required

## Request body

- object
  - `title` string: Shared title. Mainly YouTube.
  - `privacy` 'public' | 'private' | 'unlisted': Shared privacy, overridden by per-network options when supplied.
  - `caption` string: Shared caption.
  - `hashtags` string[]: Hashtags appended per network rules.
  - `hashtagGroupId` string: A saved hashtag group. Its hashtags are merged with any you pass.
  - `channelIds` string[]: Optional connected Hive account ids. Use [] to prepare a private draft before any social account is connected.
  - `media` object[]: The photos and videos on the post, in order.
    - `assetId` string: An Asset Library id from read_media_library.
    - `url` string: A Hive-hosted media URL, such as the one upload_media_from_url returns. Links on other hosts are refused: import them with upload_media_from_url first.
    - `altText` string: Accessibility text. Saved onto the Asset Library item when assetId is given. Instagram post alt text is perPlatform.instagram.igAltText.
    - `order` number: Where this item sits in the post, lowest first.
  - `cover` object, nullable: The composer cover plan. Omit to keep the existing cover; null removes it.
  - `perPlatform` object: Per-network options keyed by network (instagram, facebook, tiktok, youtube, linkedin, x, threads, pinterest, snapchat, bluesky, mastodon, whatsapp, telegram). Each value takes what Hive's composer takes, for example postType (post, reel, story), caption, title, privacy, firstComment, igLocationId, igAltText, igCollaborators, coverUrl, threadsReplyControl, youtubeFormat, tiktokPrivacyLevel. Anything omitted falls back to the shared values.
  - `firstComment` string: A first comment posted under the post where the network supports it.
  - `campaignIds` string[]: Campaign ids.
  - `campaignNames` string[]: Campaign names. Unknown names are refused with the list of campaigns that exist.
  - `tagIds` string[]: Internal tag ids.
  - `tagNames` string[]: Internal tag names. Unknown names are refused with the list of tags that exist.
  - `linkTracking` 'inherit' | 'on' | 'off': Whether Hive rewrites links for click tracking. Defaults to the workspace setting.
  - `assigneeId` string: The teammate asked to approve this post.
  - `approvalWorkflowId` string: The approval workflow to run instead of the workspace default.

## Response `200`

Tool result

- ToolResult
  - `data` unknown, required
  - `meta` object, required
    - `tool` string
    - `workspaceId` string, uuid

## Other responses

- `400`: Invalid input
- `401`: Missing or invalid credential
- `403`: Missing workspace scope, role permission, or plan entitlement
- `409`: Idempotency conflict, replay, or request still in progress
- `429`: Rate limit exceeded

---

[API](https://skmtc.dev/hivepublish/apis/hive-developer-api.md) · [All operations](https://skmtc.dev/hivepublish/apis/hive-developer-api/llms.txt) · [OpenAPI document](https://skmtc.dev/hivepublish/apis/hive-developer-api/revisions/b440c763583e?raw)
