---
title: "Prepare a complete Hive Bio draft for review without saving it. Choose a block, header, look or profile change, prepare the first private page, or select an existing Genie service for a saved booking type. Service selection requires a workspace owner or admin and keeps your authored wording. Requires current permission to read and change Hive Bio drafts. The complete document appears once in saveArguments. Use saveTool with those unchanged arguments to save. Keep them and the original request key for recoveryTool; when recoveryOriginalOperation is present, add it as originalOperation. Generated identities stay in that exact document."
method: POST
path: "/api/v1/tools/prepare_bio_edit"
---

# Prepare a complete Hive Bio draft for review without saving it. Choose a block, header, look or profile change, prepare the first private page, or select an existing Genie service for a saved booking type. Service selection requires a workspace owner or admin and keeps your authored wording. Requires current permission to read and change Hive Bio drafts. The complete document appears once in saveArguments. Use saveTool with those unchanged arguments to save. Keep them and the original request key for recoveryTool; when recoveryOriginalOperation is present, add it as originalOperation. Generated identities stay in that exact document.

`POST /api/v1/tools/prepare_bio_edit`

## Request

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

## Request body

- union
  - object
    - `operation` 'create_bio_page', required: The exact draft change to prepare.
    - `changes` object, required: The editor fields for this one change.
      - `username` string, required: The public address for this first private page.
      - `title` string: The page title.
    - `expectedDraftVersionId` string: Optional saved version from read_bio_page. Hive refuses if that known version changed.
  - object
    - `operation` 'add_bio_block', required: The exact draft change to prepare.
    - `changes` object, required: The editor fields for this one change.
      - `type` 'link' | 'text' | 'heading' | 'image' | 'gallery' | 'video' | 'music' | 'social' | 'email-signup' | 'contact-form' | 'poll' | 'pdf' | 'map' | 'contact-details' | 'email' | 'stats' | 'faq' | 'event' | 'discount' | 'destination' | 'product' | 'booking' | 'course' | 'community' | 'collection' | 'chatbot' | 'message-me', required: Which kind of block. Call describe_bio_blocks first if unsure.
      - `title` string: The words on the row.
      - `fields` object: The rest of the block, named as describe_bio_blocks says.
      - `position` integer: Where it goes in the list, counted from zero. Leave it out for the end.
    - `expectedDraftVersionId` string: Optional saved version from read_bio_page. Hive refuses if that known version changed.
  - object
    - `operation` 'update_bio_block', required: The exact draft change to prepare.
    - `changes` object, required: The editor fields for this one change.
      - `blockId` string, required: The id read_bio_page gave for this block.
      - `patch` object, required: Only the fields that change, named as describe_bio_blocks says.
    - `expectedDraftVersionId` string: Optional saved version from read_bio_page. Hive refuses if that known version changed.
  - object
    - `operation` 'remove_bio_block', required: The exact draft change to prepare.
    - `changes` object, required: The editor fields for this one change.
      - `blockId` string, required: The id read_bio_page gave for this block.
      - `hard` boolean: True deletes the block for good instead of archiving it. It cannot be brought back.
    - `expectedDraftVersionId` string: Optional saved version from read_bio_page. Hive refuses if that known version changed.
  - object
    - `operation` 'reorder_bio_blocks', required: The exact draft change to prepare.
    - `changes` object, required: The editor fields for this one change.
      - `blockId` string, required: The block to move.
      - `targetBlockId` string: The block to move it next to. Not needed for top or bottom.
      - `placement` 'before' | 'after' | 'top' | 'bottom', required: before or after the target block, or top or bottom of the page.
    - `expectedDraftVersionId` string: Optional saved version from read_bio_page. Hive refuses if that known version changed.
  - object
    - `operation` 'set_bio_header', required: The exact draft change to prepare.
    - `changes` object, required: The editor fields for this one change.
      - `displayName` string: The name shown at the top.
      - `bio` string: The line under the name.
      - `layout` 'classic' | 'hero' | 'banner' | 'cutout' | 'shape': The header style.
    - `expectedDraftVersionId` string: Optional saved version from read_bio_page. Hive refuses if that known version changed.
  - object
    - `operation` 'set_bio_design', required: The exact draft change to prepare.
    - `changes` object, required: The editor fields for this one change.
      - `themeId` string: A Hive theme id. read_bio_page names the one in use.
      - `fontFamily` string: A Hive typeface id for the page text.
    - `expectedDraftVersionId` string: Optional saved version from read_bio_page. Hive refuses if that known version changed.
  - object
    - `operation` 'set_bio_profile', required: The exact draft change to prepare.
    - `changes` object, required: The editor fields for this one change.
      - `title` string: The page title.
      - `description` string: The description Hive shows with the page.
    - `expectedDraftVersionId` string: Optional saved version from read_bio_page. Hive refuses if that known version changed.
  - object
    - `operation` 'select_booking_service', required: The exact draft change to prepare.
    - `changes` object, required: The editor fields for this one change.
      - `blockId` string, required
      - `typeId` string, required
      - `expectedBindingId` string, nullable, required
      - `professionalId` string, required: The original professional from read_bio_genie_catalog.
      - `serviceId` string, required: One existing supported service from that original catalog.
      - `bindingId` string: Optional unchanged bindingId from an earlier prepared selection. Never reprepare an unknown save instead of recovering it.
    - `expectedDraftVersionId` string, required: Optional saved version from read_bio_page. Hive refuses if that known version changed.

## 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)
