Skip to main content
GET
/
api
/
v1
/
packages
cURL
curl --request GET \
  --url https://api-staging.getmeadow.com/api/v1/packages \
  --header 'X-Client-Key: <api-key>' \
  --header 'X-Consumer-Key: <api-key>'
{
  "data": [
    {
      "id": 150,
      "organizationId": 1,
      "type": "metrc",
      "externalId": null,
      "externalProductName": "OG Kush - Eighth",
      "label": "STAGING01234567200000001",
      "status": "received",
      "initialAmount": "150",
      "unit": "Each",
      "createdAt": "2023-01-10T21:35:10.732Z",
      "updatedAt": "2023-05-05 10:17:56.561-07",
      "receivedAt": "2023-05-05T17:17:56.561Z",
      "finishedAt": null,
      "multiplier": "1",
      "expirationDate": "2024-03-07",
      "transferredAt": null,
      "transferReturnedAt": null,
      "shippedAt": null,
      "costPerUnit": "24.9567",
      "voidReason": null,
      "thcPercent": "24.5",
      "thcMg": null,
      "cbdPercent": "2.7",
      "cbdMg": null,
      "producerName": null,
      "producerLicense": null,
      "harvestDate": null,
      "harvestFacilityName": null,
      "harvestFacilityLicense": null,
      "labName": null,
      "labLicense": null,
      "labDate": null,
      "onHold": false,
      "tradeSample": false,
      "originalSourceLabel": null,
      "productOptionId": 1250,
      "locationInventory": [
        {
          "inventoryLocationId": 3,
          "amount": "74"
        },
        {
          "inventoryLocationId": 4,
          "amount": "0.0"
        },
        {
          "inventoryLocationId": 41,
          "amount": "3"
        }
      ],
      "product": {
        "id": 798,
        "name": "OG Kush",
        "unit": "item",
        "strainType": "hybrid-indica",
        "isActive": true,
        "isFeatured": false,
        "inventoryType": "option",
        "movingAverageCostPerUnit": null,
        "brandName": "Meadow Farms",
        "primaryCategory": {
          "id": 8,
          "name": "Flower",
          "cannabisType": "non-concentrated"
        },
        "options": [
          {
            "id": 1250,
            "name": "",
            "amount": 1,
            "price": 2400,
            "salesPrice": null,
            "content": 3.5,
            "movingAverageCostPerUnit": 0
          }
        ]
      }
    },
    {
      "id": 116,
      "organizationId": 1,
      "type": "metrc",
      "externalId": null,
      "externalProductName": "Fire OG",
      "label": "STAGING01234567100000006",
      "status": "received",
      "initialAmount": "345.7",
      "unit": "Grams",
      "createdAt": "2023-01-10T21:34:00.851Z",
      "updatedAt": "2023-07-23 12:47:56.131-07",
      "receivedAt": "2023-07-23T19:47:56.131Z",
      "finishedAt": null,
      "multiplier": "3.457",
      "expirationDate": "2024-02-13",
      "transferredAt": null,
      "transferReturnedAt": null,
      "shippedAt": null,
      "costPerUnit": "15.00",
      "voidReason": null,
      "thcPercent": null,
      "thcMg": null,
      "cbdPercent": null,
      "cbdMg": null,
      "producerName": null,
      "producerLicense": null,
      "harvestDate": null,
      "harvestFacilityName": null,
      "harvestFacilityLicense": null,
      "itemStrain": null,
      "labName": null,
      "labLicense": null,
      "labDate": null,
      "onHold": false,
      "tradeSample": false,
      "originalSourceLabel": null,
      "productOptionId": 10369,
      "locationInventory": [
        {
          "inventoryLocationId": 3,
          "amount": "90"
        },
        {
          "inventoryLocationId": 41,
          "amount": "9"
        }
      ],
      "product": {
        "id": 9747,
        "name": "Fire OG Pre-Pack",
        "unit": "gram",
        "strainType": "indica",
        "isActive": true,
        "isFeatured": true,
        "inventoryType": "option",
        "movingAverageCostPerUnit": null,
        "brandName": "Meadow Farms",
        "primaryCategory": {
          "id": 8,
          "name": "Flower",
          "cannabisType": "non-concentrated"
        },
        "options": [
          {
            "id": 10369,
            "name": "Eighth",
            "amount": 3.5,
            "price": 3300,
            "salesPrice": null,
            "content": 3.5,
            "movingAverageCostPerUnit": 15
          }
        ]
      }
    }
  ]
}

Documentation Index

Fetch the complete documentation index at: https://api-docs.getmeadow.com/llms.txt

Use this file to discover all available pages before exploring further.

This endpoint will return packages in ascending order by when they were most recently updated. A package update is when a property on a package changes such as its status or when an inventory transaction has occurred so that this package has a new inventory amount. The reason we use ascending order is so that if a package is updated while you are querying this data, you will not miss that package and it will just be present in a later page.

Pagination

In order to correctly paginate this endpoint, you should store the updatedAt and id property of the last package in the data array. Then, submit those values as startingAfterUpdatedAt and startingAfterId in order to get the next page of data. The reason we use two pagination properties is because it is possible for two packages to have the exact same updatedAt value. Therefore, we paginate via updatedAt ASC first and then subsequently id ASC. One note with updatedAt is that our API will return this value as a timestamp string to microsecond precision. We recommend storing this value as a string in case the environment you are in (such as Javascript) only supports millisecond precision and would truncate the date. If you store it as a string and then submit that same string as the query parameter, you will not have any issues.

Voided packages

Packaged may be voided from time to time by the organization. When that happens, it will have its status set to finished and its label will be changed to have a unique value such as void-STAGING01234567200000039-3154adaf. Then, the package label (ex: STAGING01234567200000039) may show up again attached to a new package entity. This may happen when an organization accidentally receives a package to the wrong product. Then, you may find a package that has been voided as well as a new package with the same original label that is now attributed to a different product.

Authorizations

X-Consumer-Key
string
header
required

The key assigned to your company and provided via Meadow

X-Client-Key
string
header
required

The key generated and provided by our mutual client

Query Parameters

startingAfterUpdatedAt
string

The updatedAt for a package that you want to retrieve all packages that have been updated more recently than this value. Pass in the last updatedAt in a response to retrieve the next page. Please take careful consideration to pass the exact string that we return to you. Our dates have microsecond precision, so if you convert it to a Javascript date for example you will lose that precision and could cause duplicate responses.

startingAfterId
integer<int64>

When requesting subsequent pages, pair this parameter with startingAfterUpdatedAt. Pass in the id of the last package of a previous page. This will ensure proper pagination if two packages have the exact same updatedAt.

Response

List packages response

id
number

The id for the package

productOptionId
number | null

If this package is for an option tracking product, this value will be set. You can lookup which product option has inventory for this package in product.options[].id of this response.

type
enum<string>

The compliance system for this package. Only metrc is supported currently.

Available options:
metrc
externalId
string | null

The ID of the package in the external compliance system (Metrc)

externalProductName
string | null

The name of the product for this package in the external compliance system (Metrc)

label
string

The tag/label identifier for the package

status
enum<string>

The status of the package

  • ready is a package that has not been received into inventory yet.
  • received is a package that has been accepted into inventory for sale
  • finished is a package with 0 inventory and has been marked as finished
  • shipped is a package that is currently being shipped to another license and not available for sale
  • transferred is a package that was transferred out of this license and no longer has inventory
  • transfer-returned is a package that has been transferred back, but has not been received into inventory yet
  • syncing is a package that has been created, but not synced to Metrc yet
Available options:
ready,
received,
finished,
shipped,
transferred,
transfer-returned,
syncing
initialAmount
string

The amount of inventory this package had in Metrc when it was first imported into Meadow. This does not reflect how much inventory is currently available in Meadow.

unit
string

The Metrc unit of the package. (Example: Each or Grams)

createdAt
string

When this package was first created in Meadow

updatedAt
string

The last time this package had a modification made to it or an inventory transaction associated with it

receivedAt
string | null

When this package was received into inventory

finishedAt
string | null

When this package was set as finished

multiplier
string | null

This number represents the relationship between 1 unit of inventory in Meadow and how many units that represents in the Metrc package. For example, if a Metrc package has a unit of Grams, then the multiplier may be something like 3.5 to represent that one pre-packed eighth in Meadow will use 3.5g of the Metrc package. This is only applicable for option tracking products. product tracking will always have a value of 1. Please refer to the Inventory Guide for information on option and product tracking.

expirationDate
string | null

The expiration date of the package

transferredAt
string | null

When this package was transferred out of this organization

transferReturnedAt
string | null

When this package was transferred back to this organization

shippedAt
string | null

When this package was shipped out of this organization

costPerUnit
string | null

The cost per unit for this package

voidReason
string | null

If this package has been voided, it will always have a reason

thcPercent
string | null

The THC percent of this package

thcMg
string | null

The THC contents in mg of this package

cbdPercent
string | null

The CBD percent of this package

cbdMg
string | null

The CBD contents in mg of this package

producerName
string | null

The name of the producer of this package

producerLicense
string | null

The state license # of the producer

harvestDate
string | null

The harvest date of this package

harvestFacilityName
string | null

The name of the facility that harvested this package

harvestFacilityLicense
string | null

The state license # of the harvest facility

labName
string | null

The name of the lab testing facility

labLicense
string | null

The state license # of the lab testing facility

labDate
string | null

The date of the lab testing results for this package

onHold
boolean

Whether this package is on "administrative hold" in Metrc

tradeSample
boolean

Whether this package is designated as a trade sample

originalSourceLabel
string | null

The original source label for this package's root parent. Provided by Metrc for use in Retail ID context

locationInventory
object[]

The Meadow inventory for this package broken out by inventory location. An empty array [] means that this package does not have any inventory.

product
object

Information about the product this package has inventory for. This will be null if the package has not had its inventory received to a Meadow product yet.