---
title: "Approve one Hive post that is waiting for review, after a person approves this exact action in Hive. It must carry the reviewFingerprint from read_pending_approvals, so an edit made after the review was read refuses the approval instead of releasing different content."
method: POST
path: "/api/v1/tools/approve_post"
---

# Approve one Hive post that is waiting for review, after a person approves this exact action in Hive. It must carry the reviewFingerprint from read_pending_approvals, so an edit made after the review was read refuses the approval instead of releasing different content.

`POST /api/v1/tools/approve_post`

## Request

- Base URL: `https://hivepublish.com`
- URL: `https://hivepublish.com/api/v1/tools/approve_post`
- 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
  - `postId` string, required: The post id from read_pending_approvals.
  - `reviewFingerprint` string, required: The reviewFingerprint read_pending_approvals returned for this post.
  - `reviewRunId` string, nullable, required: Exact reviewRunId from read_pending_approvals, including null for a single reviewer.
  - `reviewStepId` string, nullable, required: Exact reviewStepId from read_pending_approvals, including null for a single reviewer.
  - `note` string: An optional note for the person who asked.
  - `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)
