Get the Cultivation Transaction History report
Changed onRead-only report. Returns one row per cultivation transaction over the reported date range, covering the full plant lifecycle: plant batch creations, adjustments and splits, growth phase changes, plant moves, destructions, additive applications, teardowns, harvests, waste, and packaging. Each row carries the transaction's date, strain, batch name, plant tag(s), product name, package label(s), type, the related entity (teardown or harvest) and its status, the signed amount and unit, and the transaction's description. Rows reflect the same plant events tracked in the state traceability system (Metrc); this endpoint only reads them and changes nothing.
Rows are sorted most-recent-first by transaction date. When no date filter is provided, the report defaults to the last 30 days. The datetime, transaction_type, strain, plant_batch_ids, and license_ids filters combine with AND — each narrows the result — while multiple values within plant_batch_ids or license_ids are OR'd. With no license_ids filter the report spans every license on your company.
Every value is returned as it appears in the report's CSV export, with numeric cells (amount, total cost) returned as strings with the currency and comma formatting stripped, so amounts match the rest of the API. Two columns are not normalized the way the rest of the public API is: type is a human-readable display string (e.g. Move Plant(s)), not a SCREAMING_CASE enum token, and the transaction_type filter accepts those same human-readable names; related_entity_status is the underlying teardown/harvest workflow status passed straight through (PREPARING, PENDING, or COMPLETED) rather than remapped through the public API's enum layer. The total_cost column is present only for API keys whose user can view costs; for everyone else the key is omitted from every row and from meta.columns. Report-level information (the resolved date range and the column definitions actually present) is returned under meta.
Each row also carries product_id after product_name, so a row can be followed to the product endpoints without a lookup. The CSV export leaves this ID column out.
Required permission: reports_permissions_cultivation_transaction_history (and, for the total_cost column, permission to view costs).
Request
- Base URLhttps://app.distru.com
- AuthHTTP bearer
Query parameters
Restricts rows to transactions whose date falls in the given range. Value is a comma-separated after,before pair of ISO8601 timestamps, both bounds inclusive. Either side may be left empty for an open-ended range: 2026-01-01T00:00:00Z, returns everything on or after that instant, and ,2026-02-01T00:00:00Z everything on or before it. Omit entirely to default to the last 30 days. The resolved range is echoed in meta.date_range.
Restricts rows to a single cultivation transaction type. Accepts one of the human-readable type names (not a SCREAMING_CASE token) listed in enum. Omit to include every type. Each row's type field uses these same names; a Growth Phase Change row additionally appends the transition (e.g. Growth Phase Change (Immature → Vegetative)), but filter on the bare name shown here.
Restricts rows to an exact strain name — a whole-string, case-sensitive match, not a substring search. Omit to include all strains. Matches the value shown in each row's strain field.
Restricts rows to transactions involving the given plant batches (plant groups), including the downstream teardown, harvest, waste, and packaging rows derived from them. Each value is a Distru plant batch ID; malformed IDs are ignored. Omit to include all batches. Multiple IDs are OR'd (a row tied to any listed batch is included) and this filter is AND'd with the others.
Restricts rows to transactions recorded under the given Distru license IDs. Each ID is matched against the licenses on your company; IDs outside your company are ignored. Omit (or leave empty) to include every license on your company. Multiple IDs are OR'd and this filter is AND'd with the others.
Response
The Cultivation Transaction History report
Changes
- info
added the optional property
//to the response with the status
- info