---
title: "Set up a recurring Hive email delivery for one saved report: who receives it, how often and in which format. Your AI asks you before this runs; with Hive approvals on, Hive asks again inside Hive, because it sends email on its own afterwards."
method: POST
path: "/api/v1/tools/schedule_report_email"
---

# Set up a recurring Hive email delivery for one saved report: who receives it, how often and in which format. Your AI asks you before this runs; with Hive approvals on, Hive asks again inside Hive, because it sends email on its own afterwards.

`POST /api/v1/tools/schedule_report_email`

## Request

- Base URL: `https://hivepublish.com`
- URL: `https://hivepublish.com/api/v1/tools/schedule_report_email`
- 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.
  - `cadence` 'daily' | 'weekly' | 'monthly', required: How often it is sent.
  - `format` 'csv' | 'xlsx' | 'pdf' | 'ppt': Which file is attached. Defaults to pdf.
  - `timezone` string: IANA time zone the send time is read in.
  - `sendTime` string: Local send time as HH:MM.
  - `dayOfWeek` integer: 0 to 6, for a weekly cadence.
  - `dayOfMonth` integer: 1 to 28, for a monthly cadence.
  - `internalRecipientIds` string[]: Hive member ids who receive it.
  - `externalRecipients` string[]: Email addresses outside the workspace. These need the plan feature for outside delivery and the owner’s approval.
  - `externalRecipientsApproved` boolean: Set true only when the person has approved sending outside the workspace.
  - `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)
