---
title: "Save the exact private Hive Bio booking-service selection returned by prepare_bio_edit with operation select_booking_service. Keeps your page wording, uses the original connected Genie account and saves only this reviewed draft. Keep the unchanged document, selection, saved version and original request key for recovery. This does not change Genie services, working hours or existing bookings."
method: POST
path: "/api/v1/tools/select_bio_booking_service"
---

# Save the exact private Hive Bio booking-service selection returned by prepare_bio_edit with operation select_booking_service. Keeps your page wording, uses the original connected Genie account and saves only this reviewed draft. Keep the unchanged document, selection, saved version and original request key for recovery. This does not change Genie services, working hours or existing bookings.

`POST /api/v1/tools/select_bio_booking_service`

## Request

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

This reaches real people, so the person is asked before it runs. Their own AI client asks them. When the connection was made with Hive approvals switched on, the first call returns a single-use Hive approval link instead of acting, and the exact request is repeated with approvalToken and an Idempotency-Key once they approve it inside Hive.

## Headers

- `Idempotency-Key` string

## Request body

- object
  - `document` object, required
  - `expectedDraftVersionId` string, required: The unchanged saved version returned by preparation.
  - `selection` object, required
    - `blockId` string, required
    - `typeId` string, required
    - `expectedBindingId` string, nullable, required
    - `bindingId` string, required
    - `professionalId` string, required
    - `serviceId` string, required
  - `approvalToken` string: Single-use token returned by Hive after the owner approves this exact action.

## Response `200`

Tool result or approval challenge

- union
  - ToolResult
    - `data` unknown, required
    - `meta` object, required
      - `tool` string
      - `workspaceId` string, uuid
  - ApprovalChallengeResponse
    - `data` ApprovalChallenge, required
      - `confirmationRequired` unknown, required
      - `challengeId` string, uuid, required
      - `approvalToken` string, required: Secret, single-use token. Retry only after the human approves approvalUrl.
      - `approvalUrl` string, uri, required
      - `expiresAt` string, date-time, required
      - `warning` string
    - `meta` object, required

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