Skip to content

Report Endpoints

Every collection with a report has a path ending in /report, and most also have a super form that attaches related records. See Super Reports for what that adds.

The ones reached for most often:

Data Report Super report
Active Packages /v2/packages/active/report /v2/packages/active/super/report
Inactive Packages /v2/packages/inactive/report /v2/packages/inactive/super/report
Items /v2/items/report /v2/items/super/report
Active Harvests /v2/harvests/active/report /v2/harvests/active/super/report
Flowering Plants /v2/plants/flowering/report /v2/plants/flowering/super/report
Active Sales /v2/sales/active/report /v2/sales/active/super/report
Incoming Transfer Manifests /v2/transfers/incoming/manifest/report (none)
All 48 report endpoints
Data Report Super report
Active Packages /v2/packages/active/report /v2/packages/active/super/report
Inactive Packages /v2/packages/inactive/report /v2/packages/inactive/super/report
In Transit Packages /v2/packages/intransit/report /v2/packages/intransit/super/report
On Hold Packages /v2/packages/onhold/report /v2/packages/onhold/super/report
Transferred Packages /v2/packages/transferred/report /v2/packages/transferred/super/report
Point-in-Time Inventory /v2/packages/point-in-time/report (none)
Product Labels /v2/packages/product-labels/report /v2/packages/product-labels/super/report
Staged Product Labels /v2/packages/staged-product-labels/report /v2/packages/staged-product-labels/super/report
Lab Samples /v2/packages/lab-samples/report /v2/packages/lab-samples/super/report
Items /v2/items/report /v2/items/super/report
Active Harvests /v2/harvests/active/report /v2/harvests/active/super/report
Inactive Harvests /v2/harvests/inactive/report /v2/harvests/inactive/super/report
On Hold Harvests /v2/harvests/onhold/report /v2/harvests/onhold/super/report
Vegetative Plants /v2/plants/vegetative/report /v2/plants/vegetative/super/report
Flowering Plants /v2/plants/flowering/report /v2/plants/flowering/super/report
On Hold Plants /v2/plants/onhold/report /v2/plants/onhold/super/report
Inactive Plants /v2/plants/inactive/report /v2/plants/inactive/super/report
Active Mother Plants /v2/plants/mother/active/report /v2/plants/mother/active/super/report
On Hold Mother Plants /v2/plants/mother/onhold/report /v2/plants/mother/onhold/super/report
Inactive Mother Plants /v2/plants/mother/inactive/report /v2/plants/mother/inactive/super/report
Active Plant Batches /v2/plantbatches/active/report /v2/plantbatches/active/super/report
On Hold Plant Batches /v2/plantbatches/onhold/report /v2/plantbatches/onhold/super/report
Inactive Plant Batches /v2/plantbatches/inactive/report /v2/plantbatches/inactive/super/report
Plant Waste /v2/plants/waste/report /v2/plants/waste/super/report
Plant Additives /v2/plants/additives/report /v2/plants/additives/super/report
Active Sales /v2/sales/active/report /v2/sales/active/super/report
Inactive Sales /v2/sales/inactive/report /v2/sales/inactive/super/report
Available Tags /v2/tags/available/report /v2/tags/available/super/report
Used Tags /v2/tags/used/report /v2/tags/used/super/report
Voided Tags /v2/tags/voided/report /v2/tags/voided/super/report
Current Tag Orders /v2/tagorders/current/report /v2/tagorders/current/super/report
Historical Tag Orders /v2/tagorders/history/report /v2/tagorders/history/super/report
Active Processing Jobs /v2/processingjobs/active/report /v2/processingjobs/active/super/report
Inactive Processing Jobs /v2/processingjobs/inactive/report /v2/processingjobs/inactive/super/report
Strains /v2/strains/report /v2/strains/super/report
Active Locations /v2/locations/active/report /v2/locations/active/super/report
Incoming Active Transfers /v2/transfers/incoming/active/report (none)
Incoming Inactive Transfers /v2/transfers/incoming/inactive/report (none)
Outgoing Active Transfers /v2/transfers/outgoing/active/report (none)
Outgoing Inactive Transfers /v2/transfers/outgoing/inactive/report (none)
Rejected Transfers /v2/transfers/rejected/report (none)
Hub Transfers /v2/transfers/hub/report (none)
Incoming Transfer Manifests /v2/transfers/incoming/manifest/report (none)
Incoming Inactive Transfer Manifests /v2/transfers/incoming/inactive/manifest/report (none)
Outgoing Transfer Manifests /v2/transfers/outgoing/manifest/report (none)
Outgoing Inactive Transfer Manifests /v2/transfers/outgoing/inactive/manifest/report (none)
Rejected Transfer Manifests /v2/transfers/rejected/manifest/report (none)
Hub Transfer Manifests /v2/transfers/hub/manifest/report (none)

