---
title: "Send a Tally-authored email"
method: POST
path: "/tally/send-email"
tags: ["Tally"]
---

# Send a Tally-authored email

`POST /tally/send-email`

## Request

- Base URL: `https://ledgerhq.pro/api/v1`
- URL: `https://ledgerhq.pro/api/v1/tally/send-email`
- Auth: one of:
  - HTTP bearer and API key in header `x-organization-id`
  - HTTP bearer and API key in header `x-organization-id`

Sends a freestyle email through the Tally bookkeeping assistant. Recipients are resolved server-side from recipientType (me, firm, or company owners) — raw to/cc/bcc addresses are not accepted. For firm email, firmStaffIds selects exact active firm members from GET /tally/email-recipients; omit it for owner/admin broadcast. Human-facing workspace files can be attached by stable id; client sends accept only files explicitly scoped to the selected company. invoicePreviews attaches exact invoice delivery preview PDFs for me/firm only and never posts or client-delivers the invoice. For client email, ownerIds selects one owner or any subset; omit it to email every owner. Client-facing sends return a confirmation preview unless confirmed=true. Client sends deliver as a client-request message thread and the result includes requestId.

## Request body

- object
  - `clientOrganizationId` string, uuid, nullable
  - `recipientType` 'me' | 'firm' | 'client', required
  - `ownerIds` string[]: For recipientType=client, selected company owner UUIDs. Omit to email every owner.
  - `firmStaffIds` string[]: For recipientType=firm, selected firm membership UUIDs from GET /tally/email-recipients. Omit to email every firm owner and admin.
  - `subject` string, required
  - `body` string, required
  - `confirmed` boolean
  - `idempotencyKey` string
  - `workspaceFileIds` string[]: Stable ids of authorized human-facing Tally workspace files to attach.
  - `invoicePreviews` object[]: Exact invoice preview PDFs for internal me/firm handoff only. Use invoiceId and previewToken from manage_invoices action=preview.
    - `clientOrganizationId` string, uuid, required
    - `invoiceId` string, uuid, required
    - `previewToken` string, required
  - `report` object: Optional official LedgerHQ PDF report attachment.
    - `clientOrganizationId` string, uuid, nullable
    - `report` 'income-statement' | 'balance-sheet' | 'trial-balance' | 'general-ledger' | 'management-financials'
    - `startDate` string, date, nullable
    - `endDate` string, date, nullable
    - `asOf` string, date, nullable
    - `basis` 'accrual' | 'cash'
    - `hideZeroRows` boolean
  - `reports` TallyReportAttachment[]
    - `clientOrganizationId` string, uuid, nullable
    - `report` 'income-statement' | 'balance-sheet' | 'trial-balance' | 'general-ledger' | 'management-financials', required
    - `startDate` string, date, nullable
    - `endDate` string, date, nullable
    - `asOf` string, date, nullable
    - `basis` 'accrual' | 'cash'
    - `hideZeroRows` boolean

## Response `200`

Send result or confirmation preview

## Other responses

- `default`: Error response

---

[API](https://skmtc.dev/ledgerhq-pro/apis/ledgerhq-bookkeeping-api.md) · [All operations](https://skmtc.dev/ledgerhq-pro/apis/ledgerhq-bookkeeping-api/llms.txt) · [OpenAPI document](https://skmtc.dev/ledgerhq-pro/apis/ledgerhq-bookkeeping-api/revisions/9a8269f0a586?raw)
