---
title: "Generate org-level report"
method: POST
path: "/api/v2/organization/{organizationId}/reports"
tags: ["Reports"]
---

# Generate org-level report

`POST /api/v2/organization/{organizationId}/reports`

Creates a new report in pending status.

## Path parameters

- `organizationId` string, required

## Request body

- object — Restricted request body for the organization-scoped report-create endpoints (`POST /api/v2/organization/{organizationId}/reports` and its `/admin/organization` variant). Narrows `type` to only the values accepted at runtime by `validateOrganizationReportParams`, so the OpenAPI/dev-docs contract matches the controller behavior.
  - `type` 'organizationHoldings' | 'organizationHoldingsByAddress' | 'organizationTransactions' | 'organizationTrades' | 'organizationStaking' | 'organizationHoldingsV2' | 'organizationTransactionsV2' | 'userAccess', required
  - `format` 'csv' | 'pdf', required
  - `holdings` object — Holdings report
    - `byWallet` boolean
    - `enterprise` string, required — ID of the enterprise
    - `includeStaking` boolean
    - `snapshotDate` string, date-time, required — Date of the snapshot
  - `transactions` object — Transactions report
    - `assets` string[]
    - `endDate` string, date-time, required — Date of the snapshot
    - `enterprise` string, required
    - `isAddressReport` boolean
    - `isDetailed` boolean
    - `startDate` string, date-time, required — Date of the snapshot
    - `wallets` string[]
    - `walletTypes` string[]
  - `quarterly` object — Quarterly report
    - `endDate` string, date-time, required — Date of the snapshot
    - `enterprise` string, required
    - `startDate` string, date-time, required — Date of the snapshot
  - `trades` object — Trades report
    - `assets` string[]
    - `endDate` string, date-time, required — Date of the snapshot
    - `enterprise` string, required
    - `isCostBasisReport` boolean
    - `isFillsReport` boolean
    - `startDate` string, date-time, required — Date of the snapshot
  - `staking` object — Staking report
    - `assets` string[]
    - `endDate` string, date-time, required — Date of the snapshot
    - `enterprise` string, required
    - `isBalanceReport` boolean
    - `startDate` string, date-time, required — Date of the snapshot
    - `wallets` string[]
    - `walletTypes` string[]
  - `gasTankReport` object — Gas Tank report — EVM fee address activity (deposits + gas fees)
    - `coin` string, required
    - `endDate` string, date-time, required — Date of the snapshot
    - `enterprise` string, required
    - `startDate` string, date-time, required — Date of the snapshot
  - `holdingsByAddress` object — Address-level Holdings report
    - `assets` string[]
    - `enterprise` string, required
    - `snapshotDate` string, date-time, required
    - `wallets` string[]
    - `walletTypes` string[]
  - `organizationHoldings` object — Organization-level Holdings report
    - `byWallet` boolean
    - `enterprises` string[]
    - `includeStaking` boolean
    - `organization` string, required
    - `snapshotDate` string, date-time, required
  - `organizationTransactions` object — Organization-level Transactions report
    - `assets` string[]
    - `endDate` string, date-time, required
    - `enterprises` string[]
    - `isAddressReport` boolean
    - `isDetailed` boolean
    - `organization` string, required
    - `startDate` string, date-time, required
    - `wallets` string[]
    - `walletTypes` string[]
  - `organizationHoldingsV2` object — Organization-level Holdings report (v2 — reconciled/persisted marts dataset). Only by-wallet holdings are available for v2; `byWallet: false` is rejected by the server and `byWallet` is otherwise always treated as `true`. Use `organizationHoldings` (v1) for org-level (non-per-wallet) holdings.
    - `byWallet` boolean
    - `enterprises` string[]
    - `includeStaking` boolean
    - `organization` string, required
    - `snapshotDate` string, date-time, required
  - `organizationTransactionsV2` object — Organization-level Transactions report (v2 — reconciled/persisted marts dataset). Only transaction history is available for v2; `isDetailed` and `isAddressReport` are rejected by the server. Use `organizationTransactions` (v1) for transfer-detail or address-level-transfer-detail reports.
    - `assets` string[]
    - `endDate` string, date-time, required
    - `enterprises` string[]
    - `isAddressReport` boolean
    - `isDetailed` boolean
    - `organization` string, required
    - `startDate` string, date-time, required
    - `wallets` string[]
    - `walletTypes` string[]
  - `organizationHoldingsByAddress` object — Organization-level Holdings by Address report
    - `assets` string[]
    - `enterprises` string[]
    - `organization` string, required
    - `snapshotDate` string, date-time, required
    - `wallets` string[]
    - `walletTypes` string[]
  - `organizationStaking` object — Organization-level Staking report
    - `assets` string[]
    - `endDate` string, date-time, required
    - `enterprises` string[]
    - `isBalanceReport` boolean
    - `organization` string, required
    - `startDate` string, date-time, required
    - `wallets` string[]
    - `walletTypes` string[]
  - `organizationTrades` object — Organization-level Trades report
    - `assets` string[]
    - `endDate` string, date-time, required
    - `enterprises` string[]
    - `isFillsReport` boolean
    - `organization` string, required
    - `startDate` string, date-time, required
  - `userAccess` object — Organization-level User Access Review report (DE-519)
    - `allEnterprises` boolean
    - `asOfDate` string, date-time, required
    - `enterprises` string[]
    - `organization` string, required
    - `reportContents` 'members' | 'roles', required
  - `policies` object — Policies report
    - `completeHistory` boolean
    - `enterprise` string, required
  - `costBasis` object
    - `account` string
    - `assets` string[]
    - `endDate` string, date-time, required — Date of the snapshot
    - `enterprise` string, required
    - `startDate` string, date-time, required — Date of the snapshot

