---
title: "Create or update the Hive shared link for one report. A public link can be opened by anyone who has it, so your AI asks you before this runs; with Hive approvals on, Hive asks again inside Hive."
method: POST
path: "/api/v1/tools/share_report"
---

# Create or update the Hive shared link for one report. A public link can be opened by anyone who has it, so your AI asks you before this runs; with Hive approvals on, Hive asks again inside Hive.

`POST /api/v1/tools/share_report`

## Request

- Base URL: `https://hivepublish.com`
- URL: `https://hivepublish.com/api/v1/tools/share_report`
- 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
  - `reportId` string, required: The Hive report id.
  - `visibility` 'invite_only' | 'public', required: invite_only sends it to named addresses; public can be opened by anyone with the link.
  - `title` string, required: The title people see on the shared page.
  - `description` string
  - `recipients` string[]: Email addresses invited to an invite-only link.
  - `expiresAt` string: Optional ISO expiry, within the next year.
  - `dynamicDate` boolean: true keeps the report’s date period live; false freezes today’s range into the link.
  - `rotate` boolean: true issues a new link and retires the old one.
  - `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)
