---
title: "Publish a Hive post now instead of at its queued time, by running Hive’s own publisher straight away. Your AI asks you before this runs; with Hive approvals on, Hive asks again inside Hive, and the approval is tied to the exact version you read: if the post changes in between, Hive refuses rather than publishing something else. The answer reports only what the post itself says afterwards, so it never claims something went out when it did not."
method: POST
path: "/api/v1/tools/publish_now"
---

# Publish a Hive post now instead of at its queued time, by running Hive’s own publisher straight away. Your AI asks you before this runs; with Hive approvals on, Hive asks again inside Hive, and the approval is tied to the exact version you read: if the post changes in between, Hive refuses rather than publishing something else. The answer reports only what the post itself says afterwards, so it never claims something went out when it did not.

`POST /api/v1/tools/publish_now`

## Request

- Base URL: `https://hivepublish.com`
- URL: `https://hivepublish.com/api/v1/tools/publish_now`
- 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 Hive post to publish.
  - `expectedVersion` string, required: The version string a Hive read tool returned for this post. Always send it: it ties the approval to the exact words and media the person saw.
  - `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)