## Response `200`

OK

- ReportJSON
  - `holdings` object — Holdings report
    - `byWallet` boolean
    - `enterprise` string, required — ID of the enterprise
    - `includeStaking` boolean
    - `snapshotDate` string, date-time, required — Date of the snapshot
  - `transactions` object — Transactions report
    - `assets` string[]
    - `endDate` string, date-time, required — Date of the snapshot
    - `enterprise` string, required
    - `isAddressReport` boolean
    - `isDetailed` boolean
    - `startDate` string, date-time, required — Date of the snapshot
    - `wallets` string[]
    - `walletTypes` string[]
  - `quarterly` object — Quarterly report
    - `endDate` string, date-time, required — Date of the snapshot
    - `enterprise` string, required
    - `startDate` string, date-time, required — Date of the snapshot
  - `trades` object — Trades report
    - `assets` string[]
    - `endDate` string, date-time, required — Date of the snapshot
    - `enterprise` string, required
    - `isCostBasisReport` boolean
    - `isFillsReport` boolean
    - `startDate` string, date-time, required — Date of the snapshot
  - `staking` object — Staking report
    - `assets` string[]
    - `endDate` string, date-time, required — Date of the snapshot
    - `enterprise` string, required
    - `isBalanceReport` boolean
    - `startDate` string, date-time, required — Date of the snapshot
    - `wallets` string[]
    - `walletTypes` string[]
  - `gasTankReport` object — Gas Tank report — EVM fee address activity (deposits + gas fees)
    - `coin` string, required
    - `endDate` string, date-time, required — Date of the snapshot
    - `enterprise` string, required
    - `startDate` string, date-time, required — Date of the snapshot
  - `holdingsByAddress` object — Address-level Holdings report
    - `assets` string[]
    - `enterprise` string, required
    - `snapshotDate` string, date-time, required
    - `wallets` string[]
    - `walletTypes` string[]
  - `organizationHoldings` object — Organization-level Holdings report
    - `byWallet` boolean
    - `enterprises` string[]
    - `includeStaking` boolean
    - `organization` string, required
    - `snapshotDate` string, date-time, required
  - `organizationTransactions` object — Organization-level Transactions report
    - `assets` string[]
    - `endDate` string, date-time, required
    - `enterprises` string[]
    - `isAddressReport` boolean
    - `isDetailed` boolean
    - `organization` string, required
    - `startDate` string, date-time, required
    - `wallets` string[]
    - `walletTypes` string[]
  - `organizationHoldingsV2` object — Organization-level Holdings report (v2 — reconciled/persisted marts dataset). Only by-wallet holdings are available for v2; `byWallet: false` is rejected by the server and `byWallet` is otherwise always treated as `true`. Use `organizationHoldings` (v1) for org-level (non-per-wallet) holdings.
    - `byWallet` boolean
    - `enterprises` string[]
    - `includeStaking` boolean
    - `organization` string, required
    - `snapshotDate` string, date-time, required
  - `organizationTransactionsV2` object — Organization-level Transactions report (v2 — reconciled/persisted marts dataset). Only transaction history is available for v2; `isDetailed` and `isAddressReport` are rejected by the server. Use `organizationTransactions` (v1) for transfer-detail or address-level-transfer-detail reports.
    - `assets` string[]
    - `endDate` string, date-time, required
    - `enterprises` string[]
    - `isAddressReport` boolean
    - `isDetailed` boolean
    - `organization` string, required
    - `startDate` string, date-time, required
    - `wallets` string[]
    - `walletTypes` string[]
  - `organizationHoldingsByAddress` object — Organization-level Holdings by Address report
    - `assets` string[]
    - `enterprises` string[]
    - `organization` string, required
    - `snapshotDate` string, date-time, required
    - `wallets` string[]
    - `walletTypes` string[]
  - `organizationStaking` object — Organization-level Staking report
    - `assets` string[]
    - `endDate` string, date-time, required
    - `enterprises` string[]
    - `isBalanceReport` boolean
    - `organization` string, required
    - `startDate` string, date-time, required
    - `wallets` string[]
    - `walletTypes` string[]
  - `organizationTrades` object — Organization-level Trades report
    - `assets` string[]
    - `endDate` string, date-time, required
    - `enterprises` string[]
    - `isFillsReport` boolean
    - `organization` string, required
    - `startDate` string, date-time, required
  - `userAccess` object — Organization-level User Access Review report (DE-519)
    - `allEnterprises` boolean
    - `asOfDate` string, date-time, required
    - `enterprises` string[]
    - `organization` string, required
    - `reportContents` 'members' | 'roles', required
  - `policies` object — Policies report
    - `completeHistory` boolean
    - `enterprise` string, required
  - `costBasis` object
    - `account` string
    - `assets` string[]
    - `endDate` string, date-time, required — Date of the snapshot
    - `enterprise` string, required
    - `startDate` string, date-time, required — Date of the snapshot
  - `id` string, required
  - `type` 'holdings' | 'transactions' | 'trades' | 'staking' | 'holdingsByAddress' | 'userAccess' | 'policies' | 'costBasis' | 'gasTankReport' | 'organizationHoldings' | 'organizationHoldingsByAddress' | 'organizationTransactions' | 'organizationTrades' | 'organizationStaking' | 'organizationHoldingsV2' | 'organizationTransactionsV2' | 'quarterly', required
  - `format` 'csv' | 'pdf', required
  - `status` 'pending' | 'processing' | 'completed' | 'failed', required
  - `createdAt` string, date-time, required — Date report was created
  - `completedAt` string, date-time — Date report was completed
  - `documentName` string — Name of the report document
  - `user` string, required — ID of the user who requested the report

## Other responses

- `400` — Bad Request
- `401` — Unauthorized
- `403` — Forbidden
- `500` — Internal Server Error

---

[API](https://skmtc.net/bitgo/apis/bitgo-api.md) · [All operations](https://skmtc.net/bitgo/apis/bitgo-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/bitgo/bitgo-api/revisions/e445c15e5bee/schema)