Notes on particular reports

These reports do not behave like the rest. Read the one that covers the path you picked.

The point-in-time report answers for a past date

/v2/packages/point-in-time/report lists what one license held on a date up to 180 days back, worked out from each package's history. It takes a date, has no super form, and refuses filters, sort and rowLimit. See Point-in-Time Inventory.

On hold and inactive plant reports exclude mother plants

The pooled and mother-specific reports partition your plants rather than overlap, so there is no double-counting, but if you want every on hold plant, request both /v2/plants/onhold/report and /v2/plants/mother/onhold/report and combine them.

Transfer reports have no super form

They return one row per transfer, with no include support. If you need the packages or transporters on each transfer, use a transfer manifest report (below), or page through a supercollection such as /v2/transfers/outgoing/active/super.

Transfer manifest reports work differently from every other report

They load the packages and transporters for every transfer automatically, with no include to add and no way to switch it off. There is no super form. json returns one record per transfer with its packages and transporters nested inside it; csv, xlsx and googleSheets cross-join them into one row per package.

Each column is prefixed by the object it came from:

Report Column prefixes
Incoming, active and inactive transfer., transporter., package.
Outgoing, active and inactive, and rejected transfer., delivery., transporter., transporterDetails., package.
Hub transfer., transporterDetails., package.

Two things follow that surprise people:

  • filter and rowLimit select transfers, not rows. Both apply before the join, so &rowLimit=100 can return several hundred rows, and every package on a matched transfer comes back.
  • They reach the size limit early. Loading the packages and transporters adds work for every transfer, so these reports are refused as too large to build well before the 50,000 row cap: near 5,000 transfers for incoming, 2,500 for outgoing and rejected, and 10,000 for hub. Filter to a date range, or set a rowLimit below those figures, such as &rowLimit=2000.

The two inactive manifest reports cover transfers that are no longer active, chiefly ones already received. They hold every such transfer the license has ever had, so always filter them to a date range: receivedDateTime for incoming, createdDateTime for outgoing. Metrc lists outgoing transfers without a received date, because each delivery is received separately. See Received transfer manifests.

Hub transfer reports cover the transfers you transport

These are the rows on Metrc's "Transfers Hub" page, where your license is neither the shipper nor the recipient, so they appear in no other transfer report. Two things make them unusual:

  • There is no active/inactive split. Metrc serves the whole collection as one list, so there is a single /v2/transfers/hub/report rather than the active/inactive pair every other transfer collection has.
  • The manifest form has no delivery. or transporter. group. Those fields appear under transfer.. transporterDetails. shows the first driver leg only; when transfer.multiVehicle or transfer.isLayover is true, the remaining legs are in the JSON response but cannot be represented in a flat grid. Both flags are in the default columns so you can tell when that is happening.

Tag orders use current and history rather than active/inactive

Those are Metrc's own names for the two tabs on its tag orders page, and the paths mirror them. Note that history here is a state of the collection, unlike /v2/packages/history, which is one package's audit trail. Each tag order carries its line items in a details array, returned with the order itself rather than through an include.

Processing jobs are currently Oregon-only

Metrc exposes the Processing module in Oregon; licenses in other states get an empty report rather than an error. The super report takes createdPackages, sourcePackages and history. Use include=sourcePackages rather than the job's inline packages array, which is incomplete. See Superprocessingjob includes.

Some super reports add nothing

The tag, tag order, strain and location super reports return the same columns as their plain form, because Metrc has no related data to attach to those objects.

Next Steps